Dieser Skin wurde dem LUH-Stil entsprechend angepasst.
v2.4.1 — für ILIAS 10
Kompiliert gegen ILIAS v10.9.
Die ausgelieferte LUH-Style/LUH-Style.css enthält die delos-Basis genau dieser
ILIAS-Version – der Skin wird vorkompiliert aus Git deployt (siehe
Empfehlung / Deployment). Auf einem neueren ILIAS fehlen
dadurch die Regeln für Komponenten, die ILIAS seitdem hinzugefügt hat: Diese Elemente
werden dann unstyled dargestellt, ohne dass eine Fehlermeldung erscheint. Nach einem
ILIAS-Update daher ./update-skin.sh prod ausführen und die neue CSS mitcommitten.
Die Angabe wird von
update-skin.shautomatisch ausilias_version.phpder ILIAS-Installation ermittelt und inILIAS_BUILD_VERSIONgeschrieben; die ILIAS Version Guard-CI stellt sicher, dass diese README-Angabe nicht davon abweicht.
Der ILIAS-9-Stand bleibt auf den
v1.x-Tags erhalten (zuletztv1.3.0).
LUH-Login auf ILIAS 10.9
Die Loginmaske (components/ILIAS/Init/tpl.login.html) besteht aus zwei Spalten:
- links die beiden Anmeldewege – »Login mit WebSSO« (nur sichtbar, wenn Shibboleth
aktiv ist, siehe
tpl.login_form_shibboleth.html) und »Login ohne WebSSO«; - rechts die Hinweise als Akkordeon mit sechs Fächern: Allgemeines zur Anmeldung, Zugang für Angehörige der LUH, für Gasthörende, für Gäste, im EULiST-Verbund-Projekt und Selbstregistrierung.
Die Fächer folgen dem WAI-ARIA-Accordion-Pattern (h3 > button, aria-expanded,
aria-controls, Panel als benannte region) und lassen sich unabhängig voneinander
öffnen. Ohne JavaScript werden über einen <noscript>-Block alle Fächer ausgeklappt,
damit die Anmeldehinweise nie hinter funktionslosen Schaltflächen verschwinden.
Der Skin enthält keine ILIAS-Sprachdateien – eigene Sprachvariablen lägen in der
ILIAS-Datenbank und wären damit nicht mehr Teil dieses aus Git deployten Skins. Deutsche
und englische Texte stehen deshalb beide im Template und sind mit
data-luh-i18n="de" bzw. data-luh-i18n="en" ausgezeichnet. _login.scss blendet über
html:lang() die passende Variante ein; Deutsch ist der Fallback für alle Sprachen
außer Englisch.
Beim Ändern der Texte immer beide Sprachfassungen pflegen.
ILIAS 10: Der Skin liegt jetzt unter
public/Customizing/skin/– das Segmentglobalaus ILIAS 9 entfällt.
cd /srv/ilias-luh/ILIAS/
cd public/Customizing/mkdir skin
cd skingit clone https://github.com/iFadi/LUH-Skin.git
cd LUH-SkinBeispiel für einen stabilen Release-Tag:
git checkout tags/v2.4.1 # x-release-please-versionFalls du dich auf dem main-Branch befindest, kannst du einfach ein Pull durchführen:
git pull✅ Das war's – der Skin ist installiert.
Hinweis (Registrierungs-Patch): Der Skin enthält unter
components/ILIAS/Registration/eine angepasste ILIAS-Kernklasse (class.ilAccountRegistrationGUI.php), die zusätzlich Benutzernamen im FormatXXX-XXXablehnt. Diese Datei ist kein Skin-Override, sondern ein Kern-Patch und muss manuell kopiert sowie bei jedem ILIAS-Update neu aus der Kernklasse abgeleitet werden – siehe components/ILIAS/Registration/README.md.
Zur Anpassung des Skins müssen die .scss-Dateien bearbeitet werden. Anschließend ist das Skript update-skin.sh auszuführen, um die SCSS-Dateien zu kompilieren.
Wichtig: Das Skript importiert die ILIAS-Basis (delos) über einen relativen Pfad
(@use ".../templates/default/delos"). SCSS-@use-Pfade sind statisch – der dev-/Base-Path-Parameter
ändert nur die Font-/Bild-URLs, nicht diesen Import. Daher gibt es zwei Wege:
A) Innerhalb einer ILIAS-Installation (Standard, z. B. Produktiv-/Testsystem):
Der Skin liegt unter public/Customizing/skin/luh/, der relative Pfad löst sich automatisch auf.
./update-skin.sh prodB) Standalone / lokal (Skin-Klon ohne ILIAS drumherum):
Den Pfad zur ILIAS-Wurzel (Ordner mit templates/default/) per 3. Argument oder ILIAS_ROOT angeben:
# z. B. templates aus einem laufenden ILIAS-10-Container holen:
docker cp ilias10:/var/www/html/templates /pfad/zu/ilias10/templates
# ilias_version.php gleich mitkopieren: daraus liest update-skin.sh die ILIAS-Version
# und schreibt sie nach ILIAS_BUILD_VERSION. Fehlt die Datei, warnt das Skript und
# lässt ILIAS_BUILD_VERSION unverändert — die Angabe muss dann von Hand stimmen.
docker cp ilias10:/var/www/html/ilias_version.php /pfad/zu/ilias10/ilias_version.php
ILIAS_ROOT=/pfad/zu/ilias10 ./update-skin.sh prod
# oder: ./update-skin.sh prod "" /pfad/zu/ilias10- Das Skript verwendet die Systemzeit, um die generierten CSS-Dateien mit einer eindeutigen ID zu versehen.
- Diese ID wird an den Hauptdateinamen
LUH-Style.cssangehängt. → Dadurch wird ein automatisches Neuladen im Browser erzwungen (Cache-Busting). - Sollte auf dem produktiven System
dart-sassnicht installiert sein, kann das Skript nicht ausgeführt werden.
prod kompiliert mit --no-source-map, dev erzeugt weiterhin eine LUH-Style.css.map.
Die Map wird nicht eingecheckt (siehe .gitignore) und gehört nicht auf den Server:
Ihr sources-Array enthält absolute Pfade des Build-Rechners – beim Standalone-Build
zusätzlich der umgeschriebene delos-Pfad. Eingecheckt würde sie öffentlich neben der CSS
ausgeliefert, die lokale Verzeichnisstruktur preisgeben und bei jedem Build auf einem
anderen Rechner einen ~150 KB großen Diff erzeugen.
Auf dem Produktivsystem ist dart-sass nicht installiert – dort wird also nie kompiliert.
Der Skin wird vorkompiliert aus Git deployt: Die LUH-Style.css wird auf einem
Testsystem (z. B. mit definierter Tag-/Skin-Version) mit ./update-skin.sh prod gebaut,
mitsamt der neuen Version-ID in template.xml committet und anschließend auf dem
Produktivsystem ausgecheckt.
⚠️ Ein Commit, der.scssändert, muss daher immer die neu kompilierteLUH-Style.cssenthalten – sonst geht die Änderung auf dem Produktivsystem verloren.
Releases werden nicht mehr von Hand getaggt. Den Ablauf übernimmt
release-please über den Workflow
.github/workflows/release-please.yml.
- Commits nach Conventional Commits schreiben (
feat:,fix:,docs:,style:…) – der Typ entscheidet, in welchem Abschnitt des Changelogs der Commit landet und ob die Minor- oder die Patch-Stelle steigt.feat!:bzw. einBREAKING CHANGE:-Footer lösen einen Major-Bump aus. - Nach jedem Merge auf
mainhält release-please automatisch einen Pull Request »chore(main): release x.y.z« offen. Dieser PR sammelt alle Änderungen seit dem letzten Release und pflegtCHANGELOG.md,version.txtsowie die Versionsangaben in dieser README. - Den Release-PR mergen = releasen. release-please setzt daraufhin den Tag
vX.Y.Zund erstellt das GitHub-Release mit dem erzeugten Changelog-Abschnitt als Release Notes.
🔀 Pull Requests werden gesquasht (Merge-Commits und Rebase sind im Repo deaktiviert). Der PR-Titel wird zum Commit-Betreff und muss deshalb selbst ein Conventional Commit sein; die Einzel-Commits bleiben als Body erhalten. Merge-Commits führten hier zu doppelten Changelog-Einträgen, weil GitHub den PR-Titel zusätzlich in den Merge-Commit schreibt und release-please beide Commits auswertet.
ℹ️ Die beiden Versionsangaben in dieser README sind mit einem
x-release-please-Kommentar markiert und werden vom Release-PR automatisch mitgezogen – die Marker bitte nicht entfernen, sonst veraltet die README wieder. (Der Marker wird hier bewusst ohne sein Suffix geschrieben: release-please ersetzt die erste Versionsnummer jeder Zeile, die den vollständigen Marker enthält – auch in erklärendem Fließtext wie diesem.)
⚠️ Der Release-PR enthält nur Changelog- und Versionsdateien. Eine geänderte.scssmuss weiterhin zusammen mit der neu kompiliertenLUH-Style.cssim jeweiligen Feature-PR liegen (siehe Empfehlung / Deployment).
Dieses Release ist für ILIAS v10.x vorgesehen.
- Für ILIAS 9 den Tag
v1.3.0verwenden.
Bei jedem ILIAS-Update (Minor- und Major-Versionen) muss:
- der Skin neu kompiliert werden
- die Funktionalität des Skins getestet werden, um sicherzustellen, dass er weiterhin korrekt dargestellt wird
