Twig: kleine Syntax-Anpassung mit deutlichem Einspareffekt

in  Basics , ,

Twig: kleine Syntax-Anpassung mit deutlichem Einspareffekt

Der folgende Tipp hilft dabei, den Code-Umfang häufiger Abfragen in Twig-Templates zu reduzieren. Dies verbessert die Lesbarkeit enorm und hilft dabei, die Logik in den Templates intuitiver zu formulieren. Diese Abkürzung kommt komplett ohne zusätzliche Funktionen und Filter aus.

Oft möchte man prüfen, ob eine Variable im Template existiert und einen gültigen Wert enthält. In dem Fall soll etwas mit der Variable getan werden, typischerweise erfolgt eine Ausgabe des Wertes. Ganz explizit formuliert sieht so eine Abfrage in etwa wie folgt aus:

Funktionale Programmierung in Twig: Collections deklarativ verarbeiten

in  Basics , , , , ,

Funktionale Programmierung in Twig: Collections deklarativ verarbeiten

Seit kurzem haben neue Funktionen in die Template-Engine Twig Einzug gehalten. Diese verändern die Art und Weise, wie mit mehrwertigen Daten umgegangen wird, fundamental. Aus diesem Grund soll dieser Artikel beleuchten, wie man mit den neuen Möglichkeiten umgehen kann.

Was heißt deklarativ?

Bei “filter, map und reduce” handelt es sich um ein Muster (Pattern) aus der funktionalen Programmierung. Es erlaubt die Veränderung von Sequenzen (Listen, Arrays, Vektoren, usw.) mittels mehrerer Operationen und Manipulationen, an deren Ende ein Ergebnis steht, welches entweder ausgegeben oder weiter verwendet werden kann. Der Vorteil liegt hier darin, dass diese Veränderungen deklarativ angegeben werden können. Dies führt zu einer sehr prägnanten und lesbaren Syntax.

Zikula Benutzer und Gruppen in DokuWiki verwenden

in  Zikula Apps , ,

Zikula Benutzer und Gruppen in DokuWiki verwenden

In Zikula lassen sich mit Hilfe unterschiedlicher Authentifizierungsmethoden Nutzer auf verschiedenen Quellen einbinden und mischen. So kann man sich beispielsweise mit dem OAuth-Modul via Facebook, LinkedIn, GitHub oder Google anmelden. Auch LDAP ist eine gängige Methode, externe Anmeldungen zuzulassen.

Ab und an ist jedoch genau das Gegenteil gewünscht: Benutzer aus Zikula sollen sich in einem anderen System anmelden können. Dieser Aufgabe haben wir uns kürzlich für das bekannte Wiki-System DokuWiki angenommen. Dieses bietet die Möglichkeit, verschiedene Plugins zur Authentifizierung einzusetzen. Oftmals ist es hier sogar ohne Programmierung möglich, das Plugin authPDO direkt zu verwenden: hier werden in der Konfiguration verschiedene SQL-Anweisungen hinterlegt, mit denen sich DokuWiki die benötigten Daten aus dem Fremdsystem holt.

Vortrag zu Zikula und ModuleStudio bei der Symfony User Group in Köln

in  Verschiedenes , , , , ,

Vortrag zu Zikula und ModuleStudio bei der Symfony User Group in Köln

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.

Ein Blick auf die Entwicklungen des News-Moduls

in  Zikula Apps , , , ,

Ein Blick auf die Entwicklungen des News-Moduls

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.

Zikula Aktualisierung 2.0.13 mit Sicherheitspatches von Symfony

in  Zikula Apps , ,

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

in  Zikula Apps , , , ,

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 Apps , , , , ,

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

in  Zikula Apps , , , ,

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

in  Zikula Apps , , , ,

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.