Benutzer:Video2005/monobook.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
// 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>');