Benutzer:Käthe Theobaldy/monobook.js
aus Wikipedia, der freien Enzyklopädie
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
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
// 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 = (mw.config.get('wgNamespaceNumber') == 0);
var isArticleTalk = (mw.config.get('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(mw.config.get('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.