MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Westmärker Wiki
Zur Navigation springen Zur Suche springen
Zeile 131: Zeile 131:
 
for (i=0; i<bild.length; i++) {
 
for (i=0; i<bild.length; i++) {
 
bildspan = bild[i].getElementsByTagName("span");
 
bildspan = bild[i].getElementsByTagName("span");
if (bildspan.length == 1) {
+
//if (bildspan.length == 1) {
 
bild[i].className = bild[i].className + " " + bildspan[0].className;
 
bild[i].className = bild[i].className + " " + bildspan[0].className;
  
Zeile 146: Zeile 146:
 
bildspan[0].appendChild(linkmitid1);
 
bildspan[0].appendChild(linkmitid1);
 
}
 
}
}
+
//}
  
 
// Um ein Bild A (z.B. zerstörte Synagoge) im iframe zu zeigen (nur im Bildtext möglich),
 
// Um ein Bild A (z.B. zerstörte Synagoge) im iframe zu zeigen (nur im Bildtext möglich),

Version vom 16. September 2020, 18:00 Uhr

/* ┌────────────────────────────────────────────────────────┐
   │ 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, &#x00AD; &#173;), 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 (&shy;) 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        ║
   ╚═════════════════════════════════════════════╝ */
}