Benutzer:PDD/markAdmins.js
Erscheinungsbild
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//***********************************************************************
// Doku dieses Gadgets: [[Wikipedia:Helferlein/markAdmins]]
// Skript ursprünglich von [[Benutzer:Euku]], 28. Dez. 2005
// Ex-Admin-Markierung von [[Benutzer:Sir]] und [[Benutzer:Olliminatore]]
// Adaptierung/zusätzliche Markierungen/Fixes: [[Benutzer:PDD]]
// Aufgeräumt & beschleunigt: [[Benutzer:Littl]]
// Etwas umgeräumt und potentielle Skinabhängigkeit entfernt: [[Benutzer:Guandalug]]
// Daten nach markAdmins-data.json ausgelagert, etc.: [[Benutzer:Count Count]]
//
// Alle Admins können die Datenbasis unter https://de.wikipedia.org/wiki/Benutzer:CountCountBot/markAdmins-data.json
// aktualiseren
//
//***********************************************************************
// <nowiki>
(function(mw, $) {
$.getJSON(mw.config.get('wgScriptPath') + '/index.php?action=raw&ctype=application/json&title=Benutzer:CountCountBot/markAdmins-data.json', function(data) {
mw.libs.markAdmins = {};
mw.libs.markAdmins.data = data;
mw.hook('wikipage.content').add(function(content) { annotateUserLinks(); });
});
function annotateUserLinks() {
// Jede der folgenden Variablen kann in der eigenen monobook.js/vector.js/common.js vorbelegt werden.
// Getestet wird jeweils die Ausnahme, Standard ist jeweils das Gegenteil davon.
var markadmins = window.markadmins !== false;
var markcomadmins = window.markcomadmins === true;
var markwdadmins = window.markwdadmins === true;
var markexadmins = window.markexadmins === true;
var markarbcom = window.markarbcom !== false;
var markoversight = window.markoversight !== false;
var markcheckuser = window.markcheckuser !== false;
// Vorzeitiger Abbruch, wenn es nichts zu tun gibt.
if (!markadmins && !markcomadmins && !markwdadmins && !markexadmins)
return;
var marksubpages = window.marksubpages === true;
var dontmarkmyself = window.dontmarkmyself === true;
// Die Markierungen dürfen nie leer sein, das wird hier sichergestellt.
var markatxt = window.markatxt || 'A';
var markbureautxt = window.markbureautxt || 'B';
var markstewtxt = window.markstewtxt || 'S';
var markrenatxt = window.markrenatxt || 'A-Ren';
var markcomatxt = window.markcomatxt || 'Com-A';
var markwdatxt = window.markwdatxt || 'WD-A';
var markexatxt = window.markexatxt || 'Ex-A';
var markoversighttxt = window.markoversighttxt || 'OS';
var markcheckusertxt = window.markcheckusertxt || 'CU';
var markombudsmantxt = window.markombudsmantxt || 'Omb';
var markarbcomtxt = window.markarbcomtxt || 'SG';
// Ende der vordefinierbaren Variablenwerte
var isSpecial = mw.config.get('wgCanonicalNamespace') == "Special";
var isHistory = mw.config.get('wgAction') == 'history';
var isUserpage = mw.config.get('wgCanonicalNamespace') == "User" || mw.config.get('wgCanonicalNamespace') == "User_talk";
var isTalk = mw.config.get('wgNamespaceNumber') % 2 == 1;
var isProject = mw.config.get('wgCanonicalNamespace') == "Project";
var isFile = mw.config.get('wgCanonicalNamespace') == "File";
var isHelp = mw.config.get('wgCanonicalNamespace') == "Help";
var isDiff = mw.util.getParamValue('diff') !== null;
var jsonData = mw.libs.markAdmins.data;
if (isSpecial || isHistory || isUserpage || isTalk || isProject || isFile || isHelp || isDiff) {
var i;
var aNode;
var allanchors = document.getElementsByTagName("A");
var allanchorsuser = [];
var followupmark;
var searchExp = /\/wiki\/Benutzer(in)?([ _]Diskussion)?:(.+)/;
var searchExpTalk = /[ _]Diskussion:/;
var marker;
var mainpageanchor;
mw.util.addCSS('span.adminMark { font-weight: bold; background-image:none !important; }');
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;
if (mainpageanchor) allanchorsuser[i] = currUserClean;
else allanchorsuser[i] = "";
followupmark = false;
if (i > 0)
if ((currUserClean == allanchorsuser[i - 1]) && talkpageanchor)
followupmark = true;
currUser = currUserClean;
marker = [];
if (markadmins) {
// is this user an admin?
if (jsonData.admins.includes(currUser)) marker.push(markatxt);
// is this user a renamed admin?
if (jsonData.renadmins.includes(currUser)) marker.push(markrenatxt);
// is this user a steward?
if (jsonData.stewards.includes(currUser)) marker.push(markstewtxt);
// is this user an ombudsman?
if (jsonData.ombudsman.includes(currUser)) marker.push(markombudsmantxt);
// is this user a bureaucrat?
if (jsonData.bureaucrats.includes(currUser)) marker.push(markbureautxt);
}
if (markoversight) {
// does this user have oversight rights?
if (jsonData.oversight.includes(currUser)) marker.push(markoversighttxt);
}
if (markcheckuser) {
// does this user have checkuser rights?
if (jsonData.checkuser.includes(currUser)) {
if (jsonData.admins.includes(currUser)) {
marker.push(markcheckusertxt);
} else {
marker.push(markcheckusertxt + "-" + markatxt);
}
}
}
if (markarbcom) {
// is this user an arbcom member?
if (jsonData.arbcom.includes(currUser)) {
if (jsonData.admins.includes(currUser)) {
marker.push(markarbcomtxt);
} else {
marker.push(markarbcomtxt + "-" + markatxt);
}
}
}
if (markcomadmins) {
// is this user a commons admin?
if (jsonData.comadmins.includes(currUser)) marker.push(markcomatxt);
}
if (markwdadmins) {
// is this user a wikidata admin?
if (jsonData.wdadmins.includes(currUser)) marker.push(markwdatxt);
}
if (markexadmins) {
// was this user an admin?
if (jsonData.exadmins.includes(currUser)) marker.push(markexatxt);
}
// don't mark followups
if (!followupmark)
// don't mark certain pages, except link to user main page
if (mainpageanchor ||
(marksubpages && (mw.config.get('wgCanonicalSpecialPageName') != "Prefixindex")
&& (mw.config.get('wgCanonicalSpecialPageName') != "Allpages")))
// check finished, now append node
if ((marker.length > 0) && !(dontmarkmyself && (currUserClean == mw.config.get('wgUserName')))) {
var skip = false;
for (let i = 0; i < aNode.childNodes.length; i++) {
if (aNode.childNodes[i].className === "adminMark") {
skip = true;
break;
}
}
if (!skip) {
var aMark = document.createElement("span");
aMark.className = "adminMark";
var aMarkText = document.createTextNode("\u00A0(" + marker.join("/") + ")");
aMark.appendChild(aMarkText);
aNode.appendChild(aMark);
}
}
}
}
}
}
}(mediaWiki, jQuery));
// </nowiki>