Benutzer:Spongo/monobook.js
aus Wikipedia, der freien Enzyklopädie
Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen zu sehen: Mozilla/Firefox: Shift-Strg-R, Internet Explorer: Strg-F5, Opera: F5, Safari: ⌘-R, Konqueror: Strg-R.
// DIESE VERSION BITTE NICHT KOPIEREN // FAQ: // // Frage: Wie übernehme ich dieses Skript? // // Antwort: Einfach "Quelltext betrachten", alles markieren und kopieren, und dann in deine eigene // monobook.js (also hierhinein: [[Spezial:Mypage/monobook.js|Benutzer:<DeinName>/monobook.js]]) kopieren. // Am sinnvollsten ist es dabei, wenn du die Originalversion von [[Benutzer:PDD/monobook.js]] // übernimmst, da diese immer auf dem neuesten Stand ist. // // Frage: Kann ich dieses Skript einfach so übernehmen, oder muss ich da tausend Sachen ändern? // // Antwort: Du kannst natürlich alles ändern, aber du musst nicht. Einfach erstmal kopieren, ausprobieren, // und dann so anpassen, dass es deinem Bedarf gerecht wird. // // Weitere Fragen und Antworten findest du hier: [[Benutzer:PDD/monobook FAQ]] // <nowiki> {{subst:Benutzer:PDD/monobook.js.DLWS}} </nowiki> <--- diese Zeile bitte nicht löschen // // Hier bitte eine Signaturvariante aussuchen! // // <nowiki> // (Signaturvariante 1: sinnvoll bei unter "Einstellungen" typografisch angepassten Signaturen) var usersignature = '\~\~\~\~'; // (Signaturvariante 2: Datum kleiner, kein Zeilenumbruch nach dem Leerzeichen) // var usersignature = '<span style=\"white-space:nowrap;\">-- \~\~\~ <small>\~\~\~\~\~<\/small><\/span>\n'; // (Wiki-Standard-Signatur, bitte das Leerzeichen nach den zwei Strichen beachten) // var usersignature = '-- \~\~\~\~'; // </nowiki> // Originalskript ursprünglich gefunden bei [[:en:User:Angela]] // bearbeitet von [[Benutzer:Maximus Rex]] // bearbeitet von [[Benutzer:SirJective]] // bearbeitet von [[Benutzer:BLueFiSH.as]] // bearbeitet von [[Benutzer:Littl]] (2005-09-07) // bearbeitet von [[Benutzer:Schwalbe]] (2006-02-03) // bearbeitet wieder von [[Benutzer:Littl]] (2006-02-21) // bearbeitet von [[Benutzer:PDD]] (ab 2006-04-22) // aktuelle Zeit ermitteln var jetzt = new Date(); // recalculate 4 furriners var jetztfixed = jetzt.getTime(); var timezoneshift = 0; // Unterschied lokale Zeit zur Systemzeit (bleibt für Mitteleuropäer 0) jetztfixed += (timezoneshift * 3600 * 1000); jetzt.setTime(jetztfixed); // fill date variables var Monate = new Array("", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); var Jahr = jetzt.getYear(); if (Jahr < 999) Jahr += 1900; var Monat = jetzt.getMonth() + 1; var Tag = jetzt.getDate(); // fill WP date variables var WPDatum = Tag + '._' + Monate[Monat] + '_' + Jahr; var WPDatum2 = Jahr + '/' + Monate[Monat] + '/' + Tag; var WPDatum3 = Monate[Monat] + ' ' + Jahr; var WPDatum4 = Jahr + '-' + LeadingZero(Monat); // Lemma-Varianten (work in progress) + redundant zu addLogsLink etc. // get page title var pagetitle = wgPageName; var spagetitle = wgTitle; // do real spaces; fix for lemmas with '&' var ptitle = pagetitle.replace(/_/g, " ").split('&').join('%26'); var sptitle = spagetitle.replace(/_/g, " ").split('&').join('%26'); // do + escaped var pesctitle = ptitle.split(' ').join('+'); var spesctitle = sptitle.split(' ').join('+'); // Komma-Lemma für Personen var personlemma = spagetitle; var titlesplit = spagetitle.split(' '); if (titlesplit.length > 1) { personlemma = titlesplit[titlesplit.length-1] + ','; for (i=0; i<(titlesplit.length-1); i++) personlemma=personlemma + " "+titlesplit[i]; } var escpersonlemma = personlemma.replace(/Ä/g, "A").replace(/Ö/g, "O").replace(/Ü/g, "U").replace(/ä/g, "a").replace(/ö/g, "o").replace(/ü/g, "u").replace(/ß/g, "ss"); // 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 = (wgNamespaceNumber == 0); var isArticleTalk = (wgNamespaceNumber == 1); var isBild = (wgCanonicalNamespace == "Image"); var isCategory = (wgCanonicalNamespace == "Category"); var isTemplate = (wgCanonicalNamespace == "Template"); var isGeneric = false; if ((!isBild) && (!isCategory) && (!isTemplate)) isGeneric = true; var isProject = (wgCanonicalNamespace == "Project"); // page type variables: namespace == -1 var isSpecial = (wgCanonicalNamespace == "Special"); var isRestore = (isSpecial && (wgCanonicalSpecialPageName == "Undelete")); var isContrib = (isSpecial && (wgCanonicalSpecialPageName == "Contributions")); var isWatchlist = (isSpecial && (wgCanonicalSpecialPageName == "Watchlist")); // page type variables: namespace == -1 var isTalk = (!isSpecial && isOdd(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'); // userpage/name stuff, vor allem für IPs var userPageOwner = ""; if (isContrib) { if (UrlParameters['target']) userPageOwner = UrlParameters['target'].split('+').join('_'); else { userPageOwner = decodeURIComponent(location.href.substring(location.href.indexOf("/wiki/") + 6)).split('#')[0]; userPageOwner = userPageOwner.substring(userPageOwner.indexOf("Beiträge/") + 9); } } // page type variables: user & user discussion lumped together var isUserpage = ( (wgCanonicalNamespace == "User") || (wgCanonicalNamespace == "User_talk") ); var isUserMainpage = false; if (isUserpage) if (wgTitle == wgTitle.split("/")[0]) { isUserMainpage = true; userPageOwner = wgTitle; } // handelt es sich um eine IP? var isIPUser = false; if (userPageOwner != "") if (userPageOwner.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/) != null) if ((userPageOwner.split(".")[0] > 1) && (userPageOwner.split(".")[0] < 255)) isIPUser = true; // Admin functions var adminflag = false; if (isAdmin()) adminflag = true; resp = loadFile("User:"+ wgUserName + "/monobook.config.js"); // die Individuellen Einstellungen laden if (resp) eval(resp); else throw 'Konfiguration konnte nicht geladen werden. Breche monobook.js ab.'; importModules(); buildQuickbar(); // Standardeinstellungen ausführen document.write(Quickbar); if (typeof(version) == 'undefined') var version = "?"; if (!isEdit || zeigeversion || isPHP) { document.write( '<div align=right>', '<a href="#" onclick="configMonobook()" title="Einstellungen der Monobook.js">Einstell.</a> ', (zeigeversion) ? ('<a href="#" onclick="amIuptodate()" title="Versionscheck">' + (adminflag ? 'A/' : '') + version + '</a> ') : '', (!isEdit) ? ('<input type="checkbox" id="reloadme" name="reloadme" onchange="setReload()" title="Seite alle ' + (timeout/1000) + ' s neu laden?"></input> ') : ' ', '<a href="/w/index.php?title=Spezial%3APrefixindex&from=',wgUserName, '&namespace=2" target="', qbtarget, '" title="Meine Seiten im Benutzernamensraum">', (wgUserName.split(' ')[0].length < 10) ? wgUserName.split(' ')[0] : 'MyPages', '</a>', '</div>'); } document.write(xxx,'</div>'); if (scrpt > '') { document.write('<script> function _doopt (was) { switch (was) {', scrpt, '}}<\/script>'); scrpt=''; } // // ab hier functions // function w (was,lurl,linktext,targt,title) { if (!title) title=linktext; if (!zeigehilfe) title=''; if (!dropdown) { switch (was) { case 0 : xxx=xxx+lurl;break; case 1 : xxx=xxx+'<a href="'+lurl+'" target="'+targt+'" title="'+title+'">'+linktext+'</a> ';break; case 2 : xxx=xxx+'<a href="#" onclick="newtext('+ lurl +')" title="'+title+'">'+linktext+'</a> ';break; case 3 : xxx=xxx+'<a href="#" onclick="insertTagsWrapper('+ lurl +')" title="'+title+'">'+linktext+'</a> ';break; case 4 : xxx=xxx+'<a href="#" onclick="'+ lurl +'" title="'+title+'">'+linktext+'</a> ';break; } } //if else //todo: Hilfe bei Dropdowns. Benutzt die überhaupt jemand???? { var ltext='__________'.substr(1,ind)+linktext; switch (was) { case 0 : if (lurl==br) {xxx=xxx+'<option>'+linktext+'</option>';ind=2;} else if (lurl==trenner) newdropdown(linktext); break; case 1 : xxx=xxx+'<option value="1|'+lurl+'">'+ltext+'</option>';break; case 2 : xxx=xxx+'<option value="2|'+scrptn+'">'+ltext+'</option>'; scrpt=scrpt+'case '+scrptn+':newtext('+lurl+');break;';scrptn++;break; case 3 : xxx=xxx+'<option value="3|'+scrptn+'">'+ltext+'</option>'; scrpt=scrpt+'case '+scrptn+':insertTagsWrapper('+lurl+');break;';scrptn++;break; case 4 : xxx=xxx+'<option value="4|'+scrptn+'">'+ltext+'</option>'; scrpt=scrpt+'case '+scrptn+':'+lurl+';break;';scrptn++;break; } //switch } //else } //w function dodropdown (aktion) { var zutun = aktion.split('|'); var was = Number(zutun[0]); var wie = zutun[1]; switch (was) { case 1 : window.open (wie); break; case 2 : _doopt (Number(wie)); break; case 3 : _doopt (Number(wie)); break; case 4 : _doopt (Number(wie)); break; } //switch } //dodropdown function newdropdown (oname) { closedropdown(); xxx=xxx+'<select size=1 onchange="dodropdown(this.value);" style="width:135px;font-size:9px;">'; if (oname > '') {xxx=xxx+'<option>'+oname+'</option>';} indropdown = true; ind=2; } function closedropdown () { if (indropdown) xxx=xxx+'</select>'; indropdown = false; } function newtext (subj,text,wo) { //wo=1 : Text austauschen //wo=2 : Text am Ende anhängen //wo=3 : Text vorne Einfügen if (subj > "") { if (document.editform.wpSummary.value > "") document.editform.wpSummary.value += ", "; document.editform.wpSummary.value = document.editform.wpSummary.value + subj; } switch (wo) { case 1 : document.editform.wpTextbox1.value=text+'\n'; break; case 2 : document.editform.wpTextbox1.value=document.editform.wpTextbox1.value+'\n'+text;break; case 3 : document.editform.wpTextbox1.value=text+'\n'+document.editform.wpTextbox1.value;break; } document.editform.wpTextbox1.focus(); } function insertTagsWrapper(tagOpen, tagClose, sampleText, subj) { if (subj > "") { if (document.editform.wpSummary.value > "") document.editform.wpSummary.value += ", "; document.editform.wpSummary.value = document.editform.wpSummary.value + subj; } insertTags(tagOpen, tagClose, sampleText) } // Krimskrams function isEven(myNumber) { return (myNumber % 2 == 0); } function isOdd(myNumber) { return (! isEven(myNumber)); } function LeadingZero(x) { return (x >= 10 || x < 0 ? "" : "0") + x; } function isAdmin() { var specialrights = false; if (typeof wgUserGroups != 'object') return(specialrights); if (typeof wgUserGroups[0] != 'string') return(specialrights); for (i=0;i<wgUserGroups.length;i++) { if (wgUserGroups[i] == "sysop") specialrights = true; } return(specialrights); } // Funktion: importPage() // zum Einbinden der Module function importPage(seite, lang) { // all languages support name='User:'; // international name, works in all wikipedias if(!lang) lang = wgContentLanguage; // new version seite = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=' + name + seite + '&action=raw&ctype=text/javascript&smaxage=2678400&dontcountme=s'; var head = document.getElementsByTagName('head').item(0); var js = document.createElement('script'); js.setAttribute('type', 'text/javascript'); js.setAttribute('src', seite); js.setAttribute('charset', 'utf-8'); head.appendChild(js); return false; // old version // document.write('<SCRIPT TYPE="text/javascript" SRC="http://' + lang // + '.wikipedia.org/w/index.php?title=' + name + seite // + '&action=raw&ctype=text/javascript&smaxage=2678400&dontcountme=s"><\/SCRIPT>'); } /** Imports a user javascript page from any wikipedia project into the actual document. @version 0.1 @date 2007/03/22 @author: based on function importPage from [[de:User:PDD]]s monobook.js, extended by [[de:User:Revvar]] @param page Name of the user page without the "user:" prefix and the ".js" appendix @param lang (optional) Language code of the corresponding wikipedia project. Default is the callers project. @return "true" on success, "false" otherwise */ function importJavascript(page, lang) { try { /* check the parameters and set defaults */ if(!page) throw("importJavascript: Missing parameter page."); if(!lang) lang = wgContentLanguage; /* create import url */ var import_url = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=User:' + page + '.js&action=raw&ctype=text/javascript&smaxage=2678400&dontcountme=s'; /* import page */ var Head = document.getElementsByTagName('head').item(0); var Script = document.createElement('script'); Script.setAttribute('type', 'text/javascript'); Script.setAttribute('src', import_url); Script.setAttribute('charset', 'utf-8'); Head.appendChild(Script); return true; } catch(e) { alert(e.message); return false; } } /** Imports a user css page from any wikipedia project into the actual document. @version 0.1 @date 2007/03/22 @author: based on function importPage from [[de:User:PDD]]s monobook.js, rewritten by [[de:User:Revvar]] @param page Name of the user page without the "user:" prefix and the ".css" appendix @param lang (optional) Language code of the corresponding wikipedia project. Default is the callers project. @return "true" on success, "false" otherwise */ function importCSS(page, lang) { try { /* check the parameters and set defaults */ if(!page) throw("importCSS: Missing parameter page."); if(!lang) lang = wgContentLanguage; /* create import url */ var import_url = 'http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=User:' + page + '.css&action=raw&ctype=text/css&smaxage=2678400&dontcountme=s'; /* import page */ var Head = document.getElementsByTagName('head').item(0); var CSS = document.createElement('style'); CSS.setAttribute('type', 'text/javascript'); CSS.setAttribute('charset', 'utf-8'); CSS.appendChild(document.createTextNode("@import url(" + import_url + ");")); Head.appendChild(CSS); return true; } catch(e) { alert(e.message); return false; } } /* * Lade individuelle Einstellungen, wenn vorhanden */ function loadFile(file) { // load monobook.config.js via AJAX // Mit Hilfe von: [[Benutzer:MrMage]] xmlHttp = null; if (typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } if (!xmlHttp) { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { throw 'Konnte keinen XMLHttpRequest erstellen. Breche monobook.js ab.'; } } } if (xmlHttp) { xmlHttp.open('GET', 'http://de.wikipedia.org/w/index.php?title='+ file +'&action=raw&ctype=text/javascript&dontcountme=s', false); xmlHttp.send(null); return (xmlHttp.responseText); } return false; } // ***** FOOT-Block ***** // </nowiki> <- nicht löschen!!! function importModules() { // ausgelagerte obligatorische Funktionen importPage('PDD/helperFunctions.js'); // [[Benutzer:PDD/helperFunctions.js]] importPage('PDD/eintragen.js'); // [[Benutzer:PDD/eintragen.js]] importPage('PDD/alertOnChanges.js'); // [[Benutzer:PDD/alertOnChanges.js]] // semi-obligatorisch nur für diffpages if (diffwidth && isDiff) { // PDD: keine der beiden Versionen bisher getestet; weiß also nicht, welche besser funktioniert importPage('Olliminatore/fixdiffwidth.js'); // [[Benutzer:Olliminatore/fixdiffwidth.js]] // importPage('BLueFiSH.as/JS/fixdiffwidth'); // [[Benutzer:BLueFiSH.as/JS/fixdiffwidth]] } // obligatorisch nur für editpages if (isEdit) { importPage('PDD/wpTextReplace.js'); // [[Benutzer:PDD/wpTextReplace.js]] importPage('PDD/replaceQuoteSigns.js'); // [[Benutzer:PDD/replaceQuoteSigns.js]] // importPage('PDD/replaceQuoteSigns2.js'); // [[Benutzer:PDD/replaceQuoteSigns2.js]] importPage('BLueFiSH.as/JS/markup'); // [[Benutzer:BLueFiSH.as/JS/markup]] importPage('Spongo/persDaten.js'); // [[Benutzer:Spongo/persDaten.js]] } // ausgelagerte optionale Funktionen (Autoload) // revert/loglink-Funktionen: möglichst früh einbinden // Revert godmode-light if (godmodelight && !adminflag && !isEdit && !(isSpecial && !isContrib)) { importPage('PDD/godmode-light.js'); // [[Benutzer:PDD/godmode-light.js]] // importPage('Olliminatore/godmode-light.js','en'); // [[:en:User:Olliminatore/godmode-light.js]] } // Revert addEditAndRevertLinks if (!(!aerhistory && isHistory) && !isEdit) { if (editlinkoldversion || revertwithreason) importPage('PDD/addEditAndRevertLinks.js'); // [[Benutzer:PDD/addEditAndRevertLinks.js]] } // LogLinks addLogsLink if (addlogslink && !isSpecial) importPage('PDD/addLogsLink.js'); // [[Benutzer:PDD/addLogsLink.js]] // jetzt alles andere, was optional ist if (!isSpecial) if (addeditintro || addpurge) importPage('PDD/modifyCA.js'); // [[Benutzer:PDD/modifyCA.js]] // changeBeschriftungen *nach* modifyCA.js (!) if (beschriftungen) importPage('PDD/changeBeschriftungen.js'); // [[Benutzer:PDD/changeBeschriftungen.js]] if (changeszlig) importPage('PDD/changeSZtoSS.js'); // [[Benutzer:PDD/changeSZtoSS.js]] if (rechtschreibpruefung && !isSpecial) { DontAutorunRP = !AutorunRP; importPage('APPER/RP/js'); // [[Benutzer:APPER/RP/js]] } if (ippvandalmark && !isEdit) importPage('APPER/IP-Patrol/js'); // [[Benutzer:APPER/IP-Patrol/js]] if (showredundantlinks && !isSpecial) importPage('PDD/showRedundantLinks.js'); // [[Benutzer:PDD/showRedundantLinks.js]] // Signierfunktionen if (isEdit && !isArticle) { if (signing) importPage('Olliminatore/signing.js'); // [[Benutzer:Olliminatore/signing.js]] if (unsigning) importPage('Olliminatore/unsigned.js'); // [[Benutzer:Olliminatore/unsigned.js]] } // extended search & replace feature if (isEdit && searchbox) importPage('Zocky/SearchBox.js','en'); // [[:en:User:Zocky/SearchBox.js]] // Portal- und Redaktionshinweis if (hinweis) importPage('DerHexer/hinweise.js'); // [[Benutzer:DerHexer/hinweise.js]] // Löschgründe ergänzen if (adminflag && delreasons && !isSpecial) importPage('DerHexer/delete.js'); // [[Benutzer:DerHexer/delete.js]] // Syntax highlighter if (js_highlight) importPage('Olliminatore/shCore.js','en'); // [[:en:User:Olliminatore/shCore.js]] // wikiminiatlas: Atlas bei Georeferenzen if (miniatlas && !isSpecial) importPage('Dschwen/wikiminiatlas2.js'); // [[Benutzer:Dschwen/wikiminiatlas2.js]] // coordinates: Generierung der Koordinaten-Vorlage if (coordinates && isEdit) importPage('Dschwen/coordinates.js'); // [[Benutzer:Dschwen/coordinates.js]] // showreftoggle if (reftoggle && !isSpecial) importPage('Malte_Schierholz/reftoggle.js'); // [[Benutzer:Malte Schierholz/reftoggle.js]] // setGallery if (newgallery && !isSpecial) importPage('Olliminatore/newgallery.js'); // [[Benutzer:Olliminatore/newgallery.js]] // custom toolbar buttons if (customtoolbar) importPage('Olliminatore/customToolbar.js'); // [[Benutzer:Olliminatore/customToolbar.js]] // quickedit if (qeEnabled) importPage('ASM/quickedit.js'); // [[Benutzer:ASM/quickedit.js]] // RIPE tooltips if (ripe && !isEdit) importPage('PDD/tooltips.js'); // [[Benutzer:PDD/tooltips.js]] // dellinknowcommons if (dellinknowcommons && adminflag && isBild) importPage('PDD/dellink-nc.js'); // [[Benutzer:PDD/dellink-nc.js]] // Lupin's popups if (lupinpopups) importPage('Lupin/popups.js','en'); // [[:en:User:Lupin/popups.js]] // Markierskripte ganz zum Schluss einbinden, da sie innerHTML verändern if (!(!mawatchlist && isWatchlist) && !(!macontribs && isContrib)) { if (markadmins || markexadmins || markcomadmins) importPage('PDD/markAdmins.js'); // [[Benutzer:PDD/markAdmins.js]] } if (!(!muwatchlist && isWatchlist) && !(!mucontribs && isContrib)) { if (markutf8) importPage('PDD/markUTF8.js'); // [[Benutzer:PDD/markUTF8.js]] } importPage('Spongo/configMonobook.js'); // [[Benutzer:Spongo/configMonobook.js]] } // Und hier ist die monobook.js zu Ende.