Benutzer:Schnark/js/jsmodules

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Dieses Skript wird nicht mehr gepflegt. Wenn du es verwenden willst, kannst du dies tun, solange es noch funktioniert, danach musst du es entweder selbst weiterpflegen oder einen anderen dafür finden. Ich empfehle aber dringend, stattdessen mein Skript Fliegelflagel zu verwenden.

Dieses Skript bietet grundlegende Funktionen zum Einbinden anderer Skripte und erlaubt es, einzelne Skripte per Cookie temporär zu aktivieren oder deaktivieren. Weitere Besonderheiten sind die Tatsache, dass automatisch ein Link für die Funktion „Links auf diese Seite“ gesetzt wird und je nach Konfiguration eine regelmäßige Leerung des Browsercaches, damit man immer die aktuelle Version verwendet. Ferner werden die Skripte erst geladen, wenn mediawiki.util und weitere grundlegende Module verfügbar sind.

Die Konfiguration durch Cookies kannst du auf Spezial:Leerseite?action=schnark-config oder auch auf Benutzer:Schnark/js/modulverwaltung durchführen, eine weitere Möglichkeit ist unter Konfiguration erklärt.

So sieht’s aus

Umstellung auf Fliegelflagel[Bearbeiten | Quelltext bearbeiten]

Eine Umstellung auf Fliegelflagel ist in den meisten Fällen sehr leicht. Falls du jsmodules nur für meine Skripte verwendet hast (einschließlich einfacher Konfigurationen) so entfernst du aus deiner common.js (oder vector.js, falls du den Code dort eingefügt hast), den folgenden Code

importScript('Benutzer:Schnark/js/jsmodules.js'); //[[Benutzer:Schnark/js/jsmodules.js]]
$(document).bind('jsmodulesRun', function (e, jsmodules) {
//beliebiger Inhalt
});

Falls du – aus welchem Grund auch immer – einige Skripte von mir über importScript eingebunden hast, solltest du diese ebenfalls entfernen.

Stattdessen fügst du folgende Zeile ein:

mw.loader.load('//de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/fliegelflagel.js&action=raw&ctype=text/javascript&maxage=86400&smaxage=86400'); //[[Benutzer:Schnark/js/fliegelflagel.js]]

Anschließend sollte in deinem persönlichen Menü oben rechts ein neuer Punkt „Fliegelflagel“ erscheinen, der dich zur Konfigurationsseite bringt. Dort sind bereits eine Reihe von Skripten automatisch aktiviert, diese kannst du wieder deaktivieren, falls du sie nicht verwenden möchtest. Zu jedem meiner Skripte kannst du auf dieser Seite auswählen, ob du es verwenden willst oder nicht. Ebenfalls möglich sind dort einfache Konfigurationen, etwa, ob die Schaltfläche für Normdaten immer angezeigt werden soll.

Falls du Skripte anderer Benutzer ebenfalls über jsmodules geladen hast, kann es sein, dass diese auch in Fliegelflagel verfügbar sind. Andernfalls kannst du sie entweder so einbinden, wie auf der Dokumentationsseite jenes Skripts angegeben, oder du liest die Fliegelflagel-Dokumentation für Fortgeschrittene.

Einbinden[Bearbeiten | Quelltext bearbeiten]

importScript('Benutzer:Schnark/js/jsmodules.js'); //[[Benutzer:Schnark/js/jsmodules.js]]
$(document).bind('jsmodulesRun', function (e, jsmodules) {

});

in deine common.js. Die Einbindung anderer Skripte erfolgt dann an der gelb markierten Stelle.

Einschränkungen[Bearbeiten | Quelltext bearbeiten]

Ich habe noch nicht alle Möglichkeiten getestet, die das Skript bieten soll, Fehler bitte auf meiner Diskussionsseite melden.

Verwendung[Bearbeiten | Quelltext bearbeiten]

Grundfunktion[Bearbeiten | Quelltext bearbeiten]

Das Skript stellt eine Funktion jsmodules.load zur Verfügung, mit der man andere Skripte einbinden kann. Da diese Funktion aber erst verwendet werden kann, nachdem das Skript geladen ist, müssen alle Aufrufe innerhalb der geschweiften Klammern im obigen Code erfolgen.

Der einfachste Aufruf lautet

jsmodules.load('[[Benutzer:Name/skript.js]]');

Dieser Funktionsaufruf bindet das angegebene Skript ein und lässt gleichzeitig dein Skript in „Links auf diese Seite“ für das eingebundene Skript auftauchen.

Auch das Einbinden von Skripten, die auf anderen Webseiten (andere Sprachen, Schwesterprojekte, Toolserver, …) liegen, ist möglich.

jsmodules.load('[http://www.example.org/pfad/zum/skript.js]');

Der Aufruf erfolgt also immer wie du die Seite normal verlinken würdest. Dabei sind auch Interwikilinks möglich, also etwa

jsmodules.load('[[:en:User:Name/script.js]]');

Dies gilt aber nur für Sprachen und Schwesterprojekte, ein tools: für den Toolserver funktioniert nicht. Außerdem muss der Link dann immer (auch bei Schwesterprojekten) mit einem Doppelpunkt beginnen.

Optionale Parameter[Bearbeiten | Quelltext bearbeiten]

Du kannst als zweiten Parameter verschiedene Optionen in einem Konfigurationsobjekt angeben, beispielsweise

jsmodules.load('[[Benutzer:Name/skript.js]]', {cache: 'none', after: konfigurationsfunktion});

Du beginnst mit einer öffnenden geschweiften Klammer, dann folgen jeweils Eigenschaft und Wert getrennt durch einen Doppelpunkt, mehrere solcher Paare getrennt durch ein Komma. Nach dem letzten Eigenschaft-Wert-Paar kommt kein Komma mehr, sondern nur noch die schließende geschweifte Klammer. Die verschieden Eigenschaften sind:

before, after
Anweisungen, die vor bzw. nach dem Laden des Skripts ausgeführt werden sollen. Liegen diese in einer separaten js-Datei vor, so gibts du deren Namen als Wikilink in Anführungszeichen an. Alternativ kannst du auch eine Funktion übergeben. Achtung: Eine Funktion, die nach dem Laden des Skripts ausgeführt werden soll, funktioniert nur bei Skripten, die extra dafür programmiert sind. Bei meinen eigenen ist dies der Fall, bei fremden aber nicht.

Beispiel (bevor dieses Skript geladen wird, wird eine nervige Meldung ausgegeben):

jsmodules.load('[[Benutzer:Name/skript.js]]', {before: function () {alert('Gleich wird das Skript eingebunden!'} });
cache
Entweder ein einzelner Wert in Anführungszeichen oder eine Array, eine Reihe von Werten, die durch Kommata getrennt zwischen eckigen Klammern stehen. Mögliche Werte:
stable
Bindet immer die letzte stabile Version ein, sofern eine solche definiert ist.
latest
Bindet immer die aktuelle Version ein, sofern eine solche definiert ist und ich daran denke, die entsprechende Information auch zu aktualisieren.
time
Aktualisiert den Cache alle x Tage, wenn eine solche Zahl definiert ist.
standard
Aktualisiert den Cache dann, wenn dein Browser es für richtig hält (oder du ihn dazu zwingst).
x days
Aktualisiert den Cache alle x Tage, wobei du für x jede Zahl eintragen kannst.
123456789
Bindet die angegebene Version ein. Diese erhälst du aus der Versionsgeschichte (in der URL nach oldid=). Achtung: Wenn du die Versionsnummer eines anderen Skripts angibst, wird trotz des anderen Namen dieses eingebunden!

Beispiel (dieses Skript wird alle 5 Tage aus dem Browsercache entfernt):

jsmodules.load('[[Benutzer:Name/skript.js]]', {cache: ['time', '5 days'] });

Definition von eigenen Skripten[Bearbeiten | Quelltext bearbeiten]

Die Funktion lautet jsmodules.register(name, desc, needed, cache, dynamical, depends); Die Parameter sind:

name
Der Name als Wikilink, so wie er dann in load verwendet wird.
desc
Eine Beschreibung.
needed
Eine Funktion mit zwei Parameter ns (Nummer des Namensraums) und action (view, edit, etc.), die einen Wahrheitswert zurückgeben soll, ob das Skript gebraucht wird. Wird es immer gebraucht, einfach true angeben.
cache
Ein Objekt mit den folgenden optionalen Werten:
stable
Versionsnummer der stabilen Version (String)
latest
etwas, das immer geändert wird, wenn es eine neue Version gibt
days
Anzahl der Tage, die maximal gecached werden sollte (Zahl)
dynamical
false, falls das Skript nicht nur durch Setzen eines Cookies geladen werden soll
depends
Array mit Namen (als Wikilinks) von Skripten, die vorher geladen werden müssen

Außerdem gibt es die Funktion jsmodules.addDepend(name, dep);, mit der eine weitere Abhängigkeit festgelegt werden kann.

Wenn ein Aufruf mit after: function () { ... } funktionieren soll, muss eine Zeile der Art

$(document).trigger('loadWikiScript', ['Benutzer:Name/skript.js', optionalerParameter]);

an geeigneter Stelle im Skript eingefügt werden. (Hinweis: Dies wird sich voraussichtlich mit MW1.20 ändern.)

Um zusätzliche Überschriften zu definieren, verwendest du die Funktion jsmodules.heading('Name').

Konfiguration[Bearbeiten | Quelltext bearbeiten]

Willst du die Konfiguration per Cookie auf einer anderen Seite, etwa deiner Benutzerseite, durchführen, fügst du dort Folgendes ein:

<div id="konfigurationstabelle"></div>

Die dort angezeigten Bilder sind über die Variablen jsmodules.modulverwaltung.img_ja und jsmodules.modulverwaltung.img_nein konfigurierbar. Wenn du nicht möchtest, dass die Seite bei jeder Änderung sofort neu geladen wird, setzt du jsmodules.modulverwaltung.reload auf false.

Wenn du „ja“ und „nein“ statt der Bilder sehen willst, schreibst du:

$(document).bind('jsmodulesRun', function (e, jsmodules) {
  jsmodules.modulverwaltung.img_ja = 'ja';
  jsmodules.modulverwaltung.img_nein = 'nein';
});

Code[Bearbeiten | Quelltext bearbeiten]

Der Javascript-Code befindet sich unter Benutzer:Schnark/js/jsmodules.js, die Definitionen der Module unter Benutzer:Schnark/js/modules.js.