Benutzer:Complex/lktools.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
/*<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);
}


/* WarLK-Ziegel werfen 
 * Ausgeführt bei: &keepdate=<Datum> in URL
 */
function hook_keep_brick() {
            /* Date given by url argument, extract, replace any %20 w/ spaces */
            date = decodeURI(location.href.substr(location.href.indexOf("keepdate=")+strlen("keepdate=")));

            /* insert our beloved "this was an rfd"-brick */
            document.editform.wpTextbox1.value = "{{War Löschkandidat|"+date+"}}\n\n"+document.editform.wpTextbox1.value;
            document.editform.wpSummary.value = "+ War Löschkandidat";
            document.editform.wpSave.click(); 
}
/* 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("wiki/") + 5; 
    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));

    /* Falls Parameter nuke gegeben, löschen ausführen, sonst rückfragen */
    if( (pos=location.href.indexOf("&nuke")) == -1) {
        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;" onclick="window.close();">[nicht löschen]</a>'
                       + '&nbsp;&nbsp;&nbsp;'
                       + '<a href="' + location.href + '&nuke" style="color:#CD3700;" onclick="">[löschen]</a>';
    } else {
        elem.innerHTML = "Nuke.";
       /* nuke 1, nuke 2 change to whatlinkshere */
       /* to whatlinkshere */
    }
}

/*
 * Button-Callbacks  
 */
function cb_del(page, reason, section) {
    window.open("http://de.wikipedia.org/wiki/" + page + "?action=confirm&wpReason=" + encodeURI(reason), "_blank");
    window.location.href = section + "&delete";
}
function cb_keep(page, section) {   
    /* + warLK() */
    window.open("http://de.wikipedia.org/w/index.php?title=" + page + "&action=edit");
    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);

        /* ist schon was damit passiert? */
        pos  = span.indexOf('</a>', pos2) + strlen('</a>');
        var suffix = span.substr(pos).toLowerCase(); 

        /* kein [keep] wenn schon gelöscht im header */
        if(suffix.indexOf("gelöscht") == -1) {
            head.innerHTML = '<a href="javascript:void(0);" style="color:#00CD66; font-size:small;"'
                           + " onclick=\"cb_keep('" + page +"','"+ section +"')\">[keep]</a>&nbsp;"
                           + head.innerHTML;
        }

        /* wenn bleibt oder erledigt: nix weiter. */
        if( (suffix.indexOf('bleibt')!=-1) || (suffix.indexOf('erl')!=-1) ) 
           continue;

        /* [hist]-Link nur, wenn noch keine gelöscht-Entscheidung */
        if(suffix.indexOf("gelöscht") == -1) {
            head.innerHTML = '<a href="/w/index.php?title=' + page + '&action=history" style="font-size:small;">'
                           + '[hist]</a>&nbsp;' + 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>&nbsp;"
                       + 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(href.indexOf("&keepdate=") != -1)
        hook_keep_brick();
    else if(document.title.indexOf("Wikipedia:Löschkandidaten/") != -1)
        loescheimer();
}
$(seitenweiche);
/* </nowiki> */