Benutzer:Euku/Mentorenprogramm.js

In diesem Artikel tauchen wir in die faszinierende Welt von Benutzer:Euku/Mentorenprogramm.js ein und erforschen seine Ursprünge, Bedeutung und Relevanz in der heutigen Gesellschaft. Benutzer:Euku/Mentorenprogramm.js war im Laufe der Jahre Gegenstand von Interesse und Debatten und hat das Interesse von Akademikern, Fachleuten und Neugierigen gleichermaßen geweckt. Von seinem Einfluss auf die Populärkultur bis hin zu seinem Einfluss auf die Geschichte hat Benutzer:Euku/Mentorenprogramm.js einen unauslöschlichen Eindruck in der Gesellschaft hinterlassen und ist zu einem spannenden und sich ständig weiterentwickelnden Studienfach geworden. In diesem Artikel werden wir die verschiedenen Aspekte von Benutzer:Euku/Mentorenprogramm.js, seine Bedeutung und seinen Einfluss in verschiedenen Bereichen untersuchen und so einen umfassenden Überblick über dieses Phänomen bieten, das die Aufmerksamkeit so vieler Menschen auf sich gezogen hat.
/**
 * Fügt neben dem eigenen Benutzernamen eine Zahl mit den wartenden Neulingen ein.
 * Gesuchte Wunschmentoren werden gesondert angezeigt.
 *
 * Idee: ], Ur-Skript: ]
 * kleine Erweiterung von ]
 * 
 * Änderungs-Protokoll:
 * == 02.10.2020 (]) ==
 * - XHR von synchron auf asychron umgestellt
 * - MediaWiki-Variablen auf mw.config umgestellt
 * 
 * Du kannst dieses Skript konfigurieren indem du vor die Stelle an der du es
 * einbindest Variablen definierst. z.B.: menteeUebernehmenOhneBestaetigung = false;
 */

/* Optionale Variablen */
if(typeof mentorenbuttonplatz == 'undefined')
    mentorenbuttonplatz = "";
if(typeof mentorenbuttontext == 'undefined')
    mentorenbuttontext = "Als Mentee übernehmen";
if(typeof menteeUebernehmenOhneBestaetigung == 'undefined')
    menteeUebernehmenOhneBestaetigung = true;
/* Ende optionale Variablen */


$(function() {
 
  function newRequest() {
   try {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else {
        return new ActiveXObject("MSXML2.XMLHTTP");
      }
   } catch (e) {
      return false;
   }
  }
 
  var menteecount = "?"; 
  var wmenteecount = "?";

  function getAsync(url, func) {
    var req;
    if (req = newRequest()) {
      req.open('GET', url);
      req.onreadystatechange = func;
      req.send();
    }
  }

  var api_url = mw.config.get( 'wgServer' ) + mw.config.get( 'wgScriptPath' ) + "/api.php?format=xml&action=query&prop=categoryinfo&titles=";
  var filesLoaded = 0;
  getAsync(api_url + 'Kategorie:Benutzer:Mentor gesucht', function() {
    if (this.readyState == 4) {
      var resp = this.responseXML;
      if (resp) {
         var categoryinfo = resp.getElementsByTagName("categoryinfo");
         if (categoryinfo) {
    	    menteecount = categoryinfo.getAttributeNode("pages").nodeValue;
            checkAllLoaded();
         }
      }
    }
  });
  getAsync(api_url + 'Kategorie:Benutzer:Wunschmentor gesucht', function() {
    if (this.readyState == 4) {
      var resp = this.responseXML;
      if (resp) {
         var categoryinfo = resp.getElementsByTagName("categoryinfo");
         if (categoryinfo) {
    	    wmenteecount = categoryinfo.getAttributeNode("pages").nodeValue;
            checkAllLoaded();
         }
      }
    }
  });

  function checkAllLoaded() {
    filesLoaded += 1;
    if(filesLoaded == 2) {
      aswcAddliOrSpanLink(document.getElementById('pt-userpage').parentNode, "https://wikifreehand.com/de/Kategorie:Benutzer:Mentor_gesucht", menteecount , "ca-mentee", "Wartende Neulinge", "");
      if (wmenteecount > 0)
        aswcAddliOrSpanLink(document.getElementById('pt-userpage').parentNode, "https://wikifreehand.com/de/Kategorie:Benutzer:Wunschmentor_gesucht", "WM: " + wmenteecount, "ca-wmentee", "Wartende Neulinge mit Wunschmentor", "");
    }
  }
 
  // From ]
  function aswcAddliOrSpanLink(tabs, url, name, id, title, key) {
    var ta = ;
    var na = document.createElement('a');
    na.href = url;
    na.appendChild(document.createTextNode(name));
    ta_hi = document.getElementById('pt-userpage'); // to versions tab
    var liOrSpan = document.createElement(ta_hi.localName); // get the node type from the sibling
    if (id) liOrSpan.id = id;
    if (mw.config.get('skin') == 'vector') {
      // damit Nutzer-Icon und die Mentee-Anzeige nicht ineinander hängen
      liOrSpan.style.margin = "0 0.75em";
    }
    liOrSpan.appendChild(na);
    if (ta_hi) tabs.insertBefore(liOrSpan, ta_hi);
    if (id) {
      if (key && title) ta_hi = ;
      else if (key) ta_hi = ;
      else if (title) ta_hi = ;
    }
    return liOrSpan;
  }
});


/**
 * Der folge Teil fügt ein Tab zur Benutzerseite eines "wartenden Neulings" ein, mit dem man ihn sofort übernehmen kann.
 * von ] (17:31, 30. August 2009), Autor ist ], kleine Änderung von ]
 */

/* Voraussetzungen */
/* isUserpage und isUserMainpage */
var isUserMainpageI = false;
if (mw.config.get( 'wgCanonicalNamespace' ) == "User")
    if (mw.config.get('wgTitle') == mw.config.get('wgTitle').split("/"))
        isUserMainpageI = true;

/* UrlParameters, von PDD */
var UrlParameters = ;
readparams();

function readparams() {
    var asReadInUrlParameters;
    var asReadInUrlParameter;

    asReadInUrlParameters = location.search.substring(1, location.search.length).split("&");
    for (i = 0; i < asReadInUrlParameters.length; i++) {
        asReadInUrlParameter = asReadInUrlParameters.split("=");
        UrlParameters)] = decodeURIComponent(asReadInUrlParameter);
    }
}
/* Ende der Voraussetzungen */

/* Mentee übernehmen */
function addMentee() {
    var editl = mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' ) + '?title=' +mw.config.get('wgPageName') + '&action=edit&irmentee=1';
    if(mw.config.get('wgUserName') == mw.config.get('wgTitle'))
        alert('Du willst Dich selbst für Dich als Mentor? Jaja... verarschen kann ich mich selbst...');
    location.href = editl;
}

/* Mentor-Gesucht- o. Wunschmentor-Gesucht-Baustein ersetzen */
function replaceMenteeTemplate() {
    document.editform.wpTextbox1.value = document.editform.wpTextbox1.value.replace(/{{Mentor gesucht*}}/g, '{{WP:Mentorenprogramm/Hinweis Mentorat|Mentor=' + mw.config.get('wgUserName') + '}}');
    document.editform.wpSummary.value = 'Mentorenprogramm';
    if (menteeUebernehmenOhneBestaetigung)
        document.editform.wpSave.click();
}

/* Button in die Buttonleiste einfügen */
function addMenteeButton() {
    mentorgesucht = false;
    links = document.getElementById('mw-normal-catlinks');
    if(!links)
        return;
    links = links.getElementsByTagName('a');
    if(!links)
        return;
    for(var i in links) {
        if(!links.title)
            continue;
        var regmatch = links.title.match(/^Kategorie:Benutzer:(Wunschm|M)entor gesucht/);
        if(regmatch) {
            mentorgesucht = true;
            break;
        }
     }
    if(isUserMainpageI && mentorgesucht) {
        switch(mentorenbuttonplatz) {
            case "portlet":
                var a   = document.createElement("a");
                a.textContent   = mentorenbuttontext;
                a.onclick       = function() { addMentee(); };
                a.style.cursor  = "default";
                var li  = document.createElement("li");
                li.appendChild(a);
                var up = document.getElementById('pt-userpage');
                if (up)
                    up.parentNode.insertBefore(li, up);
                break;
            case "none": // ausblenden
                  // nichts zu tun
                  break;
            default:
                var a   = document.createElement("a");
                a.onclick       = function() { addMentee(); };
                a.style.cursor  = "default";
                var span = document.createElement("span");
                span.textContent   = mentorenbuttontext;
                a.appendChild(span);
                var li  = document.createElement("li");
                li.appendChild(a);
                var watch = document.getElementById('ca-watch') ||
                            document.getElementById('ca-unwatch');
                if (watch)
                    watch.parentNode.insertBefore(li, watch);
            break;
        }
    }
}

/* replaceMenteeTemplate aufrufen */
if(UrlParameters)
    $(replaceMenteeTemplate);

$(addMenteeButton);
//</nowiki>