Benutzer:Mnh/revlinks.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
/**
* FIXME: Script offenbar defekt, Standardgrund wird wieder verwendet.
*
* Bietet in Diffs zusätzliche Revertknöpfe mit wählbarer Begründung.
* Sind die Arrays rvl_linktexts und rvl_revtexts extern definiert, werden Linkbeschriftungen und Revertgründe aus diesen Arrays
* übernommen. Der erste Arrayeintrag ist hierbei der reguläre Zurücksetzen-Knopf.
*/ //<nowiki>
/* extern definierbare Optionen */
var rvl_linktexts; /* Linkbeschriftungen */
var rvl_revtexts; /* Revertgründe */
/* Falls Parameter extern nicht oder fehlerhaft definiert, konstruiere Default.
* Ein vorangestelltes A, W, D oder O (mit | abgetrennt) bestimmt, wo der Knopf jeweils
* angezeigt wird: A = in Artikeln, W = im Wikipedia:-Namensraum, D = auf Diskussionsseiten (beliebiger Namespace)
* oder S: überall sonst.
*/
function setrevdefaults() {
rvl_linktexts = new Array('Revert', 'A|Quelle?', 'A|WP:WEB', 'WD|Offtopic', 'WD|KPA');
rvl_revtexts = new Array('default', // beim normalen Adminknopf die Standardbegründung lassen
'Zurück auf Version von $1: Bitte [[WP:QA|Quelle angeben]].',
'Zurück auf Version von $1: Bitte [[Wikipedia:Weblinks]] beachten',
'Zurück auf Version von $1: Beitrag für die Diskussion nicht weiterführend.',
'Zurück auf Version von $1: Bitte [[WP:Keine persönlichen Angriffe]] und [[WP:Wikiquette]] beachten.');
}
/* Links Hinzufügen */
function revlink() {
var namespace;
/* Falls kein diff: Fertig. */
if (location.href.indexOf("diff=") == NOT_THERE)
return;
/* Namespace feststellen */
if(wgCanonicalNamespace == "")
namespace = "A";
else if (wgCanonicalNamespace.toLowerCase().indexOf("talk") != NOT_THERE)
namespace = "D";
else if(wgCanonicalNamespace == "Project")
namespace = "W";
else
namespace = "S";
/* Gibt es externe Argumente? */
if( (typeof(rvl_linktexts)=='undefined') || (typeof(rvl_revtexts)=='undefined') )
setrevdefaults();
/* Falls nicht beide Arrays die gleiche Anzahl enthalten, lieber defaults nehmen */
if(rvl_linktexts.length != rvl_revtexts.length)
setrevdefaults();
/* Gibt es einen Zurücksetzen-Button? Wenn nicht, kann auch nicht revertiert werden. */
var divs = document.getElementById('mw-diff-ntitle2');
if(divs == null) /* kann passieren, wenn Benutzer die Seite anlegt */
return;
var dpos, dpos2;
if( (dpos=divs.innerHTML.indexOf('mw-rollback-link')) == NOT_THERE)
return; /* kein Knöppchen da */
/* normales Knöppchen extrahieren */
dpos = divs.innerHTML.indexOf('<a href=', dpos);
dpos2 = divs.innerHTML.indexOf(']', dpos);
var rlink = divs.innerHTML.substr(dpos, dpos2-dpos);
/* /w/index.php?title=PAGE&action=rollback&from=WHOM&token=TOKEN extrahieren */
var pos = rlink.indexOf('"') + 1;
var pos2 = rlink.indexOf('"', pos);
var href = rlink.substr(pos, pos2-pos);
/* Linkbar bauen */
var linkbar = "";
var spaces, label;
for(var i=0; i<rvl_linktexts.length; i++) {
/* Richtiger Namespace für diesen Knopf? */
if( (pos=rvl_linktexts[i].indexOf("|")) != NOT_THERE) {
label = rvl_linktexts[i].substr(pos+1);
spaces = rvl_linktexts[i].substr(0, pos);
} else {
label = rvl_linktexts[i];
spaces = "AWDS";
}
if(spaces.indexOf(namespace) == NOT_THERE)
continue; /* Nö. */
/* Knopf bauen */
if(rvl_revtexts[i] == "default")
linkbar+= '[<a href="' + href + '">' + label + '</a>] ';
else
linkbar+= '[<a href="' + href + '&summary=' + rvl_revtexts[i] + '">'
+ label + '</a>] ';
}
/* In die Seite einfügen */
divs.innerHTML = divs.innerHTML.substr(0, dpos-1) + "<br />"
+ linkbar + divs.innerHTML.substr(dpos2+1);
}
addOnloadHook(revlink);
// </nowiki>