Nach den ersten Wochen im Frühjahr 2021 wurde es im Repository ruhiger. Im September 2022 gab es kleine Korrekturen, im Januar 2023 kam die Anpassung an Symfony 6. Sie stammt aus einem Pull Request von YetiCGN, den ich im Juni 2023 übernommen habe. Es war der erste Beitrag von außen.
Im September 2023 nahm ich das Bundle wieder in die Hand. Das Ziel: Events sollten sich für Redakteure so verhalten wie die Seiten, die sie aus Sulu kennen. Dazu gehören ein Papierkorb, ein Protokoll darüber, wer was geändert hat, und die Möglichkeit, eine Veröffentlichung zeitlich zu planen. Im November 2023 verlangte das Bundle Sulu 2.5 und PHP 8.1.
Papierkorb
Am 24. September kam der Papierkorb. Gelöschte Events und Orte wandern in den Papierkorb von Sulu und lassen sich von dort wiederherstellen. Dafür schreibt das Bundle einen eigenen Handler. Er speichert beim Löschen Titel, Texte, Bild, URL und die Zusatzdaten (SEO und Excerpt) und baut daraus beim Wiederherstellen das Event wieder auf. Auch die URL wird dabei neu angelegt, sonst wäre das Event zwar zurück, aber über seine Adresse nicht erreichbar.
Am selben Tag folgte ein Bugfix für das Wiederherstellen.
Aktivitäten
Sulu führt ein Protokoll darüber, wer wann welchen Inhalt angelegt, geändert oder gelöscht hat. Eigene Inhalte tauchen dort nur auf, wenn sie dem Protokoll ihre Vorgänge melden. Das Bundle tut das für neun Vorgänge: angelegt, geändert, veröffentlicht, zurückgezogen, gelöscht, wiederhergestellt, in eine andere Sprache kopiert und die beiden zeitgesteuerten Varianten von Veröffentlichen und Zurückziehen.
Für Redakteure ist das ein Gewinn, den man erst bemerkt, wenn man ihn braucht: Wer fragt, warum ein Event plötzlich weg ist oder wer es veröffentlicht hat, findet die Antwort im Protokoll.
Zeitsteuerung
Mit dem Automation Bundle von Sulu lassen sich Vorgänge zu einem festen Zeitpunkt auslösen. Das SuluEventBundle bringt dafür zwei Handler mit: Veröffentlichen und Zurückziehen. Im Event gibt es einen Reiter Automatisierung, dort legt man Zeitpunkt und Aktion fest. Wenn der Zeitpunkt erreicht ist, ändert der Handler den Zustand des Events und meldet den Vorgang an das Aktivitätsprotokoll.
Unter Sulu 3 habe ich die Zeitsteuerung im September 2026 neu angebunden.
Vergangene und kommende Events: erst zwei Provider, dann einer
Auf einer Website will man oft nur bevorstehende Veranstaltungen zeigen, an anderer Stelle ein Archiv der beendeten. Meine erste Lösung vom 5. Oktober waren zwei zusätzliche Smart-Content-Provider, einer für abgelaufene, einer für ausstehende Events, jeweils mit eigener Repository-Klasse.
Drei Tage später habe ich sie wieder gestrichen. Smart Content kennt von sich aus Filtertypen, und die lassen sich in einem einzigen Provider festlegen. Seitdem wählen Redakteure im Smart-Content-Feld zwischen bevorstehenden und beendeten Veranstaltungen, und es gibt nur noch eine Provider-Klasse und eine Abfrage. Der Code wurde dadurch um gut 60 Zeilen kürzer.
Aus solchen Umwegen lerne ich am meisten: Bevor ich für etwas Neues baue, lohnt der Blick, ob Sulu dafür schon einen Haken bereithält.
Weitere Bausteine
Daneben entstanden in dieser Zeit einige kleinere Funktionen:
- Ein Link-Provider, mit dem Redakteure im Texteditor auf ein Event verlinken können.
- Eine Twig-Erweiterung, die Events auflöst und Listen von Events liefert.
- Bild und URL pro Sprache: Seit dem 26. September gehören sie zur Übersetzung des Events.
- Ein Beispiel-Template für die Einzelansicht eines Events.
- Die Indizierung für MassiveSearch, mit Korrekturen im Oktober und November.
Die Tests laufen seit dem 24. September nicht mehr über Travis, sondern über GitHub Actions.
2024
2024 blieb es bei Pflege: Im Januar die Anpassung an Symfony 6.4, im August an Symfony 7. Ebenfalls im August kam ein Pull Request von davidgorges, der die Abfragen PostgreSQL-tauglich machte. Im Herbst 2025 folgte der Kalender. Davon handelt der nächste Beitrag.
Davor: Die ersten Wochen des SuluEventBundle.
Repository: manuxi/SuluEventBundle auf GitHub