Zikula startet modernisiert ins neue Jahr

in  Zikula Apps , , , , ,

Zikula startet modernisiert ins neue Jahr

Im Rahmen des letzten Sprints wurde der Unterbau von Zikula 3 auf den neuesten technischen Stand gebracht. Im Folgenden wird kurz zusammengefasst, was hierbei genau passiert ist.

Twig 3

Als erstes sollte die Template-Engine Twig auf die Version 3 gebracht werden. Dies versprach anfangs eine sehr übersichtliche Sache zu werden. Allerdings gab es dann doch noch einige weitere Aspekte zu beachten:

  • Da die templating-Komponente in Symfony 5 entfernt wird, müssen Pfade zu Templates nun der Namespace-Notation folgen. Aus z. B. Bundle:Controller:Action.html.twig wird damit @Bundle/Controller/Action.html.twig.
  • Bedingungen in Schleifen sollten zur neuen filter-Syntax umgeschrieben werden.
  • Die früheren Twig Extensions werden durch neue Twig Core Extra Extensions abgelöst.

Alle wichtigen Änderungen haben wir in einem Dokument zusammengefasst.

Symfony 5

Gleichzeitig haben wir das Update von Symfony 4 auf 5 in Angriff genommen. Glücklicherweise hatten wir bereits eine ganze Reihe veralteter Codes aktualisiert, so dass das nicht zu umfangreich ausgefallen ist. Da wir bereits Autowiring und Autoconfiguring verwenden, entfiel zum Glück auch das zeitraubende Anpassen zahlreicher Service-Definitionen.

Am meisten Arbeit haben einige 3rd Party Bundles bereitet, die größtenteils übergangsweise geforkt werden mußten, um sie überhaupt mit Symfony 5 weiter betreiben zu können. Nachdem dann die Aktualisierung der Abhängigkeiten mit Composer erst einmal funktionierte, ging der Rest relativ schnell. Die ganzen Details lasse ich an dieser Stelle weg, da Symfony eine umfangreiche Upgrade-Doku bereitstellt. Das DoctrineCacheBundle wurde übrigens durch die Symfony Cache Komponente ersetzt.

Font Awesome 5

Eine weitere Aktualisierung betrifft den Wechsel von Font Awesome 4 auf die Hauptversion 5. Dies beinhaltete die Umstellung einiger Icons auf neue Bezeichner, wofür es glücklicherweise eine Liste gibt (die offizielle fand ich hingegen zu unübersichtlich).
Als kleines Überbleibsel von der Umstellung ist das von Zikula verwendete components-Repo noch von 5.11.2 auf 5.12.0 zu aktualisieren. Hierfür habe ich einen Pull Request erstellt.

Bootstrap 4

Der Umstieg von Bootstrap 3 auf Bootstrap 4 war auf jeden Fall das größte Arbeitspaket. Da ich Bootstrap 4 bereits in zahlreichen Projekten (ohne Zikula) eingesetzt habe, kannte ich mich schon damit aus und wußte daher, welche Punkte diese Umstellung beinhalten würde. Unter anderem waren folgende Punkte wesentlich:

  • Diverse Ersetzungsarbeiten für geänderte Klassennamen (z. B. wird aus col-sm-9 col-sm-offset-3 nun col-md-9 offset-md-3).
  • Einige Komponente wurden durch andere ersetzt. So wurden Panels, Thumbnails und Wells zusammend durch die neuen Cards abgelöst.
  • Bootstrap 4 baut durchgehend auf Flexbox auf. Hierdurch verhalten sich einige Elemente anders, als man es aus Bootstrap 3 gewohnt ist. Bei neuen Projekten ist das eine Sache - die Umstellung eines Frameworks mit diversen bestehenden Komponenten eine ganz andere.
  • Gleichzeitig konnten einige obsolete Dinge entfernt werden, z. B. überflüssiges Markup oder alte eigene CSS-Direktiven. Da Zikula Core 3 als Major-Version keine Rücksicht auf BC Breaks nehmen muß, sind auch einige alte Bilddateien herausgeflogen.

Eine Zusammenfassung der Änderungen bietet die Upgrade-Doku von Bootstrap.

Insgesamt freue ich mich sehr darüber, dass wir nun Bootstrap 4 verwenden können. Es fühlt sich deutlich gereifter an als Bootstrap 3: alle Komponenten arbeiten zusammen und es ist viel flexibler. Auch hat es sehr praktische Hilfsklassen, z. B. zur Sichtbarkeit sowie für Rahmen und Abstände. So bedeutet etwa class="d-block border-top rounded-left mt-3 mx-0 p-0" so viel wie:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
element {
    display: block;
    border-top: 1px solid #colour;
    border-top-left-radius: .25rem;
    border-bottom-left-radius: .25rem;
    margin-top: 3rem;
    margin-left: 0;
    margin-right: 0;
    padding: 0;
}

Auch im components-Repo von Bootstrap wartet übrigens noch ein Pull Request, um die Version 4.3.1 auf 4.4.1 zu bringen.

Erweiterungen im Bootstrap-Theme

Im Rahmen der Bootstrap-Aktualisierung haben wir die zwei Themes Andreas08 und SeaBreeze aus dem Core entfernt. Es war einfach nicht sinnvoll, Zeit zu investieren, um diese Layouts auf Bootstrap 4 zu konvertieren. Statt dessen haben wir das BootstrapTheme aufgebohrt, um die Stile von Bootswatch zu unterstützen. In den Einstellungen des Themes kann nun das gewünschte Design ausgewählt werden. Am Ende dieses Beitrags zeigt ein Screenshot als Beispiel den Stil Sketchy.

Als kleines Zusatzfeature gibt es darüber hinaus die Möglichkeit, den Besuchern der Seite den Wechsel des Designs zu erlauben. Wird diese Funktion aktiviert, erscheint im Fußbereich des Themes ein Style Switcher: individuell ausgewählte Stile werden in der Session gespeichert und überschreiben die Einstellung im Theme.

Neben dem Core

Alle beschriebenen Umstellungen wurden übrigens nicht nur im Zikula Core und damit den Systemmodulen, sondern auch bei den sogenannten Value Add-Ons - das sind die Module Legal, OAuth, PageLock und Profile - und dem ModuleStudio Generator durchgeführt. Auch einige Module, die auf dem Generator basieren, sind bereits auf Zikula 3 umgestellt: hierzu zählen insbesondere Content und MultiHook.

Ausblick

Die architektonischen Umwälzungen, welche für Zikula Core 3 vorgesehen waren, sind nun nahezu komplett erledigt. Neben ein paar Fehlerkorrekturen stehen jedoch noch zwei Punkte an, die ich gerne in diesem Release sehen würde:

  1. Craig hat damit angefangen, das Übersetzungssystem von Zikula zu entfernen. Hiermit wird wieder eine Legacy-Schicht abgestreift, die mittlerweile einfach unnötig ist. Auch nimmt es eine potenzielle Hürde für Interessierte aus dem Symfony-Ökosystem.
  2. Wünschenswert wäre es, die Alert-Nachrichten aufzubohren: nicht nur funktional kann man hier deutlich mehr machen, auch optisch bieten sich hier mit Bootstrap 4 neue Möglichkeiten. Insbesondere die Toasts sehen vielversprechend aus.

Wenn sich die Anzahl der Tickets für den 3.0.0 Meilenstein reduziert hat, spricht im Prinzip nichts mehr gegen ein Beta-Release.

Zikula startet modernisiert ins neue Jahr

Weitere Beiträge in Kategorie Zikula Apps

Kommende Neuerungen in Symfony 6.4
- Die Veröffentlichung der nächsten Symfony-Version 6.4 steht bevor. Wie immer gibt es regelmäßige Einblicke in die wichtigsten, zu erwartenden Features und Verbesserungen. Dieser Beitrag zeigt im …
Symfony vereinfacht zeitgesteuerte Aktionen mit neuer Scheduler-Komponente
- Mit Symfony 6.3 sind wieder allerhand neue Features hinzugekommen. In diesem Beitrag möchte ich kurz die neue Komponente Scheduler vorstellen, mit welcher der Symfony Messenger um zeitgesteuerte …
SSO mit Keycloak und Symfony
- Mit der Java-basierten Software Keycloak wird die Verwaltung und Authentifizierung von Nutzern zentral gelöst. Hierbei bleiben kaum Wünsche offen: egal ob nun ein Registrierungsprozess, die …
Symfony UX Translator bietet Mehrsprachigkeit in JavaScript
- Bereits seit einigen Jahren gibt es das BazingaJsTranslationBundle, welches es erlaubt, den Symfony Translator auch Client-seitig zu verwenden. Auch in Zikula kommt dieses Bundle zum Einsatz, …
Kommende Neuerungen in Symfony 6.3
- Die Veröffentlichung der nächsten Symfony-Version 6.3 ist für Ende Mai 2023 geplant. Wie immer gibt es regelmäßige Einblicke in die wichtigsten, zu erwartenden Features und Verbesserungen. Dieser …