Benutzer:Heuler06/viewHistoryPrefix.js

Aus Wikibooks

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
 // <nowiki>
 
 /*
 
 Mit diesem Skript kann man sich die letzten fünf Einträge der
 Versionsgeschichte von Seiten mit einem bestimmten Präfix
 anzeigen lassen. Dies gilt natürlich nur, wenn auch
 mindestens fünf Änderungen vorliegen. ;-)
 Sonst wird alles angezeigt, was da ist.
 
 Übernommen werden kann das Skript folgendermaßen:
 1. Alles in die eigene "monobook.js" kopieren. ([[Special:Mypage/monobook.js]])
 
 2. Folgende Zeile in die eigene "monobook.js" einfügen:
 document.write('<script type="text/javascript" src="http://de.wikibooks.org/w/index.php?title=Benutzer:Heuler06/viewHistoryPrefix.js&action=raw&ctype=text/javascript"><\/script>');
 
 ! Hinweis: Ist in der "monobook.js" schon etwas vorhanden,
            kann es sein, dass das Skript nicht funktioniert -
            sowohl das hineinkopierte als auch das eingebundene.
 
 Getestet wurde es auf IE7, Opera 9.21 und FF.
 Im IE und Opera lief es nur in "Reinform", also ohne anderes Monobook-Krams.
 
 Weitere Anregungen und Kritik sind gerne gesehen.
 Wer Ideen hat, wie der Code effizienter wird: immer her damit.
 
 Viel Spaß :)
 -- [[Benutzer:Heuler06|heuler06]]
 
 */
 
 var req=false;
 var seiten=new Array();
 var nrOfPages=0;
 var goAhead=true;
 
 function counter()
 {
  if (nrOfPages==seiten.length)
  {
   document.getElementById("pic-load").style.display="none";
   document.getElementById("c-link").style.display="inline";
   nrOfPages=0;
   goAhead=true;
   seiten=new Array();
  };
  
  while (nrOfPages<seiten.length && goAhead)
  {
   search_pages(seiten[nrOfPages], '', 'history');
   goAhead=false;
   nrOfPages++;
  };
 }
 
 function history(page)
 {
  var n=page.indexOf('<ul id="pagehistory">');
  var n1=page.indexOf('</ul>', n);
  var txt='';
  var string=page.substring(n, n1+5);

  var edit=new Array();
  var k=string.indexOf('<li>'), k1=string.indexOf('Vorherige</a>)', k);

  var i=0;
    
  if (k1<0)
  {
   edit[i]=new Array(2);
   k1=string.indexOf('l) (Vorherige)', k);
   n=string.indexOf('<a href="', k1); n1=string.indexOf('</span></li>', n);
   edit[i][0]='<li> <big>&rarr;</big> <span style="color: red; font-weight:bold;">N</span>';
   edit[i][1]=string.substring(n, n1+12)+'</li>';
  }
  else
  {
   n=string.indexOf('name="diff" /> <a href="', k1); n1=string.indexOf('</span>)</li>', n);
   while (k>-1 && i<5)
   {
    edit[i]=new Array(2);
    edit[i][0]=string.substring(k, k1+14);
    if (n1<0)
    {
     n1=string.indexOf('</span></li>', n);
     edit[i][1]=string.substring(n+15, n1+12);
    }
    else
    {
     edit[i][1]=string.substring(n+15, n1+13);
    };
    k=string.indexOf('<li>', k1);
    k1=string.indexOf('Vorherige</a>)', k);
    if (k1<0)
    {
     k1=string.indexOf('>) (Vorherige)', k);
    };
    n=string.indexOf('name="diff" /> <a href="', k1);
    n1=string.indexOf('</span>)</li>', n);
  
    i++;
   };
  };
  
  txt+="\n<h4><a href=\"/wiki/"+seiten[nrOfPages-1]+"\">";
  txt+=decodeURIComponent(seiten[nrOfPages-1]).replace(/_/g, ' ');
  txt+="</a></h4>\n<ul>";
    
  for (i=0; i<edit.length; i++)
  {
   txt+=(edit[i][0]+" ... "+edit[i][1]);
  };
  
  txt+="</ul>\n<br>"; 
  document.getElementById("results").innerHTML+=txt;
  goAhead=true;
  counter();
 }
 
 function prefix_pages(page)
 {
  var n=page.indexOf('<table style="background: inherit;" border="0" width="100%">');
  var n1=page.indexOf('</table>', n);
  
  var string=page.substring(n, n1+8);
 
  var k=string.indexOf('<a href="/wiki/'), k1=string.indexOf('"', k+15);
  var i=0;
 
  while (k>-1)
  {
   seiten[i]=string.substring(k+15, k1);
   k=string.indexOf('<a href="/wiki/', k1);
   k1=string.indexOf('"', k+15);
 
   i++;
  };
  nrOfPages=0;
  counter();
 }
 
 function pages()
 {
  if (req.readyState==4)
  {
   if (req.status==200)
   {
    var page=req.responseText;
    req=false;
    var regex=/<title>Versionsgeschichte von .* Wikibooks<\/title>/;
 
    if (regex.test(page))
    {
     history(page);
    }
    else
    {
     document.getElementById("results").innerHTML='';
     prefix_pages(page);
    };
   }
   else
   {
    document.getElementById("pic-load").style.display="none";
    alert("Fehler aufgetreten! (Request nicht richtig empfangen)");
   };
  };
 }
 
 function token()
 {
  var cookies=document.cookie.split(" ");
  var nr='';
 
  for (i=0; i<cookies.length; i++)
  {
   cookies[i]=cookies[i].split("=");  
   if (cookies[i][0].search(/Token/)>0) nr=cookies[i][1].replace(/;/, '');
  };
 
  return nr;
 }
 
 function search_pages(from, namespace, action)
 {
  req=false;
 
  if (window.XMLHttpRequest)
  {
   req=new XMLHttpRequest();
   if (req.overrideMimeType)
   {
    req.overrideMimeType('text/xml');
   };
  }
  else
  {
   if (window.ActiveXObject)
   {
    try
    {req=new ActiveXObject("Msxml2.XMLHTTP");}
    catch (e)
    {
     try
     {req=new ActiveXObject("Microsoft.XMLHTTP");}
     catch (e) {};
    };
   };
  };
  
  if (!req)
  {
   alert('Kann keine XMLHTTP-Instanz erzeugen.');
   return false;
  }; 

  var str='http://de.wikibooks.org/w/index.php';
  if (from!='' && action=='')
  {
   str+=('?title=Spezial%3APr%C3%A4fixindex&from='+from+'&namespace='+namespace);
  }
  else
  {
   str+=('?title='+from+'&action='+action);
  };
 
  str+=('&token='+token());
  document.getElementById("pic-load").style.display="inline";
  document.getElementById("c-link").style.display="none";
 
  req.onreadystatechange=pages;
  req.open('GET', str, true);
  req.send(null);
 }


 function getSpecialPages()
 {
  if (wgCanonicalSpecialPageName=="Specialpages")
  {
   var list=document.getElementsByTagName("li")[0].parentNode;
 
   list.innerHTML+='<li><a href="javascript:changePage()" title="letzte fünf Änderungen vonSeiten mit Präfix">letzte fünf Änderungen bei allen Seiten (Präfix)</a></li>'
  };
 }
 
 function changePage()
 {
  var string='<p>Mit diesem JavaScript ist es möglich, die letzten fünf Änderungen von Seiten anzeigen zu lassen, die mit dem eingegebenen Präfix beginnen. Die Abfrage mit dem Präfix funktioniert wie <a href="/wiki/Spezial:Pr%C3%A4fixindex">Alle Seiten (Präfix)</a>. Abfragen, die dort nicht funktionieren, funktionieren auch hier nicht.\n<br><br>\n<b>Hinweis:</b> Es kann eine Weile dauern, bis alle Seiten abgefragt wurden.</p>';
  string+='<div class="namespaceoptions">\n<form name="h-prefix">\n';
  string+='<table>\n<tr>\n<td align="right">Präfix</td>\n<td align="left">\n';
  string+='<input type=\'text\' size=\'20\' name=\'from\' id=\'nsfrom\' value=""><br>\n';
  string+='</td>\n<td rowspan="2">\n<div style="display:none;" id="pic-load">\n<table border="0"><tr>\n<td>';
  string+='<img src="http://upload.wikimedia.org/wikipedia/commons/4/42/Loading.gif"></td><td>Lade...</td>\n</tr></table>\n</div>\n';
  string+='<td rowspan="2">\n<div style="display:none;" id="c-link">\n';
  string+='<a href="javascript:changePage()">Seite leeren</a>\n</div>\n</td>\n';
  string+='</tr>\n<tr>\n<td align="right">Namensraum</td>\n<td align="left">\n';
  string+='<select id=\'namespace\' name=\'namespace\' class=\'namespaceselector\'>\n';
  string+='<option value="0" selected="selected">(Seiten)</option>\n';
  string+='<option value="1">Diskussion</option>\n';
  string+='<option value="2">Benutzer</option>\n';
  string+='<option value="3">Benutzer Diskussion</option>\n';
  string+='<option value="4">Wikibooks</option>\n';
  string+='<option value="5">Wikibooks Diskussion</option>\n';
  string+='<option value="6">Bild</option>\n';
  string+='<option value="7">Bild Diskussion</option>\n';
  string+='<option value="8">MediaWiki</option>\n';
  string+='<option value="9">MediaWiki Diskussion</option>\n';
  string+='<option value="10">Vorlage</option>\n';
  string+='<option value="11">Vorlage Diskussion</option>\n';
  string+='<option value="12">Hilfe</option>\n';
  string+='<option value="13">Hilfe Diskussion</option>\n';
  string+='<option value="14">Kategorie</option>\n';
  string+='<option value="15">Kategorie Diskussion</option>\n';
  string+='<option value="102">Regal</option>\n';
  string+='<option value="103">Regal Diskussion</option>\n';
  string+='</select>\n';
  string+='<input type="button" value="Abfragen" onclick="search_pages(this.form.from.value, this.form.namespace.value, \'\')">\n';
  string+='</td>\n</tr>\n</table>\n</form>\n</div>\n<hr />\n';
  string+='<div id="results">\n';
  string+='</div>\n';
 
 
  document.getElementById("bodyContent").innerHTML=string;
 }
 
 aOnloadFunctions[aOnloadFunctions.length]=getSpecialPages;
 
 // </nowiki>