MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Westmärker Wiki
Zur Navigation springen Zur Suche springen
(Änderung 18303 von Ahnenfan (Diskussion) rückgängig gemacht.)
Markierung: Rückgängigmachung
Zeile 211: Zeile 211:
 
bild[i].className = bild[i].className + " " + bildspan[0].className;
 
bild[i].className = bild[i].className + " " + bildspan[0].className;
  
link0 = "https://vexilli.net/w/Tagebuch-Fotos%23";
+
link0 = "https://vexilli.net/w/Anhang/Tagebuch-Fotos%23";
 
hashtag0 = bild[i].getElementsByTagName("span")[0].id;
 
hashtag0 = bild[i].getElementsByTagName("span")[0].id;
 
linkmitid0 = link0 + hashtag0;
 
linkmitid0 = link0 + hashtag0;

Version vom 25. Mai 2022, 12:32 Uhr

/* ┌────────────────────────────────────────────────────────┐
   │ Das folgende JavaScript wird für alle Benutzer geladen.│
   ├────────────────────────────────────────────────────────┤
   │  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 = "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            │
   │ 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, &#x00AD; &#173; vorsichtshalber auch das nicht-Zeichen ­¬ 00AC)
	// weil es dummerweise von WORD mit übergeben wird
	// (und nicht ersetzen durch den weichen Bindestrich für Wikitext (&shy;) 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  │
   └────────────────────────────────────────────────────────┘ */
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"; }
	}
}

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