User:Amga/vector.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/*
* Based on scripts by PDD and Guandalug
*/
function myAddOnloadHook (code) {
if (document.readyState == 'complete') {
code()
} else {
jQuery(window).on('load', code)
}
}
var mwLoader = mw.loader
var mwConfig = mw.config
var mwUtil = mw.util
// load my global css
mwLoader.load('//meta.wikimedia.org/w/index.php?title=User:Amga/vector.css&action=raw&ctype=text/css', 'text/css')
// current page analysis
var namespaceNumber = mwConfig.get('wgNamespaceNumber')
var pagetitle = mwConfig.get('wgPageName')
var action = mwConfig.get('wgAction')
var canonicalSpecialPageName = mwConfig.get('wgCanonicalSpecialPageName')
var pesctitle = pagetitle.replace(/_/g, ' ').split('&').join('%26').replace(/ /g, '+').replace(/_/g, '+')
var isArticle = namespaceNumber === 0
var isDisc = namespaceNumber == 1
var isUser = namespaceNumber == 2
var isUserDisc = namespaceNumber == 3
var isTemplate = namespaceNumber == 10
var isSpecial = namespaceNumber == -1
var isTalk = namespaceNumber % 2 == 1
var isEdit = action == 'submit' || action == 'edit'
var isContrib = isSpecial && ((canonicalSpecialPageName == 'Contributions') || (canonicalSpecialPageName == 'DeletedContributions'))
var isHistory = action == 'history'
/* ---------------
* helperFunctions
* ---------------
*/
var UrlParameters = []
function readparams () {
var asReadInUrlParameters
var asReadInUrlParameter
// Get URL parameters
asReadInUrlParameters = location.search.substring(1, location.search.length).split('&')
for (i = 0; i < asReadInUrlParameters.length; i++) {
asReadInUrlParameter = asReadInUrlParameters[i].split('=')
UrlParameters[decodeURIComponent(asReadInUrlParameter[0])] = decodeURIComponent(asReadInUrlParameter[1])
}
}
readparams()
////////////////////////////////////////////////////////////////////////////////////////
// URI-Parameter für fillActionPage(), benutzt in eintragen.js, hinweise.js
// außerdem in addEditAndRevertLinks.js (nur subjp, minorp, speichernp)
// nur in [[Benutzer:Euku/markErledigt.js]] : subjaddp (plus add)
var subjp = 'subj' // Subject
var subjaddp = 'subjadd' // Subject zum Ranhängen
var textp = 'txt' // Für Text-Austausch
var insp = 'ins' // Vor dem Text einfügen
var addp = 'add' // an Text anhängen
var minorp = 'minor' // (k)leine Änderung
var nocreatep = 'nocreate' // beim Eintragen keine neue Seite generieren
// für autosave:
var asuserp = 'asuser' // usertoken
var astimep = 'astime' // timestamptoken
////////////////////////////////////////////////////////////////////////////////////////
// absenden()
// aufgerufen aus fillActionPage() und hinweis() in hinweise.js
function absenden () {
document.editform.wpSave.click()
}
////////////////////////////////////////////////////////////////////////////////////////
// fillActionPage() (früher aktion(), ganz früher loeschkandidat() )
// von Littl, ergänzt von Revvar
//
// Entnimmt Parameter aus der URI, fügt sie in die Textfelder ein und klickt ggf. auf "Speichern"
// (die aufgerufene Seite ist dabei immer im Editmodus)
function fillActionPage () {
// wenn Bausteineinfügung am Anfang:
// nur einfügen, wenn Seite noch nicht gelöscht
var pagedeleted = false
if (document.getElementById('newarticletext')) {
pagedeleted = true
}
// nur einfügen, wenn noch nicht eingetragen
// der URI-Aktionsparameter ist immer entweder insp oder textp oder addp, daher else
var doubleinsert = false
if (UrlParameters[textp] > '') {
doubleinsert = findDoubleEntry(UrlParameters[textp], document.editform.wpTextbox1.value)
} else if (UrlParameters[insp] > '') {
doubleinsert = findDoubleEntry(UrlParameters[insp], document.editform.wpTextbox1.value)
} else if (UrlParameters[addp] > '') {
doubleinsert = findDoubleEntry(UrlParameters[addp], document.editform.wpTextbox1.value)
}
// Textfeld ausfüllen
if (UrlParameters[textp] > '') {
if (doubleinsert) {
document.editform.wpTextbox1.value = UrlParameters[textp] + document.editform.wpTextbox1.value
} else {
document.editform.wpTextbox1.value = UrlParameters[textp]
}
} else if (UrlParameters[insp] > '') {
document.editform.wpTextbox1.value = UrlParameters[insp] + document.editform.wpTextbox1.value
} else if (UrlParameters[addp] > '') {
document.editform.wpTextbox1.value = document.editform.wpTextbox1.value + UrlParameters[addp]
}
// weitere Felder ausfüllen
if (UrlParameters[subjp] > '') {
document.editform.wpSummary.value = UrlParameters[subjp]
}
if (UrlParameters[subjaddp] > '') {
document.editform.wpSummary.value += UrlParameters[subjaddp]
}
if (UrlParameters[minorp] == '1') {
document.editform.wpMinoredit.checked = true
}
// wenn Textbaustein doppelt: Warnung
if (doubleinsert) {
do_rc_alert('Artikel enthält den gewählten Baustein bereits!')
}// wenn Seite schon gelöscht: Warnung
else if (pagedeleted && (UrlParameters[nocreatep] == '1')) {
do_rc_alert('Artikel wurde bereits gelöscht!')
}// wenn autosave eingeschaltet: Seite speichern
else if (validate_asuser(UrlParameters[asuserp])) {
if (validate_astime(UrlParameters[astimep])) {
absenden()
} else {
alert('Token zur automatischen Speicherung ist abgelaufen.')
}
}
}
if ((isEdit) && (!isSpecial)) addOnloadHook(fillActionPage)
////////////////////////////////////////////////////////////////////////////////////////
// findDoubleEntry()
// aufgerufen aus fillActionPage()
function findDoubleEntry (baustein, artikeltext) {
var doublette = false
// wenn keine Vorlage enthalten: Abbruch
if (baustein == baustein.split('{{')[0]) {
return doublette
}
var chkbaustein = baustein.split('{{')[1].split('}}')[0].split('|')[0]
chkbaustein = '{{' + chkbaustein
if (navigator.userAgent.indexOf('Opera') == -1) {
// Zeilen wie die nächste generieren Fehler mit Opera, daher diesen Bereich auskommentiert
// Fehler: RegExp.prototype.compile: syntax error in pattern or string
// mit Firefox2 und IE7 geht das problemlos, hmm
if (artikeltext.search(chkbaustein) != -1) {
doublette = true
}
// Kleinschreibung & SLA & substs
if (chkbaustein == '{{Löschen') {
if (artikeltext.search('{{löschen') != -1) {
doublette = true
}
if (artikeltext.search('{{SLA') != -1) {
doublette = true
}
}
if (chkbaustein == '{{subst:Löschantrag') {
if (artikeltext.search('{{Löschantragstext') != -1) {
doublette = true
}
}
if (chkbaustein == '{{subst:Qualitätssicherung') {
if (artikeltext.search('{{QS-Antrag') != -1) {
doublette = true
}
}
} // end of Opera hack
return (doublette)
}
////////////////////////////////////////////////////////////////////////////////////////
// extendWpReason()
// hebt 255-Zeichen-Textfeldbegrenzung auf
function extendWpReason () {
var loeschgrund
if (loeschgrund = document.getElementById('wpReason')) {
loeschgrund.setAttribute('maxLength', 512)
}
}
if (action == 'delete') {
addOnloadHook(extendWpReason)
}
////////////////////////////////////////////////////////////////////////////////////////
// do_rc_alert()
function do_rc_alert (str) {
if (rcalertbox) alert(str)
}
// newRequest()
// Author: D (?)
function newRequest () {
try {
if (window.XMLHttpRequest) {
return new XMLHttpRequest()
} else {
return new ActiveXObject('MSXML2.XMLHTTP')
}
} catch (e) {
return false
}
}
// --> vectorHelpers
// importScript('User:Amga/vectorHelpers.js');
// renameElement(ElementID,NewText)
// Renames a HTML GUI element by changing the inner HTML
// Most elements don't need a 'tag' given (they use an <a> tag)
function renameGUIElement (id, text, tag) {
var elem = document.getElementById(id)
if (!tag) {
tag = 'A'
}
if (elem) {
elem.getElementsByTagName(tag)[0].innerHTML = text
}
}
// trim()-- classical string function to remove leading and trailing whitespace
function trim (str) {
return str.replace(/^\s*|\s*$/g, '')
}
// Access parameters passed via HTTP 'GET'
// Decode parameters "on demand", cache results
function getParam (name) {
if (typeof (getParam.parameters) == 'undefined') {
getParam.parameters = new Array()
var URIparameters
var URIParameter
// Get URL parameters
URIparameters = location.search.substring(1, location.search.length).split('&')
for (i = 0; i < URIparameters.length; i++) {
URIParameter = URIparameters[i].split('=')
getParam.parameters[decodeURIComponent(URIParameter[0])] = decodeURIComponent(URIParameter[1])
}
}
if (getParam.parameters[name]) {
return getParam.parameters[name]
} else {
return false
}
}
// insert a new node after a given reference node
function insertAfter (parent, node, referenceNode) {
parent.insertBefore(node, referenceNode.nextSibling)
}
// token functions, taken from [[:de:User:PDD/helperFunctions.js]]
function generate_asuser () {
return encodeURIComponent(mw.config.get('wgUserName'))
}
function validate_asuser (asuser) {
return (encodeURIComponent(asuser) == generate_asuser())
}
function generate_astime () {
var arbitrary_datestamp = Date.UTC(2010, 1, 1, 0, 0, 0, 0)
var current_date = new Date()
var current_timestamp = current_date.getTime()
return (Math.floor((current_timestamp - arbitrary_datestamp) / 1000))
}
function validate_astime (astime) {
var timediff = generate_astime() - astime
return (timediff >= 0) && (timediff < 45)
}
/* ---------
* markUsers
* ---------
*/
jQuery(document).ready(function () {
var markusers = true
if (!markusers) return
var marksubpages = false
var dontmarkmyself = true
var isSpecial = mwConfig.get('wgCanonicalNamespace') == 'Special'
var isUserpage = mwConfig.get('wgCanonicalNamespace') == 'User' || mwConfig.get('wgCanonicalNamespace') == 'User_talk'
var isProject = mwConfig.get('wgCanonicalNamespace') == 'Project'
var isFile = mwConfig.get('wgCanonicalNamespace') == 'File'
var isHelp = mwConfig.get('wgCanonicalNamespace') == 'Help'
var isDiff = mwUtil.getParamValue('diff') !== null
var i
var users = []
users.push(new Array('Agentjoerg', 'Berihert', 'Blik', 'Brodkey65', 'Carl_B_aus_W', 'ChoG', 'Dschungelfan', 'ElTres', 'FordPrefect42', 'Giraldillo', 'Grim', 'Herbrenner1984', 'Informationswiedergutmachung', 'MAyo', 'Michileo', 'Minihaa', 'Nhfflkh', 'Nuhaa', 'Odeesi', 'Plagiat', 'Plastikt%C3%BCte', 'Rogi.Official', 'Si!_SWamP'))
users.push(new Array('Aschmidt', 'Biologos', 'Bjarlin', 'BrutFork', 'Flyingfischer', 'GFreihalter', 'Gridditsch', 'Gunslinger.1970', 'Jocian', 'Reinhardhauke', 'Sakra', 'Schulhofpassage', 'SDB', 'Stobaios', 'Toni_M%C3%BCller', 'Tscherpownik'))
var listCount = users.length
var users_str = []
for (i = 0; i < listCount; i++) {
users_str.push('|' + users[i].join('|') + '|')
}
var marktxt = new Array('DF', 'DS')
for (i = marktxt.length; i < listCount; i++) {
marktxt.push('U' + (i + 1))
}
if (isSpecial || isHistory || isUserpage || isTalk || isProject || isFile || isHelp || isDiff) {
var aNode
var allanchors = document.getElementsByTagName('A')
var allanchorsuser = []
var searchExp = /\/wiki\/Benutzer(in)?([ _]Diskussion)?:(.+)/
var searchExpTalk = /[ _]Diskussion:/
var marker
var mainpageanchor
for (i = 0; i < allanchors.length; i++) {
aNode = allanchors[i]
mainpageanchor = true
talkpageanchor = false
// if it's a link to a user
if ((href = aNode.getAttribute('href')) && (searchExp.exec(href) !== null)) {
currUser = searchExp.exec(href)[3]
/* if (isUserpage) */
currUserClean = currUser.replace(/\/.*/, '')
if (currUserClean != currUser) mainpageanchor = false
if (searchExpTalk.exec(href) !== null) talkpageanchor = true
// don't mark followups
allanchorsuser[i] = mainpageanchor ? currUserClean : ''
if ((i > 0) && (currUserClean == allanchorsuser[i - 1]) && talkpageanchor) continue
currUser = '|' + currUserClean + '|'
marker = []
for (j = 0; j < listCount; j++) {
if (users_str[j].indexOf(currUser) != -1) marker.push(marktxt[j])
}
// don't mark certain pages, except link to user main page
if (mainpageanchor ||
(marksubpages && canonicalSpecialPageName != 'Prefixindex' && canonicalSpecialPageName != 'Allpages')) {
// check finished, now append node
if ((marker.length > 0) && !(dontmarkmyself && (currUserClean == mwConfig.get('wgUserName')))) {
var aMark = document.createElement('span')
aMark.className = 'userMark'
var aMarkText = document.createTextNode('\u00A0(' + marker.join('/') + ')')
aMark.appendChild(aMarkText)
aNode.appendChild(aMark)
}
}
}
}
}
})
function addUserMenu (id, title) {
var root = document.getElementById('p-search')
if (!root) {
return
}
var navId = 'p-my-menu-' + id
var navLabel = navId + '-label'
var nav = document.createElement('nav')
nav.id = navId
nav.className = 'mw-portlet vector-menu-dropdown-noicon vector-menu vector-menu-dropdown'
nav.ariaLabelledby = navLabel
nav.role = 'navigation'
var input = document.createElement('input')
input.type = 'checkbox'
input.className = 'vector-menu-checkbox'
input.ariaLabelledby = navLabel
nav.appendChild(input)
var span = document.createElement('span')
span.appendChild(document.createTextNode(title))
var label = document.createElement('label')
label.id = navLabel
label.className = 'vector-menu-heading'
label.appendChild(span)
nav.appendChild(label)
var menuList = document.createElement('ul')
menuList.className = 'vector-menu-content-list'
var menu = document.createElement('div')
menu.className = 'vector-menu-content'
menu.appendChild(menuList)
nav.appendChild(menu)
root.parentNode.insertBefore(nav, root)
return menuList
}
function addMenuEntry(menu, href, label, id, title) {
if (!menu || !href || !label) {
return
}
var entry = document.createElement('li')
if (id) {
entry.id = menu.closest('nav').id + '-entry-' + id
entry.className = 'mw-list-item mw-list-item-js'
}
var a = document.createElement('a')
a.href = href
a.title = title || label
var span = document.createElement('span')
span.textContent = label
a.appendChild(span)
entry.appendChild(a)
menu.appendChild(entry)
}
// <nav id="p-cactions" class="vector-menu vector-menu-dropdown" aria-labelledby="p-cactions-label" role="navigation">
// <input type="checkbox" class="vector-menu-checkbox" aria-labelledby="p-cactions-label" />
// <h3 id="p-cactions-label">
// <span>Mehr</span>
// </h3>
// <div class="vector-menu-content">
// <ul class="vector-menu-content-list">
// <li id="ca-move"><a href="/wiki/Spezial:Verschieben/Benutzer:Amga" title="Diese Seite verschieben [m]" accesskey="m">Verschieben</a></li>
// </ul>
// </div>
// </nav>
// --> Eintragen
// importScript('User:Amga/Eintragen.js');
function eintragen (typ, grund) { // Littl, PDD
var wpath = mwUtil.wikiScript() + '?title='
var wnamesp = 'Wikipedia:'
var wdnamesp = 'Wikipedia_Diskussion:'
// function placeholders:
// 4 = BildLA (obsolet)
// 11 = Lemmasperrung (alt)
// 12 = Lemmasperrung (neu)
// 13 = Benutzersperrung (neues Konzept, nicht durchgesetzt)
if (typ == 4) {
alert('Update: Bildlöschanträge gibt es nicht mehr, stattdessen wird der DÜP-Button verwendet. Bitte update deine monobook.js.')
}
if ((typ == 11) || (typ == 12)) {
alert('Update: Lemmasperren werden jetzt mit dem Karteireiter Schützen vorgenommen. Bitte update deine monobook.js.')
}
if (typ == 13) {
alert('Update: Diese Benutzersperrfunktion wird nicht mehr verwendet. Bitte update deine monobook.js.')
}
if (typ > 14) {
alert('Funktion ' + typ + ' noch nicht implementiert!')
}
if ((typ == 4) || (typ == 11) || (typ == 12) || (typ == 13) || (typ > 14)) {
return
}
// Variables that should be defined in your monobook
if (typeof (autosave) == 'undefined') {
autosave = false
}
if (typeof (signogrundparam) == 'undefined') {
signogrundparam = false
}
if (typeof (emptylinesafterhr) == 'undefined') {
emptylinesafterhr = 1
}
if (typeof (grund) == 'undefined') {
grund = ''
}
if (typeof (defaultSLA) == 'undefined') {
defaultSLA = ''
}
if (typeof (defaultVandal) == 'undefined') {
defaultVandal = 'vandaliert in [[]]'
}
if (typeof (defaultAVandal) == 'undefined') {
defaultAVandal = 'Edit-War'
}
if (typeof (Monate) == 'undefined') {
Monate = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember')
}
if (typeof (jetzt) == 'undefined') {
jetzt = new Date()
}
if (typeof (Jahr) == 'undefined') {
Jahr = jetzt.getYear()
}
if (Jahr < 999) Jahr += 1900
if (typeof (WPDatum) == 'undefined') {
WPDatum = jetzt.getDate() + '._' + Monate[jetzt.getMonth()] + '_' + Jahr
}
if (typeof (WPDatum2) == 'undefined') {
WPDatum2 = Jahr + '/' + Monate[jetzt.getMonth()] + '/' + jetzt.getDate()
}
if (typeof (isEdit) == 'undefined') {
isEdit = (document.URL.indexOf('action=edit') > 0) || (document.URL.indexOf('action=submit') > 0)
}
if (typeof (isUserpage) == 'undefined') {
isUserpage = ((mwConfig.get('wgCanonicalNamespace') == 'User') || (mwConfig.get('wgCanonicalNamespace') == 'User_talk'))
}
if (typeof (isSpecial) == 'undefined') {
isSpecial = (mwConfig.get('wgCanonicalNamespace') == 'Special')
}
if (typeof (isPHP) == 'undefined') {
isPHP = (document.URL.indexOf('index.php') > 0)
}
// Variablen für die einzelnen Bausteine
var kurz = ''
var vorlage = ''
var seite = ''
// bei bestimmten Vorlagen wird Grund als Parameter übergeben
// (momentan nur Vorlage:Löschantrag, Vorlage:Löschen, Vorlage:QS)
// außerdem bei RENKAT: neuer Katname als "Grund"
var grundparam = false
// bestimmte Subst-Vorlagen haben schon noincludes
// (momentan nur Vorlage:Löschantrag)
var substnoinclude = false
// bestimmte Vorlagen beinhalten bereits die Formatierung (Returns, Hline)
// (momentan nur Vorlage:Löschantrag und Vorlage:Löschen)
var dontformat = false
switch (typ) {
case 1: {
kurz = 'QS'
vorlage = 'subst:QS'
seite = 'Qualitätssicherung'
if (!signogrundparam) {
grundparam = true
dontformat = true
}
break
}
case 2: {
kurz = 'LA'
vorlage = 'subst:Löschantrag'
seite = 'Löschkandidaten'
grundparam = true
substnoinclude = true
dontformat = true
break
}
case 3: {
kurz = 'SLA'
vorlage = 'Löschen'
if (!signogrundparam) {
grundparam = true
dontformat = true
}
break
}
case 4: {
kurz = 'BildLA'
vorlage = 'subst:Löschantrag'
seite = 'Löschkandidaten/Bilder'
grundparam = true
substnoinclude = true
dontformat = true
break
}
case 5: {
kurz = 'URV'
vorlage = 'URV'
seite = 'Löschkandidaten/Urheberrechtsverletzungen'
break
}
case 6: {
kurz = 'Vandale'
vorlage = 'Benutzer'
seite = 'Vandalismusmeldung'
break
}
case 7: {
kurz = 'LAKAT'
vorlage = 'subst:Löschantrag'
seite = 'WikiProjekt_Kategorien/Diskussionen'
grundparam = true
substnoinclude = true
dontformat = true
break
}
case 8: {
kurz = 'LAVORL'
vorlage = 'subst:Löschantrag'
seite = 'Löschkandidaten'
grundparam = true
substnoinclude = true
dontformat = true
break
}
case 9: {
kurz = 'Artikelvandalismus'
vorlage = 'Artikel'
seite = 'Vandalismusmeldung'
break
}
case 10: {
kurz = 'Reset'
vorlage = 'Bitte erst NACH dieser Zeile schreiben! (Begrüßungskasten)'
break
}
case 11: {
kurz = 'Lemmasperrung' // outdated, do not use!
vorlage = 'gesperrtes Lemma'
break
}
case 12: {
kurz = 'Lemmasperrung'
seite = 'Gesperrte Lemmata'
break
}
case 13: {
kurz = 'Benutzersperrung'
seite = 'Unbegrenzt gesperrte Benutzer'
break
}
case 14: {
kurz = 'Kategorieverschiebung'
vorlage = 'subst:Umbenennen'
seite = 'WikiProjekt_Kategorien/Diskussionen'
grundparam = true
break
}
}
var customsig = '--\~\~\~\~'
var lemma = isContrib ? extractLemma() : pagetitle
var lemma2
// special lemma handling for usernames (vandals, banned users):
if ((typ == 6) || (typ == 13)) {
if (isUserpage) {
// leading stuff
lemma2 = lemma.replace(/Benutzer.Diskussion./, '')
if (lemma2 == lemma) {
lemma2 = lemma.replace(/Benutzer./, '')
}
lemma = lemma2
// trailing stuff
lemma = lemma.replace(/\/.*/, '').replace(/&action.*/, '')
}
if (isContrib) {
lemma = lemma.replace(/.*\//, '')
}
}
lemma2 = lemma.split('_').join(' ')
// zu öffnende Zielseite
var uri = ''
// für typ 14 (RENKAT): Zielkategorie
var oldkat = mwConfig.get('wgTitle')
var neukat = oldkat
if (typ == 14) {
while (oldkat == neukat) {
neukat = prompt('Neuer Kategoriename:', neukat)
}
}
// Begründung für die Bausteinsetzung
if (grund == '') {
if (typ == 3) grund = defaultSLA
if (typ == 5) {
grund = prompt(kurz + '-Quelle (z.B. URL):', '[]')
} else if (typ == 6) {
grund = prompt('VM-Grund:', defaultVandal)
} else if (typ == 9) {
grund = prompt('VM-Grund:', defaultAVandal)
} else if ((typ != 10) && (typ != 11) && (typ != 12) && (typ != 13)) {
grund = prompt(kurz + '-Grund:', grund)
}
/* Shortcuts für SLA*/
if (typ == 3) {
switch (grund) {
case 'b':
grund = 'Nur erledigte Bothinweise.'
break
case 'd':
grund = 'Verwaiste Diskussionsseite.'
break
case 'i':
grund = 'Offensichtliche Irrelevanz.'
break
case 'k':
grund = 'Kein Artikel.'
break
case 'u':
grund = 'Unfug.'
break
case 'x':
grund = 'Wiedergänger.'
break
case 'z':
grund = 'Werbeeintrag.'
break
}
}
}
// Parameter für die URI
var speichernpa = (autosave) ? '&' + asuserp + '=' + generate_asuser() + '&' + astimep + '=' + generate_astime() : ''
var nocreatepa = '&' + nocreatep + '=1'
// ab hier wird eingetragen
if (grund != null) {
grund = trim(grund)
// Eintragen auf der entsprechenden LK/QS/usw.-Seite
// (wird dann ausgeführt von fillActionPage() in der monobook.js)
//QS / LA / BildLA / LAKAT / LAVORL / RENKAT
if (typ == 1 || typ == 2 || typ == 4 || typ == 7 || typ == 8 || typ == 14) {
// Öffnen der QS- oder LK- oder BildLK-Seite, gleich zum Eintragen des QS/LA
// Texte werden als Parameter übergeben
uri = wpath
+ encodeURI(wnamesp + seite + (((typ == 7) || (typ == 14)) ? ('/' + WPDatum2) : ('/' + WPDatum)))
+ '&action=edit' + '§ion=new'
+ '&' + subjp + '='
+ encodeURIComponent('[['
+ (((typ == 4) || (typ == 7) || (typ == 14)) ? ':' : '')
+ lemma2 + ']]'
+ ((typ == 14) ? (' nach [[:Kategorie:' + neukat + ']]') : ''))
+ '&' + textp + '='
+ encodeURIComponent(grund + ' ' + customsig + '\n')
+ speichernpa
}
//URV
if (typ == 5) {
// Öffnen der URV-Seite gleich zum Eintragen der Meldung, Texte werden als Parameter übergeben
uri = encodeURI(wpath + wnamesp + seite + '&action=edit')
+ '&' + subjp + '='
+ encodeURIComponent('+[[' + lemma2 + ']]')
+ '&' + addp + '='
+ encodeURIComponent('# [[' + lemma2 + ']] von ' + grund + ' ' + customsig + '\n')
+ speichernpa
}
//Vandale
if (typ == 6) {
// Öffnen der VM-Seite gleich zum Eintragen der Meldung, Texte werden als Parameter übergeben
uri = encodeURI(wpath + wnamesp + seite + '&action=edit§ion=new')
+ '&' + subjp + '='
+ encodeURIComponent('[[Benutzer:' + lemma2 + ']]')
+ '&' + textp + '='
+ encodeURIComponent('{{' + vorlage + '|' + lemma2 + '}} ' + grund + ' ' + customsig + '\n')
+ speichernpa
}
//AVandale
if (typ == 9) {
// Öffnen der VM-Seite gleich zum Eintragen der Meldung, Texte werden als Parameter übergeben
uri = encodeURI(wpath + wnamesp + seite + '&action=edit§ion=new')
+ '&' + subjp + '='
+ encodeURIComponent('Artikel [[' + lemma2 + ']]')
+ '&' + textp + '='
+ encodeURIComponent('{{' + vorlage + '|' + lemma2 + '}} ' + grund + ' ' + customsig + '\n')
+ speichernpa
}
//Lemmasperrung
if (typ == 12) {
// Öffnen der Lemmasperrseite und Eintragen
// Achtung: wdnamesp statt wnamesp
uri = encodeURI(wpath + wdnamesp + seite + '/' + WPDatum4 + '&action=edit')
+ '&' + subjp + '='
+ encodeURIComponent('+[[' + lemma2 + ']]')
+ '&' + addp + '='
+ encodeURIComponent('# {{:' + lemma2 + '}} ' + customsig + '\n')
+ speichernpa
}
//Benutzersperrung
if (typ == 13) {
// Auswahl der Unterseite
var ugspage = 'Sonstige'
if ((lemma2.charAt(0) >= 'A') && (lemma2.charAt(0) <= 'Z')) {
ugspage = lemma2.charAt(0)
}
// Öffnen der Benutzersperrseite und Eintragen
uri = encodeURI(wpath + wnamesp + seite + '/' + ugspage + '&action=edit')
+ '&' + subjp + '='
+ encodeURIComponent('+[[Benutzer:' + lemma2 + ']]')
+ '&' + addp + '='
+ encodeURIComponent('# {{:Benutzer:' + lemma2 + '}} ' + customsig + '\n' + '# {{:Benutzer Diskussion:' + lemma2 + '}} ' + customsig + '\n')
+ speichernpa
}
// neue Seite wird in neuem Fenster geöffnet
if (uri != '') {
window.open(uri)
window.focus()
}
// bearbeiten der (aktuellen) Artikelseite und eintragen lassen
// (wird dann ausgeführt von fillActionPage() in der monobook.js)
// (bei Vandalenmeldung, Lemmasperrung, Benutzersperrung nichts auf aktueller Seite eintragen!!)
if ((typ != 6) && (typ != 9) && (typ != 12) && (typ != 13)) {
var grundsig = '\'\'' + grund + '\'\' ' + customsig
// wenn grund als Parameter übergeben wird: | und = escapen
if (grundparam) {
grundsig = grundsig.split('|').join('{{!}}').split('=').join('=')
}
// vereinheitlicht plus kursiv (PDD)
var txt = '{{' + vorlage
if (grundparam) {
txt += '|1='
} else {
txt += '}}'
}
if ((typ != 10) && (typ != 11)) {
if (typ == 14) {
txt += neukat
} else {
txt += grundsig
}
if (grundparam) {
txt += '}}'
}
if (!dontformat) {
txt += '\n----\n\n'
for (var i = 0; i < emptylinesafterhr; i++) {
txt += '\n'
}
} else if (!looksLikeTemplate(lemma2)) {
txt += '\n'
}
if (!substnoinclude) {
if (looksLikeTemplate(lemma2)) {
txt = '<noinclude>\n' + txt + '</noinclude>'
}
}
} else { // typ==10 oder 11
txt += '\n'
}
if (isEdit) {
// wir sind schon im Edit-Modus
if ((typ == 5) || (typ == 10) || (typ == 11)) {
document.editform.wpTextbox1.value = txt
} else {
document.editform.wpTextbox1.value = txt + document.editform.wpTextbox1.value
}
document.editform.wpSummary.value = kurz + '+'
document.editform.wpWatchthis.checked = false
if (autosave) {
if ((typ != 11) && (document.getElementById('newarticletext'))) {
alert('Artikel wurde bereits gelöscht!')
} else {
document.editform.wpSave.click()
}
}
} else {
// Wir müssen die Seite erst zum Editieren öffnen
if ((typ == 5) || (typ == 10) || (typ == 11)) {
// URV-Baustein & Spielwiese-Reset ersetzen den kompletten Text
uri = wpath + encodeURIComponent(lemma) + '&action=edit'
+ '&' + subjp + '=' + encodeURIComponent(kurz + '+')
+ '&' + textp + '=' + encodeURIComponent(txt)
+ speichernpa
} else {
// alle anderen Bausteine werden am Anfang eingefügt
uri = wpath + encodeURIComponent(lemma) + '&action=edit'
+ '&' + subjp + '=' + encodeURIComponent(kurz + '+')
+ '&' + insp + '=' + encodeURIComponent(txt)
+ speichernpa
}
if (typ != 11) uri += nocreatepa
// neue Seite im aktuellen Fenster öffnen
location.href = uri
} // END: if (isEdit)...else...
} // END: if (typ != 6)...
} // END: if (grund != null)...
} // END: function eintragen(typ)...
// Funktion looksLikeTemplate()
// Vorlagen-Check
// (aufgerufen aus eintragen() )
function looksLikeTemplate (aktuelleslemma) {
return isTemplate || aktuelleslemma.indexOf('Vorlage:') > -1 || aktuelleslemma.indexOf(':Vorlage/') > -1 || aktuelleslemma.indexOf('/Vorlage/') > -1
}
// end imported scripts
// Variable is unset if AJAX search is disabled.
if (typeof (mwConfig.get('wgDBname')) == 'undefined') {
wgDBname = 'dewiki'
}
var defaultSLA = 'Kein enzyklopädischer Artikel nach [[WP:WSIGA]] und [[WP:WWNI]]'
var autosave = false // automatisches Speichern von QS/LA/SLA/Vandal-Einträgen?
var version = 'Override'
// Config-Anpassungen für markAdmins (via Gadget)
markcomadmins = true
markexadmins = true
marksubpages = true
// ----
var unsigning = true // Einfügen von Unsigned bei unsignierten Beiträgen auf Diskussionsseiten?
var ssubst = true // unsigniert-Baustein mit subst einfügen?
var max_history_entries = 36 // Anzahl der angezeigten Edits (max. 36)
if (isEdit && !isArticle) {
mwLoader.load('//de.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Lustiger_seth/unsigned.js')
}
// ----
var signing = true // automatische Unterschrift auf Diskussionsseiten?
// Liste der Nicht-Diskussionsseiten, die ebenfalls unterschrieben werden sollen:
var regpages = new Array(':Löschkandidaten', ':Löschprüfung', ':Entsperrwünsche', ':Adminkandidaturen', ':Qualitätssicherung', ':Administratoren/Notizen', ':Administratoren/Anfragen', ':Fragen_zur_Wikipedia', ':Auskunft:', ':Meinungsbilder', ':Review', ':Bilderwünsche', ':Kandidaten', ':WikiProjekt_Kategorien')
if (isEdit && !isArticle) {
mwLoader.load('//de.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Olliminatore/signing.js')
}
// Automatische Überschriften auf Diskussionsseiten? Nix da (tm)
myAddOnloadHook(function () {
var tab = document.getElementById('ca-talk')
if (!tab || tab.className != 'new') return
var link = tab.getElementsByTagName('a')[0]
if (!link) return
link.href = link.href.replace(/§ion=new$/, '')
})
// ----
// [[Benutzer:DerHexer/rollback.js]]
// Erweiterten Rollback aktivieren
var newrollback = true
// Rollback mit Ansprache und VM-Meldung bzw. Block aktivieren? Dafür bitte PopUps für de.wikipedia.org aktivieren.
var allowmessage = true
// Wenn die ergänzte Vorlage automatisch gespeichert werden soll, ändere false auf true.
var autowarning = true
// Wenn du zwei Warnungen vor einer VM oder Sperre setzen möchtest, gib true ein, um einen Standardkommentar zu ergänzen.
// Ansonsten ersetze false/true durch eine zweite Vorlage inklusive Unterschrift.
var leveltwowarning = true
// Hier bitte alle Bezeichnungen der Rollbacks angeben, so man mit den Standards nicht zufrieden ist
var optionnames = new Array('ZS-TEST')
// Hier bitte die zu verwendenden Vorlagen angeben. Genausoviele wie darüber, dies ist eine 1:1-Zuordnung!
// <nowiki>
var templatenames = new Array('{{subst:Benutzer:Complex/Greetings/TestMitStopschild}} --~~~~')
// </nowiki>
// Auf '1' setzen, um mehrere, unter optionnames und templatenames selbstdefinierte Links hinter dem normalen Zurücksetzen zu ergänzen;
// auf '2', wenn die oben definierten Links in einem Dropdownmenü erscheinen sollen;
// auf '3', wenn man keine Ansprache, aber ein Zusammenfassungskürzel wie beim (rev) haben möchte;
// auf '4', wenn man automatisch sperren möchte
var rollbacktype = '1'
mwLoader.load('//de.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:DerHexer/rollback.js')
// ----
var signogrundparam = false // auf true setzen, wenn Signatur das SLA-Eintragen behindert
var emptylinesafterhr = 1 // Leerzeilen zwischen LA-Baustein und Artikeltext
var defaultSLA = 'Kein Artikel' // Standard-SLA-Grund
var defaultVandal = 'vandaliert in [[]]' // Standardgrund für Vandalismusmeldung (Benutzer)
var defaultAVandal = 'Edit-War' // Standardgrund für Vandalismusmeldung (Artikel)
// ----
var editlinkoldversion = false // Bearbeiten-Link für ältere Versionen anzeigen?
var editlinktxt = 'edit' // Text des Edit-Links
var revertwithreason = false // Revert-Link mit Grund-Eingabe anzeigen?
var revlinktxt = 'rev' // Text des Revert-Links
var revlinkshowuser = true // beim Revertieren über (Rev)-Link letzten Benutzer angeben?
var rvisminor = true // sind Reverts mit "(rev)"-Link Minor-Changes?
var aearldefault = 'Grund: keine Verbesserung des Artikels' // Defaultgrund beim Revertieren
var aerhistory = true // Links auch in der Versionsgeschichte?
var aearlhere = true // Revertaktion im selben Browserfenster?
if (isHistory || !isEdit) {
if (editlinkoldversion || revertwithreason) {
mwLoader.load('//de.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:PDD/addEditAndRevertLinks.js')
} // [[Benutzer:PDD/addEditAndRevertLinks.js]]
}
// ----
mwLoader.load('//de.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Euku/markErledigt.js') // [[Benutzer:Euku/markErledigt.js]] -- 'erledigt' - Links
mwLoader.load('//de.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Schniggendiller/markblocked.js')
// ------------------------------------- Eigene Untermenüs ---------------------------------------------
// Admin - Aktionen: a) Auf Benutzer(unter)seiten und den Benutzerbeiträgen
if (isUser || isUserDisc || isContrib) {
myAddOnloadHook(function () {
var menuUser = addUserMenu('user', 'Benutzer')
if (!isSpecial) {
var username = mwConfig.get('wgTitle')
var pos = username.indexOf('/')
if (pos >= 0) {
username = username.slice(0, pos)
}
addMenuEntry(menuUser, '/wiki/Benutzer Diskussion:' + username, username, 'disk', 'Benutzerdisk')
addMenuEntry(menuUser, '/wiki/Spezial:Beiträge/' + username, ' - Beiträge', 'contrib', 'Benutzerbeiträge')
addMenuEntry(menuUser, '/wiki/Spezial:Logbuch/' + username, ' - Log aktiv', 'logs', 'Logbuch-Einträge aktiv')
addMenuEntry(menuUser, '/wiki/Spezial:Logbuch?page=Benutzer:' + username, ' - Log passiv', 'contrib', 'Logbuch-Einträge passiv')
addMenuEntry(menuUser, '/wiki/Spezial:Präfixindex/Benutzer:' + username + '/', ' - Unterseiten', 'pages', 'Benutzer-Unterseiten')
addMenuEntry(menuUser, '/wiki/Spezial:Präfixindex/Benutzer:SibFreak/', ' - Unterseiten SibFreak', 'sibfreak-pages', 'Benutzer-Unterseiten SibFreak')
}
})
}
// Bausteine für Artikel oder Benutzerdiskussionsseiten
// Da fehlt noch einiges (incl. huter config)
if (isArticle || isDisc || isUser) {
myAddOnloadHook(function () {
var menuTemplates = addUserMenu('templates', 'Bausteine')
addMenuEntry(menuTemplates, 'javascript:eintragen(3);', 'SLA+', 'sla', 'Schnelllöschantrag')
addMenuEntry(menuTemplates, 'javascript:eintragen(2);', 'LA+', 'la', 'Löschantrag')
if (isArticle) {
addMenuEntry(menuTemplates, 'javascript:eintragen(1);', 'QS+', 'qs', 'Qualitätssicherung')
addMenuEntry(menuTemplates, 'javascript:eintragen(5);', 'URV+', 'urv', 'Urheberrechtsverletzung')
}
})
}
myAddOnloadHook(function () {
// Work
var menuWork = addUserMenu('work', 'Work')
addMenuEntry(menuWork, '/wiki/Portal:Russland/Mitmachen', 'Portal Russland', 'pru')
addMenuEntry(menuWork, '/wiki/Wikipedia:WikiProjekt_Kaukasus', 'WikiProjekt Kaukasus', 'wpkauk')
addMenuEntry(menuWork, '/wiki/Portal:Kasachstan/Mitmachen', 'Portal Kasachstan', 'pkas')
addMenuEntry(menuWork, '/wiki/Wikipedia:Namenskonventionen/Kyrillisch', 'WP:NKK', 'wpnkk', 'Namenskonventionen Kyrillisch')
// Tools
var menuTools = addUserMenu('tools', 'Tools')
addMenuEntry(menuTools, '//tools.wmflabs.org/commonshelper/', 'Move to Commons', 'm2c', 'Move-to-commons-Assistent')
addMenuEntry(menuTools, 'http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?search=' + pesctitle, 'GlobalWikiSearch', 'search')
addMenuEntry(menuTools, 'http://wikipedia.ramselehof.de/wikiblame.php?article=' + pesctitle + '&ignorefirst=3', 'WikiBlame', 'blame')
addMenuEntry(menuTools, '//petscan.wmflabs.org', 'PetScan', 'petscan')
addMenuEntry(menuTools, '//tools.wmflabs.org/missingtopics/', 'Missing Topics', 'topics')
addMenuEntry(menuTools, '//tools.wmflabs.org/templatetiger/', 'Vorlagenauswertung', 'templates')
addMenuEntry(menuTools, '//tools.wmflabs.org/templator/', 'Templator', 'templator')
addMenuEntry(menuTools, 'http://vs.aka-online.de/taxoboxomat/', 'Taxoboxomat', 'taxobox')
// Quellen (extern)
var menuExtern = addUserMenu('extern', 'Quellen')
addMenuEntry(menuExtern, 'http://slovari.yandex.ru/~книги/БСЭ/', 'БСЭ', 'bse', 'Большая советская энциклопедия')
addMenuEntry(menuExtern, 'http://www.vehi.net/brokgauz/index.html', 'Брокгауз и Ефрон', 'be')
addMenuEntry(menuExtern, 'http://slovari.yandex.ru/~книги/Энциклопедии/', 'Энциклопедии @ Яндекс', 'slovar')
addMenuEntry(menuExtern, 'http://maps.rosreestr.ru/PortalOnline/', 'Кадастровая карта', 'rosreestr', 'Кадастровая карта')
addMenuEntry(menuExtern, 'http://terrus.ru/cgi-bin/allrussia/v3_index.pl', 'terrus.ru', 'terrus', 'Территориальное устройство России')
addMenuEntry(menuExtern, 'http://www.mosclassific.ru/mClass/okato_view.php', 'OKATO', 'okato')
addMenuEntry(menuExtern, 'http://www.mosclassific.ru/mClass/oktmo_view.php', 'OKTMO', 'oktmo')
addMenuEntry(menuExtern, '/wiki/Portal:Russland/Tools/Zensus', 'Zensus Russland', 'zensus')
addMenuEntry(menuExtern, 'http://www.r-arcticnet.sr.unh.edu/v4.0/dareatable.html', 'R-ArcticNET', 'rarctic')
addMenuEntry(menuExtern, 'http://textual.ru/gvr/', 'Государственный водный реестр', 'gvr', 'GVR')
addMenuEntry(menuExtern, 'http://oopt.info/', 'oopt.info', 'oopt')
addMenuEntry(menuExtern, 'http://www.biodat.ru/db/rb/', 'Красная Книга России', 'red')
addMenuEntry(menuExtern, 'http://bibliotekar.ru/mif/', 'Мифологический cловарь', 'myth')
addMenuEntry(menuExtern, 'http://commons.wikipedia.org/wiki/Category:Russia', 'Commons:Russland', 'commons')
addMenuEntry(menuExtern, 'http://www.retrobibliothek.de/retrobib/suche.html', 'retro-bib', 'retro')
addMenuEntry(menuExtern, 'http://www.deutsche-biographie.de/suche.html', 'ADB/NDB', 'adb', 'Allgemeine/Neue Deutsche Biographie')
addMenuEntry(menuExtern, 'http://www.zeno.org/Bibliothek', 'Zeno', 'zeno', 'zeno.org')
addMenuEntry(menuExtern, 'http://www.ubka.uni-karlsruhe.de/kvk.html', 'KVK', 'kvk', 'Karlsruher Virtueller Katalog')
addMenuEntry(menuExtern, 'https://portal.d-nb.de/opac.htm?method=showOptions#top', 'DNB', 'dnb', 'Deutsche Nationalbibliothek')
addMenuEntry(menuExtern, 'http://www.loc.gov/standards/iso639-2/php/code_list.php', 'ISO 639-1/2', 'iso12', 'ISO 639-1/2 Language Codes')
addMenuEntry(menuExtern, 'http://www.sil.org/iso639-3/codes.asp', 'ISO 639-3', 'iso3', 'ISO 639-3 Language Codes')
addMenuEntry(menuExtern, '/wiki/ISO 3166-2:RU', 'ISO 3166-2:RU', 'isoru')
// WP-Seiten
var menuFavorites = addUserMenu('favorites', 'Intern')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:LKH', 'Löschkandidaten', 'lkh', 'Löschkandidaten (heute)')
addMenuEntry(menuFavorites, '/w/index.php?title=Special:Recentchanges&hideminor=0&hideliu=1&hidebots=1&hidepatrolled=0&days=7&limit=500',
'Recent Changes', 'rc', 'Letzte Änderungen')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:Kurier', 'Kurier', 'k', 'Wikipedia-Kurier')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:NEU', 'Projektneuheiten', 'neu')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:AAF', 'Adminanfragen', 'aaf')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:AN', 'Adminnotizen', 'an')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:FzW', 'FzW', 'fzw', 'Fragen zur Wikipedia')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:VM', 'Vandalismusmeldung', 'vm')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:SPP', 'Sperrprüfung', 'sp')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:LP', 'Löschprüfung', 'lp')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:EW', 'Entsperrwünsche', 'ew')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:QSH', 'Qualitätssicherung', 'qsh')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:AK', 'Adminkandidatur', 'ak')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:AP', 'Adminprobleme', 'ap')
addMenuEntry(menuFavorites, '/wiki/Wikipedia:WikiCup', 'WikiCup', 'wc')
})
// ------------------------------------- Eigene GUI-Anpassungen und Untermenüs -----------------------------------------------
myAddOnloadHook(function () {
renameGUIElement('ca-history', 'Versionen')
renameGUIElement('ca-addsection', '+')
renameGUIElement('pt-logout', 'X')
renameGUIElement('pt-mytalk', 'Diskussion')
renameGUIElement('pt-mycontris', 'Beiträge')
renameGUIElement('t-recentchangeslinked', 'Verlinkte Änderungen')
})
// diverse eingene Einstellungen
NavigationBarShowDefault = 100 // "alle" Navileisten einblenden
mwLoader.load('//meta.wikimedia.org/w/index.php?title=User:Perhelion/userstatus.js&action=raw&ctype=text/javascript')