Wikiup:Technik/Skin/JS/mw
Diese Seite beschreibt das Objekt mw
für die JavaScript-Programmierung. Es steht ab MediaWiki 1.17 (Februar 2011) zur Verfügung und wird ständig weiterentwickelt.
Dokumentiert werden Funktionen, die für Benutzer zugreifbar und auch einsetzbar sind.
Zusätzlich werden alle bekanntgewordenen Komponenten des mw-Objekts vermerkt, auch wenn sie für Benutzer nicht nutzbar sind.
Zweck
Das Objekt mw
soll die Vielzahl der im allgemeinen JS-Namensraum (Eigenschaft des Standard-Browser-JS-Objektes window
) herumgeisternden Variablen (und damit Funktionen) beschränken und besser stukturieren. Damit können auch Namenskonflikte zwischen Skripten unterschiedlicher Herkunft vermieden werden, und zusammengehörende Werte können beim Debuggen leicht erkannt werden. Aus der Komponente kann auch zurückgeschlossen werden, aus welchem Paket die Funktion stammt.
Als .legacy.wikibits
und andere werden die bisherigen Funktionen für eine Übergangszeit geladen.
Verwendung
Name des Objekts
Der Name des Objekts mw
sollte immer in der Kurzform benutzt werden, um es bei der Suche nach Zeichenketten leicht auffinden zu können. Außerdem werden dadurch die Programmzeilen kürzer.
Daneben gibt es noch eine Variable mediaWiki
mit stets identischem Inhalt. Als Rückfallposition ließe sich mediaWiki
zur Wiederherstellung benutzen, falls in einem älteren Skript durch Namenskonflikt auf mw
nicht zugegriffen werden kann.
Bei der Bildung einer closure wird das signifikantere mediaWiki
regelmäßig zusammen mit jQuery
angewendet und auf die selbstdefinierten lokalen Variablen mw
und $
abgebildet:
( function ( mw, $ ) {
"use strict";
// ...
// ...
}( window.mediaWiki, window.jQuery ) );
Das Objekt mw
wie auch mediaWiki
ist eine Eigenschaft des Objektes window
und damit eindeutig in der aktuellen Seite, auch wenn sich bei asynchroner Bearbeitung mehrere Instanzen ergeben.
Auf dieser Seite steht ein führender Punkt vor einem Objektnamen wahlweise für mw.
oder mediaWiki.
– falls nicht Eigenschaft eines benutzerdefinierten Objekts.
Ladezeitpunkt
Das Objekt mw
wird durch den sogenannten ResourceLoader definiert; gleichzeitig bereits eine Reihe seiner Komponenten.
Manche Komponenten sind erst definiert, wenn auf besondere Anforderung deren Module hinzugeladen werden.
Andere Module (2012 etwa .util) gehören zwar zum Kernprogramm, sind aber möglicherweise in einem Skript nicht sofort verfügbar. Das liegt daran, dass moderne Browser mehrere Ressourcen gleichzeitig („asynchron“) und nicht nacheinander laden. Mit .loader.using()
lässt sich sicherstellen, dass Funktionen erst dann ausgeführt werden, nachdem das zugehörige Modul geladen worden war.
Basis-Objekt
Immer mit dem Laden einer Wiki-Seite war bereits das Objekt mit einigen Basisfunktionen definiert; zu diesen gehört der ResourceLoader zum Nachladen weiterer Software und die Verwaltung der Konfigurationsvariablen.
Quellcode:
Komponenten
Unmittelbare Komponenten
Siehe auch MwEmbed.
.format()
.format( arg0, arg1, arg2, arg3, … )
- Ersetze in der Zeichenkette
arg0
die$1
,$2
,$3
durcharg1
,arg2
,arg3
. - base.js – Definition
.hook()
Siehe .hook.
.log()
Siehe .log.
.message()
Siehe .messages.
.msg()
Siehe .messages.
.notify()
Kurze Nachricht(en) von geringer Bedeutung für einige Sekunden im Kopfbereich der HTML-Seite (unter der Seitenüberschrift) anzeigen oder löschen. Dies wird üblicherweise zur Bestätigung von Aktionen benutzt.
- Dieses Modul
mediawiki.notify
wird standardmäßig geladen, ist aber möglicherweise nicht sofort verfügbar. - mw:mediawiki.notify
- .notify(text, options)
- mediawiki.notification wird bei Bedarf nachgeladen (mw.plugin.notify).
- Tatsächlich wird dann die Funktion
.notification.notify()
ausgeführt.
.now()
Millisekunden seit 1970-01-01 als Gleitkommazahl.
- Soweit möglich ohne Wiederholung des gleichen Werts für die Mikrosekunden.
.track()
Funktionen, um Debuggern und Analysewerkzeugen die Rückverfolgung zu erleichtern und etwa an Firebug Zusatzinformationen zu übermitteln.
.trackSubscribe()
Siehe .track().
.trackUnsubscribe()
Siehe .track().
.action
Unterstützung von bestimmten Aktivitäten auf Seiten.
- Nur dann automatisch geladen, und nur in diesem Kontext sinnvoll nutzbar.
- resources/src/mediawiki.action
- Das nächste Segment im Namen gibt die
action=
der URL an, wobeisubmit
vonedit
abgedeckt wird..action.edit
.action.history
.action.view
.activeCampaigns
interne Verwendung
.Api
Klasse für vereinfachte API-Abfragen; alle Einzelheiten siehe JS/API.
.centralNotice
System zur Anzeige der weltweit gesteuerten Benachrichtigungs-Banner.
.cldr
Lokalisierungsfunktionen: Wikipedia:Technik/MediaWiki/Sprachen #cldr
- .cldr.getPluralForm()
.config
Konfigurationsvariable auslesen. Siehe dort.
- Diese Komponente ist unmittelbar nach dem ResourceLoader definiert und damit für andere Skripte verfügbar.
- Die volatilen Daten der aktuellen Seite haben keine Modulbezeichnung.
- .config.get()
- Wichtigste Funktion für Benutzer.
- Sollte bei Überarbeitung und Neuprogrammierung statt der direkten Nutzung als globale Variable benutzt werden.
Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.
.cookie
- resources/src/mediawiki.cookie.js
- API Documentation
- Vermutlich immer geladen, das Modul
mediawiki.cookie
ist aber möglicherweise nicht sofort verfügbar. - prefix ist optional, standardmäßig wgCookiePrefix; andere Vorgaben analog
- .cookie.get(key, prefix, defaultValue)
- Wert abfragen
- .cookie.set(key, value, options)
- Wert setzen oder Cookie entfernen
- options kann
prefix
,domain
,path
,expires
,secure
enthalten
.Debug
Debug toolbar.
- Nicht für reguläre Projekte vorgesehen; eher für Test-Projekte.
Erst in Localsettings.php zu aktivieren oder mittels .loader
zu laden.
- Ein debug toolbar kann für das Projekt durch $wgDebugToolbar verfügbar gemacht werden.
.echo
- .echo.clickThroughEnabled
-
- true
- .echo.desktop
-
- .appendUseLang()
- .echo.dismiss()
- nicht immer gesetzt, oder nicht mehr aktiv
- .echo.dismissOutputFormats[]
-
- [ "email", "web" ]
- nicht immer gesetzt, oder nicht mehr aktiv
- .echo.optionsToken
- nicht immer gesetzt, oder nicht mehr aktiv
- .echo.overlay
-
- .configuration
- .max-notification-count
99
- .notification-count
"1"
– Aktuelle Zahl der ungelesenen Benachrichtigungen
- .buildOverlay()
- .removeOverlay()
- .updateCount()
- .max-notification-count
- .logInteraction()
- .setupNotificationLogging()
- .configuration
- .echo.setOptionsToken()
- nicht immer gesetzt, oder nicht mehr aktiv
- .echo.setUpDismissability()
- nicht immer gesetzt, oder nicht mehr aktiv
- .echo.showDismissOption()
- nicht immer gesetzt, oder nicht mehr aktiv
.eventLog
Wurde offenbar für clicktracking benutzt; langfristig gesicherte Verfügbarkeit nicht dokumentiert. Wird regelmäßig von den Entwicklern verwendet, um zu überprüfen, wann wie oft von welchen Benutzern die MW-Features benutzt und wo wann angeklickt werden.
- Beispiel für Echo:
wgEchoConfig.version
,wgUserId
,wgUserEditCount
werden den Entwicklern übermittelt; dazu die Art und Uhrzeit jedes Klicks.
Modul: mw:Extension:eventLogging
.experiments
Was auch immer.
.experiments.getBucket( experiment, token )
.Feedback
Collecting user feedback on a wiki page
- Dient dazu, dass Benutzer bei der Verwendung des Upload-Wizards eine Rückmeldung geben können.
Erst mittels .loader
zu laden.
.ForeignApi
Schnittstelle zur API eines anderen Wiki.
.guidedTour
Unterstützung für Geführte Touren.
.hook
Infrastruktur für Hook-Funktionen (callback).
- base.js – Definition
Ab 2013 begann dies, auf Wiki-Projekten wirksam zu werden.[1] Unter anderem Namen könnten einige aus der PHP-Welt verwendbar sein.
Vorgesehen ist, dass in bestimmten Situationen im Aufbau der Wiki-Seite standardisierte Ereignisse ausgelöst werden; Extensionen und Gadgets können davon Gebrauch machen sowie selbstdefinierte Ereignisse hinzufügen. Während etwa das Ereignis document.ready
nur einmal beim ersten Aufbau des HTML-Dokuments ausgelöst wird, kann es sinnvoll sein, spätere Ereignisse innerhalb des HTML-Dokuments auszulösen (etwa nach Aktualisierung des Inhalts mittels LivePreview).
Diese Komponente ist bereits mit dem ResourceLoader definiert.
Mit den Parametern name
als string und handler
als Funktion sind verwendbar:
- .hook(name)
- Objekt aus jQuery.Callbacks() für
name
. - Damit sind verfügbar:
- h.add(handler)
- Registriere eine Callback-Funktion.
- Wenn eine Funktion registriert wird, nachdem das Ereignis
name
bereits stattgefunden hatte, wird die Funktion sofort ausgelöst. - h.remove(handler)
- Entferne eine Registrierung.
- h.fire(options)
- Löse das Ereignis aus.
- An den
handler
wird das optionaleoptions
übergeben.
- Somit ist folgende Form möglich:
meinHaken = mw.hook( "mein.tag" );
meinHaken.add( meineFunktion );
name | Ereignis | Auslöser | Status | Bemerkung |
---|---|---|---|---|
wikipage.content
|
Wenn .util.$content verfügbar oder $content aktualisiert wurde.[2]
|
.util.init()
|
stabil | |
wikipage.collapsibleContent
|
Wenn mw-collapsible fertig initialisiert wurde. | jquery.makeCollapsible | stabil | |
wikipage.categories
|
Alle Kategorie-Verlinkungen wurden zum DOM hinzugefügt. | |||
wikipage.diff
|
/RevisionSlider – löst aus, nachdem Inhalt geändert | |||
wikipage.editform
|
Ein Bearbeitungsfeld wurde verfügbar.[3] | |||
wikipage.languages
|
Alle Sprachversions-Verlinkungen wurden zum DOM hinzugefügt. | |||
codeEditor.configure
|
Wenn CodeEditor konfiguriert ist. | |||
Parameter ist cm = app
| ||||
Parameter ist cm = app
| ||||
ext.echo.overlay.beforeShowingOverlay
|
Bevor der Echo-Meldungszähler gezeigt wird. | |||
Wenn LivePreview konfiguriert wird. | 2014 entfernt, Gerrit:131346 | |||
postEdit
|
Nach dem Speichern einer Seitenänderung. | postEdit.js | ||
postEdit.afterRemoval
|
Nachdem die postEdit -Benachrichtigung entfernt wurde.
|
|||
(nur intern) Nachdem alle serverseitig mit der Seite verbundenen Module geladen wurden. | bis 2018-06 | |||
ve.activationComplete
|
Nachdem die Aktivierung des VisualEditor abgeschlossen wurde. | |||
ve.deactivate
|
Nachdem der VisualEditor deaktiviert wurde, also derEditiermodus verlassen wurde. |
.html
HTML-Zeichenketten einfügen.
- mw:mediaWiki.html
- Diese Komponente ist bereits mit dem ResourceLoader definiert.
- .html.escape(s)
- Ersetzt Zeichen, die in HTML/XML eine besondere Bedeutung haben, durch entsprechende Entitäten:
< > ' & "
→< > ' & "
- .html.element(name, attrs, contents)
- Erzeugt den Quelltext für ein HTML-Element.
name
: Name des Tags"span"
attrs
: Attribute mit Wert als Objekt{ HTMLattr: Wert }
contents
: (optional) Inhalt; kann neben string auch number oder boolean sein.- HTML-Syntax im Inhalt wird so mit .html.escape() kodiert, dass er erscheint wie angegeben. Die Angabe für contents kann mit html.Cdata() oder html.Raw() gegen diese Konvertierung geschützt werden.
- .html.Cdata
- Wrapper object for CDATA element contents
- .html.Raw
- Wrapper object for raw HTML
.htmlform
Hilfsfunktionen für Elemente eines HTML-Formulars (experimentell)
.ime
Input Method Editor für den mw:Universal Language Selector; seit Juli 2013 weltweit aktiviert. Zusammen mit .uls aktiv; Gadget für Input-Elemente.
.inspect
Zahlreiche Hilfsfunktionen für das Debugging der Module (welche sind mit welchen Eigenschaften geladen) und Konsolen-Log.
- base.js – Objektkonstruktion
- Das Modul
mediawiki.inspect
muss nicht gesondert geladen werden, falls die Funktionmw.inspect()
aufgerufen wird.
- .inspect.auditSelectors()
- .inspect.dumpTable()
- .inspect.getDependencyGraph()
- .inspect.getLoadedModules()
- .inspect.getModuleSize()
- .inspect.grep()
- p = CSS-Selektor: Einfügendes Modul identifizieren
- p = Name einer Variable/Komponente: Verwendende Module identifizieren
- .inspect.runReports()
-
- (optional) Array aus Zeichenketten
- .inspect.reports.css()
- Für jedes Modul mit styles ermittle die Anzahl der Selektoren, und zähle wie viele davon auf irgendein Element im momentanen DOM zutreffen.
- object
- .inspect.reports.size()
- Absteigend sortierte Liste aller geladenen Module und ihrer Größe in kB.
- object [Array?]
- .inspect.reports.store()
- Statistik für mw.loader.store
- Zahl der localStorage cache hits and misses,
- Zahl der items purged from the cache
- Gesamtgröße des module blob.
- object
.jqueryMsg
Parser für Systemnachrichten; ersetzt PLURAL/GENDER und anderes.
- Das Modul
mediawiki.jqueryMsg
muss gesondert geladen werden. - resources/src/mediawiki.jqueryMsg/mediawiki.jqueryMsg.js
- .Parser
- new mw.jqueryMsg.Parser(options)
- .getMessageFunction(options)
- .getParserDefaults()
- .getPlugin(options)
- .HtmlEmitter(language, magic)
- .setParserDefaults(data, deep)
Seit 2013 auf dem Weg vom Experimentalstadium zum produktiven Gebrauch:
- Kann langfristig einfache Wikisyntax in HTML überführen und damit Wikisyntax-formatierte Meldungstexte im Browser des Benutzers als HTML darstellen.
- Zurzeit unterstützte Wikisyntax:
- Wikilinks (vermutlich nur im eigenen Projekt)
- Weblinks
{{SITENAME}}
{{formatnum:}}
{{gender:}}
{{grammar:}}
{{int:}}
{{ns:}}
− Schlagwort oder Nummer{{plural:}}
.language
Unterstützung für lokale Sprachen und Formate. Sollten nur verwendet werden, wenn man weiß, was man tut.
- Das Modul
mediawiki.language
ist möglicherweise nicht automatisch oder nicht sofort verfügbar. - resources/src/mediawiki.language
- .language.digitTransformTable
- wgDigitTransformTable
- .language.convertNumber()
- .language.convertPlural()
- .language.preConvertPlural()
- .language.procPLURAL()
.legacy
Speicherort für als veraltet („deprecated“) geltende Funktionen während der Übergangszeit.
- Siehe auch mw:ResourceLoader/Migration guide (users).
Diese Funktionen waren zuvor definiert unter /skins-1.5/common/wikibits.js oder bits.wikimedia.org/skins-1.19/common/wikibits.js und Ähnlichen. Einige URL können noch funktionstüchtig sein, werden aber nicht mehr wirksam ausgewertet.
mediawiki.legacy.wikibits
und weitere
Es handelt sich nicht etwa um Wrapper-Aufrufe, die nur intern die mw-Funktionen aufrufen würden, sondern um die vollständigen Codes bis 2011.
.libs
Objekt, in das externe Skriptstrukturen (extensions) eingebunden werden können.
- Diese Komponente ist bereits mit dem ResourceLoader definiert.
- mediawiki.libs.**** – weltweit vorgehaltene Skripte
- base.js – Objektkonstruktion
- Beobachtete Registrierungen
Bei Einführung mit MW 1.18 blieb die Beschreibung nebelhaft.[4] Es spricht aber nichts dagegen, Benutzer-eigene Skriptstrukturen einzubinden, um globale Variable auf window
-Ebene zu reduzieren. Namenskonflikte sind natürlich zu vermeiden.
.loader
Dynamisches Nachladen tatsächlich benötigter Module, sowie von externen JS- und CSS-Definitionen.
- Zwangsläufig von Anfang an vorhanden, weil diese Komponente die weiteren nachlädt.
Siehe dazu im Detail: ResourceLoader
- loader.addSource()
- .loader.getModuleNames()
- Liste aller bekannten Ressourcen-Namen abfragen.
- .loader.getState()
- Status einer Ressource abfragen.
- .loader.getVersion()
- Versionsinformation einer Ressource abfragen – definiert in .loader.register().
- .loader.implement()
- Deklaration eines neuen Modulnamens, Verbindung mit der zugehörigen Implementierung und Laden.
- .loader.load()
-
- .loader.load(URL, MIME)
- Siehe Laden anderer Skripte für JavaScript und CSS, etwa Benutzerskripte.
- .loader.load(modules)
- Siehe ResourceLoader
- .loader.load(URL, MIME)
- .loader.register()
- Registrierung eines Moduls zum Abruf über
load.php
(von //bits.wikimedia.org) - Für Benutzerskripte nicht nutzbar.
- .loader.state()
- Setze den Status einer Ressource.
- .loader.store
- Abspeicherung im persistenten WebStorage verwalten.
- .loader.using()
- Starte eine Funktion, nachdem ein Modul geladen wurde, oder wenn dies fehlschlug; lade fehlende weitere Module nach (siehe Ladezeitpunkt).
.log
Dieses Objekt kann gleichzeitig als Funktion .log()
aufgerufen werden.
- Nach Laden des Moduls sind verfügbar:
- .log.deprecate(obj, key, val, msg)
- Füge einem Objekt
obj
eine Warnung vor veralteteten Komponenten hinzu, wenn dieserkey
verwendet wird. Es wird dann ersatzweiseval
für diese Eigenschaft oder als Rückgabewert einer Methode zurückgegeben. Die ausgeworfene Warnmeldung kann optional durchmsg
ergänzt werden. - .log.warn(*)
- Wie
mw.log(*)
, jedoch in derconsole
als warnung gekennzeichnet und um den Aufruf-Stack ergänzt.
- Es handelt sich standardmäßig um eine blinde Funktion, die von Entwicklern und jedem Benutzer aktuell mit einer selbst programmierten Funktion überschrieben werden kann. Fehlt momentan eine solche Funktion, und wird trotzdem unbeabsichtigt
mw.log()
aufgerufen (weil irrtümlich der Aufruf irgendwo stehen blieb), so passiert nichts weiter und es tritt auch kein Fehler auf.- Die Blindfunktion ist bereits mit dem ResourceLoader definiert.
- Als Objekt kann es mit dem Modul
mediawiki.log
geladen werden. - Im Debug-Modus wird automatisch
mediawiki.log
geladen und durch .Debug genutzt, das aber durch eine benutzerdefinierte Funktion wieder überschrieben würde.
- Das Modul bietet eine allgemein verwertbare Funktionalität an.
- Die Funktion hat beliebig viele Parameter belebigen Typs.
- Die bei unterschiedlichen Browsern verschieden anzusteuernden Möglichkeiten zur Anzeige von Fehlern („Konsole“) werden genutzt.
- Wenn der Browser die gängige
console
unterstützt, laufen dort die Meldungen kanalisiert auf; ansonsten wird am Seitenfuß eine Box mitid="mw-log-console"
eingefügt.
- Beim Überschreiben des Funktionsobjekts ist ab 2014 darauf zu achten, dass zuvor die beiden Komponenten
deprecate
undwarn
des Original-mw-Objekts gesichert und im Anschluss an die Funktionsdefinition dem neuen Funktionsobjekt wieder zugewiesen werden.
.Map
Allgemeine Klasse, um Wertzuweisungen zu verwalten. Sie kann auch von Benutzern verwendet werden und wird ansonsten mehrfach in den mw
-Funktionen benutzt.
- Diese Klasse ist bereits mit dem ResourceLoader definiert.
Zunächst ist eine Instanz zu schaffen:
meineSammlung = new mw.Map();
Danach sind die folgenden Funktionen für meineSammlung
verfügbar:
- .exists()
boolean
- .exists(key)
- Ist für die Zeichenkette mit dem Bezeichner key ein Wert vorhanden (nicht
null
)?
- Ist für die Zeichenkette mit dem Bezeichner key ein Wert vorhanden (nicht
- Eigentlich kann auch
.get(key)
benutzt werden; es sei denn eine leere Zeichenkette wäre bedeutungstragend. .exists(array)- Array mit Bezeichnern; dann ist die Abfrage nur dann erfolgreich, wenn alle Bezeichner definiert sind.
- Seit Juni 2020 nur noch einzelne Zeichenketten-Werte als Argumente.[5]
- .exists(key)
- .get()
- Abfrage;
null
wenn nicht definiert- .get(key, fallback)
key
: Zeichenkette mit dem Bezeichner.fallback
: (optional) Ersatzwert, wennkey
nicht definiert ist.
- .get(array, fallback)
- Array mit Bezeichnern; dann ist der Rückgabewert ein Objekt, dessen Komponenten den angeforderten Bezeichnern entsprechen.
Der Rückfallwert fallback bleibt ein einzelner Wert und für alle Bezeichner gleich.
- Array mit Bezeichnern; dann ist der Rückgabewert ein Objekt, dessen Komponenten den angeforderten Bezeichnern entsprechen.
- .get()
- Ohne key werden alle Werte als Objekt zurückgegeben.
- .get(key, fallback)
- .set()
- Zuweisung
- .set(key, value)
- Einem einzelnen Schlüssel key wird ein einzelner Wert value zugewiesen.
- .set(obj)
- Alle Komponenten im Objekt obj werden mit ihrem jeweiligen Wert in
meineSammlung
aufgenommen.
- Alle Komponenten im Objekt obj werden mit ihrem jeweiligen Wert in
- .set(key, value)
- .values
- (veraltet) Objekt mit allen Zuweisungen
.markAsHelpful
interne Verwendung (offenbar ArticleFeedback; vermutlich fehlerhaft dort nicht Unterkomponente eines geschlossenen Anwendungsobjekts für alle Aufgaben von ArticleFeedback)
.Message
Allgemeine Klasse, um Systemnachrichten zu verwalten.
- .Message( map, key, params )
.messages
Spiegelung der Systemnachrichten von MediaWiki:Nachrichtenname.
- Diese Komponente ist bereits mit dem ResourceLoader definiert.
- .messages
- Objekt zur Speicherung der als Objekt vom Typ
Message
hinterlegten Systemnachrichten. - Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.
Die folgenden Funktionen stehen damit im Zusammenhang:
- .message(key, parameters)
- Sucht in
.messages
die Systemnachrichtkey
und gibt ein Objekt vom TypMessage
zurück. - Die optionalen
parameters
sollten ein Array sein, das die Werte für $1, $2 usw. benennt. Sie werden in dieMessage
integriert. - Similar to PHP wfMessage() – Get a translated interface message.
- .msg(key, parameters)
- Sucht in
.messages
die Systemnachrichtkey
und gibt eine Zeichenkette zurück. - Die optionalen
parameters
sollten ein Array sein, das die Werte für $1, $2 usw. benennt. Sie sind bereits in die Zeichenkette eingefügt. - Similar to PHP wfMsg() – Get a message from anywhere, for the current user language.
- Message
- Objekt, von .message(key, parameters) zurückgegeben.
- Die Objektdefinition ist bereits mit dem ResourceLoader vorhanden.
- Funktionen:
- Message.toString()
- Standard-Zeichenkette
- Message.escaped()
- Zeichenkette, aber mit .html.escape() Sonderzeichen ersetzt.
- Message.plain()
- Zeichenkette, die Parameter
$
n werden ersetzt.
- Zeichenkette, die Parameter
- Message.parse()
- Zeichenkette, die Parameter
$
n werden ersetzt (keine Wikisyntax). - Wenn
jqueryMsg
geladen wurde, wird außerdem Wikitext in HTML konvertiert.
- Zeichenkette, die Parameter
- Message.text()
- Zeichenkette, die Parameter
$
n werden ersetzt. - Dies entspricht gerade
.msg
(key, parameters)
- Zeichenkette, die Parameter
- Message.toString()
Durch ein zusätzlich nachladbares Modul .jqueryMsg kann die vorstehend beschriebene Funktionalität verändert und erweitert werden. Nachrichten mit PLURAL/GENDER werden dann formatiert.
Nicht mit .util.jsMessage() zu verwechseln.
.mmv
Medienbetrachter, MultiMediaViewer
.mobileFrontend
Objekt
Notification
Private Klasse, um eine einzelne Benachrichtigung zu modellieren.
.notification
Einzelne Benachrichtigung(en) von geringer Bedeutung für einige Sekunden im Kopfbereich der HTML-Seite (unter der Seitenüberschrift) anzuzeigen oder zu löschen. Dies wird üblicherweise zur Bestätigung von Aktionen benutzt.
- Dieses Modul
mediawiki.notification
muss gesondert geladen werden.
Benutzt die Klasse Notification. Nicht zu verwechseln mit .echo.
- autoHideLimit
3
- Anzahl der Nachrichten, die Benutzer innerhalb von
autoHideSeconds
lesen und verstehen können. - autoHideSeconds
5
- defaults
-
autoHide: true
- Animation zum automatischen Ausblenden
tag: false
- Identifikator für unterschiedliche Benachrichtigungen
title:
undefined- Titel der Benachrichtigung
- .notify(text, options)
- Nachricht anzeigen, sobald die Seite fertig geladen wurde.
text
: Zeichenkette mit dem Inhalt der Nachricht (auch mit HTML-Tags); oder jQuery-Elementoptions
: (optional) Objekt- Siehe Komponenten von
.defaults
- Siehe Komponenten von
- Rückgabewert: Objekt, auch mit einer Funktion
.close()
zum Schließen der Meldung.
mw.notify()
ist eine Art Alias fürmw.notification.notify()
und lädt das Modul bei Bedarf nach.
mw.notify( 'Dies ist eine Benachrichtigung.' ); // Nachricht mit angegebenen Text anzeigen
mw.notify( mw.message( 'some-message' ) ); // Nachricht mit angegebener Systemnachricht
mw.notify( $( '<span>This is a <u>HTML</u> notification.</span>' ) ); // Nachricht mit jQuery-Instanz (oder DOM-Knoten) als Text
mw.notify( 'Test', { title: 'Title' } ); // Nachricht mit zusätzlicher Überschrift
mw.notify( 'Test', { autoHide: false } ); // Verhindert das automatische Verschwinden der Nachricht (Klick zum Schließen)
mw.notify( 'Test', { tag: 'foobar' } ); // Nachricht mit interner Namenskennzeichnung
mw.notify( 'Test 2', { tag: 'foobar' } ); // Dies ersetzt die vorherige Nachricht tag: 'foobar'
- .pause()
- Alle Animationen (zum automatischen Ausblenden) stoppen
- .resume()
- Alle Animationen (zum automatischen Ausblenden) fortsetzen
.openTask
interne Verwendung
.page
Interne Verwendung: Seitenaufbau (jeder Seite)
- mediawiki.page.startup – Beginn;
class=client-js - mediawiki.page.ready – Abschluss des Seitenaufbaus
Einzelne Elemente in der Seite:
- gallery.js
- image-pagination.js (etwa PDF und DjVu)
- watch.js
.performance
Messungen; möglicherweise im Zusammenhang mit .eventLog
- .performance.memory
- .performance.navigation
- .performance.timing
.plugin
mw.plugin.notify
.popups
.render
.RegExp
Funktionen für reguläre Ausdrücke.
- deprecated
- Muss erst mittels
.loader
geladen werden; Modul:mediawiki.RegExp
- .RegExp.escape( s )
- Gib eine Zeichenkette zurück, bei der in der Zeichenkette
s
alle Zeichen mittels\
unwirksam gemacht wurden, die sich auf einen regulären Ausdruck auswirken würden.
Wurde mit gleicher Funktionalität in .util
aufgenommen als .util.escapeRegExp()
. Weil nur ein Modul zu laden ist und dieses ohnehin oft vorhanden und benötigt ist, empfiehlt es sich, darauf umzustellen; möglicherweise wird langfristig die Unterstützung dieses gesonderten Moduls eingestellt.
.special
Unterstützung von Spezialseiten.
- Nur auf diesen automatisch geladen, und nur in ihrem Kontext sinnvoll nutzbar.
- resources/src/mediawiki.special
.searchSuggest
.storage
Unterstützung von localStorage
mit Abfangen bei nicht unterstützendem Browser.
- Muss erst mittels
.loader
geladen werden; Modul:mediawiki.storage
- resources/src/mediawiki.storage.js
- .storage.get(access)
- string, oder
false
falls nicht unterstützt - .storage.remove(access)
true
wenn gelöscht, oderfalse
falls nicht unterstützt- .storage.set(access, assign)
true
wenn gespeichert, oderfalse
falls nicht unterstützt
.template
2015 neu.
.TemplateData
templateDataGenerator
.templates
2015 neu.
.Title
Klasse für Seitennamen (Namensraum und Titel) – Analyse und Standardisierung, Generierung
- Muss erst mittels
.loader
geladen werden; Modul:mediawiki.Title
- resources/src/mediawiki.Title/mediawiki.Title.js
- .Title( title, namespace )
- Konstruiert ein neues Titel-Objekt, etwa: t
= new mw.Title( title, namespace );
- title:
string
kann im Format namespace:title sein. - namespace: (optional)
number
- title:
- Wirft im Fehlerfall eine Ausnahme (exception).
- .Title.newFromText( title, namespace )
- Konstruiert ebenfalls ein neues Title-Objekt, gibt aber im Fehlerfall
null
zurück statt einer Ausnahme. - .Title.newFromImg( $img )
- Konstruiert neues Title-Objekt, Dateiname aus jQuery-Objekt für Bild ableiten.
- .Title.exist.set( array, live )
- Existenz von Seiten registrieren zur Abfrage mit .exists()
- array – Array mit Zeichenketten oder einzelne Zeichenkette mit Seitenname
- live – (optional)
false
für explizite Nichtexistenz
- .Title.exists( title )
- Existiert die Seite im Wiki?
- title:
string
/mw.Title
kann im Format namespace:title sein oder ein Title-Objekt.
- title:
- Keine API-Abfrage, sondern Ergebnisse früherer Feststellungen können hinterlegt werden und später abgefragt.
Boolean
wenn die Information bekannt ist; sonstnull
Danach sind für t folgende Funktionen verfügbar:
- .exists()
- Existiert die Seite im Wiki?
- Gleiche Funktion wie oben nur ohne Parameter
- .getDotExtension()
- Dateinamenserweiterung mit Punkt oder
""
- .getExtension()
- Dateinamenserweiterung oder
null
(ohne Punkt) - .getFragment()
- Fragmentbezeichner; ohne
#
und nicht encoded, Leerzeichen-Format - .getMain()
- Kanonischer Seitentitel ohne Dateinamenserweiterung, Unterstreichungsstrich-Format
- .getMainText()
- Kanonischer Seitentitel ohne Dateinamenserweiterung, Leerzeichen-Format
- .getName()
- Kanonischer Seitentitel, Unterstreichungsstrich-Format
- .getNameText()
- Kanonischer Seitentitel, Leerzeichen-Format
- .getNamespaceId()
- Nummer des Namensraums
- .getNamespacePrefix()
- Kanonischer Namensraumname mit Doppelpunkt, Unterstreichungsstrich-Format; Hauptnamensraum
""
- .getPrefixedDb()
- Kanonischer Seitenname mit Namensraum, Unterstreichungsstrich-Format
- Optimal für API-Abrufe
- .getPrefixedText()
- Kanonischer Seitenname mit Namensraum, Leerzeichen-Format
- .getRelativeText( nsn )
- Kanonischer Seitenname relativ zu einem Namensraum, Leerzeichen-Format
- nsn – Nummer des Namensraums
- Ohne Namensraum-Präfix, wenn Seite in diesem Namensraum, sonst mindestens mit vorangestelltem Doppelpunkt
- .getUrl( params )
- URL zu dieser Seite
- params – (optional) Objekt mit Zuweisungen key:value
{ action: "edit" }
- params – (optional) Objekt mit Zuweisungen key:value
- .toString()
- Alias für .getPrefixedDb()
- .toText()
- Alias für .getPrefixedText()
.toolbar
Funktionen für die Benutzeroberfläche (Bearbeitungs-Modus): mw:edit.js
Im April 2017 per Rundschreiben als zukünftig wegfallend angekündigt, seit 1.30wmf1 (Dezember 2017) als veraltet („deprecated“) deklariert, wurde Anfang November 2018 entfernt; siehe mw:Contributors/Projects/Removal of the 2006 wikitext editor.
.toolbar.$toolbar- seit 1.20wmf9 (August 2012) nicht mehr öffentlich sichtbar
div#toolbar
.toolbar.addButton()- Fügt der Werkzeugleiste
mwCustomEditButtons
einen Button hinzu. - Kompatibel mit wikibits.js.
- Erwartet einen Parameter mit einem Objekt, dessen Komponenten die Eigenschaften eines Buttons definieren.
.toolbar.addButtons()- Wie
.toolbar.addButton()
, akzeptiert jedoch ein Array mit Button-Definitionen. .toolbar.buttons().toolbar.insertTags(tagOpen, tagClose, sampleText, selectText)- Kompatibel mit wikibits.js.
.uls
mw:Universal Language Selector; seit Juli 2013 weltweit aktiviert.
- Sprachversionen, Webfonts
.Uri
Klasse zur Handhabung von URL und URI. Einfache Funktionen zur Analyse und Manipulation.
- Muss erst mittels
.loader
geladen werden; Modul:mediawiki.Uri
- resources/src/mediawiki.Uri/Uri.js
- .Uri(url,options)
- Konstruiert ein neues Uri-Objekt, etwa: u
= new mw.Uri( url );
url
: Stringoptions
: (optional) Objekt mit speziellen Einstellungen für das Uri-ObjektstrictMode: false
overrideKeys: false
Danach sind für u folgende Funktionen verfügbar:
- .getUserInfo()
- .getHostPort()
- .getAuthority()
- .getQueryString()
- .toString()
- .clone()
- .extend(parameters)
- Anfügen von
opt1=val1&opt2=val2
parameters
:object
{ "opt1": "val1", "opt2": "val2" }
- .UriRelative(defaultLocation)
- Setzt Standardwerte für relative Angaben, also: Protokoll, Domain, Port; gültig für alle nachfolgend konstruierten Uri-Objekte. Angaben zum Pfad sind nicht vorgesehen.
.UriRelative
Kooperiert mit .Uri
.
.user
Informationen über den angemeldeten Benutzer; siehe Benutzerkonfiguration.
- Diese Komponente gehört zum Kern, das Modul
mediawiki.user
ist aber möglicherweise nicht sofort verfügbar. - resources/src/mediawiki.user.js
.user.anonymous()- → MW 1.25; jetzt
.isAnon()
.user.bucket(key, options)- Von der ClickTracking Extension auch im Cookie festgehaltene Aktivitäten
- entfernt 2017-05 1.30.0-wmf.1
- .user.getGroups(callback)
- Interne Auslösung einer API-Abfrage zur Bestimmung der bereits bekannten wgUserGroups; kein Rückgabewert
- .user.getName()
- (=wgUserName)
- .user.getRights(callback)
- Interne Auslösung einer API-Abfrage zur Bestimmung der Benutzerrechte; kein Rückgabewert
- .user.isAnon()
boolean
– für angemeldete Benutzerfalse
- .user.groups
- noch nicht verfügbar? – durch
.getGroups()
besetzt - .user.id()
- Dauerhafte Identifizierung im Cookie
- Angemeldet: wgUserName
- Anonym: identisch .user.sessionId()
.user.name()- → MW 1.25; jetzt
.getName()
- .user.options
- Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.
- Abgelegt im virtuellen Modul
user.options
– möglicherweise nicht sofort verfügbar.- .user.options.get("Bezeichner")
- .user.rights
- ??? – durch
.getRights()
besetzt - .user.sessionId()
- Relevant für den Anmeldevorgang. Identifizierung im Cookie; Zufallszahl für die Dauer der Browser-Sitzung.
- .user.tokens
- Organisiert als .Map – es sind also .exists(), .get(), .set() verfügbar.
.user.tokens.get( "csrfToken" )
- Spart die gesonderte Abfrage per API.
.user.tokens.get( "watchToken" )
- Die anderen Arten von action Token wie
editToken
oderpatrolToken
sind veraltet; es soll dafür nur nochcsrfToken
benutzt werden.
.util
Verschiedene Hilfsfunktionen.
- mw:mediaWiki.util
- Diese Komponente gehört zum Kern, das Modul
mediawiki.util
ist aber möglicherweise nicht sofort verfügbar. - resources/src/mediawiki.util.js
- .util.addCSS()
- Style zur Seite hinzufügen; ausführlich dazu
- .util.addPortletLink()
- Link in eine Navigationsleiste einfügen; ausführlich dazu
- Kompatibel mit wikibits.js.
- .util.$content
- Inhaltsbereich der Seite, siehe Skin/GUI
- Verfügbar mit
.hook("wikipage.content")
. - .util.debounce( delay, callback )
delay
ist eine Verzögerung in Millisekunden.callback
ist eine Funktion.- Ergibt eine Funktion, die erneut aufgerufen werden kann, um die Zeit bis zum Aufruf von
callback
nochmals umdelay
zu verlängern. - .util.escapeIdForLink( s )
- Encodieren der Zeichenkette
s
in einer Form, die als Fragment in einer URL geeignet ist, und in der Seite mit gleicher Struktur generiert würde. - .util.escapeRegExp( s )
- Gib eine Zeichenkette zurück, bei der in der Zeichenkette
s
alle Zeichen mittels\
unwirksam gemacht wurden, die sich auf einen regulären Ausdruck auswirken würden. - Eingegliedert aus:
.RegExp
- .util.getParamValue(key, URL)
- Aus den URL-Parametern einen Parameterwert key=value auslesen.
key
: SchlüsselwortURL
: (optional) URL einer (Wiki-)Seite (auch protokollrelativ) – Standardwert: aktuelle Seite
- Der Parameterwert ist bereits dekodiert.
- War das Schlüsselwort in der URL nicht angegeben, wird
null
zurückgegeben. - .util.getUrl(title, params)
- Adresse einer Seite als relative URL (relativ zu wgServer)
- title – Seitenname
- params – (optional) Objekt mit Zuweisungen key:value
{ action: "edit" }
- Ähnelt der Parserfunktion {{fullurl:}}.
.util.getUrl("Wikipedia:Skin/Benutzerskripte (bis 2011)")
- liefert
/wiki/Wikipedia:Skin/Benutzerskripte_%28bis_2011%29
- Kein Encoding vorgeben! (erfolgt bereits intern)
- Analog zu .Title.getUrl() gebildet.
- liefert
- .util.init()
- Nur einmaliger system-interner Aufruf, sobald document.ready vorliegt. Aktivitäten:
.util.$content
wird einmalig etabliert.wikipage.content
wird ausgelöst.
- .util.isIPAddress(address, allowBlock)
- .util.isIPv4Address(address, allowBlock)
- .util.isIPv6Address(address, allowBlock)
- .util.jsMessage(complex, id) [Veraltet]
- Eigene Nachricht im Kopfbereich der HTML-Seite anzeigen oder löschen.
complex
: DOM-Element oder HTML-Zeichenketteid
: (optional) Selektor
- Achtung: Es kann immer nur eine Nachricht angezeigt werden; eine andere Nachricht eines anderen Skripts entfernt die vorherige.
.util.jsMessage("Nachricht", "info-23")
- Kompatibel mit
jsMsg()
aus wikibits.js. - Veraltet; jetzt .notify()
- Zur Vermeidung von Sicherheitslücken („XSS“) muss die Nachricht geeignet escaped werden, falls sie aus dem Wikitext einer Seite entnommene freie Zeichenketten enthält.
- Mit MW 1.20wmf10 vom August 2012 änderte sich das Verhalten signifikant. War es bisher ein beliebig einsetzbares Element im Kopf der Seite, ist es nun eine schmale, temporär erscheinende Nachricht („Bubble“) von untergeordneter Bedeutung am rechten Rand.[6]
- Eine
.notification
wirkt bei mehreren Nachrichten und soll auch jquery.messageBox() ersetzen. - .util.rawurlencode(string)
- Wie
encodeURIComponent()
, dazu! ' ( ) * ~
zusätzlich kodiert. .util.toggleToc()- Mai 2014 mit gerrit:110680 hier entfernt; Funktionalität jetzt nur noch über
mediawiki.toc
- .util.updateTooltipAccessKeys($nodes) [Veraltet]
- War Ersatz für gleichlautende veraltete Funktion in wikibits.js, jetzt über Modul jquery.accessKeyLabel verfügbar.
- Passe an jedem Tooltip eines Werkzeug-Links (mit .util.addPortletLink() erzeugt) die Anzeige des Tastaturkürzels an die Syntax des aktuellen Browsers an.
$nodes
: (optional) jQuery-Objekt mit Auswahl bestimmter Portlet-Elemente; Vorgabe: Alle typischen Bereiche einer Wiki-Seite, in denen Werkzeug-Links auftreten können.
- .util.validateEmail(string)
- Mögliche E-Mail-Adresse validieren.
.util.wikiGetlink(title)- Veraltete (umbenannte) Form; seit November 2013 .util.getUrl() verwenden (gerrit:94270); eliminiert.
- .util.wikiScript(script)
- Pfad zu den Server-Skripten (zurzeit PHP)
script
: (optional) Name des Skriptes
.util.wikiScript()
liefert wgScript für index.php.util.wikiScript("api")
ergibt den API-Pfad (typischerweise/w/api.php
)- .util.wikiUrlencode(string)
- Wie
.util.rawurlencode()
, aber_ : /
unkodiert (Wiki-Stil).
Siehe auch jQuery für weitere Hilfsfunktionen.
.webfonts
.widgets
Ablage von Objekten des GUI (OOUI).
- base.js – Objektkonstruktion
JS2 / MwEmbed
Das Projekt „JS2“ wurde Mitte 2011 als „historisch“ eingestuft und nicht mehr weiter verfolgt; durch den ResourceLoader ersetzt.
<section begin="JS2/MwEmbed" />Im Zusammenhang mit dem Embedded Media Player tauchten Ende 2012 im Globalen Namensraum und als unstrukturierte unmittelbare Komponenten von mw
allerlei Variablen und „Shortcuts“ erneut in den Wiki-Projekten auf.
Von ihrer Benutzung ist im Zusammenhang mit diesem Projekt dringend abzuraten, sie sind teilweise auch im dortigen Kontext „deprecated“ und kürzen nur ohnehin verfügbare Standard-Funktionen ab. Ihre dauerhafte Unterstützung ist zweifelhaft, die Verfügbarkeit hängt vom dynamischen Laden des MediaPlayers ab. Die Eliminierung wird angestrebt.
- Die Definition ist nachzulesen unter mw:MwEmbed.
- Namentlich geht es um: mw.absoluteUrl() mw.addClassFilePaths() mw.addClassStyleSheets() mw.addDialog() mw.addLoaderDialog() mw.addModuleLoader() mw.closeLoaderDialog() mw.getConfig() mw.getEmbedPlayerPath() mw.getHexColor() mw.getJSON() mw.getLocalApiUrl() mw.getMsg() mw.getMwEmbedPath() mw.getRemoteMsg() mw.getScript() mw.getStyleSheet() mw.getToken() mw.getUserName() mw.inherit() mw.isEmpty() mw.isset() mw.isUrl() mw.load() mw.mergeConfig() mw.parseUri() mw.parseWikiText() mw.parseXML() mw.ready() mw.replaceUrlParams() mw.sendBeaconUrl() mw.setConfig() mw.setDefaultConfig() mw.versionIsAtLeast() mw.waitForObject()<section end="JS2/MwEmbed" />
Weitere Informationen
- /jQuery – MediaWiki-Funktionen
alle weiteren englisch:
- mw:ResourceLoader/Default modules
- mw:ResourceLoader/JavaScript Deprecations
- mw:ResourceLoader/Migration guide (users)
- doc.wikimedia.org – Automatisch generierte Dokumentation
- Quellcode der Module auf Phabricator-Diffusion
Anmerkungen
- ↑ phab:T25580 (Bugzilla:23580) sowie phab:T32713 (Bugzilla:30713)
- ↑
Die verknüpfte Funktion wird jedes Mal aufgerufen, wenn der Inhalt neu gebildet wird.
- Deshalb muss geeignet verhindert werden, dass hinzugefügte Elemente außerhalb des Inhaltsbereichs kumulieren.
- Mit gerrit:101470 wird beim Live Preview (auch VE) der $content detached. Um den Content zu verarbeiten, muss die handler-Funktion in
mw.hook()
ihren ersten Parameter auswerten; dies ist der aktualisierte$content
.
- ↑
Die verknüpfte Funktion wird aufgerufen, wenn ein (Quelltext[?]-)Bearbeitungsfeld verfügbar wurde.
- Die handler-Funktion in
mw.hook()
kann ihren ersten Parameter auswerten; dies ist das aktualisierte$editForm
.
- Die handler-Funktion in
- ↑ Spätere Erwähnung
- ↑ Arrays wurden über acht Jahre niemals in einem Wiki verwendet. phab:T251855 Gerrit:594345
- ↑
Abweichend vom vorigen Zustand wird in .util.jsMessage() nun vorgegeben:
- Standardmäßig verschwindet die Meldung nach weltweit fest vorgegebenen 5 Sekunden.
- Mauszeiger in Bubble hält 5-Sekunden-Uhr an.
- Mauszeiger dann aus Bubble heraus startet 5-Sekunden-Uhr wieder.
- Klick auf Bubble lässt sie verschwinden.
- Die Bubble ist auf eine weltweit fest vorgegebene Breite von 20 Anschlägen (width:20em) festgelegt. Sie ist zum rechten Rand orientiert und fällt bei „links nach rechts“ dort nicht mehr ins Auge.
- Standardmäßig verschwindet die Meldung nach weltweit fest vorgegebenen 5 Sekunden.