„Wikipedia:Technik/Skin/JS/Variablen“ – Versionsunterschied

Inhalt gelöscht Inhalt hinzugefügt
kl.ergs
Versionsabhängiger Wert für stylepath mit {{STYLEPATH}} erzeugt. wgVersion kann leider nicht mit {{CURRENTVERSION}} erzeugt werden, weil {{CURRENTVERSION}} neben der Version noch eine weitere ID enthält.
Zeile 2:Zeile 2:


Diese Seite beschreibt, wie sich in der JavaScript-Programmierung Informationen gewinnen lassen über die aktuelle Seite, den momentanen Benutzer und die sonstige Konfiguration.
Diese Seite beschreibt, wie sich in der JavaScript-Programmierung Informationen gewinnen lassen über die aktuelle Seite, den momentanen Benutzer und die sonstige Konfiguration.



__TOC__
__TOC__


== Projekt- und seitenspezifische Konfigurationsvariablen ==
== Projekt- und seitenspezifische Konfigurationsvariablen ==
Eine Reihe von Parametern gibt Informationen über die MediaWiki-Installation und das Wiki-Projekt (Database) wie auch die momentane Aktion und Einzelheiten über den Artikel und Benutzer-Einstellungen. Eine Übersicht der wichtigsten Parameter ist [[#wg.List|nachstehend aufgelistet]].
Eine Reihe von Parametern gibt Informationen über die MediaWiki-Installation und das Wiki-Projekt (Database) wie auch die momentane Aktion und Einzelheiten über den Artikel und Benutzer-Einstellungen. Eine Übersicht der wichtigsten Parameter ist [[#wg.List|nachstehend aufgelistet]].
Zeile 103:Zeile 100:
| {{Anker|wgScriptPath}}<code>wgScriptPath</code> || <code>/w</code><ref name="wgServer-2011-09" />
| {{Anker|wgScriptPath}}<code>wgScriptPath</code> || <code>/w</code><ref name="wgServer-2011-09" />
|-
|-
| {{Anker|stylepath}}<code>stylepath</code> || <code>/skins-1.19</code>
| {{Anker|stylepath}}<code>stylepath</code> || <code>{{STYLEPATH}}</code>
|-
|-
!colspan="2"|Lokalisierung<ref name="L10N" />
!colspan="2"|Lokalisierung<ref name="L10N" />

Version vom 2. Juni 2012, 23:06 Uhr


Diese Seite beschreibt, wie sich in der JavaScript-Programmierung Informationen gewinnen lassen über die aktuelle Seite, den momentanen Benutzer und die sonstige Konfiguration.

Projekt- und seitenspezifische Konfigurationsvariablen

Eine Reihe von Parametern gibt Informationen über die MediaWiki-Installation und das Wiki-Projekt (Database) wie auch die momentane Aktion und Einzelheiten über den Artikel und Benutzer-Einstellungen. Eine Übersicht der wichtigsten Parameter ist nachstehend aufgelistet.

wg steht für „WikiGlobals“.[1]

Mit Einführung von MediaWiki 1.17 sollten die Parameter wie folgt abgefragt werden:
mw.config.get("Name")

Bis dahin waren die Parameter nur als einfache JavaScript-Variablen verfügbar. Das ist übergangsweise noch längere Zeit möglich; bei Neuentwicklungen und Überarbeitungen von Skripten sollte aber auf den neuen Zugriff umgestellt werden.

Bis MediaWiki 1.16 konnten alle Parameter direkt in der Ansicht des HTML-Quelltextes gelesen werden. Das war in MediaWiki 1.17 nicht mehr vollständig und einfach möglich. Eine Auflistung der momentan gültigen Parameter und ihrer Werte kann man sich mit DebugWikiGlobals[2] verschaffen. Mit MediaWiki 1.18 (Anfang Oktober 2011) stehen sie wieder auf der Quelltext-Seite.[3]

Abfrage:

mw.config.exists("Name")
Informiert, ob Name definiert ist.

Hilfreich sind vor allem:

Parameter (Auswahl)
Projekt-Spezifisch
wgDBnamedewiki – deutschsprachige Wikipedia
bat_smgwiki – Wikipedia auf Schemaitisch
elwikibooks – Wikibooks in griechischer Sprache
fiwikinews – Wikinews in finnischer Sprache
iswikiquote – Wikiquote auf Isländisch
arwikisource – Wikisource auf Arabisch
frwikiversity – französischsprachige Wikiversity
simplewiktionary – Wiktionary in Simple English
commonswikiCommons
metawikiMeta-Wiki
mediawikiwikiMediaWiki
vollständige Liste
wgSiteNameWikipedia
Projektname in der Landessprache, könnte auch „Wikipédia“ oder „Vikipedi“ heißen.[4]
wgContentLanguagede
wgNamespaceIds{"diskussion": 1, "benutzer": 2, "benutzerin": 2, … }
wgFormattedNamespaces{…, "6": "Datei", …, "10": "Vorlage", … }
wgCaseSensitiveNamespacesArray mit Namensräumen, bei deren Seiten die Groß/Kleinschreibung des Titels unterschieden wird.
Vor allem für Wiktionaries wichtig, weil es dort auch eigene Seitennamen mit kleinem Anfangsbuchstaben geben darf.
In der de.WP ist die Länge Null.
Seiten-Spezifisch
wgArticleId6606385
(Bei Spezialseiten und Bildern, die von Commons geladen werden, gilt wgArticleId === 0)
wgTitleTechnik/Skin/JS/Variablen
Menschenfreundliche Form (nicht URL-fähig: Leerzeichen)
Ohne Namensraum!
wgPageNameWikipedia:Technik/Skin/JS/Variablen
Bedingt URL-fähig[5]
wgNamespaceNumber4   (siehe Liste)
wgCurRevisionId-
auch während action=edit oder submit verfügbar; nicht bei generierten Spezialseiten
wgCategories["Deutscher", "Frau"]
nur bei wgIsArticle gefüllt; während action=edit nicht verfügbar; jedoch bei submit
wgPageContentLanguageSeiteninhaltssprache; vor allem in mehrsprachigen Wikis wie Commons interessant
wgCanonicalNamespace"Project" (=Wikipedia), einheitlicher Name
wgCanonicalSpecialPageNameSeite im Spezial-Namensraum, einheitlicher Name
beispielsweise "Listfiles", "Watchlist"
Situationsabhängig
wgIsArticletrue – Feste Seite nur ansehen (view, auch diffpage); keine Spezialseite
false – Generierte Spezialseite oder Aktivität am Artikel: Editieren, Änderungen, Vorschau
wgActionview – Seite nur ansehen oder Spezialseite; auch Versionsvergleich
edit – Seite öffnen zur Bearbeitung[6]
submit – Vorschau, Änderungen (, Speichern→view)[6]
history – Versionsgeschichte
historysubmit – Frühere Versionen (vergleichen)[6] bis Februar 2012
watch – Zur Beobachtungsliste hinzugefügt (Bestätigung)
raw – Rohtext (kaum Skript-Aktivität möglich)
query(nur API)
Ausführlich zu action unter Hilfe:URL-Parameter.
wgRestrictionEditSchutzstatus einer bearbeiteten Seite[7]
wgRestrictionMoveSchutzstatus einer Seite[7]
wgRedirectedFromWenn deklariert: Auf die aktuelle Seite wurde von einer anderen Seite weitergeleitet. Der Wert ist der Seitenname der Weiterleitung; siehe auch die URL.
debugtrueDebug-Modus aktiviert
Benutzer-Spezifisch
skinmonobook
wgUserNamePerfektesChaos
null für nicht angemeldete Benutzer, die kein Benutzerskript hätten – wohl aber Mediawiki:Common.js
wgUserLanguagede
wgUserGroups["autoreview", "editor"]
Webserver
wgServer//de.wikipedia.org[8][9]
wgArticlePath/wiki/$1[9][10]
wgScript/w/index.php[9]
wgScriptPath/w[9]
stylepath/w/skins
Lokalisierung[11]
wgDefaultDateFormat"dmy "
wgDigitTransformTable[ "", "" ]
wgMonthNames[ "", "Januar", … ]
wgMonthNamesShort[ "", "Jan.", … ]
wgSeparatorTransformTable[ ",Tab.", ".Tab," ]
Verschiedenes
wgAvailableSkins[ "Chick", "CologneBlue", … ]
wgFileExtensions[ "png", "gif", … ]
wgMainPageTitleWikipedia:Hauptseite
wgUrlProtocolshttps\:\/\/|ftp\:\/\/|irc\:\/\/| …
wgVersion"1.20wmf3"
Geo.IP
Geo.country
eigene IP
"DE" usw.; mutmaßliches Staatsgebiet des Benutzers
Geo könnte null oder kein Objekt sein

Einige der Werte sind aus Hilfe:Variablen bekannt. Eine vollständige Liste steht unter mw:Manual:Interface/JavaScript #mw.config.

Benutzerkonfiguration

Über mw.user hat man im JavaScript-Code Zugriff auf die Benutzerkonfiguration.

Für die aktuelle Sitzung kann bekannt sein:

  • mw.user.id()
  • mw.user.name (=wgUserName)
  • mw.user.sessionId()

Analog zu den Konfigurationsparametern sind mit MediaWiki 1.17 auch die Einstellungen aus dem Benutzerprofil verfügbar geworden.

Die Abfrage soll mittels
mw.user.options.get("Bezeichner") erfolgen.

Diese Werte werden allerdings im Februar 2011 erst nach dem Benutzer-Skript definiert, so dass sie sich nicht ohne weiteres auslesen lassen. Mit der Funktion .loader.using() des ResourceLoader muss die Bereitstellung von user.options abgewartet werden. DebugWikiUserOptions()[2] gibt eine Zusammenstellung der aktuellen Werte.

Ab MW 1.18 ist mit mw.user.tokens.get("editToken") der für automatisierte Bearbeitung per API erforderliche editToken verfügbar, ohne dass zuvor eine gesonderte Abfrage mit Ajax vorgenommen werden muss.

Liste möglicher Optionsbezeichner:

  • ccmeonemails
  • cols
  • contextchars
  • contextlines
  • date – Datumsformat
  • diffonly
  • disablemail
  • disablesuggest
  • editfont
  • editondblclick
  • editsection
  • editsectiononrightclick
  • editwidth
  • enotifminoredits
  • enotifrevealaddr
  • enotifusertalkpages
  • enotifwatchlistpages
  • extendwatchlist
  • externaldiff
  • externaleditor
  • fancysig
  • flaggedrevseditdiffs
  • flaggedrevssimpleui
  • flaggedrevsstable
  • flaggedrevsviewdiffs
  • forceeditsummary
  • gender
  • hideminor
  • hidepatrolled
  • highlightbroken
  • imagesize
  • justify
  • language
  • math
  • minordefault
  • newpageshidepatrolled
  • nickname
  • nocache
  • noconvertlink
  • norollbackdiff
  • numberheadings
  • previewonfirst
  • previewontop
  • quickbar
  • rcdays
  • rclimit
  • rememberpassword
  • rows
  • searchNs0 searchNs1searchNs9searchNs100
  • searchlimit
  • showhiddencats
  • showjumplinks
  • shownumberswatching
  • showtoc
  • showtoolbar
  • skin
  • stubthreshold
  • thumbsize
  • timecorrection
  • underline
  • usebetatoolbar
  • usebetatoolbar-cgd
  • useeditwarning
  • uselivepreview
  • usenewrc
  • variant
  • vector-collapsiblenav
  • vector-simplesearch
  • watchcreations
  • watchdefault
  • watchdeletion
  • watchlistdays
  • watchlisthideanons
  • watchlisthidebots
  • watchlisthideliu
  • watchlisthideminor
  • watchlisthideown
  • watchlisthidepatrolled
  • watchlisttoken
  • watchmoves
  • wllimit

Die Gadgets („Helferlein“) werden teilweise dynamisch durch die Module registriert; ist das Helferlein in den Benutzereinstellungen nicht aktiviert, so wäre dann die Optionsvariable undefiniert (undefined):

  • gadget-bkl-check
  • gadget-contribsrange
  • gadget-Doppel-s-Schreibung
  • gadget-editsection-left
  • gadget-editsection-right
  • gadget-Einleitung-bearbeiten
  • gadget-Extra-Editbuttons
  • gadget-HotCat
  • gadget-markAdmins
  • gadget-navigation-popups
  • gadget-PB
  • gadget-Personendaten
  • gadget-Pfeil-hoch
  • gadget-Rechtschreibpruefung
  • gadget-revisionCounter
  • gadget-revisionjumper
  • gadget-Rot-Gruen-Sehschwaeche
  • gadget-Screenreader-Optimierung
  • gadget-Suchfokus-Hauptseite
  • gadget-toolserver-integration
  • gadget-Vorlagenmeister
  • gadget-wikEd
  • gadget-Zeitzonenkonverter


Anmerkungen

  1. meta:Manual:Global object variables
  2. a b Benutzerskript (Benutzer:PerfektesChaos)
  3. Damit werden sie auch beim Speichern als Datei auf der Festplatte abgelegt. Verschickt man eine solche Datei per Mail an Dritte, erhalten diese übrigens auch den Watchlisttoken.
  4. Um abzufragen, in welcher Art von Projekt ein Skript zurzeit aktiv ist, sollte deshalb wgDBname analysiert werden.
  5. Unterstreichungsstriche und Umlaute, aber nicht encoded.
    Mit der JavaScript-Standardfunktion encodeURIComponent() lässt sich eine sichere Verwendung in URL erreichen:
    encodeURIComponent(wgPageName) – Anschließend müssen aber die : und / wiederhergestellt werden.
    Besser geht das mit mw.util.wikiUrlencode().
  6. a b c wgAction:
    • Mit MW 1.19 wurde der Wert historysubmit durch view ersetzt; in der URL heißt es action=diff.
    • Vielleicht mit MW 1.19, vielleicht irgendwann später wird der Wert submit entfallen; der Wert edit stünde dann nicht nur für das erstmalige Öffnen zur Bearbeitung, sondern auch für die Vorschauansicht und die Diffpage während der Bearbeitung. (Bug 25800, rev:108343)
      • Sinnvoll ist es, sich im Rahmen von Überarbeitungen auf diese Situation einzustellen. Mit mw.util.getParamValue("action") lässt sich der Unterschied über den URL-Parameter ermitteln, der bei Erstbearbeitung edit enthält, später dann submit.
  7. a b wgRestrictionEdit wird erst gesetzt beim Versuch, die Seite zu bearbeiten.
    wgRestrictionEdit und wgRestrictionMove sind jeweils ein Array mit der Bezeichnung einschränkender Benutzerrechte. Ist das Array leer (! .length), bestehen keine Einschränkungen.Typische Elemente sind:
    • "autoconfirmed" – Halbsperrung
    • "sysop" – Vollsperrung
    • "" oder nullMöglicher Überrest einer entfernten Sperrung (siehe gerrit:7821 – die Möglichkeit sollte sicherheitshalber auch in JS abgefangen werden)
    Sie können gegen Elemente von wgUserGroups abgeglichen werden.
  8. Wert von wgServer ab Anfang Oktober 2011
    URLwgServer
    http://de.wikipedia.org///de.wikipedia.org
    https://de.wikipedia.org/
    https://secure.wikimedia.org/https://secure.wikimedia.org

    Um abzufragen, in welchem Projekt ein Skript zurzeit aktiv ist, sollte jedoch nicht die gelegentlich wechselnde URL benutzt werden, sondern der wesentlich stabilere wgDBname.

    Das Protokoll ist nicht mehr über wgServer abzufragen; dies ergibt sich nunmehr über window.location.protocol – wenn tatsächlich einmal erforderlich.

    Für API-Abrufe muss die URL mit mw.config.get("wgServer")+mw.util.wikiScript("api") gebildet werden. Es ergibt sich ein Pfad innerhalb derselben Domain, was für asynchrone Abfragen erforderlich ist.

    Innerhalb einer Seite kann das Voranstellen von wgServer aber meist entfallen, weil dann ein Seiten-relativer Pfad verwendet wird.

  9. a b c d
    Werte bis Ende September 2011
    Identifiziererhttphttps
    wgServerhttp://de.wikipedia.orghttps://secure.wikimedia.org
    wgArticlePath/wiki/$1/wikipedia/de/wiki/$1
    wgScript/w/index.php/wikipedia/de/w/index.php
    wgScriptPath/w/wikipedia/de/w
  10. Den URL-Pfad zu einer bestimmten Seite erhält man über mw.util.wikiGetlink().
  11. Siehe dazu auch: mw.language.