Wikiup:Technik/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:
- Systemnachrichten – kleine Textbausteine
- Ressourcen – CSS und JavaScript, das in alle Seiten eingebunden wird
- 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.
Systemnachrichten
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
– Standardde-at
– österreichischde-ch
– schweizerischde-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:
- Benutzer-Einstellung (Registerkarte „Benutzerdaten“)
- oder mit URL-Parameter
uselang=
an die URL angehängt.
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.
Speicherorte
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.
translatewiki
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 –
Project:Über_{{SITENAME}}
- MediaWiki:aboutpage –
Wikipedia:Über Wikipedia
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)
dewiki
Hier werden im MediaWiki-Namensraum Anpassungen abgelegt speziell nur für die deutschsprachige Wikipedia; insbesondere Seitennamen, projektspezifische Besonderheiten.
- Beispiel: MediaWiki:Abusefilter-warning-fehlende-unterschrift
- Spezial:Alle Seiten/MediaWiki: – alle lokalen Systemnachrichten
- Spezial:MediaWiki-Systemnachrichten – große Tabelle mit Bearbeitungs-Links und dem aktuellen Text
Spezielle Nachrichten
Aktuelles
Es gibt mehrere Möglichkeiten, alle Benutzer im Projekt von wichtigen aktuellen Angelegenheiten zu benachrichtigen.
- Sitenotice
- Wird allen Benutzern angezeigt, auch mit deaktiviertem JavaScript.
- MediaWiki:Watchlist-summary
- Nachricht, die angemeldeten Benutzern im Kopf der Beobachtungsliste angezeigt wird
- Nur mit aktiviertem JavaScript sichtbar.
- MediaWiki:Common.js/watchlist.js – nur auf der deutschsprachigen Wikipedia).
- CentralNotice – zu weltweit veranlassten Nachrichten
Bearbeitungshinweise
Verwendung
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.
Ressourcen
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 Benutzeroberflä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:
- Weltweit (WMF)
- Lokales Projekt (deutschsprachige Wikipedia) – Ressourcen liegen im MediaWiki-Namensraum
- Langfristig ist vorgesehen, hierfür einen neu eingerichteten Gadget-Namensraum zu benutzen.
- Benutzerdefiniert (global) – Ressourcen liegen als Benutzerunterseiten im Meta-Projekt
- Benutzerdefiniert (lokal) – Ressourcen liegen als Benutzerunterseiten mit standardisierten Namen vor
Auf diesen Stufen konnen 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/mediawiki.skinning
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
- MediaWiki:Print.css – Druckversion
- Desktop-Skins:
- Mobilgeräte
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, 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
- 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 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.
weltweit
Insgesamt sind mehrere Hundert Paketchen (Module) verfügbar; siehe dazu den ResourceLoader.
dewiki
- Common – Gemeinsame Grundlage aller Desktop-Skins
- MediaWiki:Common.js
- Unterseiten dazu
- MediaWiki:GeoHack.js – Link auf GeoHack einbetten
- Besondere Situationen:
- → Gadgets
- Skins:
- Mobile Geräte:
gruppenspezifisch
Sofern Benutzer einer Gruppe angehören, können für alle Mitglieder der Gruppe Skripte vereinbart worden sein:
- MediaWiki:Group-sysop.js
- 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, 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
Sonstige
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 und Vorschläge
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 PHP
Rein informativ die Programmierung der Skins in PHP; sie generiert das Grundgerüst der Ausgabeseite in HTML.
Skin | Repositorium | Callsign | Code-Suche | Workboard |
---|---|---|---|---|
Vector | mediawiki/skins/Vector/* | SVEC | Codes | #Vector |
MonoBook | mediawiki/skins/MonoBook/* | SMNB | Codes | #MonoBook |
Modern | mediawiki/skins/Modern/* | SMOD | Codes | #Modern |
Timeless | mediawiki/skins/Timeless/* | STIM | Codes | #Timeless |
Minerva | mediawiki/skins/Minerva/* | SMIN | Codes | #MinervaNeue |
Alle einzelnen | SKIN/* | Codes | ||
Core Basis- Programmschema |
includes/skins | MW | Codes | #mediawiki-interface |
Weitere Informationen
- Skin/Tutorial
- doc.wikimedia.org – alle deutschsprachigen Standard-Systemnachrichten
- meta:Help:System message (englisch)
- noc.wikimedia.org/conf – alle Konfigurationsdateien des Servers
- includes/Message.php – Programmierung zu Systemnachrichten
- MediaWiki – Zentrale Software und Programmierung
Anmerkungen
- ↑ Liste aller Repositorien
- ↑ a b Die nachstehenden Verlinkungen sind nur für angemeldete Leser sinnvoll.