MediaWiki

Aus SDQ-Wiki

Dieses Wiki verwendet die Software MediaWiki. Dazu wurde ein Skin erstellt, das auf das Corporate Design des KIT angepasst ist. Weiterhin ist es möglich, sich mit einem KIT-Benutzerkonto anzumelden. Auf dieser Seite beschreiben wir, wie man das Skin und den Login einrichtet. Ansprechperson für diese Erweiterungen ist Erik Burger.

Skin im KIT-Design

Basierend auf dem populären Vector-Skin von MediaWiki wurde das Skin, das auch in diesem Wiki verwendet wird, auf das Corporate Design des KIT angepasst. Das Skin kann hier heruntergeladen werden: https://gitlab.kit.edu/kit/kastel/sdq/code/mediawiki/sdq-vector

Derzeit werden MediaWiki 1.31, 1.35 (LTS) und 1.39 (LTS) unterstützt. Nur die aktuelle LTS-Version wird gepflegt. (Mediawiki 1.43 ist in Arbeit.)

Installation

wfLoadSkin( 'SDQ-Vector' );
$wgDefaultSkin = "vector-2022"; 
wgVectorResponsive=true;
Achtung: Das Skin kann nicht gleichzeitig mit dem Vector-Skin aktiviert sein. Das Vector-Skin kann zwar noch in /skins liegen, der Aufruf wfLoadSkin( 'Vector' ); muss jedoch entfernt oder auskommentiert werden.
  • Das Skin ist bis Version 1.35 nur für den klassischen Stil (Legacy Mode) angepasst, ab Version 1.39 für den modernen Stil (Vector 2022) angepasst.

Anpassungen (≥ 1.39)

Die folgenden Anpassungen können z.B. in MediaWiki:Common.css eingefügt werden.

Das moderne Vector-Layout von 2022 ist standardmäßig in der Breite beschränkt. Um die Vorlage auf Vollbreite umzustellen:

.mw-page-container, .mw-workspace-container, .mw-content-container, #mw-sidebar-checkbox:not(:checked) ~ .vector-sidebar-container-no-toc ~ .mw-content-container, .vector-sticky-header, .mw-article-toolbar-container {
    max-width: unset;
}

Der Banner oben kann durch folgendes Schnipsel angepasstwerden, z.B. mit Motiven aus der KIT-Bildwelt:

.kit-banner {
    background-image: url(images/KIT-Bildwelt-Faecher_02Ebene_Mobilitaet_1920x140.jpg);
    background-color: #1aa0c3;
}

Anmeldung per KIT-Konto

Um sich per KIT-Konto am Wiki anmelden zu können, sind folgende Schritte nötig:

  • Beim Dienst OpenID Connect des SCC (Matthias Bonn) anmelden.
  • Im Wiki die Erweiterungen PluggableAuth und OpenID Connect aus dem Master-Branch (Version ≥ 6.0) installieren.
  • In der LocalSettings.php folgendes einfügen (###CLIENTID### usw. durch die tatsächlichen Werte ersetzen):
# OpenID Authentification
wfLoadExtension( 'PluggableAuth' );
wfLoadExtension( 'OpenIDConnect' );

$wgPluggableAuth_Config[] = [
        'plugin' => 'OpenIDConnect',
        'buttonLabelMessage' => 'login-message-kit', 
        'data' => [
                'providerURL' => 'https://oidc.scc.kit.edu/auth/realms/kit', # oder https://bwidm.scc.kit.edu/oidc/realms/bwidm für föderierten Login
                'clientID' => '###CLIENTID###',
                'clientsecret' => '###CLIENTSECRET###',
                'scope' => ['openid', 'profile', 'email'],
                'name' => 'KIT-Konto',
                'icon' => '###URL_LOGO###'
        ]
];

$wgGroupPermissions['*']['autocreateaccount'] = true;
$wgPluggableAuth_EnableAutoLogin = true; # nur für private Wikis; Benutzer werden automatisch auf Anmeldeseite geleitet, falls sie nicht angemeldet sind
$wgPluggableAuth_EnableLocalLogin = true; # weiterhin lokale Benutzerkonten erlauben

$wgOpenIDConnect_UseRealNameAsUserName = true;
$wgOpenIDConnect_UseEmailNameAsUserName = true;
$wgOpenIDConnect_MigrateUsersByUserName = true;

# In Benutzernamen das '@'-Symbol und Doppelpunkte erlauben
$wgInvalidUsernameCharacters = '';

# CSS auf Login-Seite erlauben, um z.B. den KIT-Anmeldelink anders zu färben.
$wgAllowSiteCSSOnRestrictedPages = true;

Login-Knopf/-Text

  • Auf der Anmeldeseite von Mediawiki sollte man einen Text einfügen, damit Benutzer wissen, dass sie zuerst den Knopf drücken müssen, bevor sie die Benutzerdaten eingeben. Dieser Text kann auf MediaWiki:Loginprompt verändert werden.
  • Um den Text des Login-Knopfs zu erstellen, bitte die Seiten MediaWiki:Login-message-kit oder MediaWiki:Login-message-kit/de anlegen und bearbeiten.
  • Zum Anmelden müssen die Benutzer dann auf den Knopf Mit KIT-Konto anmelden klicken, ohne zunächst Benutzerdaten einzugeben.
    • Die Benutzer werden dann auf die Shibboleth-Seite des SCC weitergeleitet.
    • Um dies auf der Anmeldeseite anzuzeigen, kann der Text MediaWiki:Loginprompt des Wikis geändert werden.
    • Anmeldung mit lokalen Benutzerkonten des Wikis ist weiterhin möglich.
    • Beispiel: Anmeldeseite dieses Wikis

Weiterhin wurde die MediaWiki:Common.css so angepasst, dass der KIT-Login-Knopf in KIT-Grün gefärbt ist und den KIT-Fächer anzeigt.

button#mw-input-pluggableauthlogin0 {
  background-color: #00876C;
  border-color: transparent;
  color: white;
  background-image: url(images/kit-faecher-icon-white.svg);
  background-size: 1.2em;
  background-repeat: no-repeat;
  background-position-y: center;
  background-position-x: .3em;
  padding-left: calc(12px + 1.2em);
}

button#mw-input-pluggableauthlogin0:hover {
background-color: #007755;
border-color: #007755;
}

Benutzergruppen

  • Mit der o.g. Konfiguration wird für jeden Benutzer, der sich mit KIT-Konto anmeldet, ein Benutzer im Wiki angelegt
  • Dieser Benutzer ist in der Gruppe user und hat die entsprechenden Rechte
  • Es empfiehlt sich daher, der Gruppe user minimale Rechte zu erteilen und weitere Gruppen zu erstellen (z.B. mitarbeiter, studierende).
  • Die Benutzer müssen sich dann einmalig per KIT-Konto anmelden, und ein Wiki-Admin/-Bürokrat muss sie über Spezial:Benutzerrechte in die o.g. Gruppen hinzufügen

Klartextnamen für Benutzerkonten

  • Standardmäßig werden die Benutzer mit ihrem SCC-Kürzel ab1234 angezeigt.
  • Über die Erweiterung Realnames können diese in der UI durch den echten Namen ersetzt werden
  • Wir verwenden $wgRealnamesLinkStyle = "replace";

Semantic Mediawiki

Fehlende Einträge bei Queries mit Property Chains

Semantic Mediawiki bietet die Möglichkeit, Ketten von Eigenschaften in Anfragen zu verwenden. Dies führt jedoch in der Standardkonfiguration von Mediawiki dazu, dass Einträge in Ergebnistabellen fehlen können. Um korrekte Ergebnisse zu erhalten, muss man das folgende, experimentelle Feature abschalten:

$smwgExperimentalFeatures = $smwgExperimentalFeatures & ~SMW_QUERYRESULT_PREFETCH;

Quelle: [1]