ModuleStudio 0.7.0 veröffentlicht

in  Zikula Apps , , , , ,

ModuleStudio 0.7.0 veröffentlicht

Nach fast zweieinhalb Jahren ist ModuleStudio 0.7.0 erschienen. Dies ist ein wichtiger Meilenstein für das Projekt und macht den Weg frei für weitere Schritte. Dieser Beitrag stellt die neue Version kurz vor und zeigt auf, wohin die Reise geht.

Neuigkeiten

ModuleStudio 0.7.0 bietet eine große Zahl an Neuerungen, unter anderem eine runderneuerte Benutzeroberfläche, Verbesserungen an der DSL sowie viele Änderungen im Generator. Die wichtigsten Infos können auf der Release-Seite nachgelesen werden.

Symfony Forms in Zikula und ModuleStudio

in  Generator , , ,

Symfony Forms in Zikula und ModuleStudio

Im Januar wurde der Generator auf Symfony Forms umgestellt. Mir war schon vorher klar, dass diese Komponente eine der mächtigsten Teile von Symfony darstellt. Wie nützlich sie aber in der Praxis ist, sieht man natürlich erst, wenn man sie tatsächlich nutzt.

Auch der Zikula Core reimplementiert zunehmend Formulare mit Symfony Forms. Kürzlich wurde das Blocksystem komplett darauf umgestellt. In diesem Zuge wurden ein Block Handler Interface sowie ein dazu passender Abstract Block Handler eingeführt, mit denen Blöcke nun einfacher aufgebaut werden und einen Form Type zur Bearbeitung verwenden können.

Multisites auf Basis von ModuleStudio

in  Zikula Apps , , , ,

Multisites auf Basis von ModuleStudio

Mit dem Multisites-Modul lassen sich beliebig viele Seiten mit einem einzigen Zikula-System betreiben. Mit Vorlagen, die im Prinzip SQL-Dumps repräsentieren, können neue Seiten auf Knopfdruck erstellt werden. Jede Seitenvorlage beinhaltet damit die vorab definierten Strukturen und -daten out of the box.

Jede Internetseite verfügt (aus Gründen der Architektur und der Skalierbarkeit) über eine eigene Datenbank. Es ist auch möglich, dass mehrere Internetseiten mit der gleichen Datenbank arbeiten. Dies erfordert jedoch entsprechende Anpassungen in den verwendeten Themes.

Schwerpunkte für ModuleStudio 0.7.0

in  Metamodell , , ,

Schwerpunkte für ModuleStudio 0.7.0

Beim diesjährigen Camp Zikula haben wir unter anderem über die zukünftige Ausrichtung von ModuleStudio gesprochen. Dazu habe ich kurz die Bestandteile einer DSL sowie unterschiedliche Notationsformen und deren Kombinationen vorgestellt. Während wir über die Vor- und Nachteile einzelner Varianten und Editoren diskutiert haben, ist relativ schnell klar geworden, dass wir zunächst einmal den Umfang und Fokus der DSL korrigieren müssen. Die verschiedenen Gedanken und Impulse bilden eine Blaupause für die nächste Hauptversion von ModuleStudio. Aus diesem Grund wurde eben die Version 0.6.2 veröffentlicht, so dass nun der Weg frei steht für die ersten Arbeiten an 0.7.

Allgemeine und eigene Symfony-Events in generierten Zikula-Modulen

in  Zikula Apps , , , ,

Allgemeine und eigene Symfony-Events in generierten Zikula-Modulen

In ModuleStudio 0.6.2 liegt der Fokus auf die Anpassung des Generators auf Symfony und Bootstrap, was die Zielversion Zikula 1.4.0 anbelangt.

Einige Neuerungen betreffen das Zusammenspiel mehrerer Module, die miteinander interagieren. Erstens werden nun Factory-Klassen für Entitäten und Repositories in Verbindung mit Service-Parametern eingesetzt, mit denen man die Entität eines Moduls X von einem Modul Y heraus erweitern und anpassen kann. Zweitens werden in den Doctrine Lifecycle-Events der Entitäten eigene Symfony-Events verwendet, mit denen sich ein anderes Modul einhaken kann.

Optimierung im Detail - Schreibweisen von Entitäten und Feldern im Modell

in  Zikula Apps , , ,

Optimierung im Detail - Schreibweisen von Entitäten und Feldern im Modell

In der modellgetriebenen Softwareentwicklung werden die fachlichen Anforderungen in der Regel sehr prägnant formuliert. Schließlich ist eines der Ziele einer domänenspezifischen Sprache eine lesbare und verständliche Beschreibung eines Softwaresystems, wozu auch die Vermeidung von Redundanzen und unnötigem Boilerplate-Code gehört.

Dies führt dazu, dass selbst kleine Veränderungen in einem Modell größere Unterschiede im generierten Quelltext zur Folge haben können. Ein Beispiel für solche, auf den ersten Blick unscheinbare Differenzierungen betrifft die Schreibweise von Modellelementen. Dieser Beitrag zeigt auf, was es bedeutet, ob der Name einer Entität oder eines Feldes so oder so geschrieben wird.

Ajax-Controller und seine Funktionen

in  Zikula Apps , , ,

Ajax-Controller und seine Funktionen

Im Controller-Bereich der Modellierungssprache von ModuleStudio nimmt der Ajax-Controller eine besondere Rolle ein. Die Aktionen eines Ajax-Controllers werden im Gegensatz zu anderen Controllern nicht als Webseite durch den Anwender, sondern von mittels JavaScript initiierten Ajax-Requests aufgerufen.

Der Generator erzeugt unter Umständen einige zusätzliche Methoden im Ajax Controller, wenn diese für bestimmte generierte Funktionalitäten erforderlich sind. Dies betrifft unter anderem die im Folgenden aufgelisteten Methoden:

getCommonUsersList
Diese Methode sucht eine Liste von Benutzernamen, die zu einem gegebenen Suchausdruck passen, und liefert diese aufbereitet für AutoCompletion zurück. Wird nur generiert, falls in der Anwendung mindestens eine Entität mit einem Benutzerfeld existiert. Zusätzlich wird je Benutzerfeld eine weitere Methode generiert, zum Beispiel getArticleCreatorUsers, damit sich die Funktion einfach für bestimmte Felder überschreiben oder anpassen lässt.
getItemListFinder
Wird nur generiert, wenn auch der External-Controller und die Finder-Komponente generiert werden, was durch eine Generator-Einstellung gesteuert werden kann. Zweck der Methode ist es, eine Liste von Entitäten für den Finder aufzubereiten und zurückzuliefern. Mit der Finder-Komponente können Entitäten gefunden und ausgewählt werden, zum Beispiel bei der Verwendung der generierten Scribite-Plugins.
getItemListAutoCompletion
Sucht nach Entitäten, die zu einem gegebenen Suchausdruck passen, und liefert diese aufbereitet für AutoCompletion zurück. Wird nur generiert, wenn es mindestens eine Join-Relation im Modell gibt. Verwendet wird diese Methode von den AutoComplete-Feldern in den Änderungsformularen.
checkForDuplicate
Prüft, ob ein bestimmter Feldwert ein Duplikat ist oder nicht. Wird nur generiert, wenn unique-Felder oder unique Slugs im Anwendungsmodell verwendet werden.
toggleFlag
Diese Methode schaltet ein bestimmtes Flag einer gegebenen Entität um. Generiert wird sie nur, falls es Boolean-Felder mit aktiviertem Ajax-Toggle gibt. Auf Übersichts- und Detailseiten kann man dann per Mausklick die Werte einfach umschalten.
handleTreeOperations
Wird nur generiert, das Anwendungsmodell mindestens eine Entität mit aktivierter Baumstruktur enthält. Die Verwaltungsseite für Hierarchien benutzt diese Methoden für unterschiedliche Aktionen, die mit der Baumstruktur durchgeführt werden können: neuen Wurzelknoten anlegen, neuen Unterknoten anlegen, Knoten löschen, Knoten verschieben, Knoten verschieben nach X.