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:
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.
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
– österreichisch de-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:
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.
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.
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:
Project:Über_{{SITENAME}}
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)
Hier werden im MediaWiki-Namensraum Anpassungen abgelegt speziell nur für die deutschsprachige Wikipedia; insbesondere Seitennamen, projektspezifische Besonderheiten.
Es gibt mehrere Möglichkeiten, alle Benutzer im Projekt von wichtigen aktuellen Angelegenheiten zu benachrichtigen.
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.
{{int:Bezeichner}}
auf Systemnachrichten verweisen.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.
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:
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:
Auf diesen Stufen konnen zwei Definitionen möglich sein (in dieser Reihenfolge):
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-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
– Druckversionmediawiki.legacy.shared
Zusammengefasst in automatisch generierten Modulen; unterteilt nach skin und media: site
Siehe auch: Projektweite Selektoren
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.
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.
Damit das kaskadierende Prinzip des CSS funktioniert, ist die physische Reihenfolge ausschlaggebend. Sie ist realisiert wie folgt:
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 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.
Insgesamt sind mehrere Hundert Paketchen (Module) verfügbar; siehe dazu den ResourceLoader.
Sofern Benutzer einer Gruppe angehören, können für alle Mitglieder der Gruppe Skripte vereinbart worden sein:
(siehe auch analoges CSS)
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.
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.
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 |