User:Tinz/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:Tinz/monobook.css. |
// by de: User:PDD
// 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)
// *************** SETUP Teil 2 **********************************
// Parameter für diese monobook.js (Quickbar, Module etc.)
var zeigeversion = false; // monobook-Version anzeigen?
var zeigehilfe = true; // kurze Hilfetexte beim überfahren mit der Maus anzeigen?
var qbnewpage = true; // sollen Seiten aus dem QuickBar im neuen Fenster aufgerufen werden?
var rclimit = 50; // angezeigte Anzahl auf "Letzte Änderungen"
var nplimit = 50; // angezeigte Anzahl auf "Neue Artikel"
var nulimit = 100; // angezeigte Anzahl auf "Neuanmeldungs-Logbuch"
var nvlimit = 50; // angezeigte Anzahl auf "Alte, gesichtete Seiten"
var usedropdown = false; // Wenn keine Dropdowns gewünscht sind, hier false eintragen!
var timeout = 500000; // 50 Sekunden auf das Neuladen der Seite warten
var timezoneshift = 0; // Unterschied lokale Zeit zur Systemzeit (bleibt für Mitteleuropäer 0)
var debugme = false; // Debug-Modus?
var qbfontsize = 100; // Schriftgröße im QuickBar (relativ in Prozent)
// systemweite Default-Optionen aus [[MediaWiki:Monobook.js]]
NavigationBarShowDefault = 0; // Navi-Leisten: alle einklappen == 0; alle ausklappen == 15 (z.B.)
var oldEditsectionLinks = false; // "Bearbeiten"-Links bei Abschnitten ganz nach rechts?
var enable_linkFA = true; // "Featured Articles" in fremdsprachigen Wikipedias markieren?
// <nowiki>
// Modul: changeBeschriftungen.js
var beschriftungen = true; // kosmetische Änderungen an der MediaWiki-Oberfläche?
var markhandsoff = true; // fremde Benutzerseiten grafisch markieren?
// Beschriftungen: personal toolbar
var cbmytalk = "Meine Diskussion";
var cbprefs = "Einstellungen";
var cbwatchlist = "Beobachtungsliste";
var cbmyconts = "Meine Beiträge";
var cblogout = "X";
// Beschriftungen: current article
var cbedit = "Bearbeiten";
var cbhistory = "Versionen";
var cbmove = "Verschieben";
var cbwatch = "Beobachten";
var cbunwatch = "Ignorieren";
// Beschriftungen: tools
var cbwhatlinkshere = "Links a. d. Seite";
var cblinked = "Verlinkte Änderungen";
var cbmail = "E-Mail senden";
var cbupload = "Datei hochladen";
var cbprint = "Druckversion";
var cbblock = "User sperren";
// Beschriftungen: portlets
var cblang = "Interwiki";
// Modul: addEditAndRevertLinks.js
var editlinkoldversion = true; // Bearbeiten-Link für ältere Versionen anzeigen?
var editlinktxt = "edit"; // Text des Edit-Links
var revertwithreason = true; // Revert-Link mit Grund-Eingabe anzeigen?
var revlinktxt = "rv"; // Text des Revert-Links
var revlinkshowuser = true; // beim Revertieren über (Rev)-Link letzten Benutzer angeben?
var rvisminor = true; // sind Reverts mit "(rev)"-Link Minor-Changes?
var aearldefault = "reason: no improvement"; // Defaultgrund beim Revertieren
var aerhistory = true; // Links auch in der Versionsgeschichte?
var aearlhere = true; // Revertaktion im selben Browserfenster?
// **************** SETUP Ende ***********************************
// (PDD: note to self: version auch in alert-Funktion ändern!)
var version = '0.99a';
var user = wgUserName; // username wird automatisch übernommen
// aktuelle Zeit ermitteln
var jetzt = new Date();
// recalculate 4 furriners
var jetztfixed = jetzt.getTime();
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 Monatekurz = new Array("", "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez");
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);
var WPDatum5 = Jahr + LeadingZero(Monat) + '/';
var refDatum = Tag + '. ' + Monatekurz[Monat] + '. ' + Jahr;
var refDatumlang = Tag + '. ' + Monate[Monat] + ' ' + Jahr;
// 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 (" " to "+")
var pesctitle = spaceEscape(ptitle);
var spesctitle = spaceEscape(sptitle);
// lemmatitle for external lookup
var spesctitlelookup = spesctitle.split('+(')[0];
// Komma-Lemma für Personen (Klammerzusätze weg etc.)
var personlemma = spagetitle.split(' (')[0];
var titlesplit = personlemma.split(' ');
if (titlesplit.length > 1) {
personlemma = titlesplit[titlesplit.length-1] + ',';
for (i=0; i<(titlesplit.length-1); i++)
personlemma=personlemma + " "+titlesplit[i];
}
// 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 isDatei = (wgCanonicalNamespace == "File");
var isCategory = (wgCanonicalNamespace == "Category");
var isTemplate = (wgCanonicalNamespace == "Template");
var isGeneric = false;
if ((!isBild) && (!isDatei) && (!isCategory) && (!isTemplate))
isGeneric = true;
var isProject = (wgCanonicalNamespace == "Project"); /* NR Wikipedia: */
var isHelp = (wgCanonicalNamespace == "Help"); /* NR Hilfe */
// page type variables: namespace == -1
var isSpecial = (wgCanonicalNamespace == "Special");
var isRestore = (isSpecial && (wgCanonicalSpecialPageName == "Undelete"));
var isContrib = (isSpecial && (wgCanonicalSpecialPageName == "Contributions"));
var isDelContrib = (isSpecial && (wgCanonicalSpecialPageName == "DeletedContributions"));
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');
// individual page specials
var isLKpage = false;
if ((isProject) && (wgTitle.indexOf('Löschkandidaten') != -1))
isLKpage = true;
// userpage/name stuff, vor allem für IPs
var userPageOwner = "";
if (isContrib || isDelContrib) {
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 & editor functions
var adminflag = false;
if (hasRight("sysop")) adminflag = true;
var editorflag = false;
if (hasRight("editor")) editorflag = true;
// Browserkram
var userbrowser = "Standard";
if (navigator.userAgent.indexOf("Opera") > -1)
userbrowser = "Opera";
if (navigator.userAgent.indexOf("Safari") > -1)
userbrowser = "Standard";
if (navigator.userAgent.indexOf("MSIE") > -1) {
userbrowser = "IE";
if (navigator.userAgent.indexOf("MSIE 7") > -1)
userbrowser = "IE7";
}
// force Browserswitches
if ((userbrowser == "IE") || (userbrowser == "IE7")) {
godmodelight = false;
showredundantlinks = false;
}
if (userbrowser == "Opera") {
godmodelight = false;
}
//
// 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(untagEscape(tagOpen), untagEscape(tagClose), untagEscape(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 hasRight(right) {
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] == right) specialrights = true;
}
return(specialrights);
}
function quickEscape(text, esctype)
{
// esctype = 1 -> normal umlaut escapes
// esctype = 2 -> wikisort umlaut escapes
text = text.replace(/ß/g, "ss");
text = text.replace(/Á/g,"A").replace(/á/g,"a")
.replace(/À/g,"A").replace(/à/g,"a")
.replace(/Ă/g,"A").replace(/ă/g,"a")
.replace(/Â/g,"A").replace(/â/g,"a")
.replace(/Å/g,"A").replace(/å/g,"a")
.replace(/Ā/g,"A").replace(/ā/g,"a")
.replace(/Ć/g,"C").replace(/ć/g,"c")
.replace(/Č/g,"C").replace(/č/g,"c")
.replace(/Ç/g,"C").replace(/ç/g,"c")
.replace(/Đ/g,"Dj").replace(/đ/g,"dj")
.replace(/É/g,"E").replace(/é/g,"e")
.replace(/È/g,"e").replace(/è/g,"e")
.replace(/Ë/g,"e").replace(/ë/g,"e")
.replace(/Ě/g,"e").replace(/ě/g,"e")
.replace(/Ğ/g,"G").replace(/ğ/g,"g")
.replace(/Í/g,"I").replace(/í/g,"i")
.replace(/Ì/g,"I").replace(/ì/g,"i")
.replace(/Ï/g,"I").replace(/ï/g,"i")
.replace(/İ/g,"I").replace(/ı/g,"i")
.replace(/Î/g,"I").replace(/î/g,"i")
.replace(/Ł/g,"L").replace(/ł/g,"l")
.replace(/Ļ/g,"L").replace(/ļ/g,"l")
.replace(/Ń/g,"N").replace(/ń/g,"n")
.replace(/Ñ/g,"N").replace(/ñ/g,"n")
.replace(/Ň/g,"N").replace(/ň/g,"n")
.replace(/Ņ/g,"N").replace(/ņ/g,"n")
.replace(/Ó/g,"O").replace(/ó/g,"o")
.replace(/Ò/g,"O").replace(/ò/g,"o")
.replace(/Ô/g,"O").replace(/ô/g,"o")
.replace(/Ø/g,"O").replace(/ø/g,"o")
.replace(/Õ/g,"O").replace(/õ/g,"o")
.replace(/Ő/g,"O").replace(/ő/g,"o")
.replace(/Ř/g,"R").replace(/ř/g,"r")
.replace(/Ś/g,"S").replace(/ś/g,"s")
.replace(/Š/g,"S").replace(/š/g,"s")
.replace(/Ş/g,"S").replace(/ş/g,"s")
.replace(/Ţ/g,"T").replace(/ţ/g,"t")
.replace(/Ú/g,"U").replace(/ú/g,"u")
.replace(/Ù/g,"U").replace(/ù/g,"u")
.replace(/Ű/g,"U").replace(/ű/g,"u")
.replace(/Ů/g,"U").replace(/ů/g,"u")
.replace(/Ý/g,"Y").replace(/ý/g,"y")
.replace(/Ÿ/g,"Y").replace(/ÿ/g,"y")
.replace(/Ź/g,"Z").replace(/ź/g,"z")
.replace(/Ž/g,"Z").replace(/ž/g,"z")
.replace(/Ż/g,"Z").replace(/ż/g,"z")
.replace(/Æ/g,"Ae").replace(/æ/g,"ae")
.replace(/Œ/g,"Oe").replace(/œ/g,"oe");
if (esctype == 1) {
text = text.replace(/Ä/g,"Ae").replace(/ä/g,"ae")
.replace(/Ö/g,"Oe").replace(/ö/g,"oe")
.replace(/Ü/g,"Ue").replace(/ü/g,"ue")
.replace(/Ə/g,"Ae").replace(/ə/g,"ae");
} else {
text = text.replace(/Ä/g,"A").replace(/ä/g,"a")
.replace(/Ö/g,"O").replace(/ö/g,"o")
.replace(/Ü/g,"U").replace(/ü/g,"u")
.replace(/Ə/g,"A").replace(/ə/g,"a");
}
return(text);
}
function tagEscape(text)
{
text = text.replace(/'/g, "%27");
text = text.replace(/"/g, "%22");
return(text);
}
function untagEscape(text)
{
text = text.replace(/%27/g, "'");
text = text.replace(/%22/g, "\"");
return(text);
}
function spaceEscape(text)
{
text = text.replace(/ /g, "+");
text = text.replace(/_/g, "+");
return(text);
}
// 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=0';
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=0"><\/SCRIPT>');
}
/*
* 3xImport von [[Benutzer:Revvar]]
* aus [[Benutzer:Revvar/wikibits.js]] und [[Benutzer:Revvar/monobook.js]]
*/
/**
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 importJavascriptL(page, lang)
{
try {
/* check the parameters and set defaults */
if(!page) throw("importJavascriptL: 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=0';
/* 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.1
@date 2007/03/26
@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 importCSSL(page, lang)
{
try {
/* check the parameters and set defaults */
if(!page) throw("importCSSL: 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=0';
/* import page */
var Head = document.getElementsByTagName('head').item(0);
var CSS = document.createElement('style');
CSS.setAttribute('type', 'text/css');
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;
}
}
/**
Asynchron import of a Javascript file from the toolserver.
@version 0.1
@date 2007/04/24
@author based on function importPage from [[de:User:PDD]]s monobook.js, rewritten by [[de:User:Revvar]]
@param path Path to the toolserver script without the ".js" appendix
*/
function import_JS_from_TS(path)
{
try {
/* check the parameter */
if(!path) throw("import_JS_from_TS: Missing parameter path.");
/* create import url */
var import_url = 'http://toolserver.org/' + path + '.js';
/* import */
setTimeout(function(e) {
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);
}, 1000);
} catch(e) {
alert(e.message);
return;
}
}
// ***** FOOT-Block *****
// </nowiki> <- nicht löschen!!!
// ausgelagerte obligatorische Funktionen
importJavascriptL('PDD/supportFuncs','de'); // [[Benutzer:PDD/supportFuncs.js]]
importJavascriptL('PDD/helperFunctions','de'); // [[Benutzer:PDD/helperFunctions.js]]
// Revert addEditAndRevertLinks
if (!(!aerhistory && isHistory) && !isEdit) {
if (editlinkoldversion || revertwithreason)
importJavascriptL('Tinz/addEditAndRevertLinks','en'); // [[:de:Benutzer:PDD/addEditAndRevertLinks.js]]
}
// Und hier ist die monobook.js zu Ende.