VL:MarkAdmins.js

Aus schwarzer2000.de
Version vom 20. März 2019, 23:15 Uhr von Apollon (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „//*********************************************************************** // Skript ursprünglich von Benutzer:Euku, 28. Dez. 2005 // Ex-Admin-Markierung…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

//***********************************************************************

// 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
//***********************************************************************
// 

 jQuery(document).ready(function() {

   // 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 markexbureaucrats = window.markexbureaucrats   === true;

   var markarbcom       = window.markarbcom     !== false;
   var markoversight    = window.markoversight  !== false;
   var markcheckuser    = window.markcheckuser  !== false;

   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 markexbureautxt  = window.markexbureautxt  || 'Ex-B';

   var markoversighttxt = window.markoversighttxt || 'OS';
   var markcheckusertxt = window.markcheckusertxt || 'CU';
   var markombudsmantxt = window.markombudsmantxt || 'Omb';
   var markarbcomtxt    = window.markarbcomtxt    || 'SG';

   // Ende der vordefinierbaren Variablenwerte

   // Vorzeitiger Abbruch, wenn es nichts zu tun gibt.
   if (!markadmins && !markcomadmins && !markwdadmins && !markexadmins && !markexbureaucrats)
       return;

   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;

   if (markadmins) {
 // statische Liste (dynamisch: http://toolserver.org/~aka/dewiki_admins_utf8.txt )
 // Stand: 11.03.2016
 var admins=new Array("Apollon", "Mario Schmalfuß");

       var admins_str = '|'+admins.join('|')+'|';

       var bureaucrats=new Array("Apollon");
       var bureaucrats_str = '|'+bureaucrats.join('|')+'|';

       // Stewards: Abgleich mit http://de.wikipedia.org/w/index.php?title=Spezial%3AGlobale_Benutzerliste&username=&group=steward&limit=100
     
if (markwdadmins) {
       // Stand: 11.2.2019
       // Notes: Wikibase-Entwickler von WMDE werden nicht gekennzeichnet
       var wdadmins=new Array();
       var wdadmins_str = '|'+wdadmins.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=new Array();
       var exbureaucrats_str = '|'+exbureaucrats.join('|')+'|';
   }

   // oversight
   if (markoversight) {
       // Notes: nö
       var oversight=new Array();
       var oversight_str = '|'+oversight.join('|')+'|';
   }

   var admcheckuser_str = '';
   // checkuser
   if (markcheckuser) {
       var checkuser=new Array("Apollon");
       var admcheckuser=new Array("Apollon");

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

  

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

      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;
         SGSpecial = false;
         checkuserSpecial = 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 = new Array();

             if (admarbcom_str.indexOf(currUser) != -1) {
                 SGSpecial = true;
                 if (markarbcom || markadmins) marker.push(markarbcomtxt + "-" + markatxt);
             }
             if (admcheckuser_str.indexOf(currUser) != -1) {
                 checkuserSpecial = true;
                 if (markcheckuser || markadmins) marker.push(markcheckusertxt + "-" + markatxt);
             }

             if (markadmins && !SGSpecial && !checkuserSpecial) {
                // 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 steward?
                if (stewards_str.indexOf(currUser) != -1) marker.push(markstewtxt);
                // is this user an ombudsman?
                if (ombudsman_str.indexOf(currUser) != -1) marker.push(markombudsmantxt);
                // is this user a bureaucrat?
                if (bureaucrats_str.indexOf(currUser) != -1) marker.push(markbureautxt);
             }

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

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

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

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

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

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

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

             // 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 aMark = document.createElement("span");
                aMark.className = "adminMark";

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

 //