Das News-Modul von Zikula blickt auf eine lange Historie zurück. Schon als ich vor etwa 20 Jahren das erste mal mit PostNuke in Berührung kam, war dort ein News-Modul an Bord. War die Funktionalität noch relativ überschaubar gehalten, erlaubte es doch eine schnelle Publikation von Neuigkeiten und wurde auf sehr vielen Seiten eingesetzt. Über die Jahre wurden weitere Features hinzugefügt; andere Wünsche blieben längere Zeit offen, zum Beispiel in Bezug auf die Behandlung mehrerer Bilder zu einem Artikel.
Funktionen im Generator zur Versionierung von Daten
ModuleStudio erlaubt die Nutzung unterschiedlicher Doctrine-Erweiterungen, indem diese im jeweiligen Anwendungsmodell aktiviert und ggf. konfiguriert werden. Neben Baumstrukturen (tree / nested set), lesbaren Permalinks (sluggable) oder Übersetzungen zur Umsetzung mehrsprachiger Daten (translatable) sowie weiteren Funktionen steht hier auch die Möglichkeit zur Verfügung, die Änderungen an Datensätzen in Form einer Revisionierung aufzuzeichnen. Dieser Beitrag gibt einen Überblick über die damit einhergehenden Features. Als gemeinsame Basis der im Folgenden beschriebenen Funktionen kommt die Loggable-Extension für Doctrine zum Einsatz.
Spannende Neuerungen im Zikula Core
In Zikula 3 werden endlich weitere hilfreiche Funktionen von Symfony verwendet. Zikula 2.x hat bereits auf Symfony 3.4.x aufgesetzt, aber aus Rücksicht auf die Abwärtskompatibilität noch nicht alle Potenziale ausgereizt. Die aktuelle Arbeitsversion von 3.0.0 basiert indes auf Symfony 4.2.4 und setzt noch stärker auf die mit Symfony einhergehenden Möglichkeiten.
Besonders angetan bin ich von den Modernisierungen bei der Dependency Injection: mit dem sogenannten Autowiring werden Services automatisch injiziert, es ist keine manuelle Definition (via YAML oder XML) mehr notwendig. Symfony erkennt automatisch anhand der Typehints in Konstruktor oder anderen Methoden, welche Services injiziert werden müssen. Zweitens können auch Service Tags mit dem Autoconfiguring automatisch gesetzt werden: Symfony leitet hierbei aus einem Interface ab, welches Tag zu vergeben ist. Sobald also zum Beispiel ein Block oder Content Type gebaut wird, wird dieser automatisch als solcher gekennzeichnet. Wir haben dies nicht nur im Core und allen Systemmodulen eingeführt, sondern natürlich auch im ModuleStudio-Generator. Insbesondere bei Anpassungen generierter Module lassen sich unnötige Arbeitsschritte vermeiden, mußte man doch bisher immer die YAML-Definitionen ändern. Es fliegt also nicht nur unnötiger Code in die Tonne, sondern man spart auch lästige Fleißarbeit.
Neue Versionen von Content und MultiHook
Seit gestern steht das Content-Modul in der Version 5.1.0 zum Download bereit. Zu den neuen Funktionen zählen neben kleineren Verbesserungen, etwa für den Inhaltstyp zur Integration von Informationen über den Autor einer Seite, unter anderem die neuen Einstellmöglichkeiten in Bezug auf die Sichtbarkeit von Seiten und einzelnen Elementen, über die hier kürzlich berichtet wurde.
Eine Veränderung in der Oberfläche von Content betrifft die Art und Weise, wie neue Inhaltselemente einer Seite hinzugefügt wurden: statt diese via Drag n Drop aus einer Palette auf der linken Seite in den gewünschten Bereich zu verschieben (was Probleme in Verbindung mit der responsiven Darstellung verursacht hatte), wird nun per Knopfdruck ein modales Fenster geöffnet, in dem man den gewünschten Inhaltstyp via Mausklick auswählen kann.
Flexible Einstellung von Sichtbarkeiten im Content-Modul
Schon in einer sehr frühen Generation des Content-Moduls zur Inhaltsverwaltung gab es die Möglichkeit, ein Inhaltselement nicht für alle Besucher, sondern entweder nur für alle angemeldeten Nutzer oder für alle nicht angemeldeten Gäste freizugeben. Damit ließen sich beispielsweise unterschiedliche Begrüßungstexte darstellen.
Als wir das Content-Modul kürzlich neu gebaut hatten, wurde diese Funktion bereits etwas erweitert: einzelne Elemente konnten nun auch lediglich für einzelne Benutzergruppen eingestellt werden. Das ist in vielen Fällen hilfreich, etwa wenn man exklusive Inhalte für Partner oder Kunden mit anzeigen möchte.
Neuer private-Modus im Generator zur alleinigen Anzeige eigener Daten
In ModuleStudio gibt es für jede Entität eine Einstellung namens ownerPermission
. Dieser Schalter legt fest, ob Benutzer in der Lage sein sollen, (lediglich) ihre eigenen Daten zu verwalten und zu bearbeiten. Diese Option kann in vielen Anwendungsfällen nützlich sein: in einem Magazin, das Beiträge von mehreren Autoren veröffentlicht, soll beispielsweise jeder Nutzer neue Beiträge einreichen, aber auch nur seine eigenen Beiträge bearbeiten können. Oder vielleicht möchte man in einem Urlaubsportal den Nutzern die Möglichkeit bieten, eigene Reiseangebote einzustellen und diese auch zu verändern. Natürlich soll aber die Veränderung fremder Angebote nur für Moderatoren und Administratoren erlaubt sein.
Neue Generator-Verbesserung zur Darstellung von Geodaten
Bereits seit einigen Jahren ist es möglich, Entitäten in ModuleStudio als geografisch zu kennzeichnen. Dies führt dazu, dass den entsprechenden Objekten Felder zur Speicherung von Koordinaten hinzugefügt werden. In der Detailansicht eines Objektes wird dann mit Hilfe der (sehr flexiblen und mächtigen) Bibliothek Leaflet eine Karte eingebunden. Auch beim Bearbeiten eines Datensatzes wird eine Karte zur Verfügung gestellt, welche die Angabe der Position durch Setzen eines Markers erlaubt. Auch andere Funktionen, wie etwa Geolocation, werden unterstützt.
Content Management mit Zikula 2 in der Praxis ausprobiert
Nachdem kürzlich einige Module erschienen sind, um Inhalte mit Zikula 2 zu verwalten, haben wir nun zwei mittelgroße Projekte damit aufgebaut. Auch wenn im Detail noch nicht alles 100%ig am Schnürchen lief, ist das Gesamtergebnis unter dem Strich doch sehr erfreulich. Insgesamt fühlt sich das neue Content deutlich “fluffiger” an: die Wege sind kürzer geworden und somit wird eine flüssigere Arbeitsweise unterstützt.
Einige neue Funktionen haben wir im Rahmen der ersten Projekte insbesondere beim Medienmodul nachgerüstet. So ist es beispielsweise sehr hilfreich, bei der Auswahl von Bildern - sowohl im Content Type als auch zum Einfügen in einen der in Scribite vorhandenen WYSIWYG-Editoren - direkt eine Vorschau des jeweiligen Bildes angezeigt zu bekommen.
ModuleStudio 1.3.2 ist jetzt verfügbar
Eine neue Version von ModuleStudio steht zum Download auf der Projektseite bereit. Wer das Tool bereits nutzt, kann auch die integrierte Update-Funktion nutzen, um das Programm zu aktualisieren. Der Artikel zum Release gibt einen Überblick über die wichtigsten Neuerungen. Alle Änderungen im Detail lassen sich indes dem Changelog entnehmen.
ModuleStudio 1.3.1 ist jetzt verfügbar
Eine neue Version von ModuleStudio steht zum Download auf der Projektseite bereit. Wer das Tool bereits nutzt, kann auch die integrierte Update-Funktion nutzen, um das Programm zu aktualisieren. Ein kurzer Überblick über die wichtigsten Neuerungen lässt sich dem Changelog entnehmen.