User:Kate theobaldy/monobook.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
The accompanying .css page for this skin is at User:Kate theobaldy/monobook.css. |
// 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.