Benutzer:✓/monobook/weiterleitungen.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
function WL() {
   // Konfiguration:
   if ( typeof pfeil == "undefined") var pfeil = " → ";
   if ( typeof titlebeibehalten == "undefined") var titlebeibehalten = true;

   var inhalt = document.getElementById("bodyContent");
   var redirects = getElementsByClassName(inhalt, "a", "mw-redirect");
   var catredirects = getElementsByClassName(inhalt, "span", "redirect-in-category");
   var apredirects = getElementsByClassName(inhalt, "div", "allpagesredirect");

   var allredirects = [];
   for(var i=0;i<redirects.length;i++)
      allredirects.push(redirects[i]);
   for(var i=0;i<catredirects.length;i++)
      allredirects.push(catredirects[i].getElementsByTagName("a")[0]);
   for(var i=0;i<apredirects.length;i++)
      allredirects.push(apredirects[i].getElementsByTagName("a")[0]);
   titlesAendern(allredirects);

   function titlesAendern(reds) {
      var ziele = [];
      for (var x=0;x<reds.length;x++) {
         var link = reds[x].getAttribute("href");
         var start = link.indexOf("/wiki/") + 6; // normale wikilinks
         //if (start == 5) start = 0;
         var ende = link.indexOf("#", start);
         if (link.indexOf("/w/index.php?") > -1) { // links mit php-parameter
            start = link.indexOf("title=") + 6;
            ende = link.indexOf("&", start);
         }
         if (ende == - 1) ende = link.length;
         var ziel = link.substring(start, ende);
         var schondrin = false;
         for(i=0; i<ziele.length; i++) {
            if(ziele[i] == ziel) {
               schondrin = true;
               break;
            }
         }
         if (!schondrin) ziele.push(ziel);
      }
      query();

      function query() {
         var diesmal = [];
         while(diesmal.length<50 && ziele.length>0)
            diesmal.push(ziele.shift());
         var url = wgServer + "/" + wgScriptPath + "/api.php?action=query&format=xml&titles=" + diesmal.join("|") + "&redirects";
         if ( typeof wl_xmlhttp != "undefined" ) wl_xmlhttp.abort(); // Just to make sure...
         var wl_xmlhttp = new sajax_init_object();
         wl_xmlhttp.open('GET', url, true);
         wl_xmlhttp.onreadystatechange = function () {
            if (! wl_xmlhttp) return ;
            if (wl_xmlhttp.readyState != 4) return;
            var xml = wl_xmlhttp.responseXML;
            if (! xml) return ;

            var r = xml.getElementsByTagName("r");
            for(var i=0;i<reds.length;i++) {
               var node = reds[i];
               var title = node.getAttribute("title");
               var j = 0;
               while(title != r[j].getAttribute("from")) {
                  j++;
                  if (j >= r.length) break;
               }
               if (j >= r.length) continue; // wurde nicht in xml gefunden
               var anhang = r[j].getAttribute("to");
               if (! anhang) continue;
               var neuerTitle = pfeil + anhang;
               if (titlebeibehalten) neuerTitle = title + pfeil + anhang;
               node.setAttribute("title", neuerTitle);
            }
            if (ziele.length > 0) query(); //solange bis nichts mehr da ist
         };
         wl_xmlhttp.send(null);
      }
   }
}
$(WL);