Wikipedia:Technik/Skin/MediaWiki

Skin: MediaWiki


Diese Projektseite beschreibt im technischen Detail die im MediaWiki-Namensraum und anderswo gespeicherten Informationen, mittels derer Wiki-Projekte für alle Benutzer konfiguriert und angepasst werden können.

Alle Inhaltsseiten können nur von dazu besonders berechtigten Benutzern verändert werden.

Es gibt folgende Grundtypen:

  1. Systemnachrichten – kleine Textbausteine
  2. RessourcenCSS und JavaScript, das in alle Seiten eingebunden wird
  3. Gadgets (Helferlein) – Ressourcen, die benutzerkonfigurierbar verwendet werden oder auch nicht.

Die Seiten der ersten Gruppe können nur von Administratoren oder „Benutzeroberflächenadministratoren“ verändert werden, die programmtechnisch wirksamen „Ressourcen“ nur von Benutzeroberflächenadministratoren. Anlaufstelle für Anfragen, die nur von Benutzeroberflächenadministratoren umgesetzt werden können, ist Wikipedia:Technik/Skin/MediaWiki/Änderungen.

SystemnachrichtenBearbeiten

Alle ins Deutsche zu übersetzenden Text-Fragmente, die in einer Seite erscheinen, können über Einträge im MediaWiki-Namensraum verändert werden.

Die Baustein-Wirkung auf die aktuelle Seite lässt sich herausfinden, indem man den URL-Parameter ?uselang=qqx (bzw. &uselang=qqx bei /w/index.php? statt /wiki/) an die momentane URL anhängt.

Es werden dann jeweils in Klammern die Identifizierer (Seiten-Namen) angezeigt.

Die Sprachcodes richten sich nach ISO 639. Relevant sind hier:

  • de – Standard
  • de-at – österreichisch
  • de-ch – schweizerisch
  • de-formal – mit Anrede „Sie“

Innerhalb eines Wikitextes lässt sich mit {{int:Bezeichner}} auf Systemnachrichten verweisen. Diese werden im Unterschied zu Vorlagen-Einbindungen immer in der aktuellen Benutzersprache angezeigt:

Die Parserfunktion {{int:Bezeichner|Param1|Param2}} kann auch Parameter übergeben, die eventuell im Nachrichtentext vorhandenen Platzhaltern $1 $2 etc. zugeordnet werden. Weitere Modifikationen sind mit {{plural:}} und {{gender:}} möglich.

MediaWiki: Localisation – Freie Wikisoftware (englisch)

SpeicherorteBearbeiten

Zu vielen Systemnachrichten gibt es eine weltweite (englischsprachige) Vorgabe. Diese kann für alle deutschsprachigen Projekte übersetzt werden und außerdem speziell an Bedürfnisse der deutschsprachigen Wikipedia angepasst werden.

translatewikiBearbeiten

Für Textbausteine, die in allen deutschsprachigen Wiki-Projekten gleichermaßen sinnvoll sind, ist der Mechanismus des translatewiki: zu benutzen. Damit wird ein einheitliches Erscheinungsbild aller deutschsprachigen Wikis gewährleistet und Mehrfacharbeit eingespart.

In der deutschsprachigen Wikipedia (dewiki) wird dann eine leere Seite angezeigt; dazu der aus translatewiki übernommene Text.
Beispiel:

Bei gleichem Bezeichner verdeckt die Seite in dewiki den Eintrag im translatewiki.
Beispiel:

translatewiki: SearchTranslations – ein Eingabeformular

Mit dem Sprachcode qqq lässt sich eine Kurzbeschreibung zu einem Baustein abrufen:

Diese Übersetzungen wirken nach gelegentlicher Aktualisierung zurück auf die Programmierung des Servers: languages/messages/MessagesDe.php bzw. languages/messages/MessagesDe_at.php … (doc)

dewikiBearbeiten

Hier werden im MediaWiki-Namensraum Anpassungen abgelegt speziell nur für die deutschsprachige Wikipedia; insbesondere Seitennamen, projektspezifische Besonderheiten.

Spezielle NachrichtenBearbeiten

AktuellesBearbeiten

Es gibt mehrere Möglichkeiten, alle Benutzer im Projekt von wichtigen aktuellen Angelegenheiten zu benachrichtigen.

BearbeitungshinweiseBearbeiten

VerwendungBearbeiten

Abhängig davon, an welcher Stelle im Prozess der Seitengenerierung eine Systemnachricht “interface message” auftritt oder welche besonderen Vorkehrungen getroffen wurden, können einige Systemnachrichten Syntax-Elemente enthalten wie Vorlagen-Einbindungen, Wikilinks, womöglich blockierte HTML-Elemente. Das lässt sich am einfachsten durch Ausprobieren herausfinden.

  • Systemnachrichten als Textbausteine werden vielfach von der zentralen Wiki-Software (auch den Skins) benutzt.
  • Innerhalb eines Wikitextes lässt sich mit {{int:Bezeichner}} auf Systemnachrichten verweisen.
  • In Lua, das auf dem Server ausgewertet wird, können sie auch programmtechnisch eingesetzt werden.
  • In JavaScript können unter bestimmten Voraussetzungen (das Laden der konkreten Text-Elemente muss mit der HTML-Seite angefordert werden) Systemnachrichten in der angezeigten Seite dynamisch benutzt werden.

Systemnachrichten sind teilweise dafür vorgesehen, bei der Anwendung noch modifiziert zu werden. Sie können dann Platzhalter $1 mit aktuellen Zeichenketten füllen, Pluralformen anbieten oder geschlechtsspezifisch variiert werden.

RessourcenBearbeiten

Weil im MediaWiki-Namensraum nur von Administratoren geändert werden konnte, werden über einzelne Textbausteine hinaus auch komplexere Zusammenstellungen (ähnlich „Dateien“) abgelegt. Mittlerweile ist Zugehörigkeit zu den Oberflächenadministratoren für Änderungen erforderlich.

Es gibt im Wesentlichen zwei Typen von Ressourcen:

  • CSS – optische Darstellung des Seiteninhalts
  • JavaScript (JS) – aktive Funktionen

Sie werden in einer bestimmten Kaskade wirksam. Insbesondere bei CSS überschreibt dabei jeweils die darauffolgende Definition die vorangehende. Auch mit JavaScript kann es sinnvoll sein, vorangegangene Werte zu überschreiben. Die grundsätzliche Abfolge ist:

  1. Weltweit (WMF)
  2. Lokales Projekt (deutschsprachige Wikipedia) – Ressourcen liegen im MediaWiki-Namensraum
    • Langfristig ist vorgesehen, hierfür einen neu eingerichteten Gadget-Namensraum zu benutzen.
  3. Benutzerdefiniert (global) – Ressourcen liegen als Benutzerunterseiten im Meta-Projekt
  4. Benutzerdefiniert (lokal) – Ressourcen liegen als Benutzerunterseiten mit standardisierten Namen vor

Auf diesen Stufen konnen zwei Definitionen möglich sein (in dieser Reihenfolge):

  1. „Common“ – gemeinsam für alle Skins (Desktop-Darstellung)
  2. „Skin“ – spezifisch für eine bestimmte Skin.

Alternativ dazu gibt es eine eigene Mobil-Darstellung.

Zum Laden aller dieser Ressourcen (weltweit, lokal, Standard-benutzerdefiniert) wird der ResourceLoader benutzt, der sie komprimiert und paketweise abruft. Gelagert werden alle weltweiten Ressourcen zurzeit im Phabricator-System „Diffusion“.[1]

CSSBearbeiten

CSS-Ressourcen definieren die Darstellungsform (Farben, Schriften, Schriftgröße, Layout). Näheres siehe Skin/CSS.

Die Ressourcen können für bestimmte Medien-Typen eingeschränkt sein. Die gängigen sind:

  • screen – Bildschirm
  • print – Druckversion

weltweitBearbeiten

dewikiBearbeiten

Zusammengefasst in automatisch generierten Modulen; unterteilt nach skin und media: site

Siehe auch: Projektweite Selektoren

benutzerdefiniertBearbeiten

Ohne weiteres Zutun werden die nachstehenden Seiten (für Desktop-Darstellung) geladen, sofern sie vorhanden sind:[2]

Bei der Mobil-Darstellung tritt an die Stelle von common und skin:

Einzelheiten siehe Skin/Einstellungen.

gruppenspezifischBearbeiten

Sofern Benutzer einer Gruppe angehören, können für alle Mitglieder der Gruppe Stile vereinbart worden sein:

Zusammengefasst werden sie in einem dynamisch generierten Modul: user.groups (siehe auch analoges JS). Die anonymen Benutzer gehören nur zur Gruppe * – diese ist aber nicht über eine solche Konfigurationsseite erreichbar.

ReihenfolgeBearbeiten

Damit das kaskadierende Prinzip des CSS funktioniert, ist die physische Reihenfolge ausschlaggebend. Sie ist realisiert wie folgt:

  1. Weltweite Definitionen zu Extensionen einschließlich Skin (könnten auch noch dynamisch eingefügt werden).
  2. ResourceLoaderDynamicStyles (dummy)
    • Damit zu einem späteren Zeitpunkt nachgeladene weltweite CSS-Ressourcen nicht die Benutzer- und Projektmodifikationen unwirksam machen, werden sie vor dieser Stelle eingefügt.
  3. Projektweite Standard-Definition einschließlich Skin
  4. Standard-Definition des Benutzers
  5. Definitionen für die Benutzer-Gruppe (unlogisch; kann nicht mehr vom Benutzer übersteuert werden)
  6. Zusätzliche Stile; etwa für Gadgets
  7. Einfügungen mittels addCSS() durch Benutzer oder Skripte.
  8. TemplateStyles (unmittelbar vor den Elementen des Inhalts spezifiziert, nicht von globalen Verknüpfungen des Dokuments zu schlagen)

Während die Auswirkungen von CSS statisch von der physischen Reihenfolge im HTML-Dokument abhängen, hat JavaScript zahlreiche Möglichkeiten, trotz geladenem Skript die tatsächliche Aktion dynamisch von vielfältigen Bedingungen abhängig zu machen.

JavaScriptBearbeiten

JavaScript wird vielfältig eingesetzt. Es bewirkt zahllose dynamische Effekte, und es hängt stark von der momentanen Situation und der Art der Seite ab, welcher Quellcode woher mit der Seite geladen wird. Darin unterscheidet es sich vom noch halbwegs überschaubaren CSS. Hinzu kommen Bibliotheken, die nicht direkt wirken, sondern im Hintergrund Funktionen bereitstellen. Auch die installierten Erweiterungen bringen oft ihre eigenen Ressourcen mit.

weltweitBearbeiten

Insgesamt sind mehrere Hundert Paketchen (Module) verfügbar; siehe dazu den ResourceLoader.

dewikiBearbeiten

gruppenspezifischBearbeiten

Sofern Benutzer einer Gruppe angehören, können für alle Mitglieder der Gruppe Skripte vereinbart worden sein:

(siehe auch analoges CSS)

benutzerdefiniertBearbeiten

Ohne weiteres Zutun werden die nachstehenden Skripte (für Desktop-Darstellung) geladen, sofern sie vorhanden sind:[2]

Bei der Mobil-Darstellung tritt an die Stelle von common und skin:

Einzelheiten siehe Skin/Einstellungen.

BildchenBearbeiten

SonstigeBearbeiten

Suchmaschinenindex:

Gadgets (Helferlein)Bearbeiten

Gadgets sind ein Sonderfall der Ressourcen. Gadgets können von angemeldeten Benutzern individuell zu- oder gelegentlich abgewählt werden.

Es gibt in Gadgets die Möglichkeit, JavaScript einzubinden (der häufigste Fall) und dies auch mit CSS zu kombinieren oder ein reines CSS-Gadget zu definieren.

Hauptsächlich interessant sind:

Mehr aus der Not heraus geboren – der Namensraum war nur von Administratoren veränderbar – wurden die Gadgets im MediaWiki-Namensraum gespeichert und erwartet. Mittlerweile gibt es speziell für JavaScript und CSS des Projekts einen eigenen Namensraum „Gadgets“, in den langfristig aller Code verlagert werden soll, der nicht reiner Textbaustein ist.

Skin-Programmierung in PHPBearbeiten

Rein informativ die Programmierung der Skins in PHP; sie generiert das Grundgerüst der Ausgabeseite in HTML.

Weitere InformationenBearbeiten

AnmerkungenBearbeiten

  1. Liste aller Repositorien
  2. a b Die nachstehenden Verlinkungen sind nur für angemeldete Leser sinnvoll.