Benutzer:Mnh/lktools.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>
* ACHTUNG: Testversion. Wenn das Script zwischenzeitlich aus dem Monitor krabbelt
* und den heimischen Hund frisst – ich war's nicht.
*/
/**
* Werkzeugkiste
**/
function strlen(str) {
return(str.length);
}
/*
* API-toolbox
*/
function get_deltok(page) {
var req = new XMLHttpRequest();
req.open('GET', 'http://de.wikipedia.org/w/api.php?action=query&prop=info&format=xml&intoken=delete&titles='+page, false);
req.send(null);
var pos = req.responseText.indexOf("deletetoken=\"") + 13; /* = strlen(deletetoken=") */
var pos2= req.responseText.indexOf("\"", pos);
return req.responseText.substr(pos, pos2-pos-2) + "%2B\\";
}
function get_edittok(page) {
var req = new XMLHttpRequest();
req.open('GET', 'http://de.wikipedia.org/w/api.php?action=query&prop=info&format=xml&intoken=edit&titles='+page, false);
req.send(null);
/* add information if the page is missing to token */
var red;
if(req.responseText.indexOf("missing=\"\"") != -1)
red = 1;
else
red = 0;
var pos = req.responseText.indexOf("edittoken=\"") + strlen("edittoken=\"");
var pos2= req.responseText.indexOf("\"", pos);
return red + req.responseText.substr(pos, pos2-pos-2) + "%2B\\";
}
function api_delete(params) {
var req = new XMLHttpRequest();
req.open('POST', 'http://de.wikipedia.org/w/api.php?action=delete', false);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(params);
// if req.status == 200 => success
}
function post_content(params) {
var req = new XMLHttpRequest();
req.open('POST', 'http://de.wikipedia.org/w/api.php?action=edit', false);
req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
req.send(params);
}
/* Löschbestätigung bauen und – falls bestätigt – übergebene Seite + Disk killen
* Ausgeführt bei: action=confirm
*/
function hook_del_confirm() {
var page;
var reason;
/* MediaWiki kennt die Aktion nicht, das muss der Benutzer aber nicht wissen */
document.title = "Löschen bestätigen";
document.getElementById('firstHeading').innerHTML = "Löschen bestätigen";
var elem = document.getElementById('mw_content');
/* Seite extrahieren */
var pos = location.href.indexOf("title=") + strlen("title=");
var pos2 = location.href.indexOf("&", pos);
page = decodeURI(location.href.substr(pos, pos2-pos));
/* brauchen eine Begründung */
if( (pos=location.href.indexOf("wpReason=", pos)) == -1) {
elem.innerHTML = "Keine Begründung mitgegeben.";
return;
}
pos += strlen("wpReason=");
if( (pos2=location.href.indexOf("&", pos)) == -1)
reason = decodeURI(location.href.substr(pos));
else
reason = decodeURI(location.href.substr(pos, pos2-pos));
elem.innerHTML = "Seite <b>" + page + "</b> und ihre Diskussionsseite mit Begründung <br />„" + reason
+ "“<br />löschen?<br />"
+ '<a href="javascript:void(0);" style="margin-left: 10em; color:#00CD66;'
+ 'font-weight:bold;" onclick="window.close();">[nicht löschen]</a>'
+ ' '
+ '<a href="javascript:void(0);" style="color:#CD3700; font-weight:bold;"'
+ " onclick=\"del_exec('" + page +"','"+ reason +"')\">[löschen]</a>";
}
function del_exec(page, reason) {
/* delete-token holen */
var tok = get_deltok(page);
/* Parameter bauen */
var params1 = "reason="+reason+"&token=" + tok + "&title=";
var params2 = "reason="+reason+"&token=" + tok + "&title="; /* bloß keinen Pointer hier */
var pos = page.indexOf(":");
if(pos == -1) {
params1+= page;
params2+= "Diskussion:" + page;
} else {
params1+= page;
params2+= page.substr(0,pos) + " Diskussion" + page.substr(pos);
}
api_delete(params1);
api_delete(params2);
location.href = "http://de.wikipedia.org/wiki/Spezial:Linkliste/" + page;
}
/*
* Button-Callbacks
*/
function cb_del(page, reason, section) {
window.open("http://de.wikipedia.org/w/index.php?title=" + page + "&action=confirm&wpReason=" + encodeURI(reason), "_blank");
window.location.href = section + "&delete";
}
function cb_keep(page, date, section) {
/* Namen der Diskseite basteln */
var pos, disk;
if( (pos=page.indexOf(":")) != -1) /* nicht ANR */
disk = page.substr(0, pos) + " Diskussion" + page.substr(pos);
else /* ANR */
disk = "Diskussion:" + page;
/* WarLK-Ziegel auf die Disk werfen */
var tok = get_edittok(disk);
var red = tok.substr(0,1);
tok = tok.substr(1);
var txt = "{{War Löschkandidat|" + date + "}}\n\n";
if(red == 1)
post_content("title="+disk+"§ion=0&summary=+War LK&text="+txt+"&token="+tok);
else
post_content("title="+disk+"§ion=0&summary=+War LK&prependtext="+txt+"&token="+tok);
/* Ziegel aus dem Artikel fischen */
window.open("http://de.wikipedia.org/w/index.php?title=" + page + "&action=edit", "_blank");
/* Grund in den LK angeben */
window.location.href = section + "&keep";
}
/* Fügt Knöppches auf den LK ein
* Ausgeführt bei: Wikipedia:Löschkandidaten/ in title
*/
function loescheimer() {
var date; /* LK-Datum */
var reason; /* Löschgrund */
var section; /* edit-Link für Section */
var pos, pos2;
var len = strlen("Wikipedia:Löschkandidaten/");
date = document.title.substring(len).replace(/ [–-] .*/, "");
/* sift through level-2/-3-headings */
len = document.getElementsByTagName("h2").length;
var head = null;
for (var i = 0; i < len + document.getElementsByTagName("h3").length; i++) {
/* Isolate the RfDs title */
if(i < len)
head = document.getElementsByTagName('h2')[i];
else
head = document.getElementsByTagName('h3')[i-len];
/* Rotlinks und andere Abschnitte überspringen */
if( ((pos=head.innerHTML.indexOf('editsection')) == -1)
|| (head.innerHTML.indexOf('class="new"') != -1) )
continue;
/* Section-Link extrahieren */
pos = head.innerHTML.indexOf('href="') + strlen('href="');
pos2 = head.innerHTML.indexOf('"', pos);
section = head.innerHTML.substr(pos, pos2-pos);
/* Überschrift und Linktitle extrahieren */
pos = head.innerHTML.indexOf('class="mw-headline"');
pos2 = head.innerHTML.indexOf('</span>', pos);
var span = head.innerHTML.substr(pos, pos2-pos);
if( (pos = span.indexOf('title="')) == -1)
continue; /* Kein Link in Überschrift */
pos+= strlen('title="');
pos2 = span.indexOf('"', pos);
/* um welche Seite es geht */
var page = span.substr(pos, pos2-pos).replace(/'/g,'%27');
/* ist schon was damit passiert? */
pos = span.indexOf('</a>', pos2) + strlen('</a>');
var suffix = span.substr(pos).toLowerCase();
/* wenn schon abgearbeitet: nix weiter. */
if( (suffix.indexOf('bleibt') != -1)
|| (suffix.indexOf('erl') != -1)
|| (suffix.indexOf('gelöscht') != -1) )
continue;
head.innerHTML = '<a href="javascript:void(0);" style="color:#00CD66; font-size:small;"'
+ " onclick=\"cb_keep('" + page +"','"+ date +"','"+ section +"')\">[keep]</a> "
+ head.innerHTML;
head.innerHTML = '<a href="/w/index.php?title=' + page + '&action=history" style="font-size:small;">'
+ '[hist]</a> ' + head.innerHTML;
/* Löschknopp */
reason = "siehe [[Wikipedia:Löschkandidaten/" + date + "#" + page + " (gelöscht)]]";
head.innerHTML = '<a href="javascript:void(0);" style="color:#CD3700; font-size:small;"'
+ " onclick=\"cb_del('" + page +"', '" + reason + "', '"
+ section + "')\">[del]</a> "
+ head.innerHTML;
}
}
/* Löschdiskussion bearbeiten und automagisch Überschrift anpassen
* Ausgeführt bei: &delete || &keep in URL
*/
function hook_edit(del) {
var box = document.editform.wpTextbox1.value;
var pos = box.indexOf("==", 4); /* Ende der Überschrift finden */
if(del == true) {
box = box.substr(0, pos) + "(gelöscht) " + box.substr(pos);
document.editform.wpSummary.value += " gelöscht";
} else {
box = box.substr(0, pos) + "(bleibt) " + box.substr(pos);
document.editform.wpSummary.value += " bleibt";
}
/* Ans Ende springen und Kasterl einfügen */
box = box + "\n{{Kasten| ~~~~}}";
document.editform.wpTextbox1.value = box;
}
/*
* URL auswerten
*/
function seitenweiche() {
var href = location.href;
/* Vorsicht, Reihenfolge wichtig */
if(href.indexOf("action=confirm") != -1)
hook_del_confirm();
else if(href.indexOf("&delete") != -1)
hook_edit(true);
else if(href.indexOf("&keep") != -1)
hook_edit(false);
else if(document.title.indexOf("Wikipedia:Löschkandidaten/") != -1)
loescheimer();
}
addOnloadHook(seitenweiche);
/* </nowiki> */