User:Amga/vector.js

From Meta, a Wikimedia project coordination wiki

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' + '&section=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&section=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&section=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('&#61;')
      }

      // 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(/&section=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')