Benutzer:Heuler06/viewHistoryPrefix.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
// <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>→</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>