Im letzten Beitrag wurde unter anderem dargestellt, dass Zikula 4 nun das EasyAdminBundle
(EAB) integriert um das alte Admin-Interface abzulösen. Zwischenzeitlich sind die Arbeiten daran etwas fortgeschritten.
Änderungen im Zikula Core
Zikula bietet in seinem ThemeBundle
per Standard ein UserDashboard
und ein AdminDashboard
, die beide das Site Branding verwenden. Diese können leicht in einem Projekt angepasst und erweitert werden. Darüber hinaus ist es natürlich möglich, weitere Dashboards hinzuzufügen, um spezifische Sichten für weitere Gruppen bereitzustellen.
Schon in der letzten Iteration ist das ExtensionMenuInterface
so umgebaut worden, so dass ein Bundle nicht mehr Knp-Menüs, sondern Dashboard-MenuItems bereitstellen kann. Dem folgend ist nun die redundant gewordene Theme
-Annotation entfallen, mit der ein Controller früher steuern konnte, ob eine Aktion im Adminbereich dargestellt werden soll. Sondern die Logik ist nun einfacher: ein Bundle stellt wie früher ein Extension-Menü für einen Kontext bereit. Das dazugehörige Dashboard entscheidet aber letztendlich über die Integration. Die Controller-Aktion hingegen kann über den EAB-AdminContext
entscheiden, welche Security-Anforderungen (Benutzerrolle) sie erfordert. Dies macht die seither notwendige doppelte Bereitstellung einiger Aktionen in durch ModuleStudio generierte Bundles überflüssig.
Konfiguration und Anpassung der Standard-Dashboards
Das ThemeBundle
stellt nun außerdem einige Optionen zur Konfiguration der zwei Standard-Dashboards bereit:
- Die Klasse, die den Dashboard-Controller implementiert, kann auf eine andere Implementierung (z. B. eine Unterklasse) umgestellt werden.
- Einige Standardeinstellungen zur Darstellung (Inhalt fluide oder nicht; Sidebar aus- oder eingeklappt), sofern diese nicht durch einen CRUD-Controller überschrieben werden.
- Das Verhalten zur Startseite des Dashboards: hier gibt es drei Möglichkeiten:
- Es kann ein Template angegeben werden, das gerendert werden soll.
- Es kann auch zu einem CRUD-Controller weitergeleitet werden.
- Eine beliebige Route mitsamt Parametern - das entspricht in etwa den Einstellungen zur Startseite in früheren Zikula Core Versionsreihen.
Im Moment wird im UserDashboard
per Standard eine simple Willkommens-Seite dargestellt, während das AdminDashboard
zu einer Route des ThemeBundle
führt. Die Einstellung im Detail ist aber noch im Fluss.
Die zwei Standard-Dashboards für Admin- und User-Bereich laden jeweils eine eigene CSS- und JavaScript-Datei, so dass auch kosmetische Anpassungen einfach durchgeführt werden können.
Kleinere Aufräumarbeiten
Es wurden wieder ein paar unnötige Dinge aus dem Core entfernt: neben den Komponenten SortableColumns
und Wizard
ist hier auch das jQuery-basierte Tool Magnific Popup
entfallen, da im EasyAdminBundle bereits ein Lightbox-Skript integriert ist.
Änderungen in ModuleStudio
Auch ModuleStudio rückt weiter an das EasyAdminBundle heran. Interessanterweise sind dort einige Konzepte, die vormals im Generator implementiert waren, ebenfalls vorhanden. Beispielsweise gibt es in der DSL von ModuleStudio die Möglichkeit, ein BooleanField
mit einem Ajax-Toggle auszustatten. Diese Funktionalität ist auch im EAB verfügbar, so dass die eigene Umsetzung (also entsprechender JavaScript-Code sowie eine Aktion im AjaxController
) ersatzlos entfallen konnten. Und für diese Tendenz gibt es weitere Beispiele 😄
Neue Sprachmittel in der DSL
- Die Aktionen
Index
undView
wurden zuIndex
zusammengeführt. - Die Eigenschaften
displayType
undvisible
wurden durch dedizierte FlagsvisibleOnIndex
,visibleOnDetail
,visibleOnNew
,visibleOnEdit
undvisibleOnSort
ersetzt. - Analog zu String-Feldern gibt es nun auch für größere Textfelder ein Attribut
role
, das es ermöglicht, einfachen Text von Programmiercodes und auch WYSIWYG-Editoren zu unterscheiden. - Listenfelder haben nun auch ein
useAutoCompletion
-Flag. - Datetime-Felder können jetzt als Komponente auch
DATE_TIME_TZ
auswählen um DateTime-Objekte mit Zeitzone nutzen zu können. - Für String-Felder gibt es weitere Rollen für CIDR-, ISIN- und ULID-Validatoren.
Umwälzung im Generator
Um den Fuß in die Tür zu bekommen, wurde der Generator erst einmal ganz disruptiv so umgestellt, dass die Controller nun als EAB-CrudController
erzeugt werden. Nach und nach wurden dann diverse EAB-Konzepte dort umgesetzt, um etwa unterschiedliche Feldtypen, deren Sichtbarkeit und deren Eigenschaften zu integrieren. Hierbei sind bereits die alten FormTypes zur Bearbeitung der Entities abgelöst worden. Auch Filter wurden bereits integriert, welche die bisherige QuickNavigation abgelöst haben.
Das Zwischenfazit hierzu lautet: Vieles wird einfacher, manche der übrigen Punkte müssen geprüft, andere reimplementiert werden. Aber alles in allem mutet das sehr erfreulich an.
Nächste Schritte
Grundsätzlich funktioniert der Generator aktuell schon einmal ganz gut mit EAB. 🚀 🎉 Da ist aber noch eine größere Baustelle 🚧, bis das komplett durchgezogen ist inklusive der unterschiedlichen Doctrine Extensions, dem Rückbau der alten Aktionen und so weiter. Die verbleibenden Tasks sind allerdings im Prinzip alles Fleißarbeiten und keine matchentscheidenden Punkte.
Daher werden wir nun erst einmal wieder den Fokus auf den Zikula Core legen um hier bald einen Meilenstein in Form eines Beta Stadiums zu erreichen. Vornehmlich muss dafür noch alles rund um Benutzer, Gruppen, Rechte, Rollen, Security usw. auf den Prüfstand gestellt werden. Hierzu hatten wir schon einmal vorab recherchiert und eine spannende Idee entwickelt 💡 - mehr dazu im nächsten Artikel.