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
Requires (Dev)
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2026-05-27 18:07:37 UTC
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.
Anforderungen
| Abhängigkeit | Version |
|---|---|
| PHP | ^8.3 |
| Contao Core Bundle | ^5.3 |
| Contao Calendar Bundle | ^5.3 |
| terminal42/notification_center | ^2.5.3 |
Installation
composer require srhinow/event-reservation-bundle
Nach der Installation die Datenbank-Migration ausführen:
php bin/console contao:migrate
Backend
Erweiterung tl_calendar_events
Das Bundle fügt in der Event-Maske eine neue Palette-Sektion „Reservierung" hinzu:
| Feld | Beschreibung |
|---|---|
Reservierungslink ausblenden (dontShowReserveLink) | Checkbox: Blendet den Reservierungslink in der Eventansicht aus |
Maximale Teilnehmer (attendance) | Anzahl der verfügbaren Plätze (Pflichtfeld, Ganzzahl) |
Benachrichtigungs-E-Mail (ereserv_formto_email) | E-Mail-Adresse für eingehende Reservierungsbenachrichtigungen |
E-Mail-Betreff (ereserv_formto_subject) | Betreff der Benachrichtigungs-E-Mail |
Automatisch berechnete Felder (nicht im Formular sichtbar):
| Feld | Beschreibung |
|---|---|
booked | Aktuell bestätigte Buchungen — wird bei jeder Reservierungsänderung automatisch aktualisiert |
In der Backend-Eventliste erscheint ein zusätzliches „Reservierungen"-Icon, das direkt zu den Reservierungseinträgen des Events führt.
Reservierungseinträge (tl_event_reservations)
Kindeinträge eines Events. Über die globale Operation „CSV-Export" können alle Reservierungen eines Events exportiert werden.
| Feld | Beschreibung |
|---|---|
Vorname (firstname) | Pflichtfeld |
Nachname (lastname) | Pflichtfeld |
Straße (street) | Optionales Adressfeld |
PLZ (postal) | Optionales Adressfeld |
Ort (city) | Pflichtfeld |
Telefon (phone) | Pflichtfeld, wird auf Telefonnummern validiert |
E-Mail (email) | Pflichtfeld, primäre E-Mail-Adresse |
E-Mail 2 (email2) | Optionale zweite E-Mail-Adresse |
Status (status) | offen / bestätigt / abgelehnt / Warteliste — löst bei Änderung statusDate aus |
Benachrichtigung (notification) | Auswahl einer Notification-Center-Benachrichtigung |
E-Mail senden (sendEmail) | Checkbox: Löst beim Speichern eine NC-Benachrichtigung aus |
Anmerkung (annotation) | Internes Notizfeld (Freitext) |
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).
Datenbankstruktur
Erweiterung tl_calendar_events
| Spalte | Typ | Beschreibung |
|---|---|---|
dontShowReserveLink | char(1) | Reservierungslink ausblenden |
attendance | smallint(5) unsigned | Maximale Teilnehmerzahl |
ereserv_formto_email | varchar(255) | Benachrichtigungs-E-Mail |
ereserv_formto_subject | varchar(255) | Benachrichtigungs-Betreff |
booked | smallint(1) | Aktuell bestätigte Buchungen (automatisch) |
tl_event_reservations
| Spalte | Typ | Beschreibung |
|---|---|---|
id | int(10) unsigned PK AI | Primärschlüssel |
pid | int(10) unsigned | Eltern-Event (tl_calendar_events.id) |
tstamp | int(10) unsigned | Zeitstempel letzte Änderung |
modify | int(10) unsigned | Reserviertes Änderungsdatum |
member_id | int(10) unsigned | Verknüpftes Frontend-Mitglied (optional) |
firstname | varchar(255) | Vorname |
lastname | varchar(255) | Nachname |
street | varchar(255) | Straße |
postal | varchar(32) | PLZ |
city | varchar(255) | Ort |
phone | varchar(64) | Telefon |
email | varchar(255) | |
email2 | varchar(255) | Zweite E-Mail |
status | char(1) | Status: leer/1/2/3 |
notification | int unsigned | Ausgewählte NC-Benachrichtigung |
statusDate | varchar(10) | Zeitstempel der letzten Statusänderung |
sendEmail | char(1) | E-Mail senden beim Speichern |
annotation | text NULL | Interne Anmerkung |
Tests ausführen
vendor/bin/phpunit -c vendor/srhinow/event-reservation-bundle/phpunit.xml.dist
Changelog
Siehe CHANGELOG.md für die vollständige Versionshistorie.
Lizenz
LGPL-3.0-or-later
Autor
Sven Rhinow — sr-tag.de
Support: kservice@sr-tag.de
Quellcode: gitlab.com/srhinow/event-reservation-bundle