MediaWiki:Common.js: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(158 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
/* ┌────────────────────────────────────────────────────────┐ | /* ┌────────────────────────────────────────────────────────┐ | ||
│ Das folgende JavaScript wird für alle Benutzer geladen.│ | │ Das folgende JavaScript wird für alle Benutzer geladen.│ | ||
+ | │ Zum Testen und für mich speziell gibt es noch │ | ||
+ | │ Benutzer:Ahnenfan/common.js │ | ||
├────────────────────────────────────────────────────────┤ | ├────────────────────────────────────────────────────────┤ | ||
│ Tabstop zum Kopieren: " " │ | │ Tabstop zum Kopieren: " " │ | ||
└────────────────────────────────────────────────────────┘ */ | └────────────────────────────────────────────────────────┘ */ | ||
− | + | KTBok = mw.config.get("wgCategories").join().indexOf("Tagebuchfragmente") >= 0; | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | KTBok | ||
− | |||
− | |||
− | |||
− | |||
if (KTBok) { | if (KTBok) { | ||
/* ╔═════════════════════════════════════════════╗ | /* ╔═════════════════════════════════════════════╗ | ||
Zeile 33: | Zeile 13: | ||
║ HAUPTBEREICH FÜR TAGEBUCH ║ | ║ HAUPTBEREICH FÜR TAGEBUCH ║ | ||
║ ║ | ║ ║ | ||
− | ╚═════════════════════════════════════════════╝ | + | ╚═════════════════════════════════════════════╝ */ |
− | <nowiki> | + | // <nowiki> |
− | Zum Aktivieren der Tagebuchstyles.css | + | // Zum Aktivieren der Tagebuchstyles.css auf jede Seite oben |
− | auf jede Seite oben | + | // |
+ | // {{KTB}} | ||
+ | // oder eine Vorlage, die dies enthält, wie {{Kalendernavigation}} oder {{Zusammenstellung}}, | ||
+ | // oder direkt [[Kategorie:Tagebuchfragmente]] | ||
+ | // | ||
+ | // eingeben. | ||
+ | // </nowiki> | ||
− | + | /* ┌─────────────────────────────────────────┬───────────────┐ | |
− | + | │ xxx favicon austauschen │ GEHT NICHT │ | |
− | + | └─────────────────────────────────────────┴───────────────┘ */ | |
− | |||
− | * | ||
− | |||
− | |||
− | │ favicon austauschen GEHT NICHT | ||
− | |||
// xxx shortcut icon/favicon ist im IE nicht dynamisch änderbar, | // xxx shortcut icon/favicon ist im IE nicht dynamisch änderbar, | ||
// vgl. https://github.com/HenrikJoreteg/favicon-setter! | // vgl. https://github.com/HenrikJoreteg/favicon-setter! | ||
Zeile 54: | Zeile 34: | ||
{ | { | ||
if (shortcuticon[i].href.indexOf("westlogo.ico") > 0) { | if (shortcuticon[i].href.indexOf("westlogo.ico") > 0) { | ||
− | shortcuticon[i].href = " | + | shortcuticon[i].href = "https://vexilli.net/1HP/Tagebuchfragmente/favicon.ico"; |
} | } | ||
} */ | } */ | ||
− | // 2. Methode: $wgFavicon = " | + | // 2. Methode: $wgFavicon = "https://vexilli.net/1HP/Tagebuchfragmente/favicon.ico"; |
// 3. Methode: document.body.innerHTML = document.body.innerHTML.replace(/w\/westlogo.ICO/g, "1HP/Tagebuchfragmente/favicon.ico"); | // 3. Methode: document.body.innerHTML = document.body.innerHTML.replace(/w\/westlogo.ICO/g, "1HP/Tagebuchfragmente/favicon.ico"); | ||
− | /* | + | /* ┌────────────────────────────────────────┬───────────────┐ |
− | │ xxx Wiki oder Seitentitel umbenennen GEHT SO NICHT | + | │ xxx Wiki oder Seitentitel umbenennen │ GEHT SO NICHT │ |
− | + | └────────────────────────────────────────┴───────────────┘ */ | |
− | // 1.) | + | // 1.) wgSitename = "Tagebuchfragmente"; |
// 2.) document.head.title.replace(/–/, "– Tagebuch-Fragmente aus dem zweiten Weltkrieg –"; | // 2.) document.head.title.replace(/–/, "– Tagebuch-Fragmente aus dem zweiten Weltkrieg –"; | ||
Zeile 69: | Zeile 49: | ||
│ Logo mit Link oben links austauschen │ | │ Logo mit Link oben links austauschen │ | ||
│ Bild wird in [[Tagebuchstyles.css]] gesetzt │ | │ Bild wird in [[Tagebuchstyles.css]] gesetzt │ | ||
+ | │ Titel der Site und Link │ | ||
+ | │ bildhafte Buttons zu wichtigen begleitenden Artikeln │ | ||
+ | │ und zu Kriegsgräberorganisationen │ | ||
└────────────────────────────────────────────────────────┘ */ | └────────────────────────────────────────────────────────┘ */ | ||
// KTBLINK zur früheren HTML-Homepage war: "https://vexilli.net/1HP/Tagebuchfragmente/index.html"; | // KTBLINK zur früheren HTML-Homepage war: "https://vexilli.net/1HP/Tagebuchfragmente/index.html"; | ||
KTB = "Tagebuch-Fragmente<br />aus dem<br />zweiten Weltkrieg"; | KTB = "Tagebuch-Fragmente<br />aus dem<br />zweiten Weltkrieg"; | ||
KTBLINK = "/w/" + KTB.split("<br />").join(" "); | KTBLINK = "/w/" + KTB.split("<br />").join(" "); | ||
− | document. | + | document.getElementsByClassName("mw-wiki-logo")[0].href = KTBLINK; |
− | document. | + | document.getElementsByClassName("mw-wiki-logo")[0].title = KTB.split("<br />").join("\n"); |
− | hpdiv = document.createElement("div"); | + | // keine Start-Zeile auf dieser Ebene |
− | hpdiv.className | + | hpdiv = document.createElement("div"); |
− | hpdiv. | + | hpdiv.className = "seitenleistenbutton"; // stets goldener Link in div a |
− | + | hpdiv.title = "Homepage\nInhaltsverzeichnis – Table of Contents"; | |
− | + | hpa = document.createElement("a"); | |
− | hpp. | + | hpa.href = KTBLINK; |
− | hpp.style. | + | hpp = document.createElement("p"); |
− | hpp | + | hpp.style.padding = "36px 0px"; |
− | + | hpp.innerHTML = KTB; | |
− | + | hpa.appendChild(hpp); | |
− | + | hpdiv.appendChild(hpa); | |
− | |||
− | hpdiv.appendChild( | ||
document.getElementById("mw-panel").appendChild(hpdiv); | document.getElementById("mw-panel").appendChild(hpdiv); | ||
+ | // keine Start-Zeile auf dieser Ebene | ||
+ | phdiv = document.createElement("div"); | ||
+ | phdiv.className = "seitenleistenbutton"; | ||
+ | phdiv.style.backgroundImage = "url(/w/images/logo/sidebar_Vormarsch_Ri._Lemberg.jpg)"; | ||
+ | phdiv.title = "Galerie: Fotos, Karten, Dokumente"; | ||
+ | pha = document.createElement("a"); | ||
+ | pha.href = "/w/Anhang/Tagebuch-Fotos"; | ||
+ | php = document.createElement("p"); | ||
+ | php.style.lineHeight = "120px"; | ||
+ | phspan = document.createElement("span"); | ||
+ | phtext = document.createTextNode("Fotos"); | ||
+ | phspan.appendChild(phtext); | ||
+ | php.appendChild(phspan); | ||
+ | pha.appendChild(php); | ||
+ | phdiv.appendChild(pha); | ||
+ | document.getElementById("mw-panel").appendChild(phdiv); | ||
+ | // keine Start-Zeile auf dieser Ebene | ||
+ | ktdiv = document.createElement("div"); | ||
+ | ktdiv.className = "seitenleistenbutton"; | ||
+ | ktdiv.style.backgroundImage = "url(/w/images/logo/sidebar_Karte.jpg)"; | ||
+ | ktdiv.title = "Übersichtskarte: Orte und Wege des Autors"; | ||
+ | kta = document.createElement("a"); | ||
+ | kta.href = "/w/Anhang/Orte/Übersichtskarte_(Orte_und_Wege)"; | ||
+ | ktp = document.createElement("p"); | ||
+ | ktp.style.lineHeight = "120px"; | ||
+ | ktspan = document.createElement("span"); | ||
+ | kttext = document.createTextNode("Karte"); | ||
+ | ktspan.appendChild(kttext); | ||
+ | ktp.appendChild(ktspan); | ||
+ | kta.appendChild(ktp); | ||
+ | ktdiv.appendChild(kta); | ||
+ | document.getElementById("mw-panel").appendChild(ktdiv); | ||
+ | // keine Start-Zeile auf dieser Ebene | ||
+ | abkdiv = document.createElement("div"); | ||
+ | abkdiv.className = "seitenleistenbutton"; | ||
+ | abkdiv.style.backgroundImage = "url(/w/images/logo/sidebar_Abk.jpg)"; | ||
+ | abkdiv.title = "Abkürzungen — Abbreviations"; | ||
+ | abka = document.createElement("a"); | ||
+ | abka.href = "/w/Anhang/Abkürzungen"; | ||
+ | abkp = document.createElement("p"); | ||
+ | abkp.style.lineHeight = "120px"; | ||
+ | abkspan = document.createElement("span"); | ||
+ | abktext = document.createTextNode("Abk. — Abbr."); | ||
+ | abkspan.appendChild(abktext); | ||
+ | abkp.appendChild(abkspan); | ||
+ | abka.appendChild(abkp); | ||
+ | abkdiv.appendChild(abka); | ||
+ | document.getElementById("mw-panel").appendChild(abkdiv); | ||
+ | // keine Start-Zeile auf dieser Ebene | ||
+ | /* hierdurch entsteht mangels Text ein leerer Fleck | ||
+ | vb1div = document.createElement("div"); | ||
+ | vb1div.className = "seitenleistenbutton"; | ||
+ | vb1div.style.backgroundImage = "url(/w/images/logo/sidebar_Volksbund.jpg)"; | ||
+ | vb1div.title = "Der Volksbund deutsche Kriegsgräberfürsorge\nerfasst, erhält und pflegt die Gräber\nder deutschen Kriegstoten im Ausland"; | ||
+ | vb1a = document.createElement("a"); | ||
+ | vb1a.href = "/w/Anhang/Abkürzungen"; | ||
+ | vb1p = document.createElement("p"); | ||
+ | vb1p.style.lineHeight = "120px"; | ||
+ | vb1span = document.createElement("span"); | ||
+ | vb1text = document.createTextNode(""); | ||
+ | vb1span.appendChild(vb1text); | ||
+ | vb1p.appendChild(vb1span); | ||
+ | vb1a.appendChild(vb1p); | ||
+ | vb1div.appendChild(vb1a); | ||
+ | document.getElementById("mw-panel").appendChild(vb1div); | ||
+ | */ | ||
+ | // keine Start-Zeile auf dieser Ebene | ||
+ | vbdiv = document.createElement("div"); | ||
+ | vbdiv.className = "seitenleistenbutton"; | ||
+ | vbdiv.title = "Der Volksbund deutsche Kriegsgräberfürsorge\nerfasst, erhält und pflegt die Gräber\nder deutschen Kriegstoten im Ausland"; | ||
+ | vba = document.createElement("a"); | ||
+ | vba.href = "https://www.volksbund.de/"; | ||
+ | vbimg = document.createElement("img"); | ||
+ | vbimg.src = "/w/images/logo/sidebar_Volksbund.jpg"; | ||
+ | vba.appendChild(vbimg); | ||
+ | vbdiv.appendChild(vba); | ||
+ | document.getElementById("mw-panel").appendChild(vbdiv); | ||
+ | // keine Start-Zeile auf dieser Ebene | ||
+ | ardiv = document.createElement("div"); | ||
+ | ardiv.className = "seitenleistenbutton"; | ||
+ | ardiv.title = "Der historische Verein Ar.kod.M unterstützt Familien\nin Russland und den Staaten der ehemaligen Sowjetunion\nbei der Suche nach Gräbern ihrer Angehörigen in Deutschland"; | ||
+ | ara = document.createElement("a"); | ||
+ | ara.href = "https://www.kriegsopferdaten.de/"; | ||
+ | arimg = document.createElement("img"); | ||
+ | arimg.src = "/w/images/logo/sidebar_Ar.kod_.M.jpg"; | ||
+ | ara.appendChild(arimg); | ||
+ | ardiv.appendChild(ara); | ||
+ | document.getElementById("mw-panel").appendChild(ardiv); | ||
+ | |||
+ | /* ┌────────────────────────────────────────────────────────┐ | ||
+ | │ Beschriftung des Suchfeldes │ | ||
+ | └────────────────────────────────────────────────────────┘ */ | ||
+ | document.getElementById("searchInput").placeholder = "Tagebuch durchsuchen"; | ||
+ | document.getElementById("searchInput").title = "Tagebuch durchsuchen [alt-shift-f]"; | ||
+ | |||
+ | /* ┌─────────────────────────────────────────────────────────────────────────┐ | ||
+ | │ Wichtig: Formulierung der Links im DOCX: │ | ||
+ | ├─────────────────────────────────────────────────────────────────────────┤ | ||
+ | │ 1. Der Hash muss statt mit # mit %23 codiert werden, damit die │ | ||
+ | │ Ansteuerung der Anker von der PDF im Netz aus funktioniert! │ | ||
+ | │ 2. Dann folgt eine ID, die mit der im Artikel übereinstimmen muss. │ | ||
+ | │ DER FOLGENDE REST HAT SICH LEIDER ERLEDIGT. │ | ||
+ | │ 2. Dann folgt der Bildname ohne Extension. │ | ||
+ | │ 3. Das ] hinter einem Datum muss (in den wenigen vorkommenden Fällen) │ | ||
+ | │ durch - ersetzt werden, weil das auch beim Import der Fotos ins Wiki │ | ||
+ | │ so passiert ist, es aber noch andere Bindestriche gibt,die nicht │ | ||
+ | │ ersetzt werden dürfen, was eine Automatik unheimlich schwer macht. │ | ||
+ | ├─────────────────────────────────────────────────────────────────────────┤ | ||
+ | │ Aus Bildnamen automatisch Anker machen wäre optimal, GEHT ABER NICHT │ | ||
+ | │ DA ERST DER ARTIKEL GELADEN WIRD UND SOLCHE ANKER, WENN ÜBERHAUPT, │ | ||
+ | │ ZU SPÄT ERSCHEINEN; ALSO ALLE VON HAND SETZEN, wie begonnen; │ | ||
+ | │ DANN SIND DIE IDs ABER AUCH BELIEBIG │ | ||
+ | └─────────────────────────────────────────────────────────────────────────┘ */ | ||
+ | |||
+ | /* ┌─────────────────────────────────────────────────────────────────────────┐ | ||
+ | │ Weil ein Sprung vom Dokument zu einem Bild im Fotoalbum │ | ||
+ | │ auf die Caption unter dem Bild führt und das Bild oben verschwindet, │ | ||
+ | │ muss die Seite um die Bildhöhe nach unten geschoben werden │ | ||
+ | └─────────────────────────────────────────────────────────────────────────┘ */ | ||
+ | if(document.title.indexOf("Foto") > 0) window.scrollBy(0, -340); | ||
+ | |||
+ | /* ┌────────────────────────────────────────────────────────┐ | ||
+ | │ Farben für die Galeriebilder │ | ||
+ | │ Zuweisung in Tagebuchstyles.css │ | ||
+ | └────────────────────────────────────────────────────────┘ */ | ||
+ | // Der von Hand eingegebene class-name des <span>-Elements am Anfang der Bildtexte (TgbT usw.) | ||
+ | // muss per Script dem class-name der umgebenden gallerybox hinzugefügt werden. | ||
+ | // Zgl. - nur für Ahnenfan sichtbar - eine zusätzliche Textzeile mit Link zum Galeriebild zum Kopieren | ||
+ | /* Farben-classes: | ||
+ | limegreen solid TgbT Tagebuch (auch wenn D, A oder S zusätzlich zutifft) | ||
+ | limegreen dashed TgbD Dokumente und Objekte | ||
+ | mediumturquoise solid TgbA Album des Autors | ||
+ | mediumturquoise dashed TgbS Sammlung des Autors | ||
+ | gold solid TgbZ Zusätzliche Erwerbungen des Herausgebers | ||
+ | gold dashed TgbK Kartenmontagen/-bearbeitungen des Herausgebers | ||
+ | salmon - zzt nicht in Gebrauch */ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
bild = document.getElementsByClassName("gallerybox"); | bild = document.getElementsByClassName("gallerybox"); | ||
− | |||
for (i=0; i<bild.length; i++) { | for (i=0; i<bild.length; i++) { | ||
− | + | bildspan = bild[i].getElementsByTagName("span"); | |
− | + | bild[i].className = bild[i].className + " " + bildspan[0].className; | |
− | + | ||
− | + | link0 = "https://vexilli.net/w/Anhang/Tagebuch-Fotos%23"; | |
− | + | hashtag0 = bild[i].getElementsByTagName("span")[0].id; | |
− | + | linkmitid0 = link0 + hashtag0; | |
− | + | if (hashtag0 == "") linkmitid0 = "noch ohne ID"; | |
− | + | linkmitid1 = document.createElement("p"); | |
− | + | linkmitid1.style.fontSize = "7pt"; | |
− | + | linkmitid1.style.className = "nurfuermich"; | |
− | + | linkmitid2 = document.createTextNode(linkmitid0); | |
− | + | linkmitid1.appendChild(linkmitid2); | |
− | + | bildspan[0].appendChild(linkmitid1); | |
− | |||
− | |||
− | |||
− | |||
− | // | + | /* ┌───────────────────────────────────────────────────┐ |
− | // | + | │ bei § statt Foto ein externes im iframe anzeigen │ |
− | // | + | └───────────────────────────────────────────────────┘ */ |
− | + | // Um ein Bild A (z.B. zerstörte Synagoge) im iframe zu zeigen (nur im Bildtext möglich), | |
− | + | // wird ein beliebiges Bild B (z.B. Große Synagoge) in die gallery gesetzt und zugunsten | |
− | + | // des Bildes A hierdurch ausgeblendet (class des Bildes B um BILDnichtZEIGEN ergänzen): | |
+ | bildnicht = bild[i].getElementsByClassName("BILDnichtZEIGEN"); | ||
+ | if (bildnicht.length == 1) { | ||
+ | bild[i].getElementsByClassName("thumb")[0].style.display = "none"; | ||
+ | } | ||
− | // | + | /* ┌───────────────────────────────────────────────────┐ |
− | // | + | │ niedriges bzw. sehr breites Foto mit langem Text │ |
− | / | + | └───────────────────────────────────────────────────┘ */ |
− | + | // Um ein niedriges bzw. sehr breites Bild mit besonders langem Text zu zeigen | |
− | + | // (seltsam, wie oft das vorkommt), wird seine Höhe statt des Standards verwendet | |
− | + | // (class des Bildes um BILDkleinZEIGEN ergänzen): | |
− | + | bildklein = bild[i].getElementsByClassName("BILDkleinZEIGEN"); | |
− | + | if (bildklein.length == 1) { | |
− | + | /* Fundort der echten Bildhöhe */ | |
+ | niedrig = bild[i].getElementsByTagName("img")[0].height; | ||
+ | /* neues, aber wirksames Attribut */ | ||
+ | bild[i].getElementsByClassName("thumb")[0].style.height = niedrig; | ||
+ | /* margin steuert sonst die mittige Position, Minimum = 15px: */ | ||
+ | bild[i].getElementsByClassName("thumb")[0].firstChild.style.margin = "30px auto"; | ||
+ | } | ||
+ | } | ||
− | bild = document.getElementsByClassName(" | + | /* ┌────────────────────────────────────────────────────────┐ |
+ | │ Farbige Rahmen f. d. Bilder i. d. Tag-für-Tag-Edition │ | ||
+ | │ genauso wie bei den Galeriebildern │ | ||
+ | │ Zuweisung in Tagebuchstyles.css │ | ||
+ | └────────────────────────────────────────────────────────┘ */ | ||
+ | bild = document.getElementsByClassName("thumbinner"); | ||
for (i=0; i<bild.length; i++) { | for (i=0; i<bild.length; i++) { | ||
− | bildspan = bild[i].getElementsByTagName("span") | + | bildspan = bild[i].getElementsByTagName("span"); |
− | + | bild[i].className = bild[i].className + " " + bildspan[0].className; | |
− | + | } | |
− | + | /* ┌────────────────────────────────────────────────────────┐ | |
− | if ( | + | │ Anzeige der Links in Anhang/Literatur ähnl. wie b.Fotos│ |
− | link0 = " | + | └────────────────────────────────────────────────────────┘ */ |
− | hashtag0 = | + | // nur für mich und nur bei Literatur: zusätzliche Textzeile mit Link zum Buch mittels ID zum Kopieren |
+ | if (document.location.pathname.indexOf("Literatur") > 0) { | ||
+ | buch = document.getElementsByClassName("verzeichnis")[0].getElementsByTagName("td"); | ||
+ | for (i=0; i<buch.length; i++) { | ||
+ | buchspan = buch[i].getElementsByTagName("span"); | ||
+ | if (buchspan.length > 0) { | ||
+ | link0 = "Anhang/Literatur#"; | ||
+ | hashtag0 = buch[i].getElementsByTagName("span")[0].id; | ||
linkmitid0 = link0 + hashtag0; | linkmitid0 = link0 + hashtag0; | ||
if (hashtag0 == "") linkmitid0 = "noch ohne ID"; | if (hashtag0 == "") linkmitid0 = "noch ohne ID"; | ||
linkmitid1 = document.createElement("p"); | linkmitid1 = document.createElement("p"); | ||
− | linkmitid1.style.fontSize = "7pt"; | + | linkmitid1.style.fontSize = "7pt"; |
+ | linkmitid1.style.className = "nurfuermich"; | ||
linkmitid2 = document.createTextNode(linkmitid0); | linkmitid2 = document.createTextNode(linkmitid0); | ||
linkmitid1.appendChild(linkmitid2); | linkmitid1.appendChild(linkmitid2); | ||
− | + | buch[i].appendChild(linkmitid1); | |
} | } | ||
} | } | ||
Zeile 168: | Zeile 291: | ||
if (document.location.href.indexOf("w/19") > 0 || document.location.href.indexOf("w/Editorial") > 0 || document.location.href.indexOf("w/Anhang") > 0) { | if (document.location.href.indexOf("w/19") > 0 || document.location.href.indexOf("w/Editorial") > 0 || document.location.href.indexOf("w/Anhang") > 0) { | ||
− | / | + | /* ┌───────────────────────────────────────────────────┐ |
− | / | + | │ Umbenennung des Seitentitels │ |
− | kalenderseitenname = document.location.href.split("/"); // 4=J,5=M,6=T | + | └───────────────────────────────────────────────────┘ */ |
+ | // Jahr/Monat/Tag wird Tag. Monat Jahr | ||
+ | // erfolgt in Vorlage:Kalendernavigation/Basis! | ||
+ | |||
+ | /* ┌───────────────────────────────────────────────────┐ | ||
+ | │ Jahr und Monat auch fett wenn nicht automatisch │ | ||
+ | └───────────────────────────────────────────────────┘ */ | ||
+ | kalenderseitenname = document.location.href.split("/"); // 4=J,5=M,6=T,7=en usw. | ||
document.getElementsByClassName(kalenderseitenname[4])[0].style.fontWeight = "bold"; | document.getElementsByClassName(kalenderseitenname[4])[0].style.fontWeight = "bold"; | ||
if (document.getElementsByClassName(kalenderseitenname[4])[1]) { | if (document.getElementsByClassName(kalenderseitenname[4])[1]) { | ||
+ | // ?? Welches Element ist eigentlich Jahr[1]/Monat[1]/Tag[1]? Warum nicht [0]? Und wer ist [0]? | ||
document.getElementsByClassName(kalenderseitenname[4])[1].style.fontWeight = "bold"; | document.getElementsByClassName(kalenderseitenname[4])[1].style.fontWeight = "bold"; | ||
} | } | ||
Zeile 179: | Zeile 310: | ||
if (document.getElementsByClassName(kalenderseitenname[5])[1]) { | if (document.getElementsByClassName(kalenderseitenname[5])[1]) { | ||
document.getElementsByClassName(kalenderseitenname[5])[1].style.fontWeight = "bold"; | document.getElementsByClassName(kalenderseitenname[5])[1].style.fontWeight = "bold"; | ||
+ | } | ||
+ | } | ||
+ | if (kalenderseitenname[7]) { // wenn eine fremdprachliche Version existiert | ||
+ | document.getElementsByClassName(kalenderseitenname[6])[0].style.fontWeight = "bold"; | ||
+ | if (document.getElementsByClassName(kalenderseitenname[6])[1]) { | ||
+ | document.getElementsByClassName(kalenderseitenname[6])[1].style.fontWeight = "bold"; | ||
} | } | ||
} | } | ||
− | / | + | /* ┌───────────────────────────────────────────────────┐ |
− | // per Vorlage zu suchen versuchen | + | │ "Nächstes Kalenderblatt" │ |
− | // (derzeit Eingabe in den Aufruf der Vorlage:Kalendernaechste nötig) | + | └───────────────────────────────────────────────────┘ */ |
+ | // per Vorlage zu suchen versuchen | ||
+ | // (derzeit Eingabe in den Aufruf der Vorlage:Kalendernaechste nötig) | ||
− | // | + | /* ┌───────────────────────────────────────────────────┐ |
− | + | │ Weichen Bindestrich aus den Rohtexten entfernen │ | |
− | // weil es | + | └───────────────────────────────────────────────────┘ */ |
− | // Formel gem. wiki.selfhtml.org/wiki/JavaScript/Objekte/RegExp | + | // (¬ U+00AD, ­ ­ vorsichtshalber auch das nicht-Zeichen ¬ 00AC) |
− | + | // weil es dummerweise von WORD mit übergeben wird | |
− | document.body.innerHTML = document.body.innerHTML.replace(/[ | + | // (und nicht ersetzen durch den weichen Bindestrich für Wikitext (­) wg. Suchmöglichkeit). |
+ | // Formel gem. wiki.selfhtml.org/wiki/JavaScript/Objekte/RegExp; 3 Zeichen zur Auswahl; | ||
+ | // ACHTUNG: AN ERSTER STELLE in der eckigen Klammer STEHT DAS ECHTE unsichtbare ZEICHEN! | ||
+ | // AN dritter STELLE STEHT ein zuvor nicht erkanntes ZEICHEN! | ||
+ | document.body.innerHTML = document.body.innerHTML.replace(/[¬¬¬]/g, "").replace(/\u00AD/g, "").replace(/\u00AC/g, ""); | ||
/* ┌────────────────────────────────────────────────────────┐ | /* ┌────────────────────────────────────────────────────────┐ | ||
│ Ende KTB-Kalender-Seiten │ | │ Ende KTB-Kalender-Seiten │ | ||
└────────────────────────────────────────────────────────┘ */ | └────────────────────────────────────────────────────────┘ */ | ||
+ | } | ||
+ | |||
+ | /* ┌────────────────────────────────────────────────────────┐ | ||
+ | │ Inhaltsverzeichn. 1. Spalte (PDF): ganze Zelle klickbar│ | ||
+ | └────────────────────────────────────────────────────────┘ */ | ||
+ | gruez = document.getElementsByClassName("grünezelle"); | ||
+ | for (i=0; i<gruez.length; i++) { | ||
+ | gruez[i].addEventListener('click', ganze_Zelle_klickbar); | ||
+ | gruez[i].title = gruez[i].firstChild.href.split("/").reverse()[0]; | ||
+ | } | ||
+ | function ganze_Zelle_klickbar() { | ||
+ | oeffnePDF = window.open(gruez[i].firstChild.href, "_self"); | ||
+ | } | ||
+ | |||
+ | /* ┌────────────────────────────────────────────────────────┐ | ||
+ | │ in [[Anhang/Abkürzungen]]: engl. Spalte 3 u. 4 kursiv │ | ||
+ | │ und in [[Translation Issues]] solange Seite existiert │ | ||
+ | └─ ─ ─ ──────────────────────────────────────────────────┘ */ | ||
+ | Abkue = document.getElementsByClassName("SpalteDreiUndVierKursiv"); | ||
+ | if (Abkue[0]) { | ||
+ | Abkue_tr = Abkue[0].getElementsByTagName("tr"); | ||
+ | for (i=0; i<Abkue_tr.length; i++) { | ||
+ | Abkue_td = Abkue_tr[i].getElementsByTagName("td"); | ||
+ | if(Abkue_td[2]) { Abkue_td[2].style.fontStyle = "italic"; } | ||
+ | if(Abkue_td[3]) { Abkue_td[3].style.fontStyle = "italic"; } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | /* ┌────────────────────────────────────────────────────────┐ | ||
+ | │ Einfärben der Jahre in Tagebuch-Chronik │ | ||
+ | └────────────────────────────────────────────────────────┘ */ | ||
+ | if (document.getElementById("anzahlzeilen")) { // identifiziert die Chronik-Seite | ||
+ | tabelle = document.getElementsByClassName("ktbchronik"); // davon gab es früher 2, inzwischen habe ich die Kalendernavigation rausgenommen. | ||
+ | for (t=0; t<tabelle.length; t++) { | ||
+ | taglink = tabelle[t].getElementsByTagName("a"); | ||
+ | for (i=0; i<taglink.length; i++) { | ||
+ | if (taglink[i].innerText.startsWith('1938') || taglink[i].innerText.startsWith('1942') || taglink[i].innerText.startsWith('1946')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(0deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // 0deg ist sekrecht schraffiert | ||
+ | if (taglink[i].innerText.startsWith('1939') || taglink[i].innerText.startsWith('1943') || taglink[i].innerText.startsWith('1947')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(45deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // schräg rechts aufwärts schraffiert | ||
+ | if (taglink[i].innerText.startsWith('1940') || taglink[i].innerText.startsWith('1944') || taglink[i].innerText.startsWith('1948')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(90deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // waagerecht schraffiert | ||
+ | if (taglink[i].innerText.startsWith('1941') || taglink[i].innerText.startsWith('1945') || taglink[i].innerText.startsWith('1949')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(135deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // schräg rechts abwärts schraffiert | ||
+ | } | ||
+ | } | ||
+ | // zweite Zeilen (Geooc2) nachträglich auch färben: | ||
+ | nachzeilen = document.getElementsByClassName("Geooc2"); | ||
+ | for (i=0; i<nachzeilen.length; i++) { | ||
+ | nachzeilen[i].style.backgroundImage = nachzeilen[i].parentNode.previousSibling.previousSibling.childNodes[1].style.backgroundImage; | ||
+ | // ... parentNode.previousSibling und ... firstChild undefined!! (Zeilenumbruch?!) | ||
+ | } | ||
} | } | ||
Zeile 203: | Zeile 394: | ||
} | } | ||
+ | /* ╔═════════════════════════════════════════════╗ | ||
+ | ║ HAUPTBEREICH FÜR FOOTER ║ | ||
+ | ╚═════════════════════════════════════════════╝ */ | ||
+ | /* ┌─────────────────────────────────────────────┐ | ||
+ | │ ZÄHLER-Startdatum April 2020 setzen │ | ||
+ | └─────────────────────────────────────────────┘ */ | ||
+ | // Aus unerfindlichen Gründen funktioniert dieses replace hier nicht: | ||
+ | // document.getElementById("footer-info-viewcount").innerText.replace("bisher", "seit April 2020"); | ||
+ | // Daher so: | ||
+ | zaehlerTXT = document.getElementById("footer-info-viewcount").innerText.split("bisher"); | ||
+ | zaehlerTXT1 = zaehlerTXT[1].split("mal"); | ||
+ | zaehlerTXTn = zaehlerTXT[0] + "seit April 2020 " + zaehlerTXT1[0].trim() + "-mal" + zaehlerTXT1[1]; | ||
+ | document.getElementById("footer-info-viewcount").innerText = zaehlerTXTn; | ||
+ | |||
+ | /* ┌─────────────────────────────────────────────┐ | ||
+ | │ Impressum so beschriften, Duplikat löschen │ | ||
+ | └─────────────────────────────────────────────┘ */ | ||
+ | ueberwestwiki = document.getElementById("footer-places-about"); | ||
+ | ueberwestwiki.parentNode.removeChild(ueberwestwiki); | ||
+ | |||
+ | impressum = document.createTextNode("Impressum"); | ||
+ | haftungsa = document.getElementById("footer-places-disclaimer"); | ||
+ | // 1 Kind: <a>, 1 Enkel: Beschriftung "Haftungsausschluss" | ||
+ | haftungsa.firstChild.replaceChild(impressum, haftungsa.firstChild.firstChild); | ||
+ | |||
+ | /* ╔═════════════════════════════════════════════╗ | ||
+ | ║ ENDE: HAUPTBEREICH FÜR FOOTER ║ | ||
+ | ╚═════════════════════════════════════════════╝ */ | ||
/* ╔═════════════════════════════════════════════╗ | /* ╔═════════════════════════════════════════════╗ | ||
║ TEASER für Tagebuch-Startseite, ║ | ║ TEASER für Tagebuch-Startseite, ║ | ||
║ aber auch sonst brauchbar ║ | ║ aber auch sonst brauchbar ║ | ||
╚═════════════════════════════════════════════╝ */ | ╚═════════════════════════════════════════════╝ */ | ||
− | // Hier wird das von Vorlage:Teaser vorbereitete Element befüllt | + | // Hier wird das von Vorlage:Teaser vorbereitete Element befüllt. |
+ | // "#teaser" ist dabei ein nicht vorhandenes Sprungziel, wodurch der Bildschirm stehenbleibt. | ||
+ | // (Mit "" lädt die Seite neu, mit "#" sprigt sie nach oben, mit einem echten in der Vorlage | ||
+ | // definierten Sprungziel springt dieses an den oberen Rand, aber nur beim obersten Teaser.) | ||
meineteaser = document.getElementsByClassName('teaserclick'); | meineteaser = document.getElementsByClassName('teaserclick'); | ||
for (i=0; i<meineteaser.length; i++) { | for (i=0; i<meineteaser.length; i++) { | ||
− | meineteaser[i].innerHTML = "<a style='display: inline' href='# | + | meineteaser[i].innerHTML = "<a style='display: inline' href='#teaser' onclick='javascript:toggleMehr(this)'> → <i>mehr lesen/read more</i> →</a><a style='display: none' href='#teaser' onclick='javascript:toggleWeniger(this)'> ← <i>weniger anzeigen/show less</i> ←</a>"; |
} | } | ||
+ | // alte Symbole ► und ◄ zu auffällig, neue Symbole → und ← besser | ||
− | // | + | // Folgende Funktionen blenden Teaser und Links ein/aus: |
− | // (Aufrufe vom vorderen (toggleMehr) und hinteren (toggleWeniger) Button müssen getrennt bleiben, | + | // (Aufrufe vom vorderen (toggleMehr) und hinteren (toggleWeniger) Button müssen |
− | + | // getrennt bleiben, da die function sonst fehlerhaft arbeitet, vielleicht | |
− | + | // wegen nicht vorhandenem Objekt nextSibling bzw. previousSibling.) | |
function toggleMehr(control) { | function toggleMehr(control) { | ||
− | |||
− | |||
toggle1(control.parentNode.previousSibling); // Teaser-Volltext an | toggle1(control.parentNode.previousSibling); // Teaser-Volltext an | ||
+ | toggle1(control); // "mehr lesen" aus | ||
+ | toggle1(control.nextSibling); // "weniger lesen" an | ||
} | } | ||
function toggleWeniger(control) { | function toggleWeniger(control) { | ||
− | |||
− | |||
toggle1(control.parentNode.previousSibling); // Teaser-Volltext aus | toggle1(control.parentNode.previousSibling); // Teaser-Volltext aus | ||
+ | toggle1(control.previousSibling); // "mehr lesen" aus | ||
+ | toggle1(control); // "weniger lesen" an | ||
} | } | ||
function toggle1(control1) { | function toggle1(control1) { | ||
Zeile 235: | Zeile 458: | ||
} | } | ||
+ | /* ╔═════════════════════════════════════════════╗ | ||
+ | ║ ENDE: TEASER ║ | ||
+ | ╚═════════════════════════════════════════════╝ */ | ||
/* ╔═════════════════════════════════════════════╗ | /* ╔═════════════════════════════════════════════╗ | ||
║ Toolbar Customization ║ | ║ Toolbar Customization ║ | ||
Zeile 248: | Zeile 474: | ||
label: 'Vorlage', | label: 'Vorlage', | ||
type: 'button', | type: 'button', | ||
− | icon: '// | + | icon: '/w/images/WikiEditorButtons/Wikieditor-Vorlage.png', |
action: { | action: { | ||
type: 'encapsulate', | type: 'encapsulate', | ||
Zeile 341: | Zeile 567: | ||
} | } | ||
} ); | } ); | ||
− | |||
/* ╔═════════════════════════════════════════════╗ | /* ╔═════════════════════════════════════════════╗ | ||
║ Ende: Toolbar Customization ║ | ║ Ende: Toolbar Customization ║ | ||
╚═════════════════════════════════════════════╝ */ | ╚═════════════════════════════════════════════╝ */ | ||
+ | } |
Aktuelle Version vom 6. September 2023, 17:04 Uhr
/* ┌────────────────────────────────────────────────────────┐
│ Das folgende JavaScript wird für alle Benutzer geladen.│
│ Zum Testen und für mich speziell gibt es noch │
│ Benutzer:Ahnenfan/common.js │
├────────────────────────────────────────────────────────┤
│ Tabstop zum Kopieren: " " │
└────────────────────────────────────────────────────────┘ */
KTBok = mw.config.get("wgCategories").join().indexOf("Tagebuchfragmente") >= 0;
if (KTBok) {
/* ╔═════════════════════════════════════════════╗
║ ║
║ HAUPTBEREICH FÜR TAGEBUCH ║
║ ║
╚═════════════════════════════════════════════╝ */
// <nowiki>
// Zum Aktivieren der Tagebuchstyles.css auf jede Seite oben
//
// {{KTB}}
// oder eine Vorlage, die dies enthält, wie {{Kalendernavigation}} oder {{Zusammenstellung}},
// oder direkt [[Kategorie:Tagebuchfragmente]]
//
// eingeben.
// </nowiki>
/* ┌─────────────────────────────────────────┬───────────────┐
│ xxx favicon austauschen │ GEHT NICHT │
└─────────────────────────────────────────┴───────────────┘ */
// xxx shortcut icon/favicon ist im IE nicht dynamisch änderbar,
// vgl. https://github.com/HenrikJoreteg/favicon-setter!
// Deshalb klappten alle diese Methoden nicht:
/* 1. Methode: shortcuticon = document.getElementsByTagName("link");
for (i=0; i<shortcuticon.length; i++)
{
if (shortcuticon[i].href.indexOf("westlogo.ico") > 0) {
shortcuticon[i].href = "https://vexilli.net/1HP/Tagebuchfragmente/favicon.ico";
}
} */
// 2. Methode: $wgFavicon = "https://vexilli.net/1HP/Tagebuchfragmente/favicon.ico";
// 3. Methode: document.body.innerHTML = document.body.innerHTML.replace(/w\/westlogo.ICO/g, "1HP/Tagebuchfragmente/favicon.ico");
/* ┌────────────────────────────────────────┬───────────────┐
│ xxx Wiki oder Seitentitel umbenennen │ GEHT SO NICHT │
└────────────────────────────────────────┴───────────────┘ */
// 1.) wgSitename = "Tagebuchfragmente";
// 2.) document.head.title.replace(/–/, "– Tagebuch-Fragmente aus dem zweiten Weltkrieg –";
/* ┌────────────────────────────────────────────────────────┐
│ Logo mit Link oben links austauschen │
│ Bild wird in [[Tagebuchstyles.css]] gesetzt │
│ Titel der Site und Link │
│ bildhafte Buttons zu wichtigen begleitenden Artikeln │
│ und zu Kriegsgräberorganisationen │
└────────────────────────────────────────────────────────┘ */
// KTBLINK zur früheren HTML-Homepage war: "https://vexilli.net/1HP/Tagebuchfragmente/index.html";
KTB = "Tagebuch-Fragmente<br />aus dem<br />zweiten Weltkrieg";
KTBLINK = "/w/" + KTB.split("<br />").join(" ");
document.getElementsByClassName("mw-wiki-logo")[0].href = KTBLINK;
document.getElementsByClassName("mw-wiki-logo")[0].title = KTB.split("<br />").join("\n");
// keine Start-Zeile auf dieser Ebene
hpdiv = document.createElement("div");
hpdiv.className = "seitenleistenbutton"; // stets goldener Link in div a
hpdiv.title = "Homepage\nInhaltsverzeichnis – Table of Contents";
hpa = document.createElement("a");
hpa.href = KTBLINK;
hpp = document.createElement("p");
hpp.style.padding = "36px 0px";
hpp.innerHTML = KTB;
hpa.appendChild(hpp);
hpdiv.appendChild(hpa);
document.getElementById("mw-panel").appendChild(hpdiv);
// keine Start-Zeile auf dieser Ebene
phdiv = document.createElement("div");
phdiv.className = "seitenleistenbutton";
phdiv.style.backgroundImage = "url(/w/images/logo/sidebar_Vormarsch_Ri._Lemberg.jpg)";
phdiv.title = "Galerie: Fotos, Karten, Dokumente";
pha = document.createElement("a");
pha.href = "/w/Anhang/Tagebuch-Fotos";
php = document.createElement("p");
php.style.lineHeight = "120px";
phspan = document.createElement("span");
phtext = document.createTextNode("Fotos");
phspan.appendChild(phtext);
php.appendChild(phspan);
pha.appendChild(php);
phdiv.appendChild(pha);
document.getElementById("mw-panel").appendChild(phdiv);
// keine Start-Zeile auf dieser Ebene
ktdiv = document.createElement("div");
ktdiv.className = "seitenleistenbutton";
ktdiv.style.backgroundImage = "url(/w/images/logo/sidebar_Karte.jpg)";
ktdiv.title = "Übersichtskarte: Orte und Wege des Autors";
kta = document.createElement("a");
kta.href = "/w/Anhang/Orte/Übersichtskarte_(Orte_und_Wege)";
ktp = document.createElement("p");
ktp.style.lineHeight = "120px";
ktspan = document.createElement("span");
kttext = document.createTextNode("Karte");
ktspan.appendChild(kttext);
ktp.appendChild(ktspan);
kta.appendChild(ktp);
ktdiv.appendChild(kta);
document.getElementById("mw-panel").appendChild(ktdiv);
// keine Start-Zeile auf dieser Ebene
abkdiv = document.createElement("div");
abkdiv.className = "seitenleistenbutton";
abkdiv.style.backgroundImage = "url(/w/images/logo/sidebar_Abk.jpg)";
abkdiv.title = "Abkürzungen — Abbreviations";
abka = document.createElement("a");
abka.href = "/w/Anhang/Abkürzungen";
abkp = document.createElement("p");
abkp.style.lineHeight = "120px";
abkspan = document.createElement("span");
abktext = document.createTextNode("Abk. — Abbr.");
abkspan.appendChild(abktext);
abkp.appendChild(abkspan);
abka.appendChild(abkp);
abkdiv.appendChild(abka);
document.getElementById("mw-panel").appendChild(abkdiv);
// keine Start-Zeile auf dieser Ebene
/* hierdurch entsteht mangels Text ein leerer Fleck
vb1div = document.createElement("div");
vb1div.className = "seitenleistenbutton";
vb1div.style.backgroundImage = "url(/w/images/logo/sidebar_Volksbund.jpg)";
vb1div.title = "Der Volksbund deutsche Kriegsgräberfürsorge\nerfasst, erhält und pflegt die Gräber\nder deutschen Kriegstoten im Ausland";
vb1a = document.createElement("a");
vb1a.href = "/w/Anhang/Abkürzungen";
vb1p = document.createElement("p");
vb1p.style.lineHeight = "120px";
vb1span = document.createElement("span");
vb1text = document.createTextNode("");
vb1span.appendChild(vb1text);
vb1p.appendChild(vb1span);
vb1a.appendChild(vb1p);
vb1div.appendChild(vb1a);
document.getElementById("mw-panel").appendChild(vb1div);
*/
// keine Start-Zeile auf dieser Ebene
vbdiv = document.createElement("div");
vbdiv.className = "seitenleistenbutton";
vbdiv.title = "Der Volksbund deutsche Kriegsgräberfürsorge\nerfasst, erhält und pflegt die Gräber\nder deutschen Kriegstoten im Ausland";
vba = document.createElement("a");
vba.href = "https://www.volksbund.de/";
vbimg = document.createElement("img");
vbimg.src = "/w/images/logo/sidebar_Volksbund.jpg";
vba.appendChild(vbimg);
vbdiv.appendChild(vba);
document.getElementById("mw-panel").appendChild(vbdiv);
// keine Start-Zeile auf dieser Ebene
ardiv = document.createElement("div");
ardiv.className = "seitenleistenbutton";
ardiv.title = "Der historische Verein Ar.kod.M unterstützt Familien\nin Russland und den Staaten der ehemaligen Sowjetunion\nbei der Suche nach Gräbern ihrer Angehörigen in Deutschland";
ara = document.createElement("a");
ara.href = "https://www.kriegsopferdaten.de/";
arimg = document.createElement("img");
arimg.src = "/w/images/logo/sidebar_Ar.kod_.M.jpg";
ara.appendChild(arimg);
ardiv.appendChild(ara);
document.getElementById("mw-panel").appendChild(ardiv);
/* ┌────────────────────────────────────────────────────────┐
│ Beschriftung des Suchfeldes │
└────────────────────────────────────────────────────────┘ */
document.getElementById("searchInput").placeholder = "Tagebuch durchsuchen";
document.getElementById("searchInput").title = "Tagebuch durchsuchen [alt-shift-f]";
/* ┌─────────────────────────────────────────────────────────────────────────┐
│ Wichtig: Formulierung der Links im DOCX: │
├─────────────────────────────────────────────────────────────────────────┤
│ 1. Der Hash muss statt mit # mit %23 codiert werden, damit die │
│ Ansteuerung der Anker von der PDF im Netz aus funktioniert! │
│ 2. Dann folgt eine ID, die mit der im Artikel übereinstimmen muss. │
│ DER FOLGENDE REST HAT SICH LEIDER ERLEDIGT. │
│ 2. Dann folgt der Bildname ohne Extension. │
│ 3. Das ] hinter einem Datum muss (in den wenigen vorkommenden Fällen) │
│ durch - ersetzt werden, weil das auch beim Import der Fotos ins Wiki │
│ so passiert ist, es aber noch andere Bindestriche gibt,die nicht │
│ ersetzt werden dürfen, was eine Automatik unheimlich schwer macht. │
├─────────────────────────────────────────────────────────────────────────┤
│ Aus Bildnamen automatisch Anker machen wäre optimal, GEHT ABER NICHT │
│ DA ERST DER ARTIKEL GELADEN WIRD UND SOLCHE ANKER, WENN ÜBERHAUPT, │
│ ZU SPÄT ERSCHEINEN; ALSO ALLE VON HAND SETZEN, wie begonnen; │
│ DANN SIND DIE IDs ABER AUCH BELIEBIG │
└─────────────────────────────────────────────────────────────────────────┘ */
/* ┌─────────────────────────────────────────────────────────────────────────┐
│ Weil ein Sprung vom Dokument zu einem Bild im Fotoalbum │
│ auf die Caption unter dem Bild führt und das Bild oben verschwindet, │
│ muss die Seite um die Bildhöhe nach unten geschoben werden │
└─────────────────────────────────────────────────────────────────────────┘ */
if(document.title.indexOf("Foto") > 0) window.scrollBy(0, -340);
/* ┌────────────────────────────────────────────────────────┐
│ Farben für die Galeriebilder │
│ Zuweisung in Tagebuchstyles.css │
└────────────────────────────────────────────────────────┘ */
// Der von Hand eingegebene class-name des <span>-Elements am Anfang der Bildtexte (TgbT usw.)
// muss per Script dem class-name der umgebenden gallerybox hinzugefügt werden.
// Zgl. - nur für Ahnenfan sichtbar - eine zusätzliche Textzeile mit Link zum Galeriebild zum Kopieren
/* Farben-classes:
limegreen solid TgbT Tagebuch (auch wenn D, A oder S zusätzlich zutifft)
limegreen dashed TgbD Dokumente und Objekte
mediumturquoise solid TgbA Album des Autors
mediumturquoise dashed TgbS Sammlung des Autors
gold solid TgbZ Zusätzliche Erwerbungen des Herausgebers
gold dashed TgbK Kartenmontagen/-bearbeitungen des Herausgebers
salmon - zzt nicht in Gebrauch */
bild = document.getElementsByClassName("gallerybox");
for (i=0; i<bild.length; i++) {
bildspan = bild[i].getElementsByTagName("span");
bild[i].className = bild[i].className + " " + bildspan[0].className;
link0 = "https://vexilli.net/w/Anhang/Tagebuch-Fotos%23";
hashtag0 = bild[i].getElementsByTagName("span")[0].id;
linkmitid0 = link0 + hashtag0;
if (hashtag0 == "") linkmitid0 = "noch ohne ID";
linkmitid1 = document.createElement("p");
linkmitid1.style.fontSize = "7pt";
linkmitid1.style.className = "nurfuermich";
linkmitid2 = document.createTextNode(linkmitid0);
linkmitid1.appendChild(linkmitid2);
bildspan[0].appendChild(linkmitid1);
/* ┌───────────────────────────────────────────────────┐
│ bei § statt Foto ein externes im iframe anzeigen │
└───────────────────────────────────────────────────┘ */
// Um ein Bild A (z.B. zerstörte Synagoge) im iframe zu zeigen (nur im Bildtext möglich),
// wird ein beliebiges Bild B (z.B. Große Synagoge) in die gallery gesetzt und zugunsten
// des Bildes A hierdurch ausgeblendet (class des Bildes B um BILDnichtZEIGEN ergänzen):
bildnicht = bild[i].getElementsByClassName("BILDnichtZEIGEN");
if (bildnicht.length == 1) {
bild[i].getElementsByClassName("thumb")[0].style.display = "none";
}
/* ┌───────────────────────────────────────────────────┐
│ niedriges bzw. sehr breites Foto mit langem Text │
└───────────────────────────────────────────────────┘ */
// Um ein niedriges bzw. sehr breites Bild mit besonders langem Text zu zeigen
// (seltsam, wie oft das vorkommt), wird seine Höhe statt des Standards verwendet
// (class des Bildes um BILDkleinZEIGEN ergänzen):
bildklein = bild[i].getElementsByClassName("BILDkleinZEIGEN");
if (bildklein.length == 1) {
/* Fundort der echten Bildhöhe */
niedrig = bild[i].getElementsByTagName("img")[0].height;
/* neues, aber wirksames Attribut */
bild[i].getElementsByClassName("thumb")[0].style.height = niedrig;
/* margin steuert sonst die mittige Position, Minimum = 15px: */
bild[i].getElementsByClassName("thumb")[0].firstChild.style.margin = "30px auto";
}
}
/* ┌────────────────────────────────────────────────────────┐
│ Farbige Rahmen f. d. Bilder i. d. Tag-für-Tag-Edition │
│ genauso wie bei den Galeriebildern │
│ Zuweisung in Tagebuchstyles.css │
└────────────────────────────────────────────────────────┘ */
bild = document.getElementsByClassName("thumbinner");
for (i=0; i<bild.length; i++) {
bildspan = bild[i].getElementsByTagName("span");
bild[i].className = bild[i].className + " " + bildspan[0].className;
}
/* ┌────────────────────────────────────────────────────────┐
│ Anzeige der Links in Anhang/Literatur ähnl. wie b.Fotos│
└────────────────────────────────────────────────────────┘ */
// nur für mich und nur bei Literatur: zusätzliche Textzeile mit Link zum Buch mittels ID zum Kopieren
if (document.location.pathname.indexOf("Literatur") > 0) {
buch = document.getElementsByClassName("verzeichnis")[0].getElementsByTagName("td");
for (i=0; i<buch.length; i++) {
buchspan = buch[i].getElementsByTagName("span");
if (buchspan.length > 0) {
link0 = "Anhang/Literatur#";
hashtag0 = buch[i].getElementsByTagName("span")[0].id;
linkmitid0 = link0 + hashtag0;
if (hashtag0 == "") linkmitid0 = "noch ohne ID";
linkmitid1 = document.createElement("p");
linkmitid1.style.fontSize = "7pt";
linkmitid1.style.className = "nurfuermich";
linkmitid2 = document.createTextNode(linkmitid0);
linkmitid1.appendChild(linkmitid2);
buch[i].appendChild(linkmitid1);
}
}
}
/* ┌────────────────────────────────────────────────────────┐
│ KTB-Kalender-Seiten │
└────────────────────────────────────────────────────────┘ */
if (document.location.href.indexOf("w/19") > 0 || document.location.href.indexOf("w/Editorial") > 0 || document.location.href.indexOf("w/Anhang") > 0) {
/* ┌───────────────────────────────────────────────────┐
│ Umbenennung des Seitentitels │
└───────────────────────────────────────────────────┘ */
// Jahr/Monat/Tag wird Tag. Monat Jahr
// erfolgt in Vorlage:Kalendernavigation/Basis!
/* ┌───────────────────────────────────────────────────┐
│ Jahr und Monat auch fett wenn nicht automatisch │
└───────────────────────────────────────────────────┘ */
kalenderseitenname = document.location.href.split("/"); // 4=J,5=M,6=T,7=en usw.
document.getElementsByClassName(kalenderseitenname[4])[0].style.fontWeight = "bold";
if (document.getElementsByClassName(kalenderseitenname[4])[1]) {
// ?? Welches Element ist eigentlich Jahr[1]/Monat[1]/Tag[1]? Warum nicht [0]? Und wer ist [0]?
document.getElementsByClassName(kalenderseitenname[4])[1].style.fontWeight = "bold";
}
if (kalenderseitenname[5]) {
document.getElementsByClassName(kalenderseitenname[5])[0].style.fontWeight = "bold";
if (document.getElementsByClassName(kalenderseitenname[5])[1]) {
document.getElementsByClassName(kalenderseitenname[5])[1].style.fontWeight = "bold";
}
}
if (kalenderseitenname[7]) { // wenn eine fremdprachliche Version existiert
document.getElementsByClassName(kalenderseitenname[6])[0].style.fontWeight = "bold";
if (document.getElementsByClassName(kalenderseitenname[6])[1]) {
document.getElementsByClassName(kalenderseitenname[6])[1].style.fontWeight = "bold";
}
}
/* ┌───────────────────────────────────────────────────┐
│ "Nächstes Kalenderblatt" │
└───────────────────────────────────────────────────┘ */
// per Vorlage zu suchen versuchen
// (derzeit Eingabe in den Aufruf der Vorlage:Kalendernaechste nötig)
/* ┌───────────────────────────────────────────────────┐
│ Weichen Bindestrich aus den Rohtexten entfernen │
└───────────────────────────────────────────────────┘ */
// (¬ U+00AD, ­ ­ vorsichtshalber auch das nicht-Zeichen ¬ 00AC)
// weil es dummerweise von WORD mit übergeben wird
// (und nicht ersetzen durch den weichen Bindestrich für Wikitext (­) wg. Suchmöglichkeit).
// Formel gem. wiki.selfhtml.org/wiki/JavaScript/Objekte/RegExp; 3 Zeichen zur Auswahl;
// ACHTUNG: AN ERSTER STELLE in der eckigen Klammer STEHT DAS ECHTE unsichtbare ZEICHEN!
// AN dritter STELLE STEHT ein zuvor nicht erkanntes ZEICHEN!
document.body.innerHTML = document.body.innerHTML.replace(/[¬¬¬]/g, "").replace(/\u00AD/g, "").replace(/\u00AC/g, "");
/* ┌────────────────────────────────────────────────────────┐
│ Ende KTB-Kalender-Seiten │
└────────────────────────────────────────────────────────┘ */
}
/* ┌────────────────────────────────────────────────────────┐
│ Inhaltsverzeichn. 1. Spalte (PDF): ganze Zelle klickbar│
└────────────────────────────────────────────────────────┘ */
gruez = document.getElementsByClassName("grünezelle");
for (i=0; i<gruez.length; i++) {
gruez[i].addEventListener('click', ganze_Zelle_klickbar);
gruez[i].title = gruez[i].firstChild.href.split("/").reverse()[0];
}
function ganze_Zelle_klickbar() {
oeffnePDF = window.open(gruez[i].firstChild.href, "_self");
}
/* ┌────────────────────────────────────────────────────────┐
│ in [[Anhang/Abkürzungen]]: engl. Spalte 3 u. 4 kursiv │
│ und in [[Translation Issues]] solange Seite existiert │
└─ ─ ─ ──────────────────────────────────────────────────┘ */
Abkue = document.getElementsByClassName("SpalteDreiUndVierKursiv");
if (Abkue[0]) {
Abkue_tr = Abkue[0].getElementsByTagName("tr");
for (i=0; i<Abkue_tr.length; i++) {
Abkue_td = Abkue_tr[i].getElementsByTagName("td");
if(Abkue_td[2]) { Abkue_td[2].style.fontStyle = "italic"; }
if(Abkue_td[3]) { Abkue_td[3].style.fontStyle = "italic"; }
}
}
/* ┌────────────────────────────────────────────────────────┐
│ Einfärben der Jahre in Tagebuch-Chronik │
└────────────────────────────────────────────────────────┘ */
if (document.getElementById("anzahlzeilen")) { // identifiziert die Chronik-Seite
tabelle = document.getElementsByClassName("ktbchronik"); // davon gab es früher 2, inzwischen habe ich die Kalendernavigation rausgenommen.
for (t=0; t<tabelle.length; t++) {
taglink = tabelle[t].getElementsByTagName("a");
for (i=0; i<taglink.length; i++) {
if (taglink[i].innerText.startsWith('1938') || taglink[i].innerText.startsWith('1942') || taglink[i].innerText.startsWith('1946')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(0deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // 0deg ist sekrecht schraffiert
if (taglink[i].innerText.startsWith('1939') || taglink[i].innerText.startsWith('1943') || taglink[i].innerText.startsWith('1947')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(45deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // schräg rechts aufwärts schraffiert
if (taglink[i].innerText.startsWith('1940') || taglink[i].innerText.startsWith('1944') || taglink[i].innerText.startsWith('1948')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(90deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // waagerecht schraffiert
if (taglink[i].innerText.startsWith('1941') || taglink[i].innerText.startsWith('1945') || taglink[i].innerText.startsWith('1949')) { taglink[i].parentNode.style.backgroundImage = "repeating-linear-gradient(135deg, white, white 4px, #eaf1dd 4px, #eaf1dd 5px" } // schräg rechts abwärts schraffiert
}
}
// zweite Zeilen (Geooc2) nachträglich auch färben:
nachzeilen = document.getElementsByClassName("Geooc2");
for (i=0; i<nachzeilen.length; i++) {
nachzeilen[i].style.backgroundImage = nachzeilen[i].parentNode.previousSibling.previousSibling.childNodes[1].style.backgroundImage;
// ... parentNode.previousSibling und ... firstChild undefined!! (Zeilenumbruch?!)
}
}
/* ╔═════════════════════════════════════════════╗
║ ENDE: HAUPTBEREICH FÜR TAGEBUCH ║
╚═════════════════════════════════════════════╝ */
}
/* ╔═════════════════════════════════════════════╗
║ HAUPTBEREICH FÜR FOOTER ║
╚═════════════════════════════════════════════╝ */
/* ┌─────────────────────────────────────────────┐
│ ZÄHLER-Startdatum April 2020 setzen │
└─────────────────────────────────────────────┘ */
// Aus unerfindlichen Gründen funktioniert dieses replace hier nicht:
// document.getElementById("footer-info-viewcount").innerText.replace("bisher", "seit April 2020");
// Daher so:
zaehlerTXT = document.getElementById("footer-info-viewcount").innerText.split("bisher");
zaehlerTXT1 = zaehlerTXT[1].split("mal");
zaehlerTXTn = zaehlerTXT[0] + "seit April 2020 " + zaehlerTXT1[0].trim() + "-mal" + zaehlerTXT1[1];
document.getElementById("footer-info-viewcount").innerText = zaehlerTXTn;
/* ┌─────────────────────────────────────────────┐
│ Impressum so beschriften, Duplikat löschen │
└─────────────────────────────────────────────┘ */
ueberwestwiki = document.getElementById("footer-places-about");
ueberwestwiki.parentNode.removeChild(ueberwestwiki);
impressum = document.createTextNode("Impressum");
haftungsa = document.getElementById("footer-places-disclaimer");
// 1 Kind: <a>, 1 Enkel: Beschriftung "Haftungsausschluss"
haftungsa.firstChild.replaceChild(impressum, haftungsa.firstChild.firstChild);
/* ╔═════════════════════════════════════════════╗
║ ENDE: HAUPTBEREICH FÜR FOOTER ║
╚═════════════════════════════════════════════╝ */
/* ╔═════════════════════════════════════════════╗
║ TEASER für Tagebuch-Startseite, ║
║ aber auch sonst brauchbar ║
╚═════════════════════════════════════════════╝ */
// Hier wird das von Vorlage:Teaser vorbereitete Element befüllt.
// "#teaser" ist dabei ein nicht vorhandenes Sprungziel, wodurch der Bildschirm stehenbleibt.
// (Mit "" lädt die Seite neu, mit "#" sprigt sie nach oben, mit einem echten in der Vorlage
// definierten Sprungziel springt dieses an den oberen Rand, aber nur beim obersten Teaser.)
meineteaser = document.getElementsByClassName('teaserclick');
for (i=0; i<meineteaser.length; i++) {
meineteaser[i].innerHTML = "<a style='display: inline' href='#teaser' onclick='javascript:toggleMehr(this)'> → <i>mehr lesen/read more</i> →</a><a style='display: none' href='#teaser' onclick='javascript:toggleWeniger(this)'> ← <i>weniger anzeigen/show less</i> ←</a>";
}
// alte Symbole ► und ◄ zu auffällig, neue Symbole → und ← besser
// Folgende Funktionen blenden Teaser und Links ein/aus:
// (Aufrufe vom vorderen (toggleMehr) und hinteren (toggleWeniger) Button müssen
// getrennt bleiben, da die function sonst fehlerhaft arbeitet, vielleicht
// wegen nicht vorhandenem Objekt nextSibling bzw. previousSibling.)
function toggleMehr(control) {
toggle1(control.parentNode.previousSibling); // Teaser-Volltext an
toggle1(control); // "mehr lesen" aus
toggle1(control.nextSibling); // "weniger lesen" an
}
function toggleWeniger(control) {
toggle1(control.parentNode.previousSibling); // Teaser-Volltext aus
toggle1(control.previousSibling); // "mehr lesen" aus
toggle1(control); // "weniger lesen" an
}
function toggle1(control1) {
if (control1.style.display == "none") {
control1.style.display = "inline";
} else {
control1.style.display = "none";
}
}
/* ╔═════════════════════════════════════════════╗
║ ENDE: TEASER ║
╚═════════════════════════════════════════════╝ */
/* ╔═════════════════════════════════════════════╗
║ Toolbar Customization ║
║ www.mediawiki.org/wiki/Extension:WikiEditor ║
╚═════════════════════════════════════════════╝ */
var customizeToolbar = function () {
/* Your code goes here */
$('#wpTextbox1').wikiEditor('addToToolbar', {
section: 'main',
group: 'insert',
tools: {
"vorlageklammern": {
label: 'Vorlage',
type: 'button',
icon: '/w/images/WikiEditorButtons/Wikieditor-Vorlage.png',
action: {
type: 'encapsulate',
options: {
pre: "{{xxx|",
post: "}}"
}
}
},
"WPLink": {
label: 'Link zur Wikipedia',
type: 'button',
icon: '/w/images/WikiEditorButtons/Wikieditor-template-WP.png',
action: {
type: 'encapsulate',
options: {
pre: "{{w|",
post: "}}"
}
}
},
"KategorieTag": {
label: '[[Kategorie:]]',
type: 'button',
icon: '/w/images/WikiEditorButtons/Wikieditor-Kategorie.png',
action: {
type: 'encapsulate',
options: {
pre: "[[Kategorie:",
post: "]]"
}
}
},
"KalendernavigationTag": {
label: '{{Kalendernavigation}}',
type: 'button',
icon: '/w/images/WikiEditorButtons/KalNav.png',
action: {
type: 'encapsulate',
options: {
pre: "{{Kalendernavigation}}"
}
}
},
"KalendernaechsteTag": {
label: '{{Kalendernaechste}}',
type: 'button',
icon: '/w/images/WikiEditorButtons/KalNext.png',
action: {
type: 'encapsulate',
options: {
pre: "{{Kalendernaechste|}}"
}
}
},
"refTag": {
label: '<ref></ref>',
type: 'button',
icon: '/w/images/WikiEditorButtons/Wikieditor-ref.png',
action: {
type: 'encapsulate',
options: {
pre: "<ref>",
post: "</ref>"
}
}
},
"referencesTag": {
label: '<references />',
type: 'button',
icon: '/w/images/WikiEditorButtons/Wikieditor-references.png',
action: {
type: 'encapsulate',
options: {
pre: "<references />"
}
}
}
}
});
/* My code goes up to here */
};
/* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar … */
if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
mw.loader.using( 'user.options' ).then( function () {
// This can be the string "0" if the user disabled the preference ([[phab:T54542#555387]])
if ( mw.user.options.get( 'usebetatoolbar' ) == 1 ) {
$.when(
mw.loader.using( 'ext.wikiEditor' ), $.ready
).then( customizeToolbar );
}
} );
/* ╔═════════════════════════════════════════════╗
║ Ende: Toolbar Customization ║
╚═════════════════════════════════════════════╝ */
}