Zum Inhalt springen

Benutzer:Codeispoetry/PDD.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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
 // (PDD: note to self: version auch in alert-Funktion ändern!)
 var version  = 'P098u';

 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       = (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"); /* 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
 //

 // 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 (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, "+"));
 }

 /**
 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 page
 @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 */
        mw.loader.load('http://' + lang + '.wikipedia.org' + wgScriptPath + '/index.php?title=' + page + '&action=raw&ctype=text/javascript&smaxage=10000');

        return true;
    } catch(e) {
        alert(e.message);
        return false;
    }
 }

 // 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;
 }

 // ***** FOOT-Block *****
 // </nowiki> <- nicht löschen!!!

 importScript('User:Codeispoetry/quickbar.js'); // [[Benutzer:Codeispoetry/quickbar.js]]

  addOnloadHook (function () {createBar();  buildQuickbar();  if (scrpt > '') {
    document.write('<script> function _doopt (was) { switch (was) {', scrpt, '}}<\/script>');
    scrpt='';
 }});

 // ausgelagerte obligatorische Funktionen
 importScript('User:Codeispoetry/helperFunctions.js'); // [[Benutzer:Codeispoetry/helperFunctions.js]]
 importScript('User:Codeispoetry/supportFuncs.js'); // [[Benutzer:Codeispoetry/supportFuncs.js]]
 importScript('User:PDD/eintragen.js'); // [[Benutzer:PDD/eintragen.js]]
 importScript('User:PDD/alertOnChanges.js'); // [[Benutzer:PDD/alertOnChanges.js]]

 // obligatorisch nur für editpages
 if (isEdit) {
    importScript('User:PDD/wpTextReplace.js'); // [[Benutzer:PDD/wpTextReplace.js]]
    importScript('User:BLueFiSH.as/JS/replaceQuoteSigns.js'); // [[Benutzer:BLueFiSH.as/JS/replaceQuoteSigns.js]]
    importScript('User:BLueFiSH.as/JS/markup.js'); // [[Benutzer:BLueFiSH.as/JS/markup.js]]
    importScript('User:PDD/convertEntities.js'); // [[Benutzer:PDD/convertEntities.js]]
    importScript('User:Euku/persDaten.js'); // [[Benutzer:Euku/persDaten.js]]
 }

 // ausgelagerte optionale Funktionen (Autoload)

 // revert/loglink-Funktionen: möglichst früh einbinden

 // Revert addEditAndRevertLinks
 if (!(!aerhistory && isHistory) && !isEdit && (editlinkoldversion || revertwithreason))
    importScript('User:PDD/addEditAndRevertLinks.js'); // [[Benutzer:PDD/addEditAndRevertLinks.js]]

 // LogLinks addLogsLink
 if (addlogslink && !isSpecial) importScript('User:PDD/addLogsLink.js'); // [[Benutzer:PDD/addLogsLink.js]]

 // jetzt alles andere, was optional ist

 if (!isSpecial)
    if (addeditintro || addpurge) importScript('User:PDD/modifyCA.js'); // [[Benutzer:PDD/modifyCA.js]]

 // changeBeschriftungen *nach* modifyCA.js (!)
 if (beschriftungen) importScript('User:PDD/changeBeschriftungen.js'); // [[Benutzer:PDD/changeBeschriftungen.js]]
 if (sperrstatus) importScript('User:Stefan/Sperrstatus.js'); // [[Benutzer:Stefan/Sperrstatus.js]]

 if (showredundantlinks && !isSpecial)
    importScript('User:PDD/showRedundantLinks.js'); // [[Benutzer:PDD/showRedundantLinks.js]]

 // Signierfunktionen
 if (isEdit && !isArticle) {
    if (unsigning) importScript('User:Olliminatore/unsigned.js');  // [[Benutzer:Olliminatore/unsigned.js]]
 }

 // extended search & replace feature
 if (isEdit && searchbox) importJavascriptL('User:Zocky/SearchBox.js', 'en')  // [[:en:User:Zocky/SearchBox.js]]

 // Adminfunktionen ergänzen
 if (adminflag) importScript('User:Codeispoetry/admin.js'); // [[Benutzer:Codeispoetry/admin.js]]

 // Syntax highlighter
 if (js_highlight)  importJavascriptL('User:Olliminatore/shCore.js', 'en');  // [[:en:User:Olliminatore/shCore.js]]

 // dellinknowcommons
 if (dellinknowcommons && isBild)
    importScript('User:Codeispoetry/dellink-nc.js'); // [[Benutzer:Codeispoetry/dellink-nc.js]]

 // Codeispoetrys DupeCheck
 if (imgdupecheck && isBild)
    importScript('User:Codeispoetry/checkDupes.js');   // [[Benutzer:Codeispoetry/checkDupes.js]]

 if (markerledigt) importScript('User:Euku/markErledigt.js'); // [[Benutzer:Euku/markErledigt.js]]