Seit der Veröffentlichung von ModuleStudio 0.7.3 im Februar 2017 sind die Arbeiten an DSL und Generator kontinuierlich fortgeführt worden. Es wurden einige neue Optionen zur Modellierungssprache hinzugefügt und diverse Anpassungen im Hinblick auf eine optimale Kompatibilität der generierten Anwendungen mit Zikula 1.5 und 2.0 vorgenommen.
Es ist vorgesehen, dass ModuleStudio 0.7.4 noch im Mai erscheinen wird. Dieser Beitrag stellt einige der zahlreichen Neuerungen vor.
Die Repository-Klassen wurden aufgeräumt und von allen Dingen bereinigt, die nichts direkt mit der Erzeugung von Queries zu tun haben. In diesem Rahmen wurde ein CollectionFilterHelper
eingeführt, der sich um die Anwendung der Parameter aus zum Beispiel den Quick Navigation Formularen kümmert.
Es wurden weitere Legacy-Aufrufe entfernt, was vor allem für Zikula 2.0 relevant wird, da hier jegliche Legacy-Unterstützung aus der 1.x-Serie entfernt wird. Insbesondere werden die Anzeigemuster der Entitäten nun nicht mehr über die Entity-Methode getTitleFromDisplayPattern
, sondern über einen eigenen EntityDisplayHelper
(sowie einem dazugehörigen Twig-Filter) durchgeführt.
Neuigkeiten gibt es auch bei der Initialisierung neu instanziierter Entitäten mit dynamisch zur Laufzeit ermittelten Daten: statt dies wie bislang über den Konstruktor zu tun, erfolgen solche Schritte nun im sogenannten EntityInitialiser. Dieser hat Zugriff auf diverse Services und damit weitreichende Möglichkeiten, die benötigten Daten zu ermitteln. Ein Beispiel hierfür sind Listenfelder: diese beziehen ihre Standardwerte dynamisch vom ListEntriesHelper
. Das heißt, auch wenn der ListEntriesHelper
angepasst oder erweitert wird, werden die damit zusammenhängenden Änderungen auch direkt in neuen Entity-Instanzen reflektiert.
Bei der Unterstützung diverser Doctrine Extensions hat sich ebenfalls Einiges bewegt: Entitäten mit der loggable
-Erweiterung zur Erzeugung von Änderungshistorien und Diff-Ansichten kommen nun ohne einen eigenen Listener aus. Für die geographical
-Extension werden weitere Grundeinstellungen vorgeneriert, mit denen sich Standardkoordinaten sowie Kartentyp und Zoom-Level konfigurieren lassen. Für die Erzeugung von Slugs/Permalinks wird jetzt dafür gesorgt, dass Umlaute und Akzente ordentlich repräsentiert werden. Ein ä
wird nun nicht mehr zu a
, sondern in der URL angenehmer durch ae
repräsentiert.
Wenn man locale- oder language-Felder nutzt, wird man sich wahrscheinlich über eine neue Option in den Moduleinstellungen freuen, mit der sich ein Filter aktivieren lässt, der dafür sorgt, dass im Frontend nur die zur aktuellen Sprache passenden (oder die für alle Sprachen freigeschalteten) Einträge erscheinen. Weniger häufig benötigt, aber im Fall der Fälle dennoch hilfreich ist die Möglichkeit, sich die Basis für die Implementierung zusätzlicher Authentifizierungsmethoden generieren zu lassen.
Auch erste Erweiterungen für Zikula 2.0 (bzw. Symfony 3) sind bereits in den Generator eingeflossen. So ist es beispielsweise möglich, ein String-Feld als Zeitintervall zu kennzeichnen, was die Verwendung des DateInterval-Formularfeldes zur Folge hat. Für Upload-Felder lässt sich die Option detectCorrupted
aktivieren, was zu einer eingehenden Überprüfung von Bildern führt.
Übrigens werden die exe-Dateien für die Windows-Versoin von ModuleStudio nun automatisch mit einem Zertifikat signiert, wodurch die für Einsteiger potenziell verwirrenden Meldungen des Reputationsfilters “Windows SmartScreen” bald Vergangenheit sein werden.
Alle Änderungen im Detail lassen sich im Changelog nachlesen.