Benutzer:Codeispoetry/tarja.js
Erscheinungsbild
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
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/*global wgPageName, wgTitle, wgUserName, wgUserGroups */
/*global copySlotsRecursively, UrlParameters */
// Krimskrams
function isEven(myNumber) {
return (myNumber % 2 === 0);
}
function isOdd(myNumber) {
return (myNumber % 2 === 1);
}
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 (var 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,"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,"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,"Z").replace(/ź/g,"z")
.replace(/Ž/g,"Z").replace(/ž/g,"z")
.replace(/Ż/g,"Z").replace(/ż/g,"z");
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) {
return(text.replace(/'/g, "%27").replace(/"/g, "%22"));
}
function untagEscape(text) {
return(text.replace(/%27/g, "'").replace(/%22/g, '"'));
}
function spaceEscape(text) {
return(text.replace(/ /g, "+").replace(/_/g, "+"));
}
var user = wgUserName; // username wird automatisch übernommen
var version = 'P098u';
// aktuelle Zeit ermitteln
var jetzt = new Date();
// recalculate 4 furriners
var jetztfixed = jetzt.getTime();
var timezoneshift = timezoneshift || 0;
jetztfixed += (timezoneshift * 3600 * 1000);
jetzt.setTime(jetztfixed);
// fill date variables
var Monate = ["", "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var Monatekurz = ["", "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 = (mw.config.get('wgNamespaceNumber') == 0);
var isArticleTalk = (mw.config.get('wgNamespaceNumber') == 1);
var isBild = (wgCanonicalNamespace == "File");
var isCategory = (wgCanonicalNamespace == "Category");
var isTemplate = (wgCanonicalNamespace == "Template");
var isGeneric = false;
if ((!isBild) && (!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(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 || 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
//
// 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
mw.loader.load('http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=' + name + seite + '&action=raw&ctype=text/javascript&smaxage=10000');
return false;
}
// Funktion: importPage()
// zum Einbinden der Module
function importScriptI18n(seite, lang) { // all languages support
if(!lang) lang = wgContentLanguage;
// new version
mw.loader.load('http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=' + seite + '&action=raw&ctype=text/javascript&smaxage=10000');
return false;
}
var Page = {
edit: location.href.search(/action=(edit|submit)/) > -1,
history: UrlParameters.action === 'history',
special: wgCanonicalNamespace === 'Special',
article: wgNamespaceNumber === 0,
file: wgCanonicalNamespace === 'File'
};
var User = {
admin: wgUserGroups.indexOf('sysop') > -1,
rollback: wgUserGroups.indexOf('sysop') > -1 || wgUserGroups.indexOf('editor') > -1
};
var Tarja = {
Defaults: {slotCopy: true, lang: 'de' },
Modules: {
slotCopy: true,
// [[Benutzer:Codeispoetry/rollback.js]]
Rollback: {page: 'User:Codeispoetry/rollback.js', defaultLoad: true, pageconstraints: {edit: false}, userconstraints: {rollback: true}},
// [[Benutzer:Codeispoetry/quickbar.js]]
Quickbar: {page: 'User:Codeispoetry/quickbar.js', defaultLoad: false},
// [[Benutzer:PDD/helperFunctions.js]]
helperFunctions: {page: 'User:PDD/helperFunctions.js', defaultLoad: true},
// [[Benutzer:PDD/eintragen.js]]
eintragen: {page: 'User:PDD/eintragen.js', defaultLoad: true},
// [[Benutzer:PDD/alertOnChanges.js]]
alertOnChanges: {page: 'User:PDD/alertOnChanges.js', defaultLoad: true},
// [[Benutzer:PDD/wpTextReplace.js]]
wpTextReplace: {page: 'User:PDD/wpTextReplace.js', defaultLoad: true, pageconstraints: {edit:true}},
// [[User:BLueFiSH.as/JS/replaceQuoteSigns.js]]
replaceQuoteSigns: {page: 'User:BLueFiSH.as/JS/replaceQuoteSigns.js', defaultLoad: true, pageconstraints: {edit:true}},
// [[User:BLueFiSH.as/JS/markup.js]]
markup: {page: 'User:BLueFiSH.as/JS/markup.js', defaultLoad: true, pageconstraints: {edit:true}},
// [[User:PDD/convertEntities.js]]
convertEntities: {page: 'User:PDD/convertEntities.js', defaultLoad: true, pageconstraints: {edit:true}},
// [[User:Euku/persDaten.js]]
persDaten: {page: 'User:Euku/persDaten.js', defaultLoad: true, pageconstraints: {edit:true}},
// [[User:PDD/addEditAndRevertLinks.js]]
addEditAndRevertLinks: {page: 'User:PDD/addEditAndRevertLinks.js', defaultLoad: false, pageconstraints: {edit:false}},
// [[User:PDD/addEditAndRevertLinks.js]]
addEditAndRevertLinksHistory: {page: 'User:PDD/addEditAndRevertLinks.js', defaultLoad: false, pageconstraints: {history:true}},
// [[User:PDD/addLogsLink.js]]
addLogsLink: {page: 'User:PDD/addLogsLink.js', defaultLoad: false, pageconstraints: {special:false}},
// [[User:PDD/modifyCA.js]]
modifyCA: {page: 'User:PDD/modifyCA.js', defaultLoad: false, pageconstraints: {special:false}},
// [[User:PDD/changeBeschriftungen.js]] changeBeschriftungen *nach* modifyCA.js (!)
changeBeschriftungen: {page: 'User:PDD/changeBeschriftungen.js', defaultLoad: false},
// [[User:Stefan/Sperrstatus.js]]
Sperrstatus: {page: 'User:Stefan/Sperrstatus.js', defaultLoad: false},
// [[User:PDD/showRedundantLinks.js]]
showRedundantLinks: {page: 'User:PDD/showRedundantLinks.js', defaultLoad: false, pageconstraints: {special:false}},
// [[User:Olliminatore/unsigned.js]]
unsigned: {page: 'User:Olliminatore/unsigned.js', defaultLoad: false, pageconstraints: {article: false, edit: true}},
// [[:en:User:Zocky/SearchBox.js]]
searchBox: {page: 'User:Zocky/SearchBox.js', lang:'en', defaultLoad: false, pageconstraints: {edit: true}},
// [[User:Codeispoetry/admin.js]]
admin: {page: 'User:Codeispoetry/admin.js', defaultLoad: true, userconstraints: {admin: true}},
// [[:en:User:Olliminatore/shCore.js]]
jsHighlight: {page: 'User:Olliminatore/shCore.js', lang:'en', defaultLoad: false},
// [[User:Codeispoetry/dellink-nc.js]]
nowCommons: {page: 'User:Codeispoetry/dellink-nc.js', defaultLoad: true, pageconstraints: {file:true}},
// [[User:Codeispoetry/checkDupes.js]]
checkDupes: {page: 'User:Codeispoetry/checkDupes.js', defaultLoad: false, pageconstraints: {file:true}},
// [[User:Euku/markErledigt.js]]
markErledigt: {page: 'User:Euku/markErledigt.js', defaultLoad: false},
// [[Benutzer:Codeispoetry/lk.js]]
LK: { page: 'User:Codeispoetry/lk.js', defaultLoad: false},
// [[Benutzer:Codeispoetry/supportteam.js]]
supportTeam: { page: 'User:Codeispoetry/supportteam.js', defaultLoad: false},
// Contribsrange direkt aus dem en-Gadget.
rangeContribs: { page: 'MediaWiki:Gadget-contribsrange.js', lang: 'en', defaultLoad: false, pageconstraints: {special: true} },
// [[Benutzer:Codeispoetry/replaceCommonsLinks.js]]
replaceCommonsLinks: { page: 'Benutzer:Codeispoetry/replaceCommonsLinks.js', defaultLoad: false, pageconstraints: {edit: true} },
// [[Benutzer:Codeispoetry/flagtab.js]]
flagTab: { page: 'Benutzer:Codeispoetry/flagtab.js', defaultLoad: true, pageconstraints: {edit: false, special: false, history: false} },
// [[Benutzer:Codeispoetry/regengine.js]]
regEngine: { page: 'Benutzer:Codeispoetry/regengine.js', defaultLoad: false, pageconstraints: {edit: true} }
},
init: function () {
Tarja = copySlotsRecursively(Tarja, UserCfg.Tarja);
for (var module in this.Modules) {
if (!this.Modules.hasOwnProperty(module) || typeof this.Modules[module] !== 'object')
continue; // prototype spam
var cur_mod = this.Modules[module];
if (UserCfg[module] === false)
continue; // User doesn't want this module
if (typeof UserCfg[module] !== 'object' && UserCfg[module] !== true && cur_mod.defaultLoad !== true )
continue; // no defaultLoad module
var fullfilled = true;
for (var constraint in cur_mod.pageconstraints) {
if (Page[constraint] !== cur_mod.pageconstraints[constraint])
fullfilled = false; // Nicht die Seite, die das Modul braucht
}
cur_mod.userconstraints = cur_mod.userconstraints || {};
for (constraint in cur_mod.userconstraints) {
if (User[constraint] !== cur_mod.userconstraints[constraint])
fullfilled = false; // Nicht der User, den das Modul braucht
}
if (fullfilled === true) {
importScriptI18n(cur_mod.page, cur_mod.lang || this.Defaults.lang);
}
}
}
};
Tarja.init();