Benutzer:Mnh/revlinks.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

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
/**
 * 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>]&nbsp;';
        else
            linkbar+= '[<a href="' + href + '&summary=' + rvl_revtexts[i] + '">'
                    + label + '</a>]&nbsp;';
     }
     /* In die Seite einfügen */
     divs.innerHTML = divs.innerHTML.substr(0, dpos-1) + "<br />" 
                    + linkbar + divs.innerHTML.substr(dpos2+1);
    
}

addOnloadHook(revlink);

// </nowiki>