Zum Inhalt springen

„Benutzer:РDD3/markAdmins.js“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Inhalt gelöscht Inhalt hinzugefügt
РDD3 (Diskussion | Beiträge)
 
РDD3 (Diskussion | Beiträge)
Zusammenführung des Forks von Commons:MediaWiki:Gadget-markAdmins-data.js, sollte um die 200% schneller sein
Zeile 1: Zeile 1:
/**
//***********************************************************************
* Flag administrators and special user group members with a letter
// Skript ursprünglich von [[Benutzer:Euku]], 28. Dez. 2005
* in parenthesis behind links that go into their user namespace.
// Ex-Admin-Markierung von [[Benutzer:Sir]] und [[Benutzer:Olliminatore]]
* E.g. Didym -> Didym (A)
// Adaptierung/zusätzliche Markierungen/Fixes: [[Benutzer:PDD]]
*
// Aufgeräumt & beschleunigt: [[Benutzer:Littl]]
* @rev 14:18, 7. Dez. 2016 (CET)
// Etwas umgeräumt und potentielle Skinabhängigkeit entfernt: [[Benutzer:Guandalug]]
* @author Euku, 28. Dez. 2005
//***********************************************************************
* @author Sir und Olliminatore - Ex-Admin-Markierung

* @author PDD - Adaptierung/zusätzliche Markierungen/Fixes
* @author Littl - aufgeräumt & beschleunigt
* @author Guandalug - Etwas umgeräumt und potentielle Skinabhängigkeit entfernt
* @author Didym, Rillke, 2014
**/
// <nowiki>
// <nowiki>
/* global jQuery, mw */
/*global mediaWiki, jQuery*/
jQuery(document).ready(function () {
(function (mw, $) {
"use strict";
'use strict';
// Jede der folgenden Variablen kann in der eigenen monobook.js/vector.js/common.js vorbelegt werden.


var markadmins = window.markadmins === undefined || window.markadmins;
// Getestet wird jeweils die Ausnahme, Standard ist jeweils das Gegenteil davon.
// Jeder der folgenden vordefinierbaren Variablenwerte kann in
var markadmins = window.markadmins !== false;
// der eigenen monobook.js/vector.js/common.js vorbelegt werden.
var markcomadmins = window.markcomadmins === true;
var markwdadmins = window.markwdadmins === true;
var markAdmins = mw.libs.markAdmins = {
nodes: [],
var markexadmins = window.markexadmins === true;
config: {
var markexbureaucrats = window.markexbureaucrats === true;
groups: {
arbcom: {
label: 'SG',
legacyName: 'arbcom',
legacyLabelId: 'arbcomtxt',
enabled: true
},
ombudsman: {
label: 'Omb',
legacyName: 'ombudsman',
legacyLabelId: 'ombudsmantxt',
enabled: true
},
renadmin: {
label: 'A-Ren',
legacyName: 'rena',
legacyLabelId: 'renatxt',
enabled: true
},
comadmin: {
label: 'Com-A',
legacyName: 'coma',
legacyLabelId: 'comatxt',
enabled: false
},
exadmin: {
label: 'Ex-A',
legacyName: 'exa',
legacyLabelId: 'exatxt',
enabled: false
},
wdadmin: {
label: 'WD-A',
legacyName: 'wda',
legacyLabelId: 'wdatxt',
enabled: false
},
exbureaucrat: {
label: 'Ex-B',
legacyName: 'exbureau',
legacyLabelId: 'exbureautxt',
enabled: false
}
}
},
defaults: {
groups: {
sysop: {
label: 'A',
legacyName: 'admins',
legacyLabelId: 'atxt',
enabled: true
},
oversight: {
label: 'OS',
legacyName: 'oversight',
legacyLabelId: 'oversighttxt',
enabled: true
},
checkuser: {
label: 'CU',
legacyName: 'checkuser',
legacyLabelId: 'checkusertxt',
enabled: true
},
bureaucrat: {
label: 'B',
legacyName: 'bureaucrat',
legacyLabelId: 'bureautxt',
enabled: true
},
steward: {
label: 'S',
legacyName: 'steward',
legacyLabelId: 'stewtxt',
enabled: true
},
'OTRS-member': {
label: 'P',
legacyName: 'otrs',
legacyLabelId: 'otrstxt'
},
'Image-reviewer': {
label: 'L',
legacyName: 'imagereviewers',
legacyLabelId: 'imgreviewertxt'
}
},
runOn: ['Special', 'User', 'User_talk', 'Project', 'File', 'Help'],
runOnHistory: true,
runOnTalk: true,
runOnDiff: true
},
init: function (users) {
markAdmins.users = users;
// Wait for user configuration through their .js
// Not adding as a gadget dependency because user .js
// is sometimes invalid and fails loading and
// gadget dependencies do not offer failed/error
// options
mw.loader.using('user', markAdmins.mergeConfig, markAdmins.mergeConfig);
},
mergeConfig: function () {
// Merge new configuration
// var optionsConfig = mw.user.options.get('markAdminCfg');
var cfg = $.extend(
true,
markAdmins.config,
markAdmins.defaults,
window.markAdminCfg || {}
// optionsConfig ? JSON.parse(optionsConfig) : {}
);


// Merge legacy config (maybe removed in future)
var markarbcom = window.markarbcom !== false;
$.each(cfg.groups, function (groupName, grpCfg) {
var markoversight = window.markoversight !== false;
// Display settings
var markcheckuser = window.markcheckuser !== false;
var enabled = window['mark' + grpCfg.legacyName];
if (enabled !== undefined)
grpCfg.enabled = !!enabled;
// Label
var label = window['mark' + grpCfg.legacyLabelId];
if (label !== undefined)
grpCfg.label = label;
});
cfg.markSubpages = !!window.marksubpages;
cfg.dontmarkmyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;


// Hook-up content loading
var marksubpages = window.marksubpages === true;
mw.hook('wikipage.content').add(markAdmins.addLabels);
var dontmarkmyself = window.dontmarkmyself === true;
},
markUser: function (marks, a, b) {
b.appendChild(document.createTextNode('\u00A0(' + marks.join("/") + ')'));
a.appendChild(b);
markAdmins.nodes.push(b);
},
destroy: function () {
$.each(markAdmins.nodes, function (i, n) {
$(n).remove();
});
},
reInit: function () {
markAdmins.destroy();
markAdmins.mergeConfig();
},


addLabels: function ($content) {
// Die Markierungen dürfen nie leer sein, das wird hier sichergestellt.
var markatxt = window.markatxt || 'A';
var users = markAdmins.users;
if (!users)
var markbureautxt = window.markbureautxt || 'B';
return;
var markstewtxt = window.markstewtxt || 'S';
if (!markAdmins.fullPageProcessed) {
var markrenatxt = window.markrenatxt || 'A-Ren';
$content = $('#mw-content-text');
if (!$content.length)
$content = $('#bodyContent');
if (!$content.length)
$content = $(document);
markAdmins.fullPageProcessed = true;
}


// Right, the configuration evaluation is here
var markcomatxt = window.markcomatxt || 'Com-A';
// It might be possible to use Ajax for page
var markwdatxt = window.markwdatxt || 'WD-A';
// navigation in future.
var canNs = mw.config.get('wgCanonicalNamespace');
var isSubpageListing = !!({
'Prefixindex': 1,
'Allpages': 1
})[mw.config.get('wgCanonicalSpecialPageName')];
var isHistory = mw.config.get('wgAction') === 'history';
var isTalk = mw.config.get('wgNamespaceNumber') % 2 === 1;
var isDiff = !!mw.util.getParamValue('diff');
var cfg = markAdmins.config;
var nsCondition = cfg.runOn.indexOf(canNs) !== -1;
var enabledGroups = {}; // collect only relevant groups
var marker = {}; // collect user-links


// Namespace run conditions
var markexatxt = window.markexatxt || 'Ex-A';
if (!(nsCondition ||
var markexbureautxt = window.markexbureautxt || 'Ex-B';
isHistory && cfg.runOnHistory ||
isTalk && cfg.runOnTalk ||
isDiff && cfg.runOnDiff))
return;


$.each(cfg.groups, function (g, grpCfg) {
var markoversighttxt = window.markoversighttxt || 'OS';
if (grpCfg.enabled) {
var markcheckusertxt = window.markcheckusertxt || 'CU';
enabledGroups[g] = grpCfg;
var markombudsmantxt = window.markombudsmantxt || 'Omb';
if (users[g])
var markarbcomtxt = window.markarbcomtxt || 'SG';
enabledGroups[g].users = '|' + users[g].join('|') + '|';
else // should never happen
delete enabledGroups[g];
}
});


var allanchors = $content[0].getElementsByTagName('A');
// Ende der vordefinierbaren Variablenwerte
var previousUser = '';
var reUserpage = /\/wiki\/Benutzer(in)?([ _]Diskussion)?:(.+)/;
var node = document.createElement('b');
node.className = 'adminMark';


for (var i = 0, anchorsLen = allanchors.length; i < anchorsLen; ++i) {
// Vorzeitiger Abbruch, wenn es nichts zu tun gibt.
var a = allanchors[i];
if (!markadmins && !markcomadmins && !markwdadmins && !markexadmins && !markexbureaucrats)
var href = a.getAttribute("href");
return;


// If it's not a link to a user
var cNs = mw.config.get('wgCanonicalNamespace');
if (!href)
var isSpecial = cNs === "Special";
continue;
var isHistory = mw.config.get('wgAction') === 'history';
var isUserpage = cNs === "User" || cNs === "User_talk";
var isTalk = mw.config.get('wgNamespaceNumber') % 2 === 1;
var isProject = cNs === "Project";
var isFile = cNs === "File";
var isHelp = cNs === "Help";
var isDiff = mw.util.getParamValue('diff') !== null;


// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
if (markadmins) {
var m = href.match(reUserpage);
// statische Liste (dynamisch: http://toolserver.org/~aka/dewiki_admins_utf8.txt )
if (!m || !m[3])
// Stand: 24.11.2016
continue;
var admins = ["Achim_Raschka", "AFBorchert", "AHZ", "Aka", "Alraunenstern", "Ambross07", "Anka_Friedrich", "APPER", "Armin_P.", "Artregor", "Aspiriniks", "Atamari", "Baumfreund-FFM", "Benowar", "Brackenheim", "Bubo_bubo", "Cactus26", "Carbidfischer", "Catrin", "Cherubino", "Chewbacca2205", "Chricho", "Christian2003", "Cirdan", "C%C3%A9sar", "C%C3%BA_Faoil", "Cymothoa_exigua", "D", "DaB.", "Dandelo", "Der.Traeumer", "DerHexer", "Doc_Taxon", "Doc.Heintz", "Drahreg01", "Eike_sauer", "Elendur", "Elya", "Emergency_doc", "Emes", "Engie", "Entlinkt", "Enzian44", "Ephraim33", "Eschenmoser", "Euku", "Eynre", "Felistoria", "Firefox13", "Flibbertigibbet", "Flominator", "Frank_Schulenburg", "Funkruf", "GDK", "Geiserich77", "Gerbil", "Gereon_K.", "Gestumblindi", "Gleiberg", "Graphikus", "Gripweed", "Gustav_von_Aschenbach", "H-stt", "Hadhuey", "HaeB", "Hans-J%C3%BCrgen_H%C3%BCbner", "He3nry", "Hejkal", "Hephaion", "Herzi_Pinki", "Hic_et_nunc", "Hofres", "Holmium", "HOPflaume", "Horst_Gr%C3%A4bner", "Howwi", "Hukuk%C3%A7u", "Hydro", "Ireas", "Itti", "Ixitixel", "J_budissin", "JWBE", "Jcornelius", "JD", "Jivee_Blau", "J%C3%BCrgen_Oetting", "JuTa", "Kaisersoft", "Kam_Solusar", "Karsten11", "Kein_Einstein", "Kh80", "Krd", "Kriddl", "Kritzolina", "Kuebi", "Kulac", "Kurator71", "Kurt_Jansson", "Leithian", "Leyo", "Lipstar", "Logograph", "Lou.gruber", "Lustiger_seth", "MBq", "Mabschaaf", "Machahn", "Maclemo", "Magiers", "Man77", "Memnon335bc", "Merlissimo", "Micha", "Micha_L._Rieser", "Mikered", "Mo4jolo", "Mogelzahn", "Murli", "Neozoon", "Nepenthes", "NiTenIchiRyu", "Nikkis", "Nolispanmo", "NordNordWest", "Nothere", "Orci", "Ot", "Otberg", "Pacogo7", "Partynia", "PaterMcFly", "PDD", "Pelz", "Perrak", "Plani", "Polarlys", "Poupou_l%27quourouce", "Quedel", "Queryzo", "Ra%27ike", "Rainer_Lippert", "Rax", "Raymond", "Redlinux", "Regi51", "Regiomontanus", "Reinhard_Kraasch", "Rolf_H.", "Rosenzweig", "S._F._B._Morse", "S.Didam", "Saehrimnir", "Sargoth", "Schniggendiller", "Schwalbe", "Seewolf", "Septembermorgen", "Shikeishu", "Solid_State", "Squasher", "SteKrueBe", "Stechlin", "Stefan", "Stefan_K%C3%BChn", "Stefan64", "Steffen_L%C3%B6we_Gera", "Steschke", "Superbass", "ThePeter", "Theghaz", "Thogo", "Ticketautomat", "Tilman_Berger", "Timk70", "Tsor", "Tsui", "UW", "Ukko", "Umherirrender", "Ureinwohner", "Uwe_Gille", "WAH", "WIKImaniac", "Wahldresdner", "Wahrerwattwurm", "Wdwd", "Wikijunkie", "Wnme", "Wo_st_01", "XenonX3", "Xqt", "Yellowcard", "YourEyesOnly", "Zinnmann", "Zollernalb"];
var userpage = m[3];


// Extract user
admins = '|' + admins.join('|') + '|';
var user = userpage.replace(/[/#]. * / , '');


var isMainUserpageLink = user === userpage;
var bureaucrats = ["APPER", "MBq", "Merlissimo", "Itti"];
var isUsertalkLink = !!m[2];
bureaucrats = '|' + bureaucrats.join('|') + '|';


// Two consecutive links to the same user? Don't mark followups!
// Stewards: Abgleich mit http://de.wikipedia.org/w/index.php?title=Spezial%3AGlobale_Benutzerliste&username=&group=steward&limit=100
previousUser = (previousUser === user && isUsertalkLink);
var stewards = [
if (previousUser) // only once
/* stewards */
continue;
"Ajraddatz", "Avraham", "Barras", "Bennylin", "Bsadowski1", "DerHexer", "Einsbor", "Hoo_man", "Jyothis", "Linedwell", "M7", "MarcoAurelio", "Mardetanha", "Masti", "Matanya", "MBisanz", "Melos", "Mentifisto", "MF-Warburg", "NahidSultan", "Pmlineditor", "QuiteUnusual", "RadiX", "Ruslik0", "Savh", "Shanmugamp7", "Stryn", "Tegel", "Teles", "Trijnstel", "Vituzzu"];
stewards = '|' + stewards.join('|') + '|';


if (marker[user] === undefined) {
// renames
var curUser = "|" + user + "|";
var renadmins = ["Gunter_Krebs", "Budissin", "Gunter.krebs", "Thomas_Goldammer", "RKraasch", "St-fl", "Paul_Conradi", "Hoch_auf_einem_Baum", "OnkelJohn", "Schweinepeterle", "Jutta234", "Gloecknerd", "Ex-Steerpike", "HansCastorp", "BayernMuenchen", "Dr.heintz", "Dr.Heintz", "Hans_J._Castorp"];
var mark = [];
renadmins = '|' + renadmins.join('|') + '|';
// String concatenation is oftentimes faster in modern browsers,
}
// so using Arrays and joining them finally seems advantage.

// But we would need an additional IF, so there is no gain.
if (markcomadmins) {
for (var g in enabledGroups) {
// Stand: 19.11.2016
if (enabledGroups[g].users.indexOf(curUser) !== -1)
var comadmins = ["-revi", "~riley", "1Veertje", "32X", "99of9", "A.Savin", "AFBorchert", "Achim55", "Ahonc", "Aka", "Alan", "Alison", "Alno", "Amada44", "AnRo0002", "Angr", "Ankry", "Anthere", "Aude", "Avraham", "AzaToth", "Badseed", "Barcex", "Bastique", "Basvb", "Benoit_Rochon", "Beria", "Billinghurst", "Blackcat", "BrightRaven", "Butko", "Cambalachero", "Captain-tucker", "ChrisiPK", "Ciell", "Common_Good", "CommonsDelinker", "Cookie", "Courcelles", "Coyau", "Czar", "D-Kuru", "DMacks", "DaB.", "Dantadd", "Darwinius", "Davepape", "David_Levy", "De728631", "DerHexer", "Dereckson", "Dharmadhyaksha", "Didym", "Dschwen", "Ebrahim", "Edgar181", "Elcobbola", "Eleassar", "Elitre", "Ellin_Beltz", "Elya", "Emha", "EugeneZelenko", "Ezarate", "Fanghong", "Flominator", "FunkMonk", "Geagea", "Geni", "George_Chernilevsky", "Gestumblindi", "GifTagger", "Gnangarra", "Golbez", "Grin", "Gruznov", "H-stt", "HJ_Mitchell", "Hedwig_in_Washington", "Hekerui", "Herbythyme", "Hesperian", "Howcheng", "Huntster", "Hystrix", "INeverCry", "Indeedous", "Infrogmation", "JGHowes", "Jameslwoodward", "January", "Jaqen", "Jarekt", "JarrahTree", "Jastrow", "Jcb", "Jcornelius", "Jdforrester", "Jdx", "Jean-Fr%C3%A9d%C3%A9ric", "Jianhui67", "Jmabel", "Joergens.mi", "John_Vandenberg", "Josve05a", "JuTa", "Julo", "Jusjih", "KTo288", "Kaldari", "Kallerna", "Kelly", "King_of_Hearts", "Klemen_Kocjancic", "Krd", "Krinkle", "KrinkleBot", "Kwj2772", "Leit", "Leyo", "Lokal_Profil", "Lymantria", "L%C3%A9na", "M0tty", "MBisanz", "MPF", "Magog_the_Ogre", "Maire", "Marcus_Cyron", "Mardetanha", "Martin_H.", "Masur", "Matanya", "Materialscientist", "Mattbuck", "Maxim", "McZusatz", "Mentifisto", "MichaelMaggs", "Micheletb", "Missvain", "Mitchazenia", "Miya", "Mmxx", "Mono", "Morgankevinj", "Mormegil", "Multichill", "Mys_721tx", "Nagy", "NahidSultan", "Natuur12", "Neozoon", "Nick", "Nilfanion", "NordNordWest", "Notafish", "Nyttend", "Odder", "Okki", "Otourly", "P199", "Pi.1415926535", "PierreSelim", "Pitke", "Platonides", "Pleclown", "Poco_a_poco", "Podzemnik", "Polarlys", "Powerek38", "PumpkinSky", "Putnik", "Pyb", "Pymouss", "RP88", "Ra%27ike", "Ragesoss", "Rama", "Rastrojo", "Raymond", "Rehman", "Reinhard_Kraasch", "Revent", "Rillke", "Rimshot", "Rodhullandemu", "Romaine", "Ronhjones", "Rosenzweig", "Royalbroil", "Rubin16", "Rudolphous", "Sanandros", "Sandstein", "Sealle", "Shizhao", "Siebrand", "Sphilbrick", "Spiritia", "Sreejithk2000", "Srittau", "Steinsplitter", "Stifle", "Storkk", "Tabercil", "Taivo", "Tarawneh", "Techman224", "Teles", "Thibaut120094", "Thuresson", "Tom", "Trijnstel", "Tsca", "T%C3%BArelio", "VIGNERON", "WJBscribe", "Waldir", "Wdwd", "Whym", "Wikitanvir", "Wsiegmund", "Wutsje", "Wuzur", "Wvk", "Yann", "Yarl", "Yasu", "Ymblanter", "Yuval_Y", "Zhuyifei1999", "Zzyzx11", "%C3%89rico", "%E3%81%A8%E3%81%82%E3%82%8B%E7%99%BD%E3%81%84%E7%8C%AB"];
mark.push(enabledGroups[g].label);
comadmins = '|' + comadmins.join('|') + '|';
}

if (markwdadmins) {
// Stand: 01.09.2016
// Notes: Wikibase-Entwickler von WMDE werden nicht gekennzeichnet
var wdadmins = ["-revi", "Addshore", "Ajraddatz", "AmaryllisGardener", "Andreasmperu", "Andre_Engels", "Arkanosis", "Ash_Crow", "Calak", "Caliburn", "Conny", "Courcelles", "Csigabi", "Delusion23", "Ebrahim", "Edoderoo", "Ep%C3%ACdosis", "Eurodyne", "FakirNL", "Fomafix", "HakanIST", "Harmonia_Amanda", "Hazard-SJ", "Hoo_man", "Jared_Preston", "Jasper_Deng", "Jianhui67", "Jon_Harald_S%C3%B8by", "Ladsgroup", "LadyInGrey", "Lakokat", "Lymantria", "Mat%C4%9Bj_Such%C3%A1nek", "Mbch331", "Multichill", "Mushroom", "Nikki", "Nikosguard", "Pamputt", "Pasleim", "Penn_Station", "Ricordisamoa", "Rippitippi", "Romaine", "Rschen7754", "Rzuwig", "Sannita", "Sjoerddebruin", "Sotiale", "Stryn", "Taketa", "ValterVB", "Vogone", "Wagino_20100516", "Whym", "Ymblanter", "YMS", "Zolo", "%EB%B6%84%EB%8B%B9%EC%84%A0M"];
wdadmins = '|' + wdadmins.join('|') + '|';
}

if (markexadmins) {
/*
Notizen zu den Ex-Admins:
- PyBot: nur technisch Admin (2003)
- VIBBER/Starling: Status unklar (als IW-Developer wohl Adm, 2003/2004 in Admin-Liste geführt)
- VIBBER 20.4.07 selbst geadmint (???)
- klar deklarierte Nachfolgeaccounts stehen auch hier (El->Jah, Robert Kropf->TheRunnerUp)
- umbenannte Ex-Admins stehen auch hier (keine Extramarkierung für die paar Leute)
- Legende dazu:
Coma/Koethnig2 -> Koethnig
Tinuriand -> DaTroll/Umbenannter Benutzer1 -> P. Birken
El -> Jah
Frank 11NR -> Pfalzfrank
Geisterbanker -> S1
S1 -> A.Savin
A.Savin -> Savin 2005
NickKnatteron -> STBR
Marcela -> Ralf Roletschek
Zenogantner -> Zeno Gantner
Blunts -> Blunt.
Hufi2404 -> Hufi
Hufi -> ABC1234567
Addicks -> -jha-
Magnus -> Tullius
Presroi -> Mathias Schindler
Taxman -> TAXman
Kenwilliams -> Marcus Cyron
Blaite -> Holger I.
Rocco -> Sinn
Guenny -> Christian Günther
Sarazyn -> Jonathan Groß
Schlendrian -> Florian Adler
Capaci34 -> Thomas Glintzer
Tolanor von Preto -> Tolanor
Jrohr -> Johannes Rohr
Löschkandidat -> LKD
Pill -> Pajz

- verstorben:
Srbauer, Hermannthomas, Bradypus, ArtMechanic, Geos, NebMaatRe, Martin-vogel, Lady Whistler
- Deadmin:
Paddy: 15.4.2005 (WW verloren)
Anathema: 13.6.2005
Simplicius: 4.8.2005 (WW verloren)
Triebtäter: 7.8.2005 (WW verloren)
Mijobe: 17.9.2005 (WW gewonnen, trotzdem Deadmin)
Coma + Koethnig: 17.12.2005
Wst: 31.7.2006 / 5.10.2006
- Gescheiterte Wiederwahl nach MB
Liesel: 10.11.2009
EBB: 24.11.2009
ChristophLanger: 4.12.2009
Nocturne: 4.12.2009
Arnomane: 6.12.2009
Vigala Veia: 6.12.2009
Asb: 7.12.2009
Fire: 7.12.2009
ElRaki: 7.12.2009
Fusslkopp: 8.12.2009
Limasign: 8.12.2009
Stw: 8.12.2009
Cottbus: 8.12.2009
Mikue: 8.12.2009
Threedots: 8.12.2009
Tullius: 8.12.2009
Zenon: 8.12.2009
Irmgard: 9.12.2009
Chef: 11.12.2009
Sigune: 11.12.2009
Beyer: 11.12.2009
LosHawlos: 11.12.2009
Hoheit: 11.12.2009
Sven-steffen arndt: 12.12.2009
Vic Fontaine: 12.12.2009
Bernhard55: 13.12.2009
Echoray: 14.12.2009
Triggerhappy: 14.12.2009
Nina: 14.12.2009
AlexR: 23.12.2009
Fb78: 29.12.2009
Schewek: 31.12.2009
Schnargel: 31.12.2009
Stahlkocher: 31.12.2009
Rhododendronbusch: 17.01.2010
Nerd: 09.02.2011
Tilla: 06.04.2011
1001: 18.06.2011
Nb: 18.07.2011
32X: 02.04.2012 (WW nicht angetreten)
CdaMVvWgS: 15.06.2012 (WW nicht angetreten)
Mathias_Schindler: 16.06.2012 (WW nicht angetreten)
Streifengrasmaus: 16.06.2012 (WW nicht angetreten)
Alexander_Z.: 16.06.2012 (WW nicht angetreten)
Avatar: 16.06.2012 (WW nicht angetreten)
Birger_Fricke: 16.06.2012 (WW nicht angetreten)
Chb: 16.06.2012 (WW nicht angetreten)
Duesentrieb: 16.06.2012 (WW nicht angetreten)
Holger_I.: 16.06.2012 (WW nicht angetreten)
John_N.: 16.06.2012 (WW nicht angetreten)
Melkom: 16.06.2012 (WW nicht angetreten)
Robodoc: 16.06.2012 (WW nicht angetreten)
Philipendula: 16.06.2012 (WW nicht angetreten)
Sinn: 16.06.2012 (WW nicht angetreten)
Zenit: 16.06.2012 (WW nicht angetreten)
Kku: 22.06.2012 (WW nicht erfolgreich)
Amberg 02.12.2012 (WW nicht erfolgreich)
Zumbo: 10.12.2012 (WW nicht angetreten)
JakobVoss: 24.06.2013 (WW nicht angetreten)
Janneman: 29.07.2013 (WW nicht angetreten)
Stepro: 18.11.2013 (WW nicht erfolgreich)
Media_lib: 02.01.2014 (WW nicht angetreten)
JD: 30.04.2014 (WW nicht angetreten)
Jan_eissfeldt: 10.09.2014 (WW nicht angetreten)
Memmingen: 05.12.2014 (WW nicht angetreten)
DaB.: 24.02.2015 (WW nicht erfolgreich
Artmax: 15.07.2015 (WW nicht angetreten)
Xocolatl: 20.09.2015 (WW nicht erfolgreich)
Altkatholik62: 25.09.2015 (WW nicht erfolgreich)
Magnus Manske: 20.10.2015 (WW nicht angetreten)
Morten Haan: 24.02.2016 (WW nicht erfolgreich)
Ne discere cessa!: 06.04.2016 (WW nicht erfolgreich)
Hyperdieter: 09.04.2016 (WW nicht erfolgreich)
Olaf Simons: 03.07.2016 (WW nicht angetreten)
Millbart: 21.07.2016 (WW nicht erfolgreich)
Factumquintus: 22.07.2016 (WW nicht angetreten)
Pjacobi: 27.07.2016 (WW nicht angetreten)
Schreiber: 28.07.2016 (WW nicht angetreten)
Cecil: 08.08.2016 (WW nicht angetreten)
Michael Sander: 09.08.2016 (WW nicht angetreten)
Pischdi: 18.08.2016 (WW nicht angetreten)
El Duende: 24.08.2016 (WW nicht angetreten)
Magnummandel: 26.08.2016 (WW nicht angetreten)
Church of emacs: 28.08.2016 ((WW nicht angetreten)
Nemissimo: 28.08.2016 (WW nicht angetreten)
Head: 28.08.2016 (WW nicht angetreten)
Slomox: 29.08.2016 (WW nicht angetreten)
Rainer Zenz: 31.08.2016 (WW nicht angetreten)
Bhuck: 31.08.2016 (WW nicht angetreten)
Michail: 31.08.2016 (WW nicht angetreten)
Scherben: 31.08.2016 (WW nicht angetreten)
JCS: 31.08.2016 (WW nicht angetreten)
Rdb: 31.08.2016 (WW nicht angetreten)
NoCultureIcons: 02.09.2016 (WW nicht angetreten)
Otto_Normalverbraucher: 08.09.2016 (WW nicht angetreten)
Sir: 08.09.2016 (WW nicht angetreten)
Pitichinaccio: 08.09.2016 (WW nicht angetreten)
DaBroMfld: 09.09.2016 (WW nicht angetreten)
AndreasPraefcke: 11.09.2016 (WW nicht angetreten)
Mazbln: 11.09.2016 (WW nicht angetreten)
Nicola: 11.09.2016 (WW nicht erfolgreich)
BishkekRocks: 30.10.2016 (WW nicht angetreten)

- Untätigkeitsdeadmin:
16.04.2008: Aglarech, Ben-Zin, Igelball, Ilja_Lorek, Jofi, KMJ, Karl-Henner,
Pit, Robert_Kropf, Skriptor, Smurf, Terabyte, Thomas_Luft
13.06.2008: Erwin E aus U
17.07.2008: Kiker99, Vulture
21.07.2008: Kantor.JH, RobbyBer
03.08.2008: Herr_Th.
20.08.2008: Wolfgangbeyer
26.11.2008: Pfalzfrank
28.06.2009: Peterlustig
29.09.2009: JHeuser
15.11.2009: Fristu
03.01.2010: Manecke
15.02.2010: Kubrick
06.04.2010: Gardini
11.12.2010: Dr. Shaggeman, Lung
14.01.2011: Sa-se
15.09.2011: Raven
03.03.2012: MichaelDiederich
27.04.2012: TAXman
27.09.2012: Poisend-Ivy
22.01.2013: Hei_ber
06.02.2013: Guandalug
18.03.2013: Geisslr
19.09.2013: Florian Adler
12.10.2013: Noddy93
08.01.2014: Saibo
12.11.2014: Peter200
21.12.2014: Bdk
21.12.2014: Erzbischof
04.02.2015: Hafenbar
07.04.2015: LKD
18.04.2015: Feba
15.12.2015: Redf0x
06.02.2016: Svens Welt
- Ausstieg:
Steffen M.: 20.2.2005
Sansculotte: 23.3.2005
Dolos: 31.3.2005
Katharina: 22.4.2005
Herrick: 24.8.2005
Breeze: 14.12.2005
Jesusfreund: 23.1.2006 (WW dann verloren)
Akl: 12.2.2006
DaTroll: 5.5.2006 (WW dann verloren)
Dickbauch: 6.7.2006
Gunther: 5.12.2006
Markus Schweiß: 30.3.2007
Flups: 10.5.2007
Eike sauer: 9.10.2007 (WW 28.7.2011)
Tobi B.: 24.10.2007
Jergen: 5./10.2.2008
Anneke Wolf: 8.2.2008 (6 Monate)
Sechmet: 13.5.2008
Fantasy: 26.5.2008
Herr Klugbeisser: 9.6.2008
Marcus Cyron: 1.2.2009 (WW 14.8.2010)
Achim Raschka: 16.5.2009
Tönjes: 26.6.2009
Mnh: 9.8.2009
Leithian: 16.9.2009
Aristeides: 24.10.2009
Markus Mueller: 24.10.2009
Longbow4u: 25.10.2009
Baldhur: 25.10.2009
Achim Raschka: 26.10.2009
Tönjes: 26.10.2009
Lennert B: 27.10.2009
Henriette Fiebig: 27.10.2009
Syrcro: 29.10.2009
Crux: 2.11.2009
Alkuin: 2.11.2009
My name: 2.11.2009
Zeno Gantner: 3.11.2009
TomK32: 7.11.2009
Leon: 7.11.2009
Richardfabi: 9.11.2009
Darkone: 15.11.2009
W.wolny: 15.11.2009
IGEL: 16.11.2009
Eloquence: 17.11.2009
Tobnu: 19.11.2009
Stern: 22.11.2009
Elian: 24.11.2009
GS: 24.11.2009
Dishayloo: 25.11.2009
Georg Slickers: 25.11.2009
Blunt.: 30.11.2009 (2010/2011 SG-Admin)
Leipnizkeks: 17.12.2009
Rauenstein: 31.12.2009
Waugsberg: 5.4.2010
STBR: 14.05.2010
C-M: 23.06.2010
S1: 28.09.2010
SibFreak: 29.09.2010
Geher: 02.01.2011
Voyager: 08.01.2011
Capaci34: 24.1.2011 (WW 10.9.2011)
Andibrunt: 03.02.2011
Victor Eremita: 27.02.2011
Idler: 27.03.2011
Julius1990: 12.04.2011
Codeispoetry: 26.05.2011
Smial: 05.07.2011
Sebmol: 09.07.2011
Harro von Wuff: 16.07.2011
Tröte: 28.07.2011
Hufi: 21.08.2011
Wiggum: 07.09.2011
Don-kun: 10.10.2011
Magadan: 26.10.2011
Stullkowski: 09.11.2011
Matthäus Wander: 03.12.2011
Engelbaet: 03.12.2011
Hozro: 13.12.2011
Capaci34: 30.01.12
Karl Gruber: 12.02.12
Tafkas: 11.03.12
Presse03: 14.05.12
Silberchen: 19.05.12
Langec: 19.05.12
Adrian Suter: 22.05.12
Jacktd: 22.05.12
Dundak: 06.06.12
Chrkl: 16.06.12
Toter Alter Mann: 22.06.12
Lyzzy: 22.06.12
Port(u*o)s: 11.07.12
Catfisheye: 12.09.12
Aineias: 03.10.12
Dealerofsalvation: 02.11.12
Schiwago: 02.11.12
Bücherwürmlein: 11.11.12
Gnu1742: 24.01.13
Baumfreund-FFM: 06.03.13
Complex: 06.03.13
Koenraad: 18.03.13
Happolati: 01.07.13
Mautpreller: 11.07.13
Klugschnacker: 21.10.13
Marcus Cyron: 31.10.13
Jonathan Groß: 08.11.13
Minderbinder: 31.12.13
Eschenmoser: 03.01.14
Nightflyer: 03.01.14
Henriette Fiebig: 06.01.14
Tinz: 25.01.14
Alma: 10.02.14
Napa: 16.03.14
Johannes_Rohr: 04.06.14
Tolanor: 07.06.14
NEUROtiker: 23.06.14
Niteshift: 25.07.14
Filzstift: 11.08.14
LZ6387: 14.08.14
Jón: 27.09.14
Pittimann: 11.11.14
Coyote III: 23.11.14
Okatjerute: 07.01.15
Andreas Werle: 09.02.15
Sicherlich: 17.04.15
Inkowik: 16.05.15
Platte: 17.05.15
-jkb-: 21.05.15
Leit: 27.07.15
Dbenzhuser: 11.09.15
WolfgangRieger: 23.09.15
Jodo: 16.10.15
Koenraad: 27.12.15
Southpark: 04.02.16
Pajz: 30.03.16
FritzG: 26.04.16
Filterkaffee: 26.4.16
Martin Bahmann: 28.4.16
Denis Barthel: 7.5.16
David Ludwig: 5.7.16
Tigerente: 9.7.16
Ahellwig: 15.7.16
Seidl: 5.8.16
Drahreg01: 5.8.16
BLueFiSH.as: 10.8.16
Nicolai P.: 18.8.16
Miraki: 8.9.16
Siechfred: 1.11.16
- Wiedereinstieg:
Pfalzfrank: 1.7.2007 (Ausstieg 13.6.2007)
Pjacobi: 24.12.2006 (Ausstieg 14.5.2006)
Tobnu: 1.7.2007 (Ausstieg 3.4.2007)
Achim Raschka: 13.7.07 (Ausstieg 2.4.2007)
FritzG: 6.10.2007 (Ausstieg 2.9.2007)
Mnh: 3.11.2007 (Ausstieg 24.7.2007)
Ralf R.: 3.2.2008 (Ausstieg 17.1.2008)
Tafkas: 13.2.2008 (Ausstieg 15.1.2008)
Gnu1742: 21.2.2008 (Ausstieg: 23.1.2008)
Syrcro: 8.3.2008 (Ausstieg 24.1.2008)
S1: 3.4.2008 (Ausstieg 25.2.2008)
Arnomane: 8.5.2008 (Ausstieg 9.3.2008)
Rauenstein: 12.5.2008 (Ausstieg: 3.1.2008)
Achim Raschka: 1.6.2008 und 8.5.2015 per WW (Ausstieg: 1.1.2008)
Polarlys: 14.8.2008 (Ausstieg: 26.3.2008)
Complex: 1.9.08 (Ausstieg: 16.7.2008)
Bücherwürmlein: 12.12.08 (Ausstieg 23.11.2008)
Rauenstein: 14.12.2008 (Ausstieg 25.8.2008)
Tinz: 1.1.2009 (Ausstieg 30.6.2008)
Martin Bahmann: 16.1.2009 (Ausstieg 11.8.2008)
Syrcro: 28.3.2009 (Ausstieg 29.1.2009)
Tönjes: 30.3.2009 (Ausstieg 13.3.2009)
Jcornelius: 29.4.2009 (Ausstieg 31.8.2008)
Atamari: 1.5.2009 (Ausstieg 28.3.2009)
Julius1990: 21.5.2009 (Ausstieg 8.4.2009)
Happolati: 8.6.2009 (Ausstieg 23.1.2009)
Port(u*o)s: 15.8.2009 (Ausstieg 15.7.2009)
S1: 3.9.2009 (Ausstieg 7.6.2009)
Andibrunt: 3.9.2009 (Ausstieg 6.6.2009)
David Ludwig: 20.9.2009 (Ausstieg: 23.5.2008)
Leithian: 30.9.2009 (Ausstieg: 16.9.2009)
Sa-se: 28.10.09 (Ausstieg: 3.8.2009)
Henriette Fiebig: 14.12.2009 (Ausstieg: 27.10.2009)
Leithian: 12.4.2010 (Ausstieg: 23.2.2010)
Port(u*o)s: 30.4.2010 nach Neuwahl (Ausstieg: 17.12.2009)
Hufi: 6.10.2010 (Ausstieg: 22.4.2010)
Siechfred: 26.9.2012 (Ausstieg: 21.1.2012)
Martin Bahmann: 02.12.2012 (Ausstieg: 27.12.2009)
Cymothoa exigua: 05.07.2013 (Ausstieg: 14.06.2013)
Baumfreund-FFM: 10.09.2013 (Ausstieg: 06.03.2013)
Koenraad: 27.09.2013 (Ausstieg: 18.03.2013)
Steschke: 02.05.2015 (Ausstieg: 14.04.2014)
Siechfred: 08.05.2015 (Ausstieg: 23.01.14)
Martin Bahmann: 18.09.2015 (Ausstieg: 04.12.13)
Drahreg01: 28.11.2015 (Ausstieg: 18.08.2014)
DaB.: 07.04.2016 (Ausstieg: 24.02.2015)
Drahreg01: 01.09.2016 (Ausstieg: 05.08.2016)
- Temp-Deadmin:
Tobnu (28.9.07-8.10.07)
Richardfabi (5.11.07-21.11.07)
Carbidfischer (18.4.09-2.5.09 mit Nachschlag bis 18.5.09)
Achates (10.8.09-7.9.09, plus freiwilliger Nachschlag bis 5.10.09)
Baba66 (12.9.09-10.10.09)
Altkatholik62 (15.2.15–15.5.15)
*/
var exadmins = new Array("-jha-", "-jkb-", "Addicks", "Akl", "AlexR", "Amberg", "Anathema", "ArtMechanic", "Bradypus", "Breeze", "B%C3%BCcherw%C3%BCrmlein", "Chd", "Dolos", "EBB", "Fab", "Fantasy", "Herrick", "Hyperdieter", "Inkowik32", "Inkowik", "Jesusfreund", "Katharina", "Coma", "Koethnig2", "Koethnig", "Mijobe", "Paddy", "Sansculotte", "Simplicius", "Steffen_M.", "Triebt%C3%A4ter", /* ... */ "Ulrich.fuchs", "Unscheinbar", "Unukorno", "Woldemar", "El", "Jah", "Rainer_Bielefeld", "Kils", "Keichwa", "PyBot", "DaTroll", "Tinuriand", "Umbenannter_Benutzer1", "P._Birken", "Juesch", "Dickbauch", "Wst", "Gunther", "Markus_Mueller", "Markus_Schwei%C3%9F", "Berlin-Jurist", "Flups", "Tobias_B%C3%A4r", "Tobi_B.", "Srbauer", "Jergen", "Kellerkind", "Anneke_Wolf", "Aglarech", "Ben-Zin", "Igelball", "Ilja_Lorek", "Jofi", "KMJ", "Karl-Henner", "Pit", "Robert_Kropf", "Skriptor", "Smurf", "Terabyte", "Thomas_Luft", "TheRunnerUp", "Urbanus", "Ralf_Roletschek", "Marcela", "Sechmet", "Herr_Klugbeisser", "Erwin_E_aus_U", "Kiker99", "Vulture", "Kantor.JH", "RobbyBer", "Herr_Th.", "Wolfgangbeyer", "Pfalzfrank", "Frank11NR", "T%C3%B6njes", "Peterlustig", "Mnh", "Achates", "Hermannthomas", "Baba66", "JHeuser", "Aristeides", "Longbow4u", "Baldhur", "Necrophorus", "Lennert_B", "Syrcro", "Crux", "Alkuin", "My_name", "Zeno_Gantner", "Zenogantner", "TomK32", "LeonWeber", "Leon", "Richardfabi", "Liesel", "Fristu", "Darkone", "W.wolny", "IGEL", "Eloquence", "Tobnu", "Stern", "Elian", "GS", "Dishayloo", "Schusch", "Georg_Slickers", "Blunt.", "Blunts", "Nocturne", "ChristophLanger", "Arnomane", "Vigala_Veia", "Asb", "Fire", "ElRaki", "Fusslkopp", "Limasign", "Stw", "Cottbus", "Mikue", "Threedots", "Magnus", "Tullius", "Zenon", "Irmgard", "Chef", "Sigune", "Beyer", "LosHawlos", "Hoheit", "Sven-steffen_arndt", "Vic_Fontaine", "Bernhard55", "Echoray", "Triggerhappy", "Leipnizkeks", "Nina", "Fb78", "Rauenstein", "Schewek", "Schnargel", "Stahlkocher", "Manecke", "Rhododendronbusch", "Kubrick", "Waugsberg", "Gardini", "STBR", "NickKnatterton", "C-M", "Geisterbanker", "S1", "Savin_2005", "SibFreak", "Dr._Shaggeman", "Lung", "Geher", "Voyager", "Sa-se", "Geos", "Andibrunt", "Nerd", "Victor_Eremita", "Idler", "Tilla", "Julius1990", "Codeispoetry", "1001", "Smial", "Sebmol", "Harro_von_Wuff", "Nb", "NebMaatRe", "Tr%C3%B6te", "Hufi", "Hufi2404", "ABC1234567", "Wiggum", "Raven", "Don-kun", "Magadan", "Matth%C3%A4us_Wander", "Engelbaet", "Hozro", "Capaci34", "Thomas_Glintzer", "Karl_Gruber", "MichaelDiederich", "Tafkas", "32X", "TAXman", "Presse03", "Silberchen", "Langec", "Adrian_Suter", "Jacktd", "Dundak", "Philipp_Wetzlar", "CdaMVvWgS", "Chrkl", "Mathias_Schindler", "Presroi", "Streifengrasmaus", "Alexander_Z.", "Avatar", "Birger_Fricke", "Chb", "Duesentrieb", "Holger_I.", "Blaite", "John_N.", "Melkom", "Philipendula", "Robodoc", "Sinn", "Rocco", "Zenit", "Toter_Alter_Mann", "Kku", "Lyzzy", "Christian_G%C3%BCnther", "Guenny", "Port(u*o)s", "Catfisheye", "Poisend-Ivy", "Aineias", "Dealerofsalvation", "Schiwago", "Zumbo", "Hei_ber", "Gnu1742", "Guandalug", "Complex", "Geisslr", "Martin-vogel", "Lady_Whistler", "JakobVoss", "Happolati", "Mautpreller", "Janneman", "Florian_Adler", "Schlendrian", "Noddy93", "Klugschnacker", "Marcus_Cyron", "Kenwilliams", "Sarazyn", "Jonathan_Gro%C3%9F", "Stepro", "Minderbinder", "Media_lib", "Nightflyer", "Henriette_Fiebig", "Tinz", "Alma", "Saibo", "Napa", "Johannes_Rohr", "Jrohr", "Tolanor", "Tolanor_von_Preto", "NEUROtiker", "Niteshift", "Filzstift", "LZ6387", "Jan_eissfeldt", "J%C3%B3n", "Pittimann", "Peter200", "Coyote_III", "Memmingen", "Bdk", "Erzbischof", "Okatjerute", "Hafenbar", "Andreas_Werle", "LKD", "L%C3%B6schkandidat", "Sicherlich", "Feba", "Platte", "Artmax", "Leit", "Borheinsieg", "Eigntlich", "Dbenzhuser", "Xocolatl", "WolfgangRieger", "Altkatholik62", "Jodo", "Magnus_Manske", "Redf0x", "Koenraad", "Southpark", "Svens_Welt", "Morten_Haan", "Pajz", "Pill", "Ne_discere_cessa!", "FritzG", "Filterkaffee", "Martin_Bahmann", "Denis_Barthel", "Olaf_Simons", "David_Ludwig", "Davidl", "Tigerente", "Ahellwig", "Millbart", "AT", "Factumquintus", "Morgaine", "Pjacobi", "Schreiber", "Seidl", "Cecil", "Michael_Sander", "BLueFiSH.as", "Nicolai_P.", "Np", "Stullkowski", "Pischdi", "El_Duende", "Magnummandel", "Church_of_emacs", "Nemissimo", "Head", "Slomox", "Rainer_Zenz", "Bhuck", "Michail", "Finanzer", "Scherben", "JCS", "Rdb", "NoCultureIcons", "Miraki", "Otto_Normalverbraucher", "Sir", "Pitichinaccio", "DaBroMfld", "AndreasPraefcke", "Mazbln", "Nicola", "BishkekRocks", "Siechfred");
exadmins = '|' + exadmins.join('|') + '|';
}

if (markexbureaucrats) {
/*
seltsame Einträge im [[Wikipedia:Bürokratenlogbuch]] (Februar 2004) scheinen
auf E23 und TomK32 als Bürokraten hinzudeuten; hier aber nicht aufgeführt

vor Februar 2004: Admin-Flag durch Developer gesetzt, deshalb Manske aufgeführt
*/
var exbureaucrats = ["Head", "Sansculotte", "Magnus_Manske", "Stefan_K%C3%BChn", "MichaelDiederich", "Lyzzy", "Raymond", "Guandalug", "YourEyesOnly", "FritzG", "Inkowik32", "Inkowik"];
exbureaucrats = '|' + exbureaucrats.join('|') + '|';
}

// oversight
if (markoversight) {
// Notes: nö
var oversight = ["Emergency_doc", "Horst_Gr%C3%A4bner", "Nolispanmo", "Sargoth", "XenonX3"];
oversight = '|' + oversight.join('|') + '|';
}

// checkuser
if (markcheckuser) {
var checkuser = ["Alraunenstern", "Cirdan", "Hephaion", "Perrak", "Theghaz"];
var admcheckuser = ["Cirdan"];

checkuser = '|' + checkuser.join('|') + '|';
admcheckuser = '|' + admcheckuser.join('|') + '|';
}

// Ombudspersons: Abgleich mit https://de.wikipedia.org/w/index.php?title=Spezial%3AGlobale_Benutzerliste&username=&group=ombudsman&limit=75
var ombudsman = ["Alan", "Gnom", "Huji", "NahidSultan", "Pajz", "Polimerek", "Rubin16", "Taketa"];
ombudsman = '|' + ombudsman.join('|') + '|';

if (markarbcom || markadmins) {

// Notes: 22.5.2007 bis 30.11.2007
// var arbcom=["Bubo_bubo", "Janneman", "Lecartia", "Rainer_Zenz", "Thogo", "Henriette_Fiebig", "Kriddl", "Magadan", "Proofreader", "Streifengrasmaus"];
// var admarbcom=["Lecartia", "Proofreader"];

// Notes: 1.12.2007 bis 31.5.2008
// var arbcom=["Henriette_Fiebig", "Kriddl", "Magadan", "Proofreader", "Streifengrasmaus", "Achates", "Rainer_Zenz", "Sebmol", "SVL", "Thogo"];
// var admarbcom=["Proofreader", "SVL"];

// Notes: 1.6.2008 bis 31.7.2008
// var arbcom=["Achates", "Rainer_Zenz", "Sebmol", "SVL", "Thogo", "Achim_Raschka", "Proofreader", "Southpark", "Stefan64", "Streifengrasmaus"];
// var admarbcom=["Proofreader", "SVL"];

// Notes: 1.8.2008 bis 30.11.2008
// var arbcom=["Achates", "Rainer_Zenz", "SVL", "Thogo", "Achim_Raschka", "Proofreader", "Southpark", "Stefan64", "Streifengrasmaus"];
// var admarbcom=["Proofreader", "SVL"];

// Notes: 1.12.2008 bis 31.5.2009
// var arbcom=["Achim_Raschka", "Proofreader", "Southpark", "Stefan64", "Streifengrasmaus", "Achates", "Elya", "PDD", "Pitichinaccio", "Thogo"];
// var admarbcom=["Proofreader"];

// Notes: 1.6.2009 bis 30.11.2009
// var arbcom=["Achates", "Elya", "PDD", "Pitichinaccio", "Thogo", "Abena", "Gustavf", "Hans_Koberger", "Henriette_Fiebig", "Leithian"];
// var arbcom=["Achates", "PDD", "Gustavf"];
// var admarbcom=["Abena", "Gustavf", "Hans_Koberger"];
// var admarbcom=["Gustavf"];

// Notes: 1.12.2009 bis 31.5.2010
// var arbcom=["Anka_Friedrich", "Blunt.", "Geos", "Gustavf", "Hans_Koberger", "Hubertl", "Janneman", "Kriddl", "Pjacobi", "Ralf_Roletschek"];
// var admarbcom=["Anka_Friedrich", "Gustavf", "Hans_Koberger", "Hubertl"];

// Notes: 1.6.2010 bis 30.11.2010
// var arbcom=new Array("Blunt.", "Geos", "Kriddl", "Pjacobi", "Ralf_Roletschek", "Catfisheye", "Gustavf", "Hei_ber", "Poisend-Ivy", "Port(u*o)s");
// var admarbcom=["Blunt.", "Catfisheye", "Gustavf", "Hei_ber"];

// Notes: 1.12.2010 bis 31.05.2011
// var arbcom=new Array("Blunt.", /* verstorben: "Geos", */ "Carbidfischer", "Catfisheye", "Gustavf", "Hans_Koberger", "Hei_ber", "Perrak", "Pjacobi", "Port(u*o)s");
// var admarbcom=["Blunt.", "Catfisheye", "Gustavf", "Hans_Koberger", "Hei_ber"];

// Notes: 1.6.2011 bis 30.11.2011
// var arbcom=["-jkb-", "Ca$e", "Carbidfischer", "Codc", "Hans_Koberger", "Hosse", "Krd", "Perrak", "Pjacobi"];
// var admarbcom=["-jkb-", "Ca$e", "Codc", "Hans_Koberger", "Hosse", "Krd"];

// Notes: 30.11.2011 bis 31.05.2012
// var arbcom=["-jkb-", "Alupus", "Ca$e", "Codc", "Erzbischof", "Hans_Koberger", "Hosse", "Krd", "MAGISTER", "Perrak"];
// var admarbcom=["Alupus", "Ca$e", "Codc", "Hans_Koberger", "Hosse", "Krd", "MAGISTER"];

// Notes: 01.06.2012 bis 30.11.2012
// var arbcom=["Alraunenstern", "Alupus", "Aschmidt", "Codc", "Erzbischof", "Hosse", "Krd", "MAGISTER", "Perrak", "Snevern"];
// var admarbcom=["Alraunenstern", "Alupus", "Aschmidt", "Codc", "Hosse", "MAGISTER", "Snevern"];

// Notes: 01.12.2012 bis 31.05.2013
// var arbcom=["Alraunenstern", "Alupus", "Aschmidt", "Codc", "Krd", "Nicola", "Perrak", "Plani", "Snevern", "Toter_Alter_Mann"];
// var admarbcom=["Alraunenstern", "Alupus", "Aschmidt", "Codc", "Nicola", "Plani", "Snevern", "Toter_Alter_Mann"];

// Notes: 01.06.2013 bis 30.11.2013
// arbcom=["Alraunenstern", "Alupus", "HOPflaume", "Hosse", "Krd", "Man77", "Nicola", "Perrak", "Plani", "Toter_Alter_Mann"];
// admarbcom=["Alraunenstern", "Alupus", "HOPflaume", "Hosse", "Nicola", "Plani", "Toter_Alter_Mann"];

// Notes: 01.12.2013 bis 31.05.2014
// arbcom=["Alnilam", "Alraunenstern", "HOPflaume", "Hosse", "Krd", "MAGISTER", "Man77", "Mikered", "Toter_Alter_Mann"];
// admarbcom=["Alnilam", "Alraunenstern", "HOPflaume", "Hosse", "MAGISTER", "Mikered", "Toter_Alter_Mann"];

// Notes: 01.06.2014 bis 30.11.2014
// Jürgen Oetting nur 01.06.-28.07.14
// arbcom=new ArrayArray("Alnilam", "Alraunenstern", "Ghilt", "HOPflaume", "Plani", "MAGISTER", "Man77", "Mikered", "Toter_Alter_Mann");
// arbcom=["Alnilam", "Alraunenstern", "Ghilt", "HOPflaume", "Plani", "MAGISTER", "Mikered", "Toter_Alter_Mann"];

// Notes: 01.12.2014 bis 31.05.2015
// arbcom=new ArrayArray("Alnilam", "Alraunenstern", "Achim_Raschka", "Codc", "Ghilt", "HOPflaume", "Plani", "MAGISTER", "Man77", "THWZ");
// arbcom=["Alnilam", "Codc", "Ghilt", "Plani", "MAGISTER", "THWZ"];

// Notes: 01.06.2015 bis 30.11.2015
// var arbcom=["Achim_Raschka", "Alnilam", "Codc", "DCB", "Ghilt", "Helfmann", "Plani", "MAGISTER", "THWZ"];
// var admarbcom=["Alnilam", "Codc", "DCB", "Ghilt", "Helfmann", "MAGISTER", "Plani", "THWZ"];

// Notes: 01.12.2015 bis 31.05.2016
// var arbcom=["Alnilam", "Codc", "DCB", "DerMaxdorfer", "Ghilt", "Helfmann", "Krd", "Plani", "Thogo", "THWZ"];
// var admarbcom=["Alnilam", "Codc", "DCB", "DerMaxdorfer", "Ghilt", "Helfmann", "Plani", "THWZ"];

// Notes: 01.06.2016 bis 08.09.2016 (Rücktritte)
// var arbcom=["Alnilam", "AnnaS.aus_I.", "Codc", "DCB", "DerMaxdorfer", "Ghilt", "Helfmann", "MAGISTER", "THWZ"];
// var admarbcom=["Alnilam", "AnnaS.aus_I.", "Codc", "DCB", "DerMaxdorfer", "Ghilt", "Helfmann", "MAGISTER", "THWZ"];

// Notes: 08.09.2016 bis 30.11.2016
// var arbcom=["AnnaS.aus_I.", "Codc", "DerMaxdorfer", "Ghilt", "Helfmann", "MAGISTER", "THWZ"];
// var admarbcom=["AnnaS.aus_I.", "Codc", "DerMaxdorfer", "Ghilt", "Helfmann", "MAGISTER", "THWZ"];

// Notes: 01.12.2016 bis 31.05.2017 (CURRENT)
var admarbcom = ["Ali1610", "AnnaS.aus_I.", "Freddy2001", "Ghilt", "Gnom", "Helfmann", "MAGISTER", "Miraki", "Sebastian_Wallroth"];
var arbcom = admarbcom.concat(["Man77"]); // add non admins

arbcom = '|' + arbcom.join('|') + '|';
admarbcom = '|' + admarbcom.join('|') + '|';
}

if (isSpecial || isHistory || isUserpage || isTalk || isProject || isFile || isHelp || isDiff) {
var allanchors = document.getElementsByTagName("A");
var allanchorsuser = [];
var searchExp = /\/wiki\/Benutzer(in)?([ _]Diskussion)?:(.+)/;
var searchExpTalk = /[ _]Diskussion:/;

// mw.util.addCSS('.adminMark { font-weight:bold; background-image:none !important; }');

for (var i = 0, a_len = allanchors.length; i < a_len; i++) {
var aNode = allanchors[i];
var mainpageanchor = true;
var talkpageanchor = false;
var SGSpecial = false;
var checkuserSpecial = false;
var href = aNode.getAttribute("href");
// if it's a link to a user
if (href && searchExp.exec(href)) {
var currUser = searchExp.exec(href)[3];
/* if (isUserpage) */
var currUserClean = currUser.replace(/\/.*/, '');
if (currUserClean !== currUser)
mainpageanchor = false;
if (searchExpTalk.exec(href) !== null)
talkpageanchor = true;

if (mainpageanchor)
allanchorsuser[i] = currUserClean;
else
allanchorsuser[i] = "";

var followupmark = false;
if (i > 0)
if ((currUserClean === allanchorsuser[i - 1]) && talkpageanchor)
followupmark = true;

currUser = "|" + currUserClean + "|";
var marker = [];
SGSpecial = admarbcom.indexOf(currUser) !== -1;
checkuserSpecial = admcheckuser.indexOf(currUser) !== -1;
if (SGSpecial) {
if (markarbcom || markadmins)
marker.push(markarbcomtxt + "-" + markatxt);
// is this user an ombudsman?
if (ombudsman.indexOf(currUser) !== -1)
marker.push(markombudsmantxt);
}
if (checkuserSpecial && (markcheckuser || markadmins)) {
marker.push(markcheckusertxt + "-" + markatxt);
}

if (markadmins && !SGSpecial && !checkuserSpecial) {
// don't mark SG-only Adm twice
if (admins.indexOf(currUser) !== -1 && admarbcom.indexOf(currUser) === -1)
// is this user an admin?
marker.push(markatxt);
// is this user a renamed admin?
if (renadmins.indexOf(currUser) !== -1)
marker.push(markrenatxt);
// is this user a steward?
if (stewards.indexOf(currUser) !== -1)
marker.push(markstewtxt);
// is this user an ombudsman?
if (ombudsman.indexOf(currUser) !== -1)
marker.push(markombudsmantxt);
// is this user a bureaucrat?
if (bureaucrats.indexOf(currUser) !== -1)
marker.push(markbureautxt);
}

if (markoversight) {
// does this user have oversight rights?
if (oversight.indexOf(currUser) !== -1)
marker.push(markoversighttxt);
}

if (markcheckuser && !checkuserSpecial) {
// does this user have checkuser rights?
if (checkuser.indexOf(currUser) !== -1)
marker.push(markcheckusertxt);
}

if (markarbcom && !SGSpecial) {
// is this user an arbcom member?
if (arbcom.indexOf(currUser) !== -1)
marker.push(markarbcomtxt);
}

if (markcomadmins) {
// is this user a commons admin?
if (comadmins.indexOf(currUser) !== -1)
marker.push(markcomatxt);
}

if (markwdadmins) {
// is this user a wikidata admin?
if (wdadmins.indexOf(currUser) !== -1)
marker.push(markwdatxt);
}

if (markexadmins) {
// was this user an admin?
if (exadmins.indexOf(currUser) !== -1)
marker.push(markexatxt);
}

if (markexbureaucrats) {
// was this user a bureaucrat?
if (exbureaucrats.indexOf(currUser) !== -1)
marker.push(markexbureautxt);
}
}


// don't mark followups
// Don't mark certain pages, except link to user main page
// Does the link go to the main user page or, if linking subpages is enabled,
if (!followupmark)
// don't mark certain pages, except link to user main page
// is it not a page that is just listing subpages?
if (!(isMainUserpageLink || cfg.markSubpages && !isSubpageListing))
if (mainpageanchor ||
continue;
(marksubpages && (mw.config.get('wgCanonicalSpecialPageName') !== "Prefixindex") &&
if (cfg.dontmarkmyself && user === cfg.dontmarkmyself)
(mw.config.get('wgCanonicalSpecialPageName') !== "Allpages")))
continue;
// check finished, now append node
// Are there markers at all?
if ((marker.length > 0) && !(dontmarkmyself && (currUserClean === mw.config.get('wgUserName')))) {
marker[user] = (mark.length) ? mark : '';
var aMark = document.createElement("b");
}
aMark.className = "adminMark";
// Check finished, now append node
aMark.appendChild(document.createTextNode("\u00A0(" + marker.join("/") + ")"));
if (marker[user]) {
aNode.appendChild(aMark);
markAdmins.markUser(marker[user], a, node.cloneNode(1));
}
// Required for consecutive user link check
previousUser = user;
}
}
}
}
}
}
});
};
importScript('Benutzer:%D0%A0DD3/markAdmins-data.js');

mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
// </nowiki>
// </nowiki>

Version vom 7. Dezember 2016, 15:19 Uhr

/**
*  Flag administrators and special user group members with a letter
*  in parenthesis behind links that go into their user namespace.
*  E.g. Didym -> Didym (A)
*
*  @rev 14:18, 7. Dez. 2016 (CET)
*  @author Euku, 28. Dez. 2005
*  @author Sir und Olliminatore - Ex-Admin-Markierung
*  @author PDD - Adaptierung/zusätzliche Markierungen/Fixes
*  @author Littl - aufgeräumt & beschleunigt
*  @author Guandalug - Etwas umgeräumt und potentielle Skinabhängigkeit entfernt
*  @author Didym, Rillke, 2014
**/
// <nowiki>
/*global mediaWiki, jQuery*/
(function (mw, $) {
'use strict';

var markadmins = window.markadmins === undefined || window.markadmins;
// Jeder der folgenden vordefinierbaren Variablenwerte kann in
// der eigenen monobook.js/vector.js/common.js vorbelegt werden.
var markAdmins = mw.libs.markAdmins = {
	nodes: [],
	config: {
		groups: {
			arbcom: {
				label: 'SG',
				legacyName: 'arbcom',
				legacyLabelId: 'arbcomtxt',
				enabled: true
			},
			ombudsman: {
				label: 'Omb',
				legacyName: 'ombudsman',
				legacyLabelId: 'ombudsmantxt',
				enabled: true
			},
			renadmin: {
				label: 'A-Ren',
				legacyName: 'rena',
				legacyLabelId: 'renatxt',
				enabled: true
			},
			comadmin: {
				label: 'Com-A',
				legacyName: 'coma',
				legacyLabelId: 'comatxt',
				enabled: false
			},
			exadmin: {
				label: 'Ex-A',
				legacyName: 'exa',
				legacyLabelId: 'exatxt',
				enabled: false
			},
			wdadmin: {
				label: 'WD-A',
				legacyName: 'wda',
				legacyLabelId: 'wdatxt',
				enabled: false
			},
			exbureaucrat: {
				label: 'Ex-B',
				legacyName: 'exbureau',
				legacyLabelId: 'exbureautxt',
				enabled: false
			}
		}
	},
	defaults: {
		groups: {
			sysop: {
				label: 'A',
				legacyName: 'admins',
				legacyLabelId: 'atxt',
				enabled: true
			},
			oversight: {
				label: 'OS',
				legacyName: 'oversight',
				legacyLabelId: 'oversighttxt',
				enabled: true
			},
			checkuser: {
				label: 'CU',
				legacyName: 'checkuser',
				legacyLabelId: 'checkusertxt',
				enabled: true
			},
			bureaucrat: {
				label: 'B',
				legacyName: 'bureaucrat',
				legacyLabelId: 'bureautxt',
				enabled: true
			},
			steward: {
				label: 'S',
				legacyName: 'steward',
				legacyLabelId: 'stewtxt',
				enabled: true
			},
			'OTRS-member': {
				label: 'P',
				legacyName: 'otrs',
				legacyLabelId: 'otrstxt'
			},
			'Image-reviewer': {
				label: 'L',
				legacyName: 'imagereviewers',
				legacyLabelId: 'imgreviewertxt'
			}
		},
		runOn: ['Special', 'User', 'User_talk', 'Project', 'File', 'Help'],
		runOnHistory: true,
		runOnTalk: true,
		runOnDiff: true
	},
	init: function (users) {
		markAdmins.users = users;
		// Wait for user configuration through their .js
		// Not adding as a gadget dependency because user .js
		// is sometimes invalid and fails loading and
		// gadget dependencies do not offer failed/error
		// options
		mw.loader.using('user', markAdmins.mergeConfig, markAdmins.mergeConfig);
	},
	mergeConfig: function () {
		// Merge new configuration
		// var optionsConfig = mw.user.options.get('markAdminCfg');
		var cfg = $.extend(
				true,
				markAdmins.config,
				markAdmins.defaults,
				window.markAdminCfg || {}
				// optionsConfig ? JSON.parse(optionsConfig) : {}
			);

		// Merge legacy config (maybe removed in future)
		$.each(cfg.groups, function (groupName, grpCfg) {
			// Display settings
			var enabled = window['mark' + grpCfg.legacyName];
			if (enabled !== undefined)
				grpCfg.enabled = !!enabled;
			// Label
			var label = window['mark' + grpCfg.legacyLabelId];
			if (label !== undefined)
				grpCfg.label = label;
		});
		cfg.markSubpages = !!window.marksubpages;
		cfg.dontmarkmyself = window.dontmarkmyself ? mw.config.get('wgUserName') : false;

		// Hook-up content loading
		mw.hook('wikipage.content').add(markAdmins.addLabels);
	},
	markUser: function (marks, a, b) {
		b.appendChild(document.createTextNode('\u00A0(' + marks.join("/") + ')'));
		a.appendChild(b);
		markAdmins.nodes.push(b);
	},
	destroy: function () {
		$.each(markAdmins.nodes, function (i, n) {
			$(n).remove();
		});
	},
	reInit: function () {
		markAdmins.destroy();
		markAdmins.mergeConfig();
	},

	addLabels: function ($content) {
		var users = markAdmins.users;
		if (!users)
			return;
		if (!markAdmins.fullPageProcessed) {
			$content = $('#mw-content-text');
			if (!$content.length)
				$content = $('#bodyContent');
			if (!$content.length)
				$content = $(document);
			markAdmins.fullPageProcessed = true;
		}

		// Right, the configuration evaluation is here
		// It might be possible to use Ajax for page
		// navigation in future.
		var canNs = mw.config.get('wgCanonicalNamespace');
		var isSubpageListing = !!({
			'Prefixindex': 1,
			'Allpages': 1
		})[mw.config.get('wgCanonicalSpecialPageName')];
		var isHistory = mw.config.get('wgAction') === 'history';
		var isTalk = mw.config.get('wgNamespaceNumber') % 2 === 1;
		var isDiff = !!mw.util.getParamValue('diff');
		var cfg = markAdmins.config;
		var nsCondition = cfg.runOn.indexOf(canNs) !== -1;
		var enabledGroups = {}; // collect only relevant groups
		var marker = {}; // collect user-links

		// Namespace run conditions
		if (!(nsCondition ||
				isHistory && cfg.runOnHistory ||
				isTalk && cfg.runOnTalk ||
				isDiff && cfg.runOnDiff))
			return;

		$.each(cfg.groups, function (g, grpCfg) {
			if (grpCfg.enabled) {
				enabledGroups[g] = grpCfg;
				if (users[g])
					enabledGroups[g].users = '|' + users[g].join('|') + '|';
				else // should never happen
					delete enabledGroups[g];
			}
		});

		var allanchors = $content[0].getElementsByTagName('A');
		var previousUser = '';
		var reUserpage = /\/wiki\/Benutzer(in)?([ _]Diskussion)?:(.+)/;
		var node = document.createElement('b');
		node.className = 'adminMark';

		for (var i = 0, anchorsLen = allanchors.length; i < anchorsLen; ++i) {
			var a = allanchors[i];
			var href = a.getAttribute("href");

			// If it's not a link to a user
			if (!href)
				continue;

			// Extract user page ( /wiki/User_talk:Foo/subpage -> Foo/subpage )
			var m = href.match(reUserpage);
			if (!m || !m[3])
				continue;
			var userpage = m[3];

			// Extract user
			var user = userpage.replace(/[/#]. *  / , '');

			var isMainUserpageLink = user === userpage;
			var isUsertalkLink = !!m[2];

			// Two consecutive links to the same user? Don't mark followups!
			previousUser = (previousUser === user && isUsertalkLink);
			if (previousUser) // only once
				continue;

			if (marker[user] === undefined) {
				var curUser = "|" + user + "|";
				var mark = [];
				// String concatenation is oftentimes faster in modern browsers,
				// so using Arrays and joining them finally seems advantage.
				// But we would need an additional IF, so there is no gain.
				for (var g in enabledGroups) {
					if (enabledGroups[g].users.indexOf(curUser) !== -1)
						mark.push(enabledGroups[g].label);
				}

				// Don't mark certain pages, except link to user main page
				// Does the link go to the main user page or, if linking subpages is enabled,
				// is it not a page that is just listing subpages?
				if (!(isMainUserpageLink || cfg.markSubpages && !isSubpageListing))
					continue;
				if (cfg.dontmarkmyself && user === cfg.dontmarkmyself)
					continue;
				// Are there markers at all?
				marker[user] = (mark.length) ? mark : '';
			}
			// Check finished, now append node
			if (marker[user]) {
				markAdmins.markUser(marker[user], a, node.cloneNode(1));
				// Required for consecutive user link check
				previousUser = user;
			}
		}
	}
};
importScript('Benutzer:%D0%A0DD3/markAdmins-data.js');
mw.hook('userjs.script-loaded.markadmins').add(markAdmins.init);
}(mediaWiki, jQuery));
// </nowiki>