Участник:Euku/markAdmins.js

Материал из Википедии — свободной энциклопедии
 //***********************************************************************
 // Marks admins with something
 // by [[:de:Benutzer:Spongo]]
 // 28. Dez. 2005
 
 // Ex-Admin-Markierung von [[:de:Benutzer:Sir]] und [[:de:Benutzer:Olliminatore]]
 // Adaptierung/zusätzliche Markierungen/Fixes: [[:de:Benutzer:PDD]]
 // Aufgeräumt & beschleunigt: [[:de:Benutzer:Littl]]
 //
 // ! Feel free to translate this page to Russian, right here.
 //***********************************************************************
 
 // <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]);
  }
 }
 // page type variables: namespaces
 var isArticle       = (mw.config.get('wgNamespaceNumber') == 0);
 var isArticleTalk   = (mw.config.get('wgNamespaceNumber') == 1);
 var isBild          = (mw.config.get('wgCanonicalNamespace') == "Image");
 var isCategory      = (mw.config.get('wgCanonicalNamespace') == "Category");
 var isTemplate      = (mw.config.get('wgCanonicalNamespace') == "Template");
 var isGeneric       = false;
 if ((!isBild) && (!isCategory) && (!isTemplate))
     isGeneric  = true;
 var isProject       = (mw.config.get('wgCanonicalNamespace') == "Project"); /* NS Wikipedia: */
 var isHelp          = (mw.config.get('wgCanonicalNamespace') == "Help");    /* NS Help */
 
 // page type variables: namespace == -1
 var isSpecial  = (mw.config.get('wgCanonicalNamespace') == "Special");
 var isRestore = (isSpecial && (mw.config.get('wgCanonicalSpecialPageName') == "Undelete"));
 var isContrib = (isSpecial && (mw.config.get('wgCanonicalSpecialPageName') == "Contributions"));
 var isWatchlist = (isSpecial && (mw.config.get('wgCanonicalSpecialPageName') == "Watchlist"));
 
 // page type variables: namespace == -1
 var isTalk = (!isSpecial && isOdd(mw.config.get('wgNamespaceNumber')));
 
 // page type variables: other stuff
 var isPHP     = (document.URL.indexOf('index.php') > 0);
 var isDiff    = UrlParameters["diff"];
 var isEdit    = ((UrlParameters['action']=='edit') || (UrlParameters['action']=='submit'));
 var isHistory = (UrlParameters['action']=='history');

 var langUser = "%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA";        // in ru 'Участник:'
 // Krimskrams
 function isEven(myNumber) {
    return (myNumber % 2 == 0);
 }
 function isOdd(myNumber) {
    return (! isEven(myNumber));
 }

 // statische Liste (als Backup)
 // last update: 21. Aug. 2007
var admins=new Array("A.I.","Alex_Spade","Alma_Pater","Altes","Amoses","Andrei_G_Kustov","Atorero","Boleslav1","Brion_VIBBER","Butko","CodeMonk","Ctac","D_V_S","DR","DaeX","Dennis_Myts","Dmitri_Lytov","Dmitry_Gerasimov","Dodonov","Drbug_","Dstary","EvgenyGenkin","George_Shuklin","HedgeHog","Ingwar_JR","Kalan","Kartmen","Kneiphof","Kv75","Levg","LoKi","MaxSem","Maxim_Razin","Maximaximax","Mitrius","Morpheios_Melas","Neon","Obersachse","OckhamTheFox","Ornil","Panther","Pauk","Paul_Pogonyshev","Pavelegorov","Putnik","Redline","Serguei_S._Dukachev","Solon","Spy1986","Stassats","Tassadar","Torin","Tosha","Vald","Vaya","Vinograd19","Volkov","Wind_","Wulfson","Yurik","%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80_%D0%A1%D0%B8%D0%B3%D0%B0%D1%87%D1%91%D0%B2","%D0%90%D0%BD%D0%B4%D1%80%D0%B5%D0%B9_%D0%A0%D0%BE%D0%BC%D0%B0%D0%BD%D0%B5%D0%BD%D0%BA%D0%BE","%D0%91%D0%B5%D0%BB%D0%BE%D0%BC%D0%BE%D0%B5%D0%B2_%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9","%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D0%BC%D0%B8%D1%80_%D0%92%D0%BE%D0%BB%D0%BE%D1%85%D0%BE%D0%BD%D1%81%D0%BA%D0%B8%D0%B9","%D0%9A%D0%BE%D0%BD%D1%81%D1%82._%D0%9A%D0%B0%D1%80%D0%B0%D1%81%D1%91%D0%B2","%D0%9D%D0%B5_%D0%90","%D0%A1._%D0%9B.","%D0%A1%D0%B0%D0%B9%D0%B3%D0%B020%D0%9A");
 function markAdmins() {
 
   // Variables that should be defined in your monobook
   if (typeof(markadmins) == 'undefined')
       markadmins = true;
   if (typeof(markcomadmins) == 'undefined')
       markcomadmins = false;
   if (typeof(markexadmins) == 'undefined')
       markexadmins = false;
 
   if (typeof(markarbcom) == 'undefined')
       markarbcom = false;
   if (typeof(markcheckuser) == 'undefined')
       markcheckuser = false;
 
   if (!markadmins && !markcomadmins && !markexadmins) return; //nichts zu tun, schnell weg hier 

   if (typeof(marksubpages) == 'undefined')
       marksubpages = false;
   if (typeof(dontmarkmyself) == 'undefined')
       dontmarkmyself = false;
   if (typeof(isSpecial) == 'undefined')
       isSpecial = (mw.config.get('wgCanonicalNamespace') == "Special");
   if (typeof(isHistory) == 'undefined')
       isHistory = (UrlParameters['action']=='history');
   if (typeof(isUserpage) == 'undefined')
       isUserpage = ( (mw.config.get('wgCanonicalNamespace') == "User") || (mw.config.get('wgCanonicalNamespace') == "User_talk") );
   if (typeof(isTalk) == 'undefined')
       isTalk = (document.URL.indexOf('Diskussion') > 0); // kludge
   if (typeof(isProject) == 'undefined')
       isProject = (mw.config.get('wgCanonicalNamespace') == "Project");
   if (typeof(isHelp) == 'undefined')
       isHelp = (mw.config.get('wgCanonicalNamespace') == "Help");
   if (typeof(isDiff) == 'undefined')
       isDiff = UrlParameters["diff"];
 
   if (markadmins) {
       var admins_str = '|'+admins.join('|')+'|'; 
 
       var bureaucrats=new Array("xxxxxxxxx");
       var bureaucrats_str = '|'+bureaucrats.join('|')+'|';
 
       var stewards=new Array("Fantasy", "Brion_VIBBER", "Snowdog", "Dbl2010", "Anthere", "Oscar", "Jimbo_Wales", "Angela", "MaxSem");
       var stewards_str = '|'+stewards.join('|')+'|';
 
       // renames
       var renadmins=new Array("xxxxxxx");
       var renadmins_str = '|'+renadmins.join('|')+'|';
 
       if (typeof(markatxt) == 'undefined')
           markatxt = "A";
       if (typeof(markbureautxt) == 'undefined')
           markbureautxt = "B"; 
       if (typeof(markstewtxt) == 'undefined')
           markstewtxt = "S";
       if (typeof(markrenatxt) == 'undefined')
           markrenatxt = "A-Ren";
   }
 
   if (markcomadmins) {
       // Notes: Eigntlich = Notschrei on commons
       //        Kuru = D-Kuru on commons
       var comadmins=new Array("xxxxxxxxxxx");
       var comadmins_str = '|'+comadmins.join('|')+'|';
 
       if (typeof(markcomatxt) == 'undefined')
           markcomatxt = "Com-A";
   }
 
   if (markexadmins) {
       /*
         Notizen zu den Ex-Admins:
       */
       var exadmins=new Array("xxxxxxx");
       var exadmins_str = '|'+exadmins.join('|')+'|';

       var exbureaucrats=new Array("xxxxxxxxxxxxx");
       var exbureaucrats_str = '|'+exbureaucrats.join('|')+'|';
 
       if (typeof(markexatxt) == 'undefined')
           markexatxt = "Ex-A";
       if (typeof(markexbureautxt) == 'undefined')
           markexbureautxt = "Ex-B";
   }
 
   if (markcheckuser) {
       // Notes:
       var checkuser=new Array("xxxxxxxxx");
       var checkuser_str = '|'+checkuser.join('|')+'|';
 
       if (typeof(markcheckusertxt) == 'undefined')
           markcheckusertxt = "CU";
   }
 
   if (markarbcom) {
       // Notes: ab 22.5.2007
       var arbcom=new Array("xxxxxxxxxxx");
       var arbcom_str = '|'+arbcom.join('|')+'|';
 
       if (typeof(markarbcomtxt) == 'undefined')
           markarbcomtxt = "SG";
   }
 
   if (markarbcom || markadmins) {
       // SG-only Admins
       var admarbcom=new Array("xxxxxxxxxxxxx");
       var admarbcom_str = '|'+admarbcom.join('|')+'|';
 
       if (typeof(markadmarbcomtxt) == 'undefined')
           markadmarbcomtxt = "SG-A";
   }
 
   if (isSpecial || isHistory || isUserpage || isTalk || isProject || isHelp || isDiff) {
      var i;
      var aNode;
      var allanchors = document.getElementsByTagName("A");      
      var searchExp = /.wiki.%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA.(.+)/;
      var trenn="/wiki/" + langUser;
      var marker;
      var mainpageanchor;
 
      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) {
                // don't mark SG-only Adm twice
                if (!(admarbcom_str.indexOf(currUser) != -1)) {
                   // is this user an admin?
                   if (admins_str.indexOf(currUser) != -1) marker.push(markatxt);
                   // is this user a renamed admin?
                   if (renadmins_str.indexOf(currUser) != -1) marker.push(markrenatxt);
                }
                // is this user a bureaucrat?
                if (bureaucrats_str.indexOf(currUser) != -1) marker.push(markbureautxt);
                // is this user a steward?
                if (stewards_str.indexOf(currUser) != -1) marker.push(markstewtxt);
             }
 
             if (markcomadmins) {
                // is this user a commons admin?
                if (comadmins_str.indexOf(currUser) != -1) marker.push(markcomatxt);
             }
 
             if (markexadmins) {
                // was this user an admin?
                if (exadmins_str.indexOf(currUser) != -1) marker.push(markexatxt);
                // was this user a bureaucrat?
                if (exbureaucrats_str.indexOf(currUser) != -1) marker.push(markexbureautxt);
             }
 
             if (markcheckuser) {
                // does this user have checkuser rights?
                if (checkuser_str.indexOf(currUser) != -1) marker.push(markcheckusertxt);
             }
 
             if (markarbcom) {
                // is this user an arbcom member?
                if (!(admarbcom_str.indexOf(currUser) != -1))
                   if (arbcom_str.indexOf(currUser) != -1) marker.push(markarbcomtxt);
             }
 
             if (markarbcom || markadmins) {
                // is this user a (non-admin) arbcom member?
                if (admarbcom_str.indexOf(currUser) != -1) marker.push(markadmarbcomtxt);
             }
 
             // 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 aMark = document.createElement("b");
                var aMarkText = document.createTextNode(" (" + marker.join("/") + ")");
                aMark.appendChild(aMarkText);
                aNode.appendChild(aMark.cloneNode(true));
             }
         }
      }
   }
 }
 
 addOnloadHook(markAdmins);
 
 // </nowiki>