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.

Validierung im ModuleStudio-Generator auf Symfony umgestellt

in  Generator , , ,

Validierung im ModuleStudio-Generator auf Symfony umgestellt

Bislang wurden in generierten Modulen selbstgeschriebene Validierungen verwendet. In den letzten Tagen wurden diese für die Zielversion Zikula 1.4.x abgelöst zu Gunsten der Symfony Validator Komponente.

In Symfony können Validierungen in mehreren Notationen definiert werden. Neben PHP und YAML sind auch XML und Annotationen möglich. Im ModuleStudio-Generator haben wir, wie auch im Ticket auf GitHub diskutiert wurde, Annotationen verwendet. Dabei werden Validierungsregeln (“Constraints”) durch @Assert-Annotationen direkt an der entsprechenden Entitätsklasse beziehungsweise den entsprechenden Feldern oder Methoden hinterlegt.

Generator Einstellungen in ModuleStudio 0.6.1 - Überblick und Anwendung

in  Zikula Apps , ,

Generator Einstellungen in ModuleStudio 0.6.1 - Überblick und Anwendung

Wie im letzten Artikel bereits erwähnt, verfügt ModuleStudio seit Version 0.6.1 über eine Reihe von Generator-Einstellungen, mit denen sich unterschiedliche Features und Verhaltensaspekte beeinflussen lassen. Dieser Beitrag gibt einige Anregungen zu möglichen Anwendungsfällen dieser Optionen.

Zikula Core Version

Bereits von früheren Versionen bekannt ist eine Einstellung für die Version des Zikula Core, für die eine Anwendung generiert werden sollte. Dies ist also nicht neu.

Unterschiedliche Templates und Formate in Zikula und Symfony

in  Zikula Apps , , , , ,

Unterschiedliche Templates und Formate in Zikula und Symfony

In ModuleStudio-basierten Modulen werden je nach Einstellung und Eigenschaften des zu Grunde liegenden Modells unterschiedliche Ausgabeformate unterstützt. Dieser Artikel gibt Hinweise zur Verwendung und einen Ausblick auf kommende Veränderungen im Rahmen der Umstellung auf Symfony und Twig.

Ablauf im Hintergrund

Um verschiedene Formate in einer Anwendung zu behandeln, sind mehrere Schritte nötig. Zunächst einmal ist festzuhalten, dass beim Einsatz von ShortURLs das sogenannte Routing dafür zuständig ist, die Parameter aus einer gegebenen URL auszulesen. Der Controller muss das passende Template für die gewünschte Ausgabe auswählen. Je nach Ausgabeformat muss unter Umständen die Response angepasst werden: zum Beispiel ist oft ein spezieller Content-Type nötig, um RSS-Feeds oder JSON-Daten ordentlich auszuliefern.

Einfache Anpassung von Umleitungen mit returnTo-Codes

in  Zikula Apps , ,

Einfache Anpassung von Umleitungen mit returnTo-Codes

Bei vielen kleineren Modulen muss nichts oder nicht viel an der Logik verändert werden, welche die Bearbeitung von Datensätzen steuert. Häufig ist es aber wünschenswert, dass der Anwender nach dem Speichern seiner Änderungen zu einer bestimmten Stelle umgeleitet wird. In generierten ModuleStudio-Modulen gibt es dafür bereits eine nützliche Funktion.

Im Folgenden wird ein einfaches Modell als Beispiel verwendet: es gibt zwei Entitäten für Kunden und Adressen. Eine bidirektionale 1:n-Beziehung legt fest, dass jeder Kunde mehrere Adressen haben kann, wobei jede Adresse auch auf die Daten des zugeordneten Kunden zugreifen kann. Als Anwendungsfall erstellen beziehungsweise bearbeiten wir eine Adresse.

Generierte Anwendungen in Scribite integrieren

in  Zikula Apps , , ,

Generierte Anwendungen in Scribite integrieren

Bei mit ModuleStudio generierten Modulen werden unter anderem auch Plugins für unterschiedliche WYSIWYG-Editoren erzeugt, die im Modul Scribite integriert sind. Wie diese Plugins eingerichtet werden und was sie können, zeigt dieser Beitrag.

Das Zikula-Modul Scribite bringt eine Reihe von Editoren mit, die flexibel konfiguriert und in anderen Modulen verwendet werden können. So könnte man etwa Summernote als Standardeditor nutzen, in einem bestimmten Modul jedoch TinyMCE, während in einem anderen Modul oder einer bestimmten Modulfunktion QuillJS zum Einsatz kommt.

Worum geht es in diesem Entwickler-Blog?

in  Verschiedenes , , ,

Worum geht es in diesem Entwickler-Blog?

Dieser Blog wird hauptsächlich über die Anpassung von Modulen für das Zikula-Framework berichten. Dabei werden zahlreiche Technologien verwendet, unter anderem Symfony, Twig, Doctrine, Bootstrap und jQuery. Eine Besonderheit ist, dass die Zikula-Module auf modellgetriebenem Wege realisiert werden.

Modellieren – generieren – anpassen

Meistens wird es in diesem Blog um Zikula-Module gehen, die mit dem MDSD-Werkzeug ModuleStudio modelliert und generiert wurden. Manchmal werden kleinere Tipps und Tricks vorgestellt, manchmal vielleicht etwas längere Tutorials und HowTos, die zeigen, wie wir bestimmte Anforderungen umgesetzt haben. Auch von der Entwicklung des ModuleStudio-Generators werde ich berichten.