MediaWiki:Common.js: Unterschied zwischen den Versionen

Aus Westmärker Wiki
Wechseln zu: Navigation, Suche
 
Zeile 207: Zeile 207:
 
   ║        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++) {
Zeile 214: Zeile 217:
  
 
// Diese Funktionen blenden Teaser und Links ein/aus:
 
// Diese 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
// da die function sonst fehlerhaft arbeitet, wahrscheinlich wegen nicht vorhandenem
+
// getrennt bleiben, da die function sonst fehlerhaft arbeitet, wahrscheinlich
// Objekt nextSibling bzw. previousSibling.)
+
// wegen nicht vorhandenem Objekt nextSibling bzw. previousSibling.)
 
function toggleMehr(control) {
 
function toggleMehr(control) {
 
toggle1(control); // mehr lesen aus
 
toggle1(control); // mehr lesen aus

Aktuelle Version vom 27. Februar 2020, 01:41 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:                    │
   └────────────────────────────────────────────────────────┘ */
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>
*/

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


/* ┌───────────────────────────────────────────────────────────────────────────────────────────────┐
   │ 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.  │
   └───────────────────────────────────────────────────────────────────────────────────────────────┘ */
/* xxx aus Bildnamen Anker machen GEHT NICHT, DA ERST DER ARTIKEL GELADEN WIRD UND DIESE ANKER, WENN ÜBERHAUPT, ZU SPÄT ERSCHEINEN, ALSO ALLE VON HAND SETZEN; DANN SIND DIE IDs ABER AUCH BELIEBIG
bild = document.getElementsByClassName("gallerybox");
alert(bild.length);
for (i=0; i<bild.length; i++) {
	bh = bild[i].firstChild.firstChild.firstChild.firstChild.href;
	bi = bh.substring(bh.lastIndexOf(":")+1, bh.lastIndexOf("."));
	// beim Import erfolgte Änderungen rückgängig machen:
	// NEIN, weil der URL durch Wiki immer von leer auf _ gesetzt wird: bi = bi.replace(/_/g, " "); 
	bi = bi.replace(/%C3%84/g, "Ä"); // Quelle: https://www.w3schools.com/tags/ref_urlencode.asp
	bi = bi.replace(/%C3%96/g, "Ö"); // nicht mehr geprüft, ob nötig
	bi = bi.replace(/%C3%9C/g, "Ü");  
	bi = bi.replace(/%C3%9F/g, "ß");  
	bi = bi.replace(/%C3%A4/g, "ä");  
	bi = bi.replace(/%C3%B6/g, "ö");  
	bi = bi.replace(/%C3%BC/g, "ü");  
	bc = bild[i].firstChild.lastChild.firstChild;
	anker = document.createElement("span");
	anker.id = bi;
	bc.appendChild(anker);
}
*/

// ───────────────────────────────────────────────
// 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);
// Leider empfängt Wiki keinen referrer von der PDF, daher geht diese genauere Formel nicht: 
//if(document.referrer.indexOf("tagebuch") > 0 && document.referrer.indexOf(".pdf") > 0 && document.title.indexOf("Foto") > 0) window.scrollBy(0, -340);

// ───────────────────────────────────────────────
// Farben für die Galeriebilder (??? VERSTEH' ICH SCHON NICHT MEHR ????)
/*   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
		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                               │
   └────────────────────────────────────────────────────────┘ */
}

/* ╔═════════════════════════════════════════════╗
   ║       ENDE: HAUPTBEREICH FÜR TAGEBUCH       ║
   ╚═════════════════════════════════════════════╝ */
}

/* ╔═════════════════════════════════════════════╗
   ║      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>";
}

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