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