srhinow / event-reservation-bundle
this extension the Contao calendar-modul with reservation-functions
Package info
gitlab.com/srhinow/event-reservation-bundle
Type:contao-bundle
pkg:composer/srhinow/event-reservation-bundle
Requires
- php: ^8.3
- contao/calendar-bundle: ^5.3
- contao/core-bundle: ^5.3
- terminal42/notification_center: ^2.5.3
README
Contao 5 Bundle, das das Contao-Calendar-Modul um ein Reservierungssystem für Veranstaltungen ergänzt. Besucher können sich über ein Frontend-Formular für einen Event anmelden; das Bundle verwaltet Plätze, Status und E-Mail-Benachrichtigungen über das terminal42/notification_center.
Voraussetzungen
- PHP ^8.3
- Contao ^5.3
contao/calendar-bundle ^5.3terminal42/notification_center ^2.5.3
Installation
composer require srhinow/event-reservation-bundle
Nach der Installation php bin/console contao:migrate ausführen (legt tl_event_reservations an und führt Schema-Migrationen durch).
Funktionsweise
Backend
Jedem Event in tl_calendar_events werden folgende Felder hinzugefügt:
| Feld | Beschreibung |
|---|---|
attendance | Maximale Anzahl Teilnehmer |
booked | Aktuell bestätigte Buchungen (automatisch aktualisiert) |
In der Backend Event-Listenansicht erscheint ein zusätzliches Icon, das direkt zu den Reservierungseinträgen des Events führt.
Reservierungseinträge (tl_event_reservations)
Jede Reservierung enthält:
- Kontaktdaten (Vorname, Nachname, Straße, PLZ, E-Mail, Telefon)
- Status:
0= offen,1= bestätigt,2= abgelehnt,3= Warteliste statusDate— Zeitstempel der letzten StatusänderungsendEmail— löst beim Speichern eine NC-Benachrichtigung aus
Frontend-Module
| Modultyp | Beschreibung |
|---|---|
EventReservationForm | Reservierungsformular — liest den Event-Alias aus der URL |
EventReservationReader | Event-Reader-Variante mit eingebettetem Reservierungslink |
Das Formular kann direkt auf der Event-Detailseite oder auf einer separaten Seite mit Event-Alias im URL-Parameter eingebunden werden.
Notification Center
Der Benachrichtigungstyp „Event-Reservierung" muss in den NC-Einstellungen angelegt werden.
Verfügbare Token:
| Token | Inhalt |
|---|---|
##reservation_firstname## | Vorname |
##reservation_lastname## | Nachname |
##reservation_street## | Straße |
##reservation_postal## | PLZ |
##reservation_email## | |
##reservation_phone## | Telefon |
##event_title## | Veranstaltungstitel |
##event_startDate## | Startdatum |
##event_endDate## | Enddatum |
##event_startTime## | Startzeit |
##event_endTime## | Endzeit |
##event_max_places## | Maximale Teilnehmerzahl |
##event_open_places## | Noch verfügbare Plätze |
Insert-Tags
In Texten (Eventbeschreibung, Formularseite, Bestätigungsseite) können folgende Insert-Tags verwendet werden:
{{curevent::title}}
{{curevent::startDate}}
{{curevent::endDate}}
{{curevent::startTime}}
{{curevent::endTime}}
{{curevent::max_places}}
{{curevent::open_places}}
Diese lesen automatisch den aktuellen Event aus der URL (GET-Parameter event oder auto_item).
Tests ausführen
PHPUnit wird aus dem Hauptprojekt heraus aufgerufen:
# aus /var/www/b/bz-niedersachsen.de/bzn-cms_contao5
vendor/bin/phpunit -c vendor/srhinow/event-reservation-bundle/phpunit.xml.dist