Benutzer:Euku/Mentorenprogramm.js
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/**
* Fügt neben dem eigenen Benutzernamen eine Zahl mit den wartenden Neulingen ein.
* Gesuchte Wunschmentoren werden gesondert angezeigt.
*
* Idee: [[Benutzer:Stefan]], Ur-Skript: [[Benutzer:DerHexer]]
* kleine Erweiterung von [[Benutzer:Euku]]
*
* Änderungs-Protokoll:
* == 02.10.2020 ([[Benutzer:Tkarcher]]) ==
* - 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[0].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[0].getAttributeNode("pages").nodeValue;
checkAllLoaded();
}
}
}
});
function checkAllLoaded() {
filesLoaded += 1;
if(filesLoaded == 2) {
aswcAddliOrSpanLink(document.getElementById('pt-userpage').parentNode, "/wiki/Kategorie:Benutzer:Mentor_gesucht", menteecount , "ca-mentee", "Wartende Neulinge", "");
if (wmenteecount > 0)
aswcAddliOrSpanLink(document.getElementById('pt-userpage').parentNode, "/wiki/Kategorie:Benutzer:Wunschmentor_gesucht", "WM: " + wmenteecount, "ca-wmentee", "Wartende Neulinge mit Wunschmentor", "");
}
}
// From [[:en:Wikipedia:WikiProject_User_scripts/Scripts/Add_LI_link]]
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[id] = [key, title];
else if (key) ta_hi[id] = [key, ''];
else if (title) ta_hi[id] = ['', title];
}
return liOrSpan;
}
});
/**
* Der folge Teil fügt ein Tab zur Benutzerseite eines "wartenden Neulings" ein, mit dem man ihn sofort übernehmen kann.
* von [[Benutzer:Ireas/mentorenscript.js]] (17:31, 30. August 2009), Autor ist [[Benutzer:Ireas]], kleine Änderung von [[Benutzer:DerHexer]]
*/
/* Voraussetzungen */
/* isUserpage und isUserMainpage */
var isUserMainpageI = false;
if (mw.config.get( 'wgCanonicalNamespace' ) == "User")
if (mw.config.get('wgTitle') == mw.config.get('wgTitle').split("/")[0])
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[i].split("=");
UrlParameters[decodeURIComponent(asReadInUrlParameter[0])] = decodeURIComponent(asReadInUrlParameter[1]);
}
}
/* 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[i].title)
continue;
var regmatch = links[i].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['irmentee'])
$(replaceMenteeTemplate);
$(addMenteeButton);
//</nowiki>