Das Modul ermöglicht das Bearbeiten von Events im Frontend, wenn auch deutlich abgespeckt. Gedacht ist es für Fälle, wo das Backend dafür überladen und Overkill wäre.
Bearbeitet werden können Start- und Enddatum, Start- und Endzeit (aber ohne das vorherige Anhaken von "Zeit hinzufügen"), Titel, Teaser, Details (früher ein feld direkt bei Events, jetzt ein Inhaltselement vom typ "text") und die CSS-Klasse. Für letztere kann im Backend eine vordefinierte Liste mit "sprechenden Werten" erstellt werden, aus denen der User dann auswählen kann.
Version 3 ist für Contao 3 entwickelt, sollte laufen von 3.2 bis 3.5, sowohl mit PHP 5.6 als auch 7.x.
Version 4 ist für Contao 4 als Bundle entwickelt, und ist für die LTS Contao 4.4 gedacht. Ob es mit neueren Versionen auch funktioniert, kann ich noch nicht sagen.
Link zur Erweiterung:
Version 3 für Contao 3 im Extension Repository: calendar_editor.
Version 4 auf Packagist, installierbar über den Contao-manager contao-calendareditor-bundle
Unterschiede zwischen Version 3 und 4
- In Version 4 gibt es aktuell keine Möglichkeit, eigene TinyMCE-Vorlagen updatesicher einzutragen. Temporär kann man eigene Files in vendor\danielgausi\contao-calendareditor-bundle\src\Resources\contao\tinyMCE kopieren, die sind dann aber nach einem Update ggf. wieder weg.
- In Version 4 wird der DatePicker direkt mitgeliefert, der in Version 3 selbst dazu gebastelt werden muss. Dabei muss aber jQuery im Seitentemplate eingebunden werden, nicht mehr MooTools. Kann in den Moduleinstellungen deaktiviert und angepasst werden. Besondere Beachtung verdient das Stylesheet, das von extern (!) dazu geladen wird (das ist so in der CalendarField-Erweiterung gelöst, die ich dafür nutze). Im Zweifel das externe CSS einmal laden lassen, kopieren, manuell in das Seitenlayout einfügen und das laden des CSS in dieser Erweiterung abschalten.
Hinweise zur Nutzung des Moduls
Zuerst muss ein Modul vom Typ "Event-Editor" erstellt werden. Dort können die erlaubten Kalender angegeben werden, ggf. Pflichtfelder, und einige weitere Einstellungen.
Für das Detail-Feld kann eine TinyMCE-Konfigurationsdatei gewählt werden (eine minimale-Konfig mit "normalen Links" anstelle der "typolinks" ist mit dabei), und für das CSS-Feld kann man eine Liste mit vordefinierten Werten erstellen, aus denen der FE-Nutzer dann auswählen kann.
In den Kalender-Einstellungen muss man dann die Frontend-Bearbeitung aktivieren. Wichtig ist dabei die zweite Weiterleitungsseite, die auf eine Seite mit dem Event-Editor-Modul führt, und natürlich die erlaubten Mitgliedergruppen.
Damit im Eventlisten- und Kalender-Modul Links zur "Bearbeiten"-Seite auftauchen, muss dafür ein anderes Template gewählt werden (z.B. "event_list_edit"). Wie man eigene Templates passend ändert, sollte anhand der Beispiel-Templates klar werden.
Wenn man im Kalender-Modul für jeden Tag einen "Event heute hinzufügen"-Link haben möchte, muss man das Kalender-Modul zusätzlich in ein "Kalender mit FE Bearbeitung"-Modul umwandeln. Das bewirkt dann, dass im Editor das Startdatum bereits passend ausgefüllt ist.
Für einen passenden Bearbeiten-Link auf der Eventleser Seite gibt es das Modul "Eventleser: Edit-Link". Das ersetzt nicht den Eventleser, sondern muss zusätzlich auf die Seite.
Und zuletzt: Damit der Frontend-User auch unveröffentlichte Events später veröffentlichen kann (falls das erwünscht ist), gibt es ein Modul "Unveröffentlichte Eventliste", das einfach alle unveröffentlichten Events auflistet.
Ein paar interne Dinge:
- Das Feld "Details" füllt ein Inhaltselement vom Typ "text", und dort nur das Feld "text". Andere Dinge wie Überschrift (!), Bilder, oder ähnliches werden dort nicht gesetzt.
- Bearbeitet der Frontend-User ein Textfeld, das über das Backend erstellt und mit diesen Dingen befüllt wurde, dann wird die Überschrift gelöscht (die kann ja ggf. auch über den TinyMCE erstellt werden). Dem Frontend-User wird dann aber ein Warnhinweis ausgegeben.Vorhandene Bilder bleiben erhalten.
- Wenn ein Event mehrere Inhaltselemente enthält, dann wird das erste vom Typ "text" zum Bearbeiten präsentiert. Gibt der Frontenduser dann einen leeren Text bei "Details" ein, wird dieses Inhaltselement gelöscht, und die nächste Bearbeitung des Events führt zur Bearbeitung des nächsten Inhaltselementes vom Typ "text".
- Eine im Backend bei einem Event eingestellte Weiterleitung, die die vom Kalender überschreibt, wird bei einer Bearbeitung über das Frontend immer mit "default" überschrieben.