Benutzer:Nirakka/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]]
 //***********************************************************************

 // <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) {
 // statische Liste
 // Stand: 14.07.2011
 var admins=new Array("Acf", "Akinom", "Baisemain", "Bal%C3%BB", "Caligari", "Crux", "Daniel_Seibert", "DaB.", "Dr._Karl-Heinz_Best", "Elleff_Groom", "Fire", "Justy", "Kronf", "Mathemaster", "Melancholie", "Merlin_G.", "MichaelDiederich", "Rhingdrache", "Seidenkäfer", "SteffenB", "Stepro", "S.", "TheIgel69", "Tosca", "Trevas");

       var admins_str = '|'+admins.join('|')+'|';
 
       var bureaucrats=new Array("Baisemain", "DaB.", "Fire");
       var bureaucrats_str = '|'+bureaucrats.join('|')+'|';

       // Stewards: Abgleich mit http://de.wikipedia.org/w/index.php?title=Spezial%3AGlobale_Benutzerliste&username=&group=steward&limit=100
       // Datrio,Fantasy: bis 22.12.2007
       // Suisui,Snowdog: bis 1.1.2008
       // Maveric149 (auf meta: Daniel Mayer): nur noch Meta-Steward, nicht Global
       var stewards=new Array(
        /* global stewards */
       "Andre_Engels", "Avraham", "Bastique", "Bsadowski1", "Darkoneko", "DerHexer", "Dferg", "Dungodung", "Eptalon", /* "Erwin", */"Fr33kman", "Guillom", "J.delanoy", "Jafeluv", "Jusjih", "Jyothis", "Laaknor", "Leinad", "M7", "Magister_Mathematicae", "Manuelt15", "Mardetanha", "Matanya", /* "Mav", */ "Melos", "Mentifisto", "Mercy", "Millosh", "Nick1915", "Pathoschild", "PeterSymonds", "Ruslik0", "Shanel", "Shizhao", "Wpedzich", "Wutsje");
       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>