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:
- CSS, welche eher dekorative Eigenschaften beeinflussen
- JavaScript, das innerhalb des HTML-Dokuments aktive Programme ausführt
- Die Seite MediaWiki:Gadgets-definition – Spezifikation der „Gadgets“
- JSON-Spezifikationen
- 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:
- Weltweit (WMF)
- Lokales Projekt (deutschsprachige Wikipedia) – Ressourcen liegen im MediaWiki-Namensraum
- Benutzerdefiniert (global) – Ressourcen liegen als Benutzerunterseiten im Meta-Projekt
- Benutzerdefiniert (lokal) – Ressourcen liegen als Benutzerunterseiten mit standardisierten Namen vor
Auf diesen Stufen können zwei Definitionen möglich sein (in dieser Reihenfolge):
- „Common“ – gemeinsam für alle Skins (Desktop-Darstellung)
- „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
– Bildschirmprint
– 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 Grundelementeresources/src/mediawiki.skinning/content.css– Allgemeine Wiki-Elemente wie Inhaltsverzeichnis, Bilder, Bearbeitungsseite, Login-Formular und mehrresources/src/mediawiki.legacy/commonPrint.css– Druckversion einer Seite- Traditionelle Definitionen, die zukünftig etwas reorganisiert werden sollen:
- Modul (RL):
mediawiki.legacy.shared
- resources/src/mediawiki.skinning/legacy.less
resources/src/mediawiki.legacy/shared.cssresources/src/mediawiki.legacy/oldshared.css
- Modul (RL):
- Einzelne Desktop-Skins
- Vector (Standard-Vorgabe)
mediawiki/skins/Vector/screen.lessmediawiki/skins/Vector/screen-hd.less– high definition displays- Reorganisation wegen „Legacy2010“ und „Neuem Vector 2020“.
- MonoBook
- Modern
- resources/main.css
- resources/print.css – Druckversion
- Timeless
- Vector (Standard-Vorgabe)
- Mobilgeräte
- siehe dort
- Extensions
- Erweiterungen und besondere Funktionen bringen ihre jeweiligen Module und CSS erforderlichenfalls selbst mit, sofern sie installiert und aktiviert sind.
dewiki
- Alle Desktop-Seiten:
- MediaWiki:Common.css (Auslaufmodell)
- MediaWiki:Print.css – Druckversion
- Desktop-Skins:
- Mobilgeräte:
- MediaWiki:Mobile.css (bis Anfang 2024)
- MediaWiki:Minerva.css – seit Ende März 2024
- Alle Skins:
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]
- meta:global.css
- common.css
- Skin-spezifisch eine von: vector.css, vector-2022.css, monobook.css, modern.css, timeless.css
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:
- MediaWiki:Group-sysop.css – nur Administratoren
- MediaWiki:Group-editor.css – alle Sichter
- MediaWiki:Group-user.css – alle angemeldeten Benutzer
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:
- Weltweite Definitionen zu Extensionen einschließlich Skin (könnten auch noch dynamisch eingefügt werden).
- 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.
- Projektweite Standard-Definition einschließlich Skin
- Standard-Definition des Benutzers
- Definitionen für die Benutzer-Gruppe (unlogisch; kann nicht mehr vom Benutzer übersteuert werden)
- Zusätzliche Stile; etwa für Gadgets
- Einfügungen mittels addCSS() durch Benutzer oder Skripte.
- 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
- Common – Gemeinsame Grundlage aller Desktop-Skins
- MediaWiki:Common.js (Auslaufmodell)
- MediaWiki:GeoHack.js – Link auf GeoHack einbetten
- Besondere Situationen:
- siehe Gadgets
- Skins:
- Mobile Geräte:
- MediaWiki:Mobile.js (bis Anfang 2024)
- MediaWiki:Minerva.js – seit Ende März 2024
- Alle Skins:
gruppenspezifisch
Sofern Benutzer einer Gruppe angehören, können für alle Mitglieder der Gruppe Skripte vereinbart worden sein:
- MediaWiki:Group-sysop.js – nur Administratoren
- MediaWiki:Group-editor.js – alle Sichter
- MediaWiki:Group-user.js – alle angemeldeten Benutzer
(siehe auch analoges CSS)
benutzerdefiniert
Ohne weiteres Zutun werden die nachstehenden Skripte (für Desktop-Darstellung) geladen, sofern sie vorhanden sind:[2]
- meta:global.js
- common.js
- Skin-spezifisch eine von: vector.js, vector-2022.js, monobook.js, modern.js, timeless.js
Bei der Mobil-Darstellung tritt an die Stelle von common und skin:
Einzelheiten siehe Skin/Einstellungen.
Bildchen
- resources/assets – Icons usw., die direkt in Software benutzt werden
- Vector
- MonoBook
- Modern
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:
- MediaWiki:Gadgets-definition – Spezifikation der Gadgets
- Skin/Gadgets – weitere Einzelheiten
Weitere Informationen
- Skin/Tutorial
- MediaWiki – Zentrale Software und Programmierung
Anmerkungen
- ↑ Liste aller Repositorien
- ↑ a b Die nachstehenden Verlinkungen sind nur für angemeldete Leser sinnvoll.