Getreu dem Motto Wer loslässt, hat die Hände frei wird der Zikula Core gegenwärtig ausgemistet: das Ziel ist es, wieder ein schlankes System zu schaffen, welches nicht jede Funktionalität selbst anbieten möchte, sondern sich hierfür noch mehr dem Symfony Ökosystem öffnet. Seit dem letzten Beitrag wurde weiter Ballast abgeworfen - die Änderungen aus den letzten zwei Wochen werden im Folgenden dargestellt.
- Das OAuthBundle ist entfernt worden; das ist ein Vorgeschmack darauf, dass Zikula keine eigene Methodik zur Authentifizierung anbieten, sondern sich mehr an das Security-System von Symfony halten sollte. Für selbiges gibt es Dutzende von Bundles, welche diverse Möglichkeiten zur Authentifizierung zur Verfügung stellen.
- Das WorkflowBundle ist ebenfalls rausgeflogen; die verbleibende Funktionalität, die es erlaubt, dass Workflow-Definitionen an unterschiedlichen Orten, zum Beispiel direkt in einem Bundle, liegen können, wurde beibehalten und in das
CoreBundle
verschoben. - Das eigene Extension-System ist nun entfernt worden: Bundles werden nun ausschließlich über Composer und Flex verwaltet. Eine Besonderheit: als Relikt der früheren Installer gibt es im
CoreBundle
ein InitializableBundleInterface
: mit einem Konsolen-Kommando zikula:init-bundle
können so Tasks ausgeführt werden, die nach der Einrichtung eines Bundles mit Flex noch zu tun sind. Hierzu zählt etwa das Einspielen von ersten Daten oder die Integration mit dem CategoriesBundle
. - Einige Bestandteile der bisherigen Distribution wurden zurück in das Core-Repository / Monorepo geholt: im Moment wieder drin sind
LegalBundle
, ProfileBundle
und StaticContentBundle
. - Alle verbleibenden Module wurden grundsätzlich auf Bundles umgestellt.
- Das
RoutesBundle
und damit das eigene Routing-System wurden komplett entfernt, wie im letzten Beitrag bereits in Aussicht gestellt worden war. - Es gibt keine Variablen (ModVars) mehr: statt dessen wird die
Config
-Komponente von Symfony zur Definition von Bundle Configurations verwendet. - Auch die CapabilityApi aus dem
ExtensionsBundle
musste weichen: wieder eine Konvention weniger, die kein Bundle, das für plain Symfony gebaut worden ist, erfüllen können wird. - Alle Referenzen zum Zikula-Kernel wurden abgebaut. Meistens wird gar nicht der Kernel an sich, sondern nur ein Parameter benötigt, der dann direkt injiziert werden kann. Ansonsten sollte nun eine Kernel Injection mit dem Type Hint auf den Symfony Kernel versehen werden.
- Das alte Admin-Interface wird im Moment durch das
EasyAdminBundle
und entsprechende Dashboards abgelöst. Hierbei sind bereits das AdminBundle
und die Reste vom ExtensionsBundle
rausgeflogen. Übrigens bringt das neue Admin-Interface nun auch eine neue Suchfunktion mit. - Die Theme-Engine wird deutlich schlanker: ein Theme ist nun vom Konzept her kein eigenes Bundle mehr, sondern ein eigenes Dashboard, welches entsprechend eigene Templates und Assets verwenden kann. Im
ThemeBundle
wurde hierfür außerdem das ExtensionMenuInterface
umgebaut, so dass ein Bundle nicht mehr Knp-Menüs, sondern Dashboard-MenuItems bereitstellen kann. Über das EasyAdminBundle
werden nun unter der Haube Bootstrap 5 und FontAwesome 6 verwendet. Auch das Asset Handling läuft moderner, so gibt es etwa eine automatische Versionierung der Assets und sie werden komplett von Encore/Webpack verwaltet. Eigene Theme-orientierte Konzepte sind hierdurch obsolet geworden, zum Beispiel Page-Variablen und Theme-Variablen sind weggefallen.
Aktuell laufen noch die Integrationsarbeiten mit dem neuen Admin-Interface. Natürlich werden wir wieder hier berichten, nachdem die nächsten Meilensteine erreicht worden sind.