Common.js

Aus Westmärker Wiki
Zur Navigation springen Zur Suche springen

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:                    │
   └────────────────────────────────────────────────────────┘ */
if (document.getElementById("p-personal").innerText.indexOf("Ahnenfan") < 0) { 
	var ichbins = false;
	document.getElementById("p-personal").style.visibility = "hidden"; 
	document.getElementById("p-views"   ).style.visibility = "hidden"; 
	document.getElementById("p-cactions").style.visibility = "hidden"; 
} else {
	var ichbins = true;
} 

KTBok             = false;
Artikelkategorien = mw.config.get( 'wgCategories' );
for (i=0; i<Artikelkategorien.length; i++) {
	if (Artikelkategorien[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,

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      = "Westmärker Wiki";
// 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 class-name des <span>-Elements am Anfang der Bildtexte (TgbT usw.)
//   muss 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);
		}
	}
}

/* ┌────────────────────────────────────────────────────────┐
   │ 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)

// Weiches Trennzeichen (¬ U+00AD, &#x00AD; &#173;),
// vorsichtshalber auch das nicht-Zeichen (­¬ 00AC) aus den Rohtexten entfernen,
// weil es blöderweise von WORD mit übergeben wird.
// 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);
}
function ganze_Zelle_klickbar() {
	oeffnePDF = window.open(gruez[i].firstChild.href, "_self");
	//gruez[i].title = gruez[i].firstChild.href.split("/").lastChild;
}

/* ╔═════════════════════════════════════════════╗
   ║       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        ║
   ╚═════════════════════════════════════════════╝ */
}