Contao

Auf dieser Seite möchte ich die Erweiterungen vorstellen, die ich für das Open Source Content Management System "Contao" entwickelt habe.

calendar_editor

Mit der Erweiterung calendar_editor ist es registrierten Nutzern möglich, vom Frontend aus Termine in den Kalender einzutragen. Das soll einfacher sein als die Bearbeitung im Backend. Deswegen ist es ausdrücklich gewollt, dass nicht alles möglich ist, was im Backend möglich ist.

Bearbeiten werden können nur Start- und Enddatum, Start- und Endzeit, Titel, Teaser, Text. Das Feld CSS wird auch unterstützt. Um das für den technisch weniger versierten Frontendnutzer verständlicher zu gestalten, wird dieses Feld in dem Formular so angezeigt, wie es für die jeweilige Seite sinnvoll ist, wenn unterschiedliche Termine unterschiedlich gestaltet werden sollen (z.B. durch andere Farbgebung nach Ort, Trainer, Kurs, oder was auch immer). Ebenso können im Backend zulässige "sprechende" Werte definiert werden (z.B. Clubhaus A, Trainingsplatz B), aus denen der Nutzer dann auswählen kann.

Mit Contao 3 werden die Details zu einem Termin über Inhaltselemente erzeugt. Das ist sehr mächtig und konsistent zum restlichen System, aber auch recht umständlich. Das Formularfeld "Details" beschreibt daher nur ein Inhaltselement vom Typ "Text", und füllt dort nur die Eigenschaft "Text" aus. Andere (z.B. Überschrift, Bild hinzufügen, ...) können nicht bearbeitet werden. Die Überschrift kann aber über den TinyMCE in den "Text" integriert werden.

Wenn ein Event im Backend erstellt wurde und mehrere Inhaltselemente enthält, oder das erste Text-Element auch ein Bild enthält, dann wird im Bearbeiten-Template eine Warnung ausgegeben.

Der Frontendnutzer kann damit

  • Neue Termine erstellen
  • Vorhandene Termine bearbeiten. Dabei gibt es die Option: "Als Kopie speichern", um einen neuen Termin mit ähnlichen Angaben zu erstellen
  • Vorhandene Termine löschen (das löscht die Termine aus der Datenbank, und schaltet sie nicht nur auf "Nicht veröffentlichen"
  • Vorhandene Termine duplizieren. Das ermöglicht, für einen Termin bis zu 10 weitere Start- und Enddaten einzugeben, um häufigere Termine schneller einzugeben. Das ließe sich zwar auch über "wiederkehrende Termine" wie im Backend erledigen, aber diese Lösung finde ich flexibler. 

calendar_editor erweitern

Kurz nach der Veröffentlichung kamen bereits einige Feature-Wünsche, die ich aber nicht direkt einbauen möchte, da damit Abhängigkeiten von weiteren Erweiterungen nötig würden. Ich aber den Code aber so gestaltet, dass man mit Hilfe zweier Hooks den Kalender-Editor an die eigenen Bedürfnisse anpassen kann.