Benutzer:Jones/JavaScript

Aus PokéWiki
Zur Navigation springen Zur Suche springen
Eingeschränkt aktiv Aktuell leider aus beruflichen Gründen nur eingeschränkt aktiv. Bei Rückfragen bitte auf der Diskussionsseite oder in Discord melden.

Im PokéWiki existieren eine ganze Menge kleiner, aber hilfreicher Scripte. Bisher waren diese leider vielfach in verschiedensten Versionen über mehrere Benutzerscripte verteilt. Dies stellt einen Versuch dar, das ganze zu zentrieren, um das ganze für jedermann verfügbar zu machen und Fehler nur einmalig beheben zu müssen. Die Einbindung erfolgt in drei recht simplen Schritten:

Laden der Scripte

Die Scripte werden zentral von Benutzer:Jones/scripts.js geladen. Damit diese zur Verfügung stehen, muss die entsprechende Datei geladen werden. Dies geschieht mittels des folgenden Codes in deiner common.js:

$(function() {
	$.ajaxSetup({ cache: true }); // Cache wieder aktivieren für getScript
	$.getScript("//pokewiki.de/index.php?title=Benutzer:Jones/scripts.js&action=raw&ctype=text/javascript&maxage=604800&*", function(data, textStatus, jqxhr) {
		scripts = new WikiScripts();
		scripts.init();
	});
});

Hierbei wird zunächst das Script nachgeladen und anschließend eine Instanz der Scripte erstellt, welche anschließend gestartet wird. Hierbei werden die Standardmodule geladen und ausgeführt.

Auswahl der Module

Anstelle der Standardmodule können auch andere Module aktiviert oder aber auch deaktiviert werden. Eine Liste aller verfügbaren Module findet sich hier, weshalb hier beispielhaft die Auswahl für die Module reloadRC und hideUser gezeigt wird. Die Auswahl kann über verschiedene Wege erreicht werden:

$(function() {
	$.ajaxSetup({ cache: true }); // Cache wieder aktivieren für getScript
	$.getScript("//pokewiki.de/index.php?title=Benutzer:Jones/scripts.js&action=raw&ctype=text/javascript&maxage=604800&*", function(data, textStatus, jqxhr) {
		scripts = new WikiScripts({
			"reloadRC": true, // Aktivieren
			"hideUser": false // Deaktivieren
		});
		scripts.enableModule("hideUser"); // Wieder aktivieren
		scripts.disableModule("reloadRC"); // Wieder deaktivieren
		scripts.disableAllModules(); // Alle Module deaktivieren
		scripts.enableAllModules(); // Alle Module aktivieren
		scripts.init();
	});
});

Im ersten Fall werden die Moduleinstellungen direkt bei der Erstellung der Scripte übergeben. Hierbei werden nur die übergebenen Module aktiviert oder deaktiviert, alle weiteren Module behalten ihre Standardeinstellung. Ähnlich arbeiten die Varianten mittels enableModule und disableModule, mittels derer einzelne Module geschaltet werden. Die letzten beiden Beispiele hingegen schalten alle verfügbaren Module um. Die Methoden können beliebig kombiniert werden, beispielsweise führt der folgende Code dazu, dass einzig das Modul reloadRC geladen wird:

$(function() {
	$.ajaxSetup({ cache: true }); // Cache wieder aktivieren für getScript
	$.getScript("//pokewiki.de/index.php?title=Benutzer:Jones/scripts.js&action=raw&ctype=text/javascript&maxage=604800&*", function(data, textStatus, jqxhr) {
		scripts = new WikiScripts();
		scripts.disableAllModules();
		scripts.enableModule("reloadRC");
		scripts.init();
	});
});

Wichtig dabei ist einzig, dass die Zuweisungszeile (scripts = new WikiScripts();) als erstes steht (mit eventueller Modulauswahl) und der Aufruf von init (scripts.init();) als letzter steht.

Beeinflussen des Modulverhaltens

Einige Module können auch mittels Optionen beeinflusst werden, beispielsweise kann bei reloadRC augewählt werden, wie häufig die Letzten Änderungen aktualisiert werden sollen und ob die Aktualisierung auch durchgeführt werden soll, wenn das Suchfeld nicht leer ist. Die entsprechenden Parameter werden in der Liste der Module genauer erläutert. Alle Parameter haben einen Standardwert, sodass nur jene Parameter gesetzt werden müssen, die auch verändert werden müssen. Die Einstellung erfolgt beim Aufruf der init-Funktion:

$(function() {
	$.ajaxSetup({ cache: true }); // Cache wieder aktivieren für getScript
	$.getScript("//pokewiki.de/index.php?title=Benutzer:Jones/scripts.js&action=raw&ctype=text/javascript&maxage=604800&*", function(data, textStatus, jqxhr) {
		scripts = new WikiScripts();
		scripts.disableAllModules();
		scripts.enableModule("reloadRC");
		scripts.init({
			"reloadRC": {
				"reloadTime": 300, // Lade alle 5 Minuten neu
				"reloadIfSearch": true // Lade auch bei gefülltem Suchfeld neu
			}
		});
	});
});

Dabei wird zunächst der Name des Moduls angegeben und anschließend die Parameter mit ihren jeweiligen Werten. Dabei können auch Parameter für verschiedene Module gesetzt werden.

Module

Abkürzung der Namensräume in der Suche

Um nicht den vollen Namensraum in die Suche eingeben zu müssen kann dieses Modul genutzt werden. Die Ersetzung erfolgt, sobald hinter einer der folgenden Abkürzung ein Doppelpunkt angegeben wird. Groß- und Kleinschreibung werden ignoriert.

  • B oder U: Benutzer
  • D: Datei
  • H: Hilfe
  • K: Kategorie
  • M: MediaWiki
  • P: PokéWiki
  • V: Vorlage
  • Eine Kombination der obigen Kürzel mit D oder T ergibt den zugehörigen Diskussionsnamensraum. Beispielsweise führt UT zu Benutzer Diskussion
  • S: Spezial
  • T: Diskussion

Das Modul hat keine Parameter, läuft unter dem Namen searchShortcuts und ist standardmäßig aktiviert.

Ersetzung mittels Regulärer Ausdrücke

Erlaubt die Nutzung von Regulären Ausdrücken in Artikeln. Dazu kann beim Bearbeiten von Artikel Strg + I gedrückt werden, woraufhin sich zwei Fenster öffnen: In das erste kann der Reguläre Ausdruck geschrieben werden, während in das zweite die Ersetzung geschrieben wird. Unterstützt werden dabei auch Variablen.

Das Modul hat keine Parameter, läuft unter dem Namen regexSearch und ist standardmäßig deaktiviert.

Regelmäßiges Neuladen der Letzten Änderungen

Um die Letzten Änderungen nicht andauernd manuell neu laden zu müssen kann dieses Modul genutzt werden. Dabei werden eventuelle Parameter, beispielsweise wenn eigene Beiträge versteckt sind, übernommen.

Das Modul hat zwei Parameter, läuft unter dem Namen reloadRC und ist standardmäßig deaktiviert. Die Parameter sind:

  • reloadTime: Die Zeit, nach der die Letzten Änderungen erneut geladen werden, in Sekunden. Datentyp: int, Standardwert: 120
  • reloadIfSearch: Ob die Änderungen auch neu geladen werden sollen, wenn aktuell das Suchfeld nicht leer ist. Datentyp: bool, Standardwert: false

Ausblenden bestimmter Benutzer in den Letzten Änderungen

Sofern bestimmte Benutzer viele Bearbeitungen hintereinander machen, kann es sinnvoll sein, diese in den Letzten Änderungen auszublenden. Mit diesem Modul ist es möglich den Link um einen Parameter hideuser zu erweitern. Dies geschieht abhängig davon, ob der Link bereits ein Fragezeichen enthält oder nicht: Sofern ein Fragezeichen vorhanden ist, wird der Parameter mittels &hideuser gesetzt, ansonsten mittels ?hideuser. Anschließend können mehrere Benutzernamen angegeben werden: hideuser=Moltres;Taisuke würde beispielsweise Moltres und Taisuke ausblenden.

Das Modul hat einen Parameter, läuft unter dem Namen hideUser und ist standardmäßig aktiviert. Der Parameter ist:

  • splitter: Sofern anstelle des Semikolons ein anderes Zeichen als Trennzeichen genutzt werden soll, kann dieses hier gesetzt werden. Datentyp: string, Standardwert: ;

Hinzufügen eines Links zu Serebii

Während über die Sprachlinks bereits direkte Links zu anderen Quellen verfügbar sind, fehlt mit Serebii eine große Quelle. Dieses Modul stellt einen Versuch dar, zu so vielen Artikeln wie möglich direkte Links zur zugehörigen Seite auf Serebii zu erstellen. Dabei können einzelne Bereiche einzeln ein- oder ausgeschaltet werden, sowie der generierte Link unterschiedlich gehandhabt werden.

Hinweis: Das Modul befindet sich noch in der Entwicklung und unterstützt aktuell nur Orte-Artikel. Dabei werden stellenweise auch falsche Links generiert.

Das Modul hat zwei Parameter, läuft unter dem Namen serebii und ist standardmäßig deaktiviert. Die Parameter sind:

  • parseLocations: Aktivieren oder Deaktivieren der Generierung bei Orte-Artikeln. Datentyp: bool, Standardwert: true
  • callback: Über diesen Parameter kann eine Funktion übergeben werden, welche den Link als Parameter akzeptiert. Standardmäßig ist eine Funktion gesetzt, welche den Link, inklusive Icon, in der oberen Leiste neben die Filb und PokéWiki Links setzt. Datentyp: callback

Automatisches Bestätigen der Cache Leeren Seite

Im Normalfall muss das neu laden einer Seite ohne Cache bestätigt werden. Um dies zu vermeiden bestätigt dieses Modul den entsprechenden Button automatisch.

Das Modul hat keine Parameter, läuft unter dem Namen confirmPurge und ist standardmäßig aktiviert.

Hinzufügen eines Links zum Testwiki

Für größere Tests wird häufig das Testwiki genutzt. Da stellenweise schnelle Wechsel zwischen den beiden Wikis notwendig sind, stellt dieses Modul einen einfachen Link in der Topbar zur Verfügung, welches den aktuellen Artikel im Testwiki öffnet. Sofern das Modul im Testwiki geladen wird, wird stattdessen der entsprechende Link ins Hauptwiki generiert.

Das Modul hat einen Parameter, läuft unter dem Namen testLink und ist standardmäßig deaktiviert. Der Parameter ist:

  • callback: Über diesen Parameter kann eine Funktion übergeben werden, welche den Link als Parameter akzeptiert. Standardmäßig ist eine Funktion gesetzt, welche den Link, inklusive Icon, in der oberen Leiste neben die Filb und PokéWiki Links setzt. Datentyp: callback

Speichern von Entwürfen

Um den Verlust größerer Bearbeitungen entgegenzuwirken speichert dieses Modul in festgelegten Zeitabständen Entwürfe dieser Bearbeitungen und bietet die Möglichkeit diese wiederherzustellen. Standardmäßig werden dabei nur Änderungen an ganzen Artikeln gespeichert, Änderung an einzelnen Abschnitten jedoch nicht um eventuelle Problematiken durch überschreiben und verschieben von Abschnitten zu vermeiden, über einen Parameter lässt sich dieses Verhalten jedoch auch modifizieren. Das Bestätigen der Form auch durch z.B. die Vorschau löscht die zugehörigen Entwürfe, welche durch ein erneutes Öffnen der Form (wie es bei der Vorschau automatisch geschieht) erst wieder gespeichert werden.

Das Modul hat zwei Parameter, läuft unter dem Namen draftSave und ist standardmäßig aktiviert. Die Parameter sind:

  • saveInterval: Das Interval, in welchem Entwürfe gespeichert werden, in Sekunden. Datentyp: int, Standardwert: 120
  • draftSection: Ob Bearbeitungen an einzelnen Abschnitten ebenfalls gespeichert werden sollen, hierbei können – trotz einiger Überprüfungen – Probleme auftreten. Siehe Hinweise weiter oben. Datentyp: bool, Standardwert: false