Benutzerin:Ra'ike/helperFunctions.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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
 // helperFunctions.js:
 // enthält obligatorische Hilfsfunktionen für [[Benutzer:PDD/monobook.js]]
 
 // <nowiki>
 
 if (typeof(drawquickbar) == 'undefined')
       var drawquickbar = true;
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // URI-Parameter für fillActionPage(), benutzt in eintragen.js, hinweise.js
 // außerdem in addEditAndRevertLinks.js (nur subjp, minorp, speichernp)
 
 var subjp      = "subj";       // Subject
 var textp      = "txt";        // Für Text-Austausch
 var insp       = "ins";        // Vor dem Text einfügen
 var addp       = "add";        // an Text anhängen
 var minorp     = "minor";      // (k)leine Änderung
 var speichernp = "speichern";  // Auf "Speichern" klicken 
 var nocreatep  = "nocreate";   // beim Eintragen keine neue Seite generieren
 var deletereason   = "deletereason";      // Schnelllöschgrund
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // URI-Parameter für setReload() und doReload()
 var reloadme   = "neuladen";   // merker für reload
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // absenden()
 // aufgerufen aus fillActionPage() und hinweis() in hinweise.js
 
 function absenden() {
   if (!debugme) {
     if (UrlParameters[deletereason] > "") {
       var deletedtitle = wgPageName;
       var reason = UrlParameters[deletereason];
       document.getElementById("deleteconfirm").wpConfirmB.click();
              if ((wgUserName == "Ra'ike") && ((reason == 'Veraltete IP-Diskussionsseite.') || (reason == "Ansprache über BLUbot ohne Erfolg") )) {
                window.setTimeout(function() { window.close(); }, 500);
              } else if ((wgUserName == "Ra'ike") && (reason != 'Veraltete IP-Diskussionsseite.')) {
                function newRequest()
                {
                  try {
                    if (window.XMLHttpRequest) {
                      return new XMLHttpRequest();
                    } else {
                      return new ActiveXObject("MSXML2.XMLHTTP");
                    }
                  } catch (e) {
                    return false;
                  }
                }
 
                var req;
                if (req = newRequest()) {
                  var text = "/w/query.php?format=xml&what=revisions&titles=" + deletedtitle.replace(/ /g, "%20").replace(/&/g, "%26").replace(/\"/g, "%22").replace(/\+/g, "%2B") + "&rvlimit=10";
                  req.open("GET", text, false);
                  req.send("");
 
                  var revisions = req.responseXML.getElementsByTagName("rv");
                  if (revisions.length < 10) {
                    var firstuser = revisions[revisions.length-1].getAttributeNode("user");
                    if (firstuser.childNodes[0].nodeValue.match(/\d+\.\d+\.\d+\.\d+/)) {
                      var uri = "http://de.wikipedia.org/w/index.php?title=Benutzer_Diskussion:" + firstuser.childNodes[0].nodeValue.match(/\d+\.\d+\.\d+\.\d+/) + "&action=edit&spam=2";
                      window.setTimeout(function() { window.close(); }, 250);
                      window.open(uri);
                      window.focus();
                    }
                  }
                }
              }
     } else {
       document.editform.wpSave.click();
     }
   } else {
     alert ('Speichern');
   }
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // fillActionPage()  (früher aktion(), ganz früher loeschkandidat() )
 // von Littl, ergänzt von Revvar
 //
 // Entnimmt Parameter aus der URI, fügt sie in die Textfelder ein und klickt ggf. auf "Speichern"
 // (die aufgerufene Seite ist dabei immer im Editmodus)
 
 function fillActionPage() {
   // wenn Bausteineinfügung am Anfang:
   // nur einfügen, wenn Seite noch nicht gelöscht
   var pagedeleted = false;
   if (document.getElementById("newarticletext"))
       pagedeleted = true;
 
   // nur einfügen, wenn noch nicht eingetragen
   // der URI-Aktionsparameter ist immer entweder insp oder textp oder addp, daher else
   var doubleinsert = false;
   if (UrlParameters[textp] > "") 
       doubleinsert = findDoubleEntry(UrlParameters[textp], document.editform.wpTextbox1.value);
   else if (UrlParameters[insp] > "") 
       doubleinsert = findDoubleEntry(UrlParameters[insp], document.editform.wpTextbox1.value);
   else if (UrlParameters[addp] > "") 
       doubleinsert = findDoubleEntry(UrlParameters[addp], document.editform.wpTextbox1.value);
 
   // Textfeld ausfüllen
   if (UrlParameters[textp] > "") {
      if (doubleinsert)
         document.editform.wpTextbox1.value = UrlParameters[textp] + document.editform.wpTextbox1.value;
      else
         document.editform.wpTextbox1.value = UrlParameters[textp];
   } else if (UrlParameters[insp] > "") {
      document.editform.wpTextbox1.value = UrlParameters[insp] + document.editform.wpTextbox1.value;
   } else if (UrlParameters[addp] > "") {
      document.editform.wpTextbox1.value = document.editform.wpTextbox1.value + UrlParameters[addp];
   } else if (UrlParameters[deletereason] > "") {
      if (UrlParameters[deletereason] != 'undefined') {
        document.getElementById("deleteconfirm").wpReason.value = UrlParameters[deletereason];
      }
   }
 
   // weitere Felder ausfüllen
   if (UrlParameters[subjp] > "")
      document.editform.wpSummary.value = UrlParameters[subjp];
   if (UrlParameters[minorp] == "1")
      document.editform.wpMinoredit.checked=true;
 
   // wenn Textbaustein doppelt: Warnung
   if (doubleinsert)
      alert("Artikel enthält den gewählten Baustein bereits!");
   // wenn Seite schon gelöscht: Warnung
   else if (pagedeleted && (UrlParameters[nocreatep] == "1"))
      alert("Artikel wurde bereits gelöscht!");
   // wenn autosave eingeschaltet: Seite speichern
   else if (UrlParameters[speichernp] == "1")
      absenden();
 
   if (UrlParameters["diff"] > "") {
     function searchRollbackLink() {
       var tds = document.getElementsByTagName("td");
       for (var i=0; i<tds.length; i++) {
         var td = tds[i]; 
         if (td.className != "diff-ntitle") continue;
         var as = td.getElementsByTagName("a");
         for (var j=0; j<as.length; j++) {
           var a = as[j];
           if (!/.*action=rollback.*/(a.href)) continue;
           return a;
         }
       }
       return null;
     }
 
     function RollAndSpam(rolluri) {
       var backrolled = rolluri.match(/\d+\.\d+\.\d+\.\d+/);
       if (backrolled) {
         location.href = rolluri;
         window.setTimeout(function() { window.close(); }, 500);
         var uri = "http://de.wikipedia.org/w/index.php?title=Benutzer_Diskussion:" + backrolled + "&action=edit&spam=1";
         window.open(uri);
         window.focus();
       } else {
         location.href = rolluri;
         window.setTimeout(function() { window.close(); }, 500);
       }
     }
    if (wgUserName == "Ra'ike") {
     var revlink = searchRollbackLink();
     revlink.onclick = function() { RollAndSpam(revlink.href); return false; }
    }
   }
 
  if (wgUserName == "Ra'ike") {
 
   if (UrlParameters["spam"] > "") {
       if (document.forms["editform"].wpTextbox1.value == "") {
         document.forms["editform"].wpWatchthis.click();
         if (UrlParameters["spam"] == "1") {
           document.forms["editform"].wpTextbox1.value = "\{\{subst:Test\}\} \~\~\~\~";
         } else {
           document.forms["editform"].wpTextbox1.value = "\{\{subst:Benutzer:LKD\/V\/ALoesch\}\} \~\~\~\~";
         }
         document.editform.wpSave.click();
         window.setTimeout(function() { window.close(); }, 1000);
       } else {
         if (UrlParameters["spam"] == "1") {
           var blockurl = "http://de.wikipedia.org/w/index.php?title=Spezial:Sperren/" + wgTitle + "&blockip=1";
         } else {
           var blockurl = "http://de.wikipedia.org/w/index.php?title=Spezial:Sperren/" + wgTitle + "&blockip=2";
         }
         window.setTimeout(function() { window.close(); }, 100);
         window.open(blockurl);
         window.focus();
       }
   }
 
   if (UrlParameters["blockip"] > "") {
     document.forms["blockip"].wpBlockExpiry.selectedIndex = 1;
     if (UrlParameters["blockip"] == "1") {
       document.forms["blockip"].wpBlockReason.value = "Vandale";
     } else {
       document.forms["blockip"].wpBlockReason.value = "Erstellt unsinnige Artikel";
     }
     window.setTimeout(function() { document.forms["blockip"].wpBlock.click(); }, 100);
     window.setTimeout(function() { window.close(); }, 1000);
   }
 
   if ( (UrlParameters["title"] == "Spezial:Beiträge") && (UrlParameters["namespace"] == "3") ) {
     var uls = document.getElementsByTagName("ul");
     var as = uls[0].getElementsByTagName("a");
     for (var i=0; i<as.length; i++) {
       var matchedip = as[i].childNodes[0].nodeValue.match(/\d+\.\d+\.\d+\.\d+/)
       if (matchedip) {
                function newRequest()
                {
                  try {
                    if (window.XMLHttpRequest) {
                      return new XMLHttpRequest();
                    } else {
                      return new ActiveXObject("MSXML2.XMLHTTP");
                    }
                  } catch (e) {
                    return false;
                  }
                }
 
                var req;
                if (req = newRequest()) {
                  var text = "/w/query.php?format=xml&what=allpages&aplimit=1&apnamespace=2&apfrom=" + matchedip;
                  req.open("GET", text, false);
                  req.send("");
 
                  var titles = req.responseXML.getElementsByTagName("title");
 
                  if (titles[0].childNodes[0].nodeValue != ("Benutzer:" + matchedip)) {
                    var req2;
                    if (req2 = newRequest()) {
                      var text2 = "/w/query.php?format=xml&what=revisions&titles=Benutzer_Diskussion:" + matchedip + "&rvlimit=2";
                      req2.open("GET", text2, false);
                      req2.send("");
 
                      var revisions2 = req2.responseXML.getElementsByTagName("rv");
                      if (revisions2.length < 2) {
                        var uri = "http:\/\/de.wikipedia.org\/w\/index.php\?title\=Benutzer_Diskussion:" + matchedip + "&action=delete&deletereason=Veraltete%20IP-Diskussionsseite.&speichern=1";
                        window.open(uri);
                      }
                    }
                  }
                }
       }
     }
   }
  } 
 }
 if ( ( (isEdit) && (!isSpecial) ) || (UrlParameters[deletereason] > "") || (UrlParameters["diff"] > "") || (UrlParameters["blockip"] > "") || ( (UrlParameters["title"] == "Spezial:Beiträge") && (UrlParameters["namespace"] == "3") && (UrlParameters["deleteall"] == "1") ) ) addOnloadHook(fillActionPage);
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // findDoubleEntry()
 // aufgerufen aus fillActionPage()
 
 function findDoubleEntry(baustein, artikeltext) {
   var doublette = false;
 
   // wenn keine Vorlage enthalten: Abbruch
   if (baustein == baustein.split("{{")[0]) return (doublette);
 
   var chkbaustein = baustein.split("{{")[1].split("}}")[0].split("|")[0];
   chkbaustein = "{{" + chkbaustein ;
 
   if (navigator.userAgent.indexOf("Opera") == -1) {
      // checking
            // Zeilen wie die nächste generieren Fehler mit Opera, daher diesen Bereich auskommentiert
            // Fehler: RegExp.prototype.compile: syntax error in pattern or string
            // mit Firefox2 und IE7 geht das problemlos, hmm
      if (artikeltext.search(chkbaustein) != -1)
          doublette = true;
      // Kleinschreibung & SLA & substs
      if (chkbaustein == "{{Löschen") {
          if (artikeltext.search("{{löschen") != -1)
              doublette = true;
          if (artikeltext.search("{{SLA") != -1)
              doublette = true;
      }
      if (chkbaustein == "{{subst:Löschantrag") {
          if (artikeltext.search("{{Löschantragstext") != -1)
              doublette = true;
      }
      if (chkbaustein == "{{subst:Qualitätssicherung") {
          if (artikeltext.search("{{QS-Antrag") != -1)
              doublette = true;
      }
   } // end of Opera hack
   return (doublette);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // initQuickbar()
 // positioniert den Quickbar
 
 function initQuickbar() {
   // Variables that could be defined in your monobook
   if (typeof(keeplogo) == 'undefined')
       keeplogo = false;
   if (typeof(releasequickbar) == 'undefined')
       releasequickbar = false;
 
   var quickbarpos = "fixed";
   // IE6- kann kein position:fixed und hat demzufolge Pech
   if ( navigator.userAgent.indexOf("MSIE") > -1 )
      quickbarpos = "absolute";
   // IE7 und als MSIE maskiertes Opera 8/9: können position:fixed
   if (( navigator.userAgent.indexOf("MSIE 7") > -1 ) || ( navigator.userAgent.indexOf("Opera") > -1 ))
      quickbarpos = "fixed";
 
   if (!keeplogo) {
      // logo ausblenden (revvar)
      document.getElementById("p-logo").style.visibility = "hidden";
      // padding in column-one (platz für quickbar)
      document.getElementById("column-one").style.paddingTop =
         (10+document.getElementById("p-quickbar").clientHeight)+"px";
   }
 
   if (!releasequickbar) {
      document.getElementById("p-quickbar").style.position = quickbarpos;
   }
 }
 if (drawquickbar) addOnloadHook(initQuickbar);
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // doReload()
 // setzt nach Reload die Reload-Selection wieder
 
 function doReload() {
   if (UrlParameters[reloadme] == "1") {
      document.getElementById('reloadme').checked=true;
      setReload();
   }
 }
 if (!isEdit) addOnloadHook(doReload);
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // setReload()
 // aufgerufen, wenn im Quickbar die Reload-Selection gesetzt wird
 
 var timeoutaktiv;
 function setReload() {
   if (document.getElementById('reloadme').checked && (UrlParameters[reloadme] != "1")) {
       var uri = (document.URL.indexOf('?') >0) ? ('&' + reloadme + '=1') : ('?' + reloadme + '=1');
       timeoutaktiv = window.setTimeout(location.href=location.href+uri, timeout);
   }
   else if (document.getElementById('reloadme').checked	&& (UrlParameters[reloadme] == "1")) {
       timeoutaktiv=window.setTimeout("location.reload()", timeout);
   }
   else {
       window.clearTimeout(timeoutaktiv); // bizarr, timeoutaktiv ist hier gar nicht belegt?
   }
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // TaggAll()
 // von Schwalbe nach Anregung von Poupou, ursprüngl. von BLueFiSH.as
 // (fast) alle Checkboxen auswählen, für Spezial:Undelete Versionenwiederherstellung
 
 function TaggAll() {
  for(var i=3;i<=10000;i++)
    document.getElementsByTagName("input")[i].checked=true;
 }
 
 /*
  * Stringlänge überprüfen für Zusammenfassungszeile
  */
 
 function EditCommentLength(str) {
   return (199-str.length);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // undate()
 // von [[Benutzer:D]]
 // entlinkt verlinkte Daten
 
 function undate() {
   var tbvalue = document.editform.wpTextbox1.value;
   tbvalue = tbvalue.replace(/\[\[\s*(\d+(er)?( v. Chr.)?)\s*\]\]/g, "$1");
   tbvalue = tbvalue.replace(/\[\[\s*(\d+\. (Jahrhundert|Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember))\s*\]\]/g, "$1");
   document.editform.wpTextbox1.value = tbvalue;
   document.editform.wpDiff.click();
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // insertAfter()
 // neuen Node nach einem referenceNode einfügen
 
 function insertAfter(parent, node, referenceNode) {
   parent.insertBefore(node, referenceNode.nextSibling);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////
 // trim()
 // Leerzeichen am Anfang und Ende entfernen
 
 function trim(str) {
   return str.replace(/^\s*|\s*$/g,"");
 }
 
 
 //
 // Funktion nowcomm()
 // Trägt NowCommons-Baustein ein
 // (aufgerufen aus der monobook.js)
 //
 
 function nowcomm() {
  var lemma = getLemma();
  if (lemma.substring(0, 5) == "Bild:") lemma=lemma.slice(5);
  var lemmaneu = prompt('Neuer Dateiname',lemma);
  if (lemmaneu != null )
      newtext('NowCommons','\{\{NowCommons|' + lemmaneu +'}}',3);
 }
 
 //
 // Helper-Funktion getLemma()
 // extrahiert Lemma, entfernt "Bild:" und "Kategorie:"
 // (aufgerufen von eintragen() aus der eintragen.js, nowcomm() )
 //
 
 function getLemma () { //Littl
   var lemma;
   if ((isContrib) && ( UrlParameters["target"] > "" ))
     lemma = UrlParameters["target"];
   else if ( UrlParameters["title"] > "" )
     lemma = UrlParameters["title"];
   else {
     lemma = decodeURIComponent(location.href.substring(location.href.indexOf("/wiki/") + 6)).split('#')[0];
     // fix linky links (?redirect=no)
     //lemma = lemma.split['\x3F'][0];
     if (lemma.indexOf("redirect=no")!=-1)
         lemma=lemma.substring(0,lemma.indexOf("redirect=no")-1);
   }
   // if (lemma.substring(0, 5) == "Bild:") lemma=lemma.slice(5);
   // if (lemma.substring(0, 10) == "Kategorie:") lemma=lemma.slice(10);
   if (isPHP) lemma=lemma.split('+').join('_');
   return lemma;
 }
 
 // </nowiki>