Zum Inhalt springen

Benutzer:Codeispoetry/modifyLKs.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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
 /*
  * modifyLKs.js
  *
  * Autor: [[Benutzer:mnh]], [[Benutzer:PDD]], [[Benutzer:Codeispoetry]]
  * Quelle: [[Benutzer:Mnh/monobook.js]], [[Benutzer:PDD/modifyLKs.js]]
  * 
  * Dokumentation:
  * - führt sich selbst aus, lediglich Einbindung ist nötig
  * - dient zur Erleichterung der Löschkandidaten-Abarbeitung
  */
 
// <nowiki>
/** TOC-Filter
 * Entfernt auf LK-Seiten erledigte Diskussionen aus dem Inhaltsverzeichnis
 **/
/* Optionen */
var txt_show = "[alle zeigen]";/* Defaulttext für TOC-Button, falls gefiltert */
var txt_hide = "[filtern]";    /* Defaulttext sonst                           */
var filter_rfdtoc_by_default;  /* Standardansicht gefiltert?                  */
/* Ende der Optionen */


var nfiltered = 0;               /* wie viele werden auf der Seite gefiltert? */
/* Wechselt zwischen voller und gefilterter TOC */
function togglefilter() {
    var display; 
    var link = document.anchors.toc_toggler.firstChild;

    /* TOC normal oder gefiltert? */
    if (link.nodeValue == txt_show) {
        display = "";
        link.nodeValue = txt_hide;
    } else { 
        display = "none";
        link.nodeValue = txt_show;
    } 

    /* Sichtbarkeit der Elemente ändern */
    for(var i = 0 ; i < nfiltered ; i++)
        document.getElementById("invisible_toc"+i).style.display = display;
    
    return false;
}

function filtertoc() {
   /* Default setzen, falls Variable für Standardverhalten nicht extern gesetzt */
   if(typeof(filter_rfdtoc_by_default) == 'undefined') 
       filter_rfdtoc_by_default = true;

   /* Link zum Umschalten normal/gefiltert in die TOC einfügen */
   toc_head = document.getElementsByTagName('h2')[0];
   link = document.createElement("a");
   link.href="javascript:void(0);";
   link.onclick = togglefilter;
   link.name = "toc_toggler";
   link.setAttribute("style", "float:right;");
   if(filter_rfdtoc_by_default)
       link.appendChild(document.createTextNode(txt_show));
   else 
       link.appendChild(document.createTextNode(txt_hide));

   toc_head.insertBefore(link, toc_head.firstChild.nextSibling);

   /* TOC-Elemente nach üblichen Zusätzen durchgehen und gefundene Elemente
    * mit ID ausstatten
    */
   for (var i = 0; i < document.getElementsByTagName("li").length; i++) {     
        var lelem = document.getElementsByTagName('li')[i];

        /* nichts außerhalb der TOC */
        var class = lelem.getAttribute("class");
        if(!class || !class.match(/toclevel/)) {
             continue;
        }
        var toctxt = lelem.getElementsByTagName('span')[1].firstChild.nodeValue;        
        /* abgearbeitet? */
        if(toctxt.match(/gelöscht/i)  || toctxt.match(/\([^\)]*erl/i) || toctxt.match(/\([^\)]*bleib/i) || toctxt.match(/\(.*redir/i)
        ||  toctxt.match(/URV/) || toctxt.match(/zurückgezogen/i) || toctxt.match(/:LAE/)
        ||  toctxt.match(/\([^\)]*QS[^\)]*\)/) ||  toctxt.match(/\([^\)]*SLA.*\)/)
        ||  toctxt.match(/\([^\)]*LA entfernt[^\)]*\)/) ) {
            /* Ja, ID zuweisen und ausblenden, falls standardmäßig gefiltert */
            lelem.id = "invisible_toc" + nfiltered;
            if(filter_rfdtoc_by_default)
                lelem.style.display = "none";
            nfiltered += 1;
        }
    }
}

var pfx  = "Wikipedia:Löschkandidaten/";
var len  = pfx.length;
if((document.title.length >= len) && (document.title.substring(0, len).indexOf(pfx) == 0))
    addOnloadHook(filtertoc);

/** Ende des Filters **/

/** Loescheimer: fügt auf LK-Seiten den Zwischenüberschriften (h2 und h3) zusätzliche Knöpfchen 
 ** für Versionsgeschichte, War Löschkandidat und Löschen mit gesetztem Grund hinzu.
 ** Verwenden: Bis zur unteren Markierung kopieren und in die eigene Monobook.js einfügen.
 **/

function loescheimer() {

    /* sift through level-2-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];
        }

        var span = head.getElementsByTagName('span');
        if(span.length != 1)
            continue;
        if(span[0].getAttribute("class") != "mw-headline")
            continue;

        /* skip certain cases, i.e. no link in h2/h3, article already deleted */
        var link = span[0].getElementsByTagName('a');
        if(link.length == 0)
            continue;
        if(link[0].getAttribute("class") == "new")
           continue;

        var page = link[0].getAttribute("title");

        /* insert no other buttons when decision already is "keep" */
        if(span[0].getElementsByTagName('a')[0].getAttribute("title").match(/\(bleibt\)/i)) {
           continue;
        }

        addLink(span[0], '[hist]', 'Springt zur Versionsgeschichte des Artikels', wgScript + '?title=' + page + "&action=history");
        addLink(span[0], '[keep]', 'Behalten', '', 'eimer_keep("' + page + '");');
        addLink(span[0], '[del]', 'Löscht sofort', '', 'eimer_delete("' + page + '");');
    }
}

function addLink (parent, caption, title, href, onclick) {
	var link = document.createElement('a');
	if (href != '') link.href = href;
	if (typeof onclick != 'undefined') {
		link.setAttribute('onclick', onclick); 
		link.style.cursor = 'pointer';
	}
	link.innerHTML = caption;
	link.title = title;
	link.style.fontSize = 'small';
	parent.insertBefore(document.createTextNode(' '), parent.firstChild);
	parent.insertBefore(link, parent.firstChild);
}

function setSelectionRange(input, selectionStart, length) {
	if (input.createTextRange) {
		var range = input.createTextRange();
		range.collapse(true);
		range.moveEnd('character', selectionStart + length);
		range.moveStart('character', selectionStart);
		range.select();
	}
	else if (input.setSelectionRange) {
		input.focus();
		input.setSelectionRange(selectionStart, selectionStart + length);
	}
	input.scrollTop = input.scrollHeight;
}

function eimer_delete (page) {
	var date = document.title.match(/Wikipedia:Löschkandidaten\/(\d{1,2}\. \w+ \d{4})/)[1];
	deleting('siehe [[Wikipedia:Löschkandidaten/' + date + '#' + page + ' (gelöscht)]]', 0, page);
	var textbox = document.getElementById('wpTextbox1');
	textbox.value = textbox.value.replace(/^(={1,3})\s*(.+?)\s*={1,3}\n([\w\W]+)$/m, "$1 $2 (gelöscht) $1$3\n'''Gelöscht:''' <!-- Begründung -->. ~~~~");
	setSelectionRange(textbox, textbox.value.length - 25, 19);
	document.getElementById('wpSummary').value += 'gelöscht';
}

function eimer_keep (page) {
	window.open(wgScript + '?title=' + page + '&action=edit', '_blank');
	var textbox = document.getElementById('wpTextbox1');
	textbox.value = textbox.value.replace(/^(={1,3})\s*(.+?)\s*={1,3}\n([\w\W]+)$/m, "$1 $2 (bleibt) $1$3\n'''Bleibt:''' <!-- Begründung -->. ~~~~");
	setSelectionRange(textbox, textbox.value.length - 25, 19);
	document.getElementById('wpSummary').value += 'bleibt';
}

var pfx  = "Wikipedia:Löschkandidaten/";
var len  = pfx.length;
if ((document.title.length >= len) && (document.title.match(/Wikipedia:Löschkandidaten\//)) && (wgAction == 'edit' || wgAction == 'submit') && UrlParameters['section'] > 0)
    addOnloadHook(loescheimer);
/** Ende des Loescheimers **/

// </nowiki>