Zikula 4 und ModuleStudio - Weitere Integration mit dem EasyAdminBundle

in  Zikula Apps , , ,

Zikula 4 und ModuleStudio - Weitere Integration mit dem EasyAdminBundle

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 und View wurden zu Index zusammengeführt.
  • Die Eigenschaften displayType und visible wurden durch dedizierte Flags visibleOnIndex, visibleOnDetail, visibleOnNew, visibleOnEdit und visibleOnSort 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.

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 …