calendar_editor
Das Gröbste zur Handhabung dieses Moduls steht auch im Contao-Forum, aber hier möchte ich etwas detaillierter darauf eingehen, auch auf die Verwendung der Hooks.
1. Ein Modul vom Typ "Event-Editor" erzeugen
Dieses Modul erzeugt auf der Seite ein Formular, über das die Daten eingegeben werden können und sorgt beim Abschicken dafür, dass die Daten korrekt in die Datenbank geschrieben werden.
Wie bei anderen Formularen auch, kann hier eine Weiterleitungsseite angegeben werden, die nach dem Abschicken des Formulars angezeigt wird. Wie bei einem Modul vom Typ Eventleser auch, müssen die Kalender definiert werden, in denen generell Events bearbeitet werden dürfen. Ob dem User das Bearbeiten auch tatsächlich erlaubt wird, hängt dann auch noch von den Einstellungen im Kalender selbst ab.
Sie können angeben, welche Felder zusätzlich zu "Startdatum" und "Titel" immer ausgefüllt werden müssen, ob dre Frontend-Nutzer die Events auch selbst veröffentlichen darf, ob er sie auch wieder komplett löschen kann, und ob und an wen eine Benachrichtigungs-Email geschickt werden soll, wenn ein Event erstellt/bearbeitet/gelöscht wird.
Bei den Template-Einstellungen können Sie wählen, welche Konfigurationsdatei für den TinyMCE Richtext-Editor verwendet werden soll.
Hinweis: Sie sollten auf jeden Fall in der Konfiguration das Feld "typolinks" durch "link" ersetzen, wie es in "TinyFrontendMinimal" geschehen ist. Ein Frontend-User hat auf die Seitenstruktur im Backend keinen Zugriff!
Für die unterschiedliche Darstellung der Events mit CSS müssen sie den User nicht mit Technik-Kram belangen. Sie können das Feld CSS beliebig umbenennen (z.B. "Ort", "Gruppe", "Trainer") und eine Liste mit vordefinierten Werten erstellen, aus denen der User dann im Formular auswählen kann.
Dieses Modul packen Sie dann auf eine neue Seite "Termin bearbeiten" .
2. Frontend-Bearbeitung im Kalender aktivieren
In den Einstellungen des Kalenders müssen Sie dann das Bearbeiten im Frontend aktivieren. Als Weiterleitungsseite geben Sie die Seite an, auf die Sie gerade den Event-Editor eingefügt haben. Außerdem müssen Sie mindestens eine Mitgliedergruppe angeben, die Termine für diesen Kalender erstellen darf.
Das Bearbeiten der Events können Sie auf den Ersteller beschränken, ansonsten kann jeder User jedes Event bearbeiten. Die Frontend-Administratoren können auch dann alle Events bearbeiten, wenn diese Option aktiviert ist. Das könnte sinnvoll für Sie selbst sein, wenn Sie schnell etwas korrigeiren möchten, ohne sich ins Backend einzuloggen.
Seit Version 1.2 gibt es die Option, das Bearbeiten vergangener Events zu verhindern. Dann können vergangene Termine nur noch von Frontend-Administratoren (oder im Backend) erstellt und bearbeitet werden.
Hinweis: Bei den einzelnen Events gibt es die Option "Frontend-Bearbeitung sperren". Damit können Sie einzelne Events für die Bearbeitung im Frontend sperren. Das gilt dann auch für die Frontend-Administratoren!
3. vorhandene Module und Templates anpassen
Damit in den vorhandenen Kalender-/Eventlisten-/Eventleser-Modulen auch Links zum Bearbeiten angezeigt werden, müssen diese Module angepasst werden.
Das Bild ist von der Webseite st-margareta.de, für die das Modul entstanden ist. Die Hinzufügen/Bearbeiten-Links sind mit den Contao-Symbolen gestaltet. Im Mouseover der Titel im Kalender erscheint links daneben der Teaser mit dem Edit-Link.
Für die Eventliste reicht eine Änderung des Templates. Sie können dafür eines der vorgefertigten nutzen (z.B. "event_full_edit"), oder ihren bereits modifizierten Templates so etwas hinzufügen:
<?php if ($this->editref): ?>
<p class="editlink"><a href="<?php echo $this->editref; ?>"
title="<?php echo $this->editTitle; ?>">
<?php echo $this->editLabel; ?> </a>
</p>
<?php endif; ?>
Es ist dabei sichergestellt, dass "editref" nur dann mit einem passenden Link gefüllt ist, wenn der aktuell angemeldete User das auch darf. Sie müssen also nicht für Gäaste und Editoren unterschiedliche Eventlisten anzeigen lassen. Und wenn ein unberechtigter Nutzer einen solchen Link herausfindet: Auch egal. Der Event-Editor überprüft die Zugriffsrechte und zeigt anstelle des Formulars eine Fehlermeldung an.
Diese Bearbeiten-Links werden auch im Kalender angezeigt, wenn Sie das Kalender-Template entsprechend anpassen. Wenn Sie im Kalender zusätzlich an jedem Tag einen "Event Hinzufügen"-Link haben möchten, dann müssen Sie den Modultyp des Kalenders auf "Kalender mit FE Bearbeitung" ändern. In dem Template (z.B. "cal_default_edit") werden diese Links so ergänzt ("addref")
<?php foreach ($week as $day): ?>
<td class="<?php echo $day['class']; ?>">
<div class="header">
<?php echo $day['label']; ?>
<?php if ($day['addref']): ?>
<a class="addlink" href="<?php echo $day['addref']; ?>"
title="<?php echo $day['addTitle']; ?>">
<?php echo $day['addLabel']; ?> </a>
<?php endif; ?>
</div>
<?php foreach ($day['events'] as $event): ?>
// usw.
Klickt der User einen solchen Hinzufügen-Link an, öffnet sich die Bearbeiten-Seite, und das Feld "Startdatum" ist bereits passend ausgefüllt.
Und zuletzt: Wenn Sie auch auf der Eventleser-Seite einen Link zum Bearbeiten haben wollen, müssen Sie dafür ein Modul vom Typ "Eventleser: Editlink" auf die Seite mit dem Eventleser einfügen. Auch hier gilt wieder: Der Link wird nur autorisierten Nutzern angezeigt.
4. Versteckte Events durch den Frontend-User anzeigen lassen
Bleibt noch eine letzte Kleinigkeit: Wenn der Frontend-User einen Termin erst später veröffentlichen möchte, dann bekommt er ihn natürlich nicht im Frontend angezeigt. Daher gibt es einen weiteren neuen Modultyp: Die "Unveröffentlichte Eventliste". Dieses Modul zeigt einfach alle Events an, die noch nicht veröffentlicht sind.
Da der normale Eventleser die Termine natürlich nicht anzeigt, sollten Sie dafür ein Template verwenden, das nur Links zur "Bearbeiten"-Seite anzeigt. Einen Eventleser für unveröffentlichte Termine habe ich mir erspart.
Hinweis: Dieses Modul überprüft keinerlei Rechte. Sie sollten es also nur den berechtigten Gruppen anzeigen, damit die Gäste Ihrer Seite diese Events nicht zu Gesicht bekommen.
5. Modul erweitern/anpassen
Wenn der Event-Editor nicht den eigenen Bedürfnissen entspricht, können Sie ihn anpassen. Mehr dazu auf dieser Seite.