Wikipedia:Technik/Skin/MediaWiki/Ressourcen

Skin: MediaWiki-Ressourcen


Diese Projektseite beschreibt im technischen Detail die im MediaWiki-Namensraum und anderswo hinterlegten Ressourcen, welche in die generierten HTML-Dokumente für alle Benutzer oder ein bestimmtes Benutzerkonto eingebunden werden können.

Einteilung und Berechtigungen

Es gibt folgende Formate:

  1. CSS, welche eher dekorative Eigenschaften beeinflussen
  2. JavaScript, das innerhalb des HTML-Dokuments aktive Programme ausführt
  3. Die Seite MediaWiki:Gadgets-definition – Spezifikation der „Gadgets“
  4. JSON-Spezifikationen
  5. Systemnachrichten – kleine Textbausteine, welche hier die kontospezifischen Gadget-Einstellungen konfigurieren; aber außerhalb viele weitere Präsentationen steuern.

Alle diese Seiten können nur von dazu besonders berechtigten Benutzern verändert werden. Das sind:

  • für die ersten drei aufgezählten nur „Benutzeroberflächenadministratoren“ (BOA)
    • oder aber als Unterseiten eines Benutzerkontos auch genau dieses Benutzerkonto selbst.
  • die vierte und fünfte Art durch alle Administratoren
    • oder aber als JSON-Unterseite eines Benutzerkontos auch genau dieses Benutzerkonto selbst.

Aus Sicherheitsgründen dürfen alle genannten Seiten im Notfall sofort mit „einfachen“ Administratorrechten gelöscht, nicht aber wiederhergestellt werden, wenn dafür die Eigenschaft „Benutzeroberflächenadministratoren“ erforderlich ist.

Vor allem JavaScript, aber in kleinerem Umfang auch CSS birgt Missbrauchspotenzial, mit dem sich die Anonymität von Benutzerkonten brechen lässt, ebenso die Lesegewohnheiten und Interessen im Publikum ausspionieren und Internetzugängen zuordnen lassen. Deshalb ist mit den BOA eine besondere Verantwortung und ein besonderer Vertrauensstatus erforderlich.

Anlaufstelle für Anfragen, die nur von Benutzeroberflächenadministratoren umgesetzt werden können, ist „Änderungen“. Bis auf gravierende Notfälle sollen alle planmäßigen Änderungen dort vorgestellt und angemessen erörtert werden.

Als um 2004 die CSS- und JavaScript-Ressourcen eingeführt wurden, hatte man dienigen für das Gesamtprojekt pragmatisch im MediaWiki-Namensraum abgelegt, weil dort nur von Administratoren geändert werden konnte. Mittlerweile sind die Sicherheitsanforderungen gestiegen, das Projekt bekam globalen Einfluss, und Bedrohungen vor allem durch autoritäte Regierungen oder möglicherweise aggressive kommerzielle Interessen nahmen zu. Um sie besser kontrollieren zu können, sollten die Projekt-Ressourcen perspektivisch als Gadgets (Helferlein) in einen eigenen Namensraum transferiert werden; davon nahm man Ende 2023 wieder Abstand.

Ressourcen

Nachstehend geht es konkret um:

  • 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
  3. Benutzerdefiniert (global) – Ressourcen liegen als Benutzerunterseiten im Meta-Projekt
  4. Benutzerdefiniert (lokal) – Ressourcen liegen als Benutzerunterseiten mit standardisierten Namen vor

Auf diesen Stufen können 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]

CSS

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

weltweit

  • Common – Gemeinsame Grundlage aller Desktop-Skins
    • Alle: resources/src
    • resources/src/mediawiki.skinning/elements.css – Allgemeine HTML-Elemente wie Links, Aufzählung, typografische Grundelemente
    • resources/src/mediawiki.skinning/content.css – Allgemeine Wiki-Elemente wie Inhaltsverzeichnis, Bilder, Bearbeitungsseite, Login-Formular und mehr
    • resources/src/mediawiki.legacy/commonPrint.css – Druckversion einer Seite
    • Traditionelle Definitionen, die zukünftig etwas reorganisiert werden sollen:
  • Einzelne Desktop-Skins
  • Mobilgeräte
  • Extensions
    • Erweiterungen und besondere Funktionen bringen ihre jeweiligen Module und CSS erforderlichenfalls selbst mit, sofern sie installiert und aktiviert sind.

dewiki

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

Siehe auch: Projektweite Selektoren

benutzerdefiniert

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.

gruppenspezifisch

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.

Reihenfolge

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.

JavaScript

JavaScript wird zu vielen Zwecken 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.

weltweit

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

dewiki

gruppenspezifisch

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

(siehe auch analoges CSS)

benutzerdefiniert

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.

Bildchen

Gadgets (Helferlein)

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:

Weitere Informationen

Anmerkungen

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