Schon seit einiger Zeit hatte ich den Wunsch, eine Symfony-Gruppe zu besuchen, um dort einmal kurz zu zeigen, wie wir mit Symfony arbeiten. Gestern hatte es schließlich geklappt. In einem sehr angenehmen und lockeren Ambiente durfte ich mit meinem Talk “Maßgeschneiderte Bundles vom Fließband” zunächst Zikula als ein auf Symfony, Doctrine und Twig aufsetzendes Application Framework vorstellen. Anschließend habe ich dann einen Einblick in die modellgetriebene Entwicklung mit ModuleStudio und die mit der Code-Generierung einhergehenden Besonderheiten gegeben.
Zikula Aktualisierung 2.0.13 mit Sicherheitspatches von Symfony
Der Zikula Core ist soeben in der Version 2.0.13 erschienen, da eine Reihe von sicherheitsbezogenen Änderungen in Symfony eingeflossen sind. Hier der Link zu den einzelnen Änderungen:
Auch wenn die Lücken die Standardinstallationen bzw. -nutzungen von Zikula offenbar nicht direkt betreffen, ist eine Einspielung des Updates natürlich dennoch empfehlenswert.
Weitere Informationen zu den einzelnen Patches können übrigens im Symfony-Blog nachgelesen werden.
Unterschiedliche Startseiten je Domain oder Einstellung einbinden
Eine häufige Anforderung besteht darin, die Startseite eines Projektes individuell anzupassen. Zikula bietet zwar die Möglichkeit, eine Controller-Aktion sowie die zu übergebenden Argumente in der Grundkonfiguration einer Seite einzustellen, allerdings ist diese Funktionalität bislang doch eher eingeschränkt. Mit einigen Modulen, wie etwa Content, sind zwar unterschiedliche Inhalte je Sprache auf ein und derselben Seite möglich, aber auch das kann nicht alle Varianten abdecken. Also was für Möglichkeiten gibt es? 😕
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.
Zikula Core 3 bietet Mittel für dynamische Formularelemente
Das Profile-Modul von Zikula bietet seit langer Zeit die Möglichkeit, die einzelnen Angaben der Benutzerprofile flexibel zu verändern und nach Belieben zu konfigurieren. Diese Funktionalität wurde im Laufe der letzten Jahre mehrfach umgebaut und basiert mittlerweile auf Symfony Forms. Diese Implementierung ist relativ smart gelöst: man wählt zunächst einen Feldtyp aus und anschließend werden via Ajax automatisch weitere Felder zur Spezifikation der dazugehörigen, möglichen Feldoptionen geladen.
Etwas abstrahiert betrachtet lassen sich hiermit also Meta-Formulare zur Definition von Formularen definieren. Nun ist dies ja nicht nur für Benutzerprofile, sondern für zahlreiche weitere Anwendungen interessant: beispielsweise könnte man Kontaktformulare dynamisch zusammenbauen; das selbe gilt für jegliche Art von Umfragen. Oder man möchte einfach zu einem beliebigen Datenobjekt dynamisch weitere Angaben dokumentieren - damit könnte solch eine Funktion perspektivisch auch für die generischen Attribute, welche sich für diverse Entitäten nutzen lassen, nützlich sein.
Der Fokus von Zikula Core 3
Mit der Verfügbarkeit einiger zentraler Module für Zikula 2 ist eine der größten Hürden beseitigt, die den Umstieg für viele Nutzer in der Vergangenheit erschwert oder gar blockiert hatte. Die letzten kleineren Updates wurden auch nur noch für Zikula Core 2.0.x veröffentlicht - die Serie Zikula Core 1.5.x hingegen ist - von sicherheitsrelevanten Patches abgesehen - eingestellt.
Grund genug, einmal einen Blick nach vorne zu werfen, um zu schauen, welche Punkte in der Zukunft anstehen. Wichtig bei der Abgrenzung für Zikula Core 3 war insbesondere, hier einen eher schlanken Schnitt zu machen. Es werden nur wenige ausgewählte Punkte angegangen, alles weitere kann dann wiederum in Version 4 folgen. Lieber kleinere Päckchen und dafür kürzere Intervalle.
Neue Module braucht das Land
Hier gibt es einige frisch geschnürte Module für Zikula 2.0.11:
- Content 5.0.1
Die Basis für anspruchsvolles Content Management. - Formicula 5.0.0
Formulare zur Kontaktaufnahme, für Anmeldungen, Reservierungen usw. - Media 1.3.0 beta
Organisation von Bildern und anderen Medien. - Scribite 6.0.2
Integration unterschiedlicher WYSIWYG-Editoren.
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.
Atom-Editor zur Symfony- und Zikula-Entwicklung einrichten
Rund um den ursprünglich von GitHub ins Leben gerufene Editor Atom hat sich mittlerweile ein ansehnliches Ökosystem entwickelt. So existieren aktuell bereits knapp 8.000 Erweiterungen für alle möglichen Einsatzzwecke und über 2.500 Themes zur Veränderung der Darstellung. Atom gilt als äußerst anpassbarer Editor, da das Konzept der Packages direkt im Kern verankert ist.
Zu den subjektiv für mich vielversprechendsten Funktionen gehören die nahtlose Einbindung von Git-Workflows und GitHub sowie das sogenannte Teletype, welches die simultane Arbeit mit mehreren Entwicklern ermöglicht - ähnlich wie man es von Google Docs kennt.
Zikula 1.5.8 und 2.0.9 veröffentlicht
Es gibt wieder neue Core-Releases, welche einige Verbesserungen und auch zwei Sicherheitspatches von Symfony mitbringen. Hier die Links zu den einzelnen Änderungen:
Als Cross-Release wurden neue Versionen für die 1.5er und die 2.0er Linie des Zikula Cores veröffentlicht. Zikula 1.5.x basiert auf Symfony 2.8 und beinhaltet eine Kompatibilitätsschicht für ältere Erweiterungen und Anwendungen. Zikula 2.0.x verwendet hingegen Symfony 3.4 und bietet keinen Legacy-Support. Beide Updates bringen diverse Aktualisierungen verwendeter Drittkomponenten und auch einige Korrekturen. Weitere Details finden sich auf der Projektseite.