Benutzer:Frank C. Müller/markAdmins.js

Aus Wiktionary, dem freien Wörterbuch
 //***********************************************************************
 // 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]]
 // An das Wiktionary angepasst: [[Benutzer:Nirakka]]
 // Auf Unterseite von [[Benutzer:Frank C. Müller]] übertragen, 28.08.2014
 //***********************************************************************

 // <nowiki>

 // get URL parameters (used for page type variables)
 var UrlParameters = new Array ();
 readparams();
 
 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]);
  }
 }

 function markAdmins() {

   // Variables that should be defined in your monobook
   if (typeof(markadmins) == 'undefined')
       markadmins = true;

   if (!markadmins) 
       return; //nichts zu tun, schnell weg hier
 
   var langUser = "Benutzer:";        // in German 'Benutzer:'

   if (typeof(marksubpages) == 'undefined')
       marksubpages = false;
   if (typeof(dontmarkmyself) == 'undefined')
       dontmarkmyself = false;
   if (typeof(isSpecial) == 'undefined')
       isSpecial = (wgCanonicalNamespace == "Special");
   if (typeof(isHistory) == 'undefined')
       isHistory = (wgAction == 'history'); 
   if (typeof(isUserpage) == 'undefined')
       isUserpage = ( (wgCanonicalNamespace == "User") || (wgCanonicalNamespace == "User_talk") );
   if (typeof(isTalk) == 'undefined')
       isTalk = (wgNamespaceNumber %2 == 1); 
   if (typeof(isProject) == 'undefined')
       isProject = (wgCanonicalNamespace == "Project");
   if (typeof(isDatei) == 'undefined')
       isDatei = (wgCanonicalNamespace == "File");
   if (typeof(isHelp) == 'undefined')
       isHelp = (wgCanonicalNamespace == "Help");
   if (typeof(isDiff) == 'undefined')
       isDiff = UrlParameters["diff"];

   if (markadmins) {
       // Administratoren, statische Liste. Stand: 28.08.2014
       var admins=new Array("Acf", "Akinom", "Baisemain", "Bal%C3%BB", "Caligari", "Crux", "DaB.", "Dr._Karl-Heinz_Best", "Elleff_Groom", "Kronf", "S.", "Seidenkäfer", "Stepro", "TheIgel69", "Tragopogon", "Trevas");
       var admins_str = '|'+admins.join('|')+'|';

       // Bureaukraten, statische Liste. Stand: 28.08.2014
       var bureaucrats=new Array("Baisemain", "DaB.", "Elleff Groom");
       var bureaucrats_str = '|'+bureaucrats.join('|')+'|';

       // Globale Stewards, statische Liste. Stand: 28.08.2014
       // Abgleich mit https://de.wikipedia.org/w/index.php?title=Spezial%3AGlobale_Benutzerliste&username=&group=steward
       var stewards=new Array("Ajraddatz", "Avraham", "Barras", "Bencmq", "Bennylin", "Billinghurst", "Bsadowski1", "DerHexer", "Elfix", "Hoo man", "J.delanoy", "Jyothis", "M7", "MBisanz", "MF-Warburg", "Mardetanha", "Matanya", "Mathonius", "Melos", "Meno25", "Mentifisto", "Pundit", "Quentinv57", "QuiteUnusual", "Rschen7754", "Ruslik0", "SPQRobin", "Savh", "Shanmugamp7", "Shizhao", "Snowolf", "TBloemink", "Tegel", "Teles", "Thogo", "Trijnstel", "Vituzzu", "Wikitanvir");
       var stewards_str = '|'+stewards.join('|')+'|';
  
       if (typeof(markatxt) == 'undefined')
           markatxt = "A";
       if (typeof(markbureautxt) == 'undefined')
           markbureautxt = "B";
       if (typeof(markstewtxt) == 'undefined')
           markstewtxt = "S";
   }

   if (isSpecial || isHistory || isUserpage || isTalk || isProject || isDatei || isHelp || isDiff) {
      var i;
      var aNode;
      var allanchors = document.getElementsByTagName("A");
      var searchExp = /.wiki.Benutzer.(.+)/;
      var trenn="/wiki/" + langUser;
      var marker;
      var mainpageanchor;

      appendCSS('span.adminMark { font-weight: bold; }');
      for (i=0; i < allanchors.length; i++) {
         aNode = allanchors[i];
         mainpageanchor = true;
         // if it's a link to a user
         if ((href = aNode.getAttribute("href")) && (href.indexOf(trenn) != -1)) {
             currUser = searchExp.exec(href)[1];
             /* if (isUserpage) */ currUserClean = currUser.replace(/\/.*/,'');
             if (currUserClean != currUser) mainpageanchor = false;
             currUser= "|" + currUserClean + "|";
             marker = new Array();

             if (markadmins) {
                // is this user an admin?
                if (admins_str.indexOf(currUser) != -1) marker.push(markatxt);               
                // is this user a steward?
                if (stewards_str.indexOf(currUser) != -1) marker.push(markstewtxt);
                // is this user a bureaucrat?
                if (bureaucrats_str.indexOf(currUser) != -1) marker.push(markbureautxt);
             }

             // don't mark certain pages, except link to user main page
             if (mainpageanchor ||
                 (marksubpages && (wgCanonicalSpecialPageName != "Prefixindex")
                               && (wgCanonicalSpecialPageName != "Allpages")) )
             // check finished, now append node
             if ((marker.length > 0) && !(dontmarkmyself && (currUserClean == wgUserName))) {
                // Variante 1 (traditionell)
                // var aMark = document.createElement("b");
                // Variante 2 (vom Erzbschof)
                var aMark = document.createElement("span");
                aMark.className = "adminMark";

                var aMarkText = document.createTextNode(" (" + marker.join("/") + ")");
                aMark.appendChild(aMarkText);
                aNode.appendChild(aMark);
             }
         }
      }
   }
 }

 addOnloadHook(markAdmins);

 // </nowiki>