Zum Inhalt springen

Benutzer:Video2005/monobook.js

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 16. März 2007 um 00:12 Uhr durch Video2005 (Diskussion | Beiträge) (Neue Schaltfläche Autokorrektur für Entfernung Verlinkung von Jahreszahlen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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
// Modul: addEditAndRevertLinks.js
 var editlinkoldversion = true;    // Bearbeiten-Link für ältere Versionen anzeigen?
 var editlinktxt = "edit";         // Text des Edit-Links
 var revertwithreason = true;      // Revert-Link mit Grund-Eingabe anzeigen?
 var revlinktxt = "rev";           // Text des Revert-Links
 var revlinkshowuser = true;       // beim Revertieren über (Rev)-Link letzten Benutzer angeben?
 var rvisminor = true;             // sind Reverts mit "(rev)"-Link Minor-Changes?
 var aearldefault = "Grund: Unfug bzw. Vandalismus";      // Defaultgrund beim Revertieren
 var aerhistory = true;            // Links auch in der Versionsgeschichte?
 var aearlhere = true;             // Revertaktion im selben Browserfenster?

// Modul: markAdmins.js
 var markadmins = true;             // Admins besonders hervorheben?
 var mawatchlist = true;            // auch auf der Beobachtungsliste?
 var macontribs = true;             // auch auf den Benutzerbeiträgen?
 var markatxt = "A";                // Markierung für Admins
 var markrenatxt = "A-Ren";         // Markierung für umbenannte Admins
 var markbureautxt = "Bür";         // Markierung für Bürokraten
 var markstewtxt = "Ste";           // Markierung für Stewards
 var markexadmins = true;           // auch Ex-Admins besonders hervorheben?
 var markexatxt = "Ex-A";           // Markierung für Ex-Admins

// Modul: APPERs RP
 var rechtschreibpruefung = false;  // Rechtschreibprüfung aktivieren?
 var DontAutorunRP = true;          // true = RP durch Anklicken; false = automatische RP

// Modul: APPERs IP-Patrol Vandalenmarkierer
 var ippvandalmark = false;         // IP-Patrol-Vandalenmarkierung aktivieren?

// Autokorrektur tippo (Sortierung interwiki-Links; Korrektur Abkürzungen, Einheiten usw.)
 function createLinksSidebar2() {
        // Elemente der Box erstellen.
        var divPortlet_2 = document.createElement("div");
        var h5_2 = document.createElement("h5");
        var h5Text_2 = document.createTextNode("Autokorrektur");
        var divPbody_2 = document.createElement("div");
        var ul_2 = document.createElement("ul");
        // Mit Attributen ausrüsten.
        divPortlet_2.setAttribute("id", "p-link");
        divPortlet_2.setAttribute("class", "portlet");
        divPbody_2.setAttribute("class", "pBody");
        ul_2.setAttribute("id", "u-link")
        // Spalte suchen.
        var column_2 = document.getElementById("column-one");
        // Box einbauen.
        column_2.appendChild(divPortlet_2);
        divPortlet_2.appendChild(h5_2);
        h5_2.appendChild(h5Text_2);
        divPortlet_2.appendChild(divPbody_2);
        divPbody_2.appendChild(ul_2);
        // Aktivierunglink erstellen.
        var li_2 = document.createElement("li");  
        li_2.style.whiteSpace = "nowrap";
        ul_2.appendChild(li_2);
        var a_2 = document.createElement("a");
        a_2.setAttribute("href", "javascript:korr()");
        a_2.setAttribute("title", "Formatkorrektur & Sortierung Interwiki");
        li_2.appendChild(a_2);
        var aText_2 = document.createTextNode("Korrektur");
        a_2.appendChild(aText_2);
}

  function korr() {
	// Text bekommen
	var text = document.editform.wpTextbox1.value;
	var textalt = text;

	// Interwikis sortieren
	var regex = /\[\[(en|de|fr|pl|ja|nl|sv|it|pt|es|ru|zh|no|fi|eo|da|he|ro|sk|sr|hu|cs|ca|sl|bg|uk|ko|id|tr|et|lt|hr|nn|gl|io|ms|ar|fa|th|is|el|lb|bs|simple|wa|sq|vi|eu|ka|br|mk|af|la|ast|scn|nap|co|cy|tt|sh|lv|an|mr|ia|ga|az|ku|te|be|ta|nds|fy|tl|cv|oc|li|fo|als|jv|zh-min-nan|os|kn|sco|gd|yi|hi|war|ceb|kw|pam|ilo|su|ht|csb|bn|se|hy|ur|ang|sa|fur|ps|ml|pdc|mi|mt|mo|sw|ks|fiu-vro|mn|am|ie|tpi|nrm|lmo|lad|jbo|na|map-bms|gu|udm|zh-yue|uz|dv|ln|sc|nah|mg|vec|rm|ba):(.+?)\]\]\s*/g;

	var ar = text.match(regex);
	if(ar)
	{
		if(ar.join("#") != ar.sort().join("#"))
		{
			pos = text.search(regex);
			text = text.replace(regex, "");
			text = text.substr(0,pos) + ar.join("") + text.substr(pos);
		}
	}

// Autokorrektur von einigen Schreibfehlern

//Abkürzungen
        text = text.replace(/d\. ?h\./g,"d. h."); // ? null oder einmaliges Vorkommen
        text = text.replace(/D\. ?h\./g,"D. h."); // ? null oder einmaliges Vorkommen

        text = text.replace(/z\. ?B\./g,"z. B.");
        text = text.replace(/Z\. ?B\./g,"Z. B.");

        text = text.replace(/u\. ?a\./g,"u. a.");
        text = text.replace(/U\. ?a\./g,"U. a.");

        text = text.replace(/u\. ?U\./g,"u. U.");
        text = text.replace(/U\. ?U\./g,"U. U.");

        text = text.replace(/z\. ?Z\./g,"z. Z.");
        text = text.replace(/Z\. ?Z\./g,"Z. Z.");

        text = text.replace(/s\. ?o\./g,"s. o.");
        text = text.replace(/S\. ?o\./g,"S. o.");

        text = text.replace(/o\. ?g\./g,"o. g.");
        text = text.replace(/O\. ?g\./g,"O. g.");

        text = text.replace(/a\. ?D\./g,"a. D.");

        text = text.replace(/v\. ?a\./g,"v. a.");
        text = text.replace(/V\. ?a\./g,"V. a.");

        text = text.replace(/s\. ?u\./g,"s. u.");
        text = text.replace(/S\. ?u\./g,"S. u.");

        text = text.replace(/z\. ?T\./g,"z. T.");
        text = text.replace(/Z\. ?T\./g,"Z. T.");

        text = text.replace(/z\. ?Z\./g,"z. Z.");
        text = text.replace(/Z\. ?Z\./g,"Z. Z.");

        text = text.replace(/i\. ?S\./g,"i. S.");
        text = text.replace(/I\. ?S\./g,"I. S.");

        text = text.replace(/i\. ?d\. ?\R./g,"i. d. R.");
        text = text.replace(/I\. ?d\. ?\R./g,"I. d. R.");

        text = text.replace(/i\. ?V\. ?\m./g,"i. V. m.");
        text = text.replace(/I\. ?V\. ?\m./g,"I. V. m.");

//Einheiten
        text = text.replace(/(\d+) ?m\b/g,"$1 m");
        text = text.replace(/(\d+) ?mm\b/g,"$1 mm");
        text = text.replace(/(\d+) ?km\b/g,"$1 km");
        text = text.replace(/(\d+) ?cm\b/g,"$1 cm");

        text = text.replace(/(\d+) ?s\b/g,"$1 s");
        text = text.replace(/(\d+) ?ms\b/g,"$1 ms");
        text = text.replace(/(\d+) ?[sS][eE][cC]\.?/g,"$1 s");  //sec -> s bzw. sec. -> s
        text = text.replace(/(\d+) ?h\b/g,"$1 h");
        text = text.replace(/(\d+) ?°C\b/g,"$1 °C");
        text = text.replace(/(\d+) ?[pP][sS]\b/g,"$1 PS");

        text = text.replace(/(\d+) ?W\b/g,"$1 W");

        text = text.replace(/(\d+) ?[kK]W\b/g,"$1 kW");
        text = text.replace(/(\d+) ?[kK]W[Hh]\b/g,"$1 kWh");

        text = text.replace(/(\d+) ?MW\b/g,"$1 MW");
        text = text.replace(/(\d+) ?MW[hH]\b/g,"$1 MWh");

        text = text.replace(/(\d+) ?mW\b/g,"$1 mW");
        text = text.replace(/(\d+) ?mW[hH]\b/g,"$1 mWh");

        text = text.replace(/(\d+) ?g\b/g,"$1 g");
        text = text.replace(/(\d+) ?kg\b/g,"$1 kg");
        text = text.replace(/(\d+) ?mg\b/g,"$1 mg");

        text = text.replace(/(\d+) ?V\b/g,"$1 V");
        text = text.replace(/(\d+) ?mV\b/g,"$1 mV");
        text = text.replace(/(\d+) ?kV\b/g,"$1 kV");

        text = text.replace(/(\d+) ?Hz\b/g,"$1 Hz");
        text = text.replace(/(\d+) ?mH[zZ]\b/g,"$1 mHz");
        text = text.replace(/(\d+) ?MH[zZ]\b/g,"$1 MHz");

        text = text.replace(/(\d+) ?[kK]H[zZ]\b/g,"$1 kHz");

        text = text.replace(/(\d+) ?MH[zZ]\b/g,"$1 MHz");

        text = text.replace(/(\d+) ?[sS][vV]\b/g,"$1 Sv");

//Prozent

        text = text.replace(/(\d+) ?\%([^";])/g,"$1 %$2");

// Währung

        text = text.replace(/(\d+) ?€\b/g,"$1 €");

// stub-Vorlage entfernen, da diese in der de-WP nicht mehr verwendet wird
        text = text.replace(/\{\{stub\}\}/,"");

// Text schreiben
	if(text==textalt)
		alert("nichts geändert");
	else
	{
		document.editform.wpTextbox1.value = text;
		document.editform.wpSummary.value = document.editform.wpSummary.value ? document.editform.wpSummary.value + ", tippo Autokorrektur" : "tippo Autokorrektur";
		document.editform.wpDiff.click();
	}
}

// onload
        addOnloadHook(createLinksSidebar2);
//------------------------------------------------------------------------------------------
// Autokorrektur Verlinkte Jahreszahlen
 function createLinksSidebar2() {
        // Elemente der Box erstellen.
        var divPortlet_3 = document.createElement("div");
        var h5_3 = document.createElement("h5");
        var h5Text_3 = document.createTextNode("Verlinkte Daten");
        var divPbody_3 = document.createElement("div");
        var ul_3 = document.createElement("ul");
        // Mit Attributen ausrüsten.
        divPortlet_3.setAttribute("id", "p-link");
        divPortlet_3.setAttribute("class", "portlet");
        divPbody_3.setAttribute("class", "pBody");
        ul_3.setAttribute("id", "u-link")
        // Spalte suchen.
        var column_3 = document.getElementById("column-one");
        // Box einbauen.
        column_3.appendChild(divPortlet_3);
        divPortlet_3.appendChild(h5_3);
        h5_3.appendChild(h5Text_3);
        divPortlet_3.appendChild(divPbody_3);
        divPbody_3.appendChild(ul_3);
        // Aktivierunglink erstellen.
        var li_3 = document.createElement("li");  
        li_3.style.whiteSpace = "nowrap";
        ul_3.appendChild(li_3);
        var a_3 = document.createElement("a");
        a_3.setAttribute("href", "javascript:korr()");
        a_3.setAttribute("title", "Wikilink Daten (Jahreszahl, Tag, Monat) entfernen");
        li_3.appendChild(a_3);
        var aText_3 = document.createTextNode("Entferne Verlinkung");
        a_3.appendChild(aText_3);
}

// Text schreiben
	if(text==textalt)
		alert("nichts geändert");
	else
	{
		document.editform.wpTextbox1.value = text;
		document.editform.wpSummary.value = document.editform.wpSummary.value ? document.editform.wpSummary.value + ", -Verlinkung Datum (WP:VL) (Autokorrektur)" : "-Verlinkung Datum (WP:VL) (Autokorrektur)";
		document.editform.wpDiff.click();
	}
}

//Jahreszahlen

        text = text.replace(/[[(\dddd)]])/g,"$1");

// onload
        addOnloadHook(createLinksSidebar3);

//------------------------------------------------------------------------------------------------
/*
 * showRedundantLinks
 * In der Navigationsleiste am Rand wird eine sortierte Liste aller im Artikel
 * vorkommenden Links erstellt. Mehrfach vorkommende Links werden im Artikel
 * gekennzeichnet.
 * dbenzhuser (de:Benutzer:Dbenzhuser)
 */

// Zutun: Links an der Seite mit Sonderfunktionen belegen.
// Z.B. dauerhaft markieren, Sprung zu Link.

// Mergesort für Arrays
// Wegen kleiner Modifikationen (siehe Kommentare) nur zur Verwendung bei der
// Erstellung der Linkleiste.
var b;
Array.prototype.mergesort = function(lo, hi) {
        if (lo<hi) {
                var mid = ((hi+lo)-(hi+lo)%2) / 2;
                this.mergesort(lo, mid);
                this.mergesort(mid+1, hi);
                var i=0;
                var j=lo;
                while (j<=mid) {
                        b[i++]=this[j++];
                }
                var i=0;
                var k=lo;
                while (k<j && j<=hi) {
                        // Sortiert wird nach Title-Attribut der Links.
                        // '[0].getAttribute("title")' entfernen für normalen Mergesort.
                        if (b[i][0].getAttribute("title")<=this[j][0].getAttribute("title")) {
                                this[k++]=b[i++];
                        }
                        else {
                                this[k++]=this[j++];
                        }
                }
                while (k<j) {
                        this[k++]=b[i++];
                }
        }
}

// Fügt einem Attribut einen weiteren durch Leerzeichen abgetrennten Wert hinzu.
Node.prototype.addAttributeValue = function(key, value) {
        if (!this.getAttribute(key)) {
                this.setAttribute(key, value);
        }
        else {
                this.setAttribute(key, this.getAttribute(key)+ " " +value);
        }
}

// Löscht einen Wert aus einem Attribut.
Node.prototype.removeAttributeValue = function(key, value) {
        var newvalue = this.getAttribute(key);
        var reg = new RegExp("(^|\\s)"+value+"(\\s|$)");
        newvalue = newvalue.replace(reg, " ");
        newvalue = newvalue.replace(/^\s+/g, "");
        newvalue = newvalue.replace(/\s+$/g, "");
        this.setAttribute(key, newvalue);
}

// Markierungen werden bei allen Links der übergebenen Klasse ein bzw ausgeblendet.
function highlight(cname, on) {
        var objects = document.getElementsByTagName("a");
        cname = cname.replace("(", "\\(");
        cname = cname.replace(")", "\\)");
        var reg = new RegExp("(^|\\s)"+cname+"(\\s|$)"); 
        var length = objects.length
        for(var i = 0; i < length; i++) {
                if(objects[i].className.search(reg) != -1) {
                        if(on) {
                                objects[i].addAttributeValue("class", "highlight");
                        }
                        else {
                                objects[i].removeAttributeValue("class", "highlight");
                        }
                }
        }
}

// Nach dem Vorbild der bereits vorhandenen Listen wird eine neue Box in der
// Navigationsleiste installiert, die einen Link zum Aktivieren des
// Linksammlers enthält.
function createLinksSidebar() {
        // Elemente der Box erstellen.
        var divPortlet = document.createElement("div");
        var h5 = document.createElement("h5");
        var h5Text = document.createTextNode("Links im Artikel");
        var divPbody = document.createElement("div");
        var ul = document.createElement("ul");
        // Mit Attributen ausrüsten.
        divPortlet.setAttribute("id", "p-link");
        divPortlet.setAttribute("class", "portlet");
        divPbody.setAttribute("class", "pBody");
        ul.setAttribute("id", "u-link")
        // Spalte suchen.
        var column = document.getElementById("column-one");
        // Box einbauen.
        column.appendChild(divPortlet);
        divPortlet.appendChild(h5);
        h5.appendChild(h5Text);
        divPortlet.appendChild(divPbody);
        divPbody.appendChild(ul);
        // Aktivierunglink erstellen.
        var li = document.createElement("li");  
        li.style.whiteSpace = "nowrap";
        ul.appendChild(li);
        var a = document.createElement("a");
        a.setAttribute("href", "javascript:showRedundantLinks()");
        a.setAttribute("title", "Links im Artikel anzeigen!");
        li.appendChild(a);
        var aText = document.createTextNode("Aktivieren");
        a.appendChild(aText);
}

// Alle Wikilinks innerhalb des Artikels werden gesammelt.
// Anschließend werden sie in der Liste angezeigt und mehrfache Links im
// Artikeltext markiert.
function showRedundantLinks() {
        // "Aktivieren"-Link (inkl Listenelement) entfernen.
        var ul = document.getElementById("u-link");
        ul.removeChild(ul.firstChild);
        // Alle Links im Artikeltext sammeln.
        var links = document.getElementById("bodyContent").getElementsByTagName("a");
        // Regexps zur Bestimmung der relevanten Links.
        var regexpExist = /^\/wiki\/(.+)$/;
        var regexpNotExist = /^\/w\/index\.php\?title=(.+)\&action=edit$/;
        var regexpExclude = /^\/w(iki)?\/(index\.php\?title=)?(Bild|Benutzer|Benutzer_Diskussion)\:(.+)$/;
        // Nur relevante Links in neues Array speichern.
        // Dabei werden jeweils eine Referenz auf den Link im Artikel und ein Klon
        // für die Linkleiste gespeichert.
        var linkCount1 = links.length;
        var linkNodes = new Array();
        for (var i=0; i < linkCount1; ++i) {
                if (links[i].getAttribute("title") && !regexpExclude.test(links[i].getAttribute("href")) && (regexpExist.test(links[i].getAttribute("href")) || regexpNotExist.test(links[i].getAttribute("href")))) {
                        linkNodes.push(new Array(links[i].cloneNode(true), links[i]));
                }
        }
        // Bei Links für Linkleiste den Linktext mit Title-Attribut überschreiben.
        var linkCount2 = linkNodes.length;
        for (var i=0; i < linkCount2; ++i) {
                var linkTitle = linkNodes[i][0].getAttribute("title");
                var linkText = document.createTextNode(linkTitle);
                linkNodes[i][0].replaceChild(linkText, linkNodes[i][0].firstChild);
                // Attribute und Funktionsaufrufe für Highlighting.
                // Leerzeichen werden durch Unterstriche ersetzt.
                var linkTitleClass = linkTitle;
                linkTitleClass = linkTitleClass.replace(/\s/g, "_");
                linkNodes[i][0].addAttributeValue("class", linkTitleClass);
                linkNodes[i][0].setAttribute("onmouseover", "highlight(\""+linkTitleClass+"\", true)");
                linkNodes[i][0].setAttribute("onmouseout", "highlight(\""+linkTitleClass+"\", false)");
                linkNodes[i][1].addAttributeValue("class", linkTitleClass);
                linkNodes[i][1].setAttribute("onmouseover", "highlight(\""+linkTitleClass+"\", true)");
                linkNodes[i][1].setAttribute("onmouseout", "highlight(\""+linkTitleClass+"\", false)");
        }
        // Hilfsarray vorbereiten und Sortierungsfunktion aufrufen.
        b = new Array(((linkNodes.length)-(linkNodes.length%2))/2);
        linkNodes.mergesort(0, linkNodes.length-1);
        // Links im Artikeltext mit Zähler ausstatten.
        for (var i=1; i < linkCount2; ++i) {
                var equal = true;
                var j = 1;
                while (equal == true) {
                        if(i >= j && (linkNodes[i][0].firstChild.nodeValue == linkNodes[i-j][0].firstChild.nodeValue)) {
                                j++;
                        }
                        else {
                                equal = false;
                                // Nur bei mehrfachvorkommenden Links Zähler einfügen.
                                if (j != 1) {
                                        var span = document.createElement("span");
                                        linkNodes[i][1].appendChild(span);
                                        var spanText = document.createTextNode(" (" + j + ")");
                                        span.appendChild(spanText);
                                        span.setAttribute("class", "redundantLinkMark"); // Klasse für (n).
                                }
                        }
                }
        }
        // Links in Linkleiste schreiben (jeweils mit Listenelement).
        for (var i=0; i < linkCount2; ++i) {
                var li = document.createElement("li");
                ul.appendChild(li);
                li.style.whiteSpace = "nowrap";
                li.appendChild(linkNodes[i][0]);
        }
}
// onload
addOnloadHook(createLinksSidebar);

/*
 * Ende showRedundantLinks
 */
//------------------------------------------------------------------------------------------------

// [[Benutzer:Dschwen/coordinates.js]] - diese Zeile bitte beibehalten
document.write('<script type="text/javascript" src="' 
     + 'http://de.wikipedia.org/w/index.php?title=Benutzer:Dschwen/coordinates.js' 
     + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');