Die Version 0.7.5 von ModuleStudio steht ab sofort zum Download bereit. Neben einer Reihe von Korrekturen sind auch einige Änderungen und Neuerungen enthalten. Das Tooling basiert nun auf Eclipse Oxygen und bringt eine überarbeitete Properties View mit: die Eigenschaften eines Elementes werden übersichtlich in mehrere Reiter aufteilt:
- Allgemein: grundlegende Einstellungen wie Name, Dokumentation oder Länge eines Feldes.
- Restriktionen: Einschränkunden für die Validierung, zum Beispiel eine minimale Breite für einen Bild-Upload.
- Verhalten: alle Aspekte in Bezug auf funktionale Erweiterungen.
Jeder Reiter kann eine oder mehrere Sektionen enthalten, die auf- und zugeklappt werden können. Beispielsweise existieren unter den normalen Feldern oft Experten-Einstellungen, die per Standard zugeklappt sind. So ist die Ansicht grundsätzlich aufgeräumter, was insbesondere Einsteigern die Orientierung vereinfacht.
Änderungen in der DSL
Die neue Standard-Zielversion ist jetzt Zikula 1.5. Die Unterstützung von Zikula 1.4 wurde als veraltet markiert und wird im nächsten Release nicht mehr enthalten sein. Dementsprechend wird eine Warnung angezeigt, sofern ein Modell noch auf Zikula 1.4 ausgerichtet wird.
Bei Stringfeldern gab es früher eine ganze Reihe von Checkboxen für unterschiedliche spezielle Feldtypen (z. B. BIC, Country, Locale, und so weiter). Diese wurden durch eine neue Eigenschaft Rolle ersetzt, die durch ein Dropdown-Widget dargestellt wird. Während sich Modelle mit den alten Flags nach wie vor öffnen lassen, werden diese Eigenschaften nicht automatisch migriert. Das bedeutet, dass die Rolle für bestehende Felder auf die gewünschte Semantik eingestellt werden muß.
Außerdem wurde die Validierung von Vererbungsbeziehungen verbessert. Diverse Prüfungen, z. B. auf doppelte Felder und Aktionen, Feldreferenzen in Anzeigemustern, fehlende Felder oder Aktionen, wurden so angepasst, dass sie Vererbung korrekt berücksichtigen. Auch in den Generator wurden übrigens einige Verbesserungen für Vererbungen eingepflegt.
Erweiterte Unterstützung für Hooks
Eine der umfangreichsten Neuerungen betrifft den erweiterten Support für das Hook-System von Zikula. Bisher haben die generierten Anwendungen bereits die sogenannte Hook Subscriber Funktionalität in ihren unterschiedlichen Ausprägungen unterstützt. Das heißt, dass sowohl auf Übersichts- und Detailseiten sowie in Bearbeitungs- und Löschformularen Funktionen aus anderen Modulen (Hook Provider) eingebunden werden konnten, um zum Beispiel Kommentare anzuhängen oder WYSIWYG-Editoren einzubinden. Neben diesen UI-Hooks wurden auch Subscriber für Filter-Hooks mit generiert, damit lassen sich Daten beliebig filtern, um etwa Zensurfunktionen umzusetzen.
In Zikula Core 1.5 wurde das Hook-System in zwei Punkten ausgebaut: erstens müssen die Informationen über Subscriber und Provider nicht mehr in der Datenbank gespeichert werden (non-persisted hooks), sondern werden über Symfony tagged services definiert. Zweitens gibt es einen neuen, dritten Hook-Typ: mit den Form Aware Hooks lassen sich Erweiterungen innerhalb von Symfony Forms integrieren. Die entsprechenden Subscriber generiert ModuleStudio nun ebenfalls in Anwendungen für Zikula 1.5 und 2.0.
Der deutlich gewichtigere Anteil der Neuerungen betrifft hingegen die Unterstützung für Hook Provider - ebenfalls für Zikula 1.5 und 2.0, nicht jedoch für Zikula 1.4: in den Generator-Einstellungen eines Modells lässt sich jetzt einstellen, ob ein Filter Hook Provider und/oder ein Form Aware Hook Provider gewünscht wird. Für beide Hook-Kategorien erstellt der Generator valide Providerklassen mit Dummy-Funktionen, die sehr leicht erweitert und angepasst werden können. Die UI Hooks Provider können für jede einzelne Entität aktiviert werden und dort passiert eine Menge mehr: es werden Möglichkeiten generiert, um die Entitäten via Auto Completion zu suchen und an die aktivierten Hook Subscriber Areas anzuhängen, was auch die Erstellung (und automatische Zuweisung) neuer Entitäten in einem modalen Fenster beinhaltet. Alle Zuordnungen werden in einer zusätzlichen Datenbanktabelle gespeichert, so dass es möglich ist, die selbe Entität an mehrere unterschiedliche Datenobjekte anzuhängen (zum Beispiel könnte ein Bild zu drei Newsartikeln hinzugefügt werden). Auf der Detailseite einer Entität werden die assoziierten Datenobjekte der Subscriber verlinkt: von zum Beispiel einem Kommentar kann man so zu der Seite wechseln, zu welcher der Kommentar erstellt wurde. Bestehende Zuordnungen werden automatisch entfernt, wenn das Datenobjekt gelöscht oder das entsprechende Subscriber-Modul vom System entfernt wird.
Alle Änderungen im Detail lassen sich im Changelog nachlesen.