Common.js
Version vom 16. September 2020, 18:00 Uhr von Ahnenfan (Diskussion | Beiträge)
Hinweis: Leeren Sie nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Gehen Sie zu Menü → Einstellungen (Opera → Einstellungen auf dem Mac) und dann auf Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
/* ┌────────────────────────────────────────────────────────┐
│ Das folgende JavaScript wird für alle Benutzer geladen.│
├────────────────────────────────────────────────────────┤
│ Tabstop zum Kopieren: " " │
└────────────────────────────────────────────────────────┘ */
/* ┌────────────────────────────────────────────────────────┐
│ Für normale Nutzer Verwirrendes ausblenden: │
├────────────────────────────────────────────────────────┤
│ a) mangels Diskussion für alle ausblenden: │
└────────────────────────────────────────────────────────┘ */
document.getElementById("left-navigation").style.visibility = "hidden";
/* ┌────────────────────────────────────────────────────────┐
│ b) ausblenden, aber nicht für mich: │
└────────────────────────────────────────────────────────┘ */
ichbins = (wgUserName == "Ahnenfan");
if (!ichbins) {
document.getElementById("p-personal").style.visibility = "hidden";
document.getElementById("p-views" ).style.visibility = "hidden";
document.getElementById("p-cactions").style.visibility = "hidden";
}
KTBok = false;
for (i=0; i<wgCategories.length; i++) {
if (wgCategories[i] == "Tagebuchfragmente") KTBok = true;
}
if (KTBok) {
/* ╔═════════════════════════════════════════════╗
║ ║
║ HAUPTBEREICH FÜR TAGEBUCH ║
║ ║
╚═════════════════════════════════════════════╝ */
// <nowiki>
// Zum Aktivieren der Tagebuchstyles.css und automatischen Eintrag der Kategorie auf jede Seite oben
//
// {{KTB}} oder eine Vorlage, die dies enthält, wie {{Kalendernavigation}} oder {{Zusammenstellung}},
//
// 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 = "http://vexilli.net/1HP/Tagebuchfragmente/favicon.ico";
}
} */
// 2. Methode: $wgFavicon = "http://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 │
└────────────────────────────────────────────────────────┘ */
// 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.getElementById("p-logo").firstChild.href = KTBLINK;
document.getElementById("p-logo").firstChild.title = KTB.split("<br />").join("\n");
hpdiv = document.createElement("div");
hpdiv.className = "zurueck_zur_homepage";
hpdiv.style.width = "160px";
hpp = document.createElement("p");
hpp.style.fontSize = "12pt";
hpp.style.fontWeight = "bold";
hpp.style.fontFamily = "serif";
hpp.style.textAlign = "center";
hpa = document.createElement("a");
hpa.href = KTBLINK;
hpa.innerHTML = KTB;
hpp.appendChild(hpa);
hpdiv.appendChild(hpp);
document.getElementById("mw-panel").appendChild(hpdiv);
/* ┌────────────────────────────────────────────────────────┐
│ 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 Binde- │
│ striche 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 │
└────────────────────────────────────────────────────────┘ */
// 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:
// TgbT grün solid Tagebuch
// TgbD grün dotted Dokumenten und Objekten
// TgbA blau solid Album des Autors
// TgbS blau dotted Sammlung des Autors
// TgbZ gelb solid zusätzliche Erwerbungen des Herausgebers
// TgbK gelb dotted Kartenmontagen/-bearbeitungen des Herausgebers
bild = document.getElementsByClassName("gallerybox");
for (i=0; i<bild.length; i++) {
bildspan = bild[i].getElementsByTagName("span");
//if (bildspan.length == 1) {
bild[i].className = bild[i].className + " " + bildspan[0].className;
// nur für mich: zusätzliche Textzeile mit Link zum Galeriebild mittels ID zum Kopieren
if (ichbins) {
link0 = "https://vexilli.net/w/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";
linkmitid2 = document.createTextNode(linkmitid0);
linkmitid1.appendChild(linkmitid2);
bildspan[0].appendChild(linkmitid1);
}
//}
// 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.visibility = "hidden";
bild[i].getElementsByClassName("thumb")[0].style.display = "none";
}
}
/* ┌────────────────────────────────────────────────────────┐
│ 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 (ichbins && (document.location.pathname.indexOf("Literatur") > 0)) {
bild = document.getElementsByTagName("td");
for (i=0; i<bild.length; i++) {
bildspan = bild[i].getElementsByTagName("span");
if (bildspan.length == 1) {
link0 = "Anhang/Literatur#";
hashtag0 = bild[i].getElementsByTagName("span")[0].id;
linkmitid0 = link0 + hashtag0;
if (hashtag0 == "") linkmitid0 = "noch ohne ID";
linkmitid1 = document.createElement("p");
linkmitid1.style.fontSize = "7pt";
linkmitid2 = document.createTextNode(linkmitid0);
linkmitid1.appendChild(linkmitid2);
bild[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 in Tag. Monat Jahr erfolgt in Vorlage:Kalendernavigation!
// Jahr und Monat auch fett wenn nicht automatisch
kalenderseitenname = document.location.href.split("/"); // 4=J,5=M,6=T
document.getElementsByClassName(kalenderseitenname[4])[0].style.fontWeight = "bold";
if (document.getElementsByClassName(kalenderseitenname[4])[1]) {
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";
}
}
// "Nächstes Kalenderblatt"
// per Vorlage zu suchen versuchen
// (derzeit Eingabe in den Aufruf der Vorlage:Kalendernaechste nötig)
// Weichen Bindestrich (¬ U+00AD, ­ ­), vorsichtshalber auch das nicht-Zeichen (¬ 00AC)
// aus den Rohtexten entfernen, weil es dummerweise von WORD mit übergeben wird.
// (Ersetzung durch den weichen Bindestrich für Wikitext (­) wg. Suchmöglichkeit nicht sinnvoll.)
// Formel gem. wiki.selfhtml.org/wiki/JavaScript/Objekte/RegExp; 3 Zeichen zur Auswahl;
// ACHTUNG: AN ERSTER STELLE STEHT DAS ECHTE unsichtbare 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");
}
/* ╔═════════════════════════════════════════════╗
║ ENDE: HAUPTBEREICH FÜR TAGEBUCH ║
╚═════════════════════════════════════════════╝ */
}
/* ╔═════════════════════════════════════════════╗
║ 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;
/* ╔═════════════════════════════════════════════╗
║ 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
// Diese 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, wahrscheinlich
// wegen nicht vorhandenem Objekt nextSibling bzw. previousSibling.)
function toggleMehr(control) {
toggle1(control); // mehr lesen aus
toggle1(control.nextSibling); // weniger lesen an
toggle1(control.parentNode.previousSibling); // Teaser-Volltext an
}
function toggleWeniger(control) {
toggle1(control); // mehr lesen an
toggle1(control.previousSibling); // weniger lesen aus
toggle1(control.parentNode.previousSibling); // Teaser-Volltext aus
}
function toggle1(control1) {
if (control1.style.display == "none") {
control1.style.display = "inline";
} else {
control1.style.display = "none";
}
}
/* ╔═════════════════════════════════════════════╗
║ 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: '//upload.wikimedia.org/wikipedia/commons/8/86/Wikieditor-template.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 ║
╚═════════════════════════════════════════════╝ */
}