srhinow/event-reservation-bundle

this extension the Contao calendar-modul with reservation-functions

Maintainers

Package info

gitlab.com/srhinow/event-reservation-bundle

Issues

Type:contao-bundle

pkg:composer/srhinow/event-reservation-bundle

Statistics

Installs: 358

Dependents: 0

Suggesters: 0

Stars: 0

2.2.10 2026-05-27 20:06 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ängigkeitVersion
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:

FeldBeschreibung
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):

FeldBeschreibung
bookedAktuell 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.

FeldBeschreibung
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

ModultypBeschreibung
EventReservationFormReservierungsformular — liest den Event-Alias aus der URL
EventReservationReaderEvent-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:

TokenInhalt
##reservation_firstname##Vorname
##reservation_lastname##Nachname
##reservation_street##Straße
##reservation_postal##PLZ
##reservation_email##E-Mail
##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

SpalteTypBeschreibung
dontShowReserveLinkchar(1)Reservierungslink ausblenden
attendancesmallint(5) unsignedMaximale Teilnehmerzahl
ereserv_formto_emailvarchar(255)Benachrichtigungs-E-Mail
ereserv_formto_subjectvarchar(255)Benachrichtigungs-Betreff
bookedsmallint(1)Aktuell bestätigte Buchungen (automatisch)

tl_event_reservations

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
pidint(10) unsignedEltern-Event (tl_calendar_events.id)
tstampint(10) unsignedZeitstempel letzte Änderung
modifyint(10) unsignedReserviertes Änderungsdatum
member_idint(10) unsignedVerknüpftes Frontend-Mitglied (optional)
firstnamevarchar(255)Vorname
lastnamevarchar(255)Nachname
streetvarchar(255)Straße
postalvarchar(32)PLZ
cityvarchar(255)Ort
phonevarchar(64)Telefon
emailvarchar(255)E-Mail
email2varchar(255)Zweite E-Mail
statuschar(1)Status: leer/1/2/3
notificationint unsignedAusgewählte NC-Benachrichtigung
statusDatevarchar(10)Zeitstempel der letzten Statusänderung
sendEmailchar(1)E-Mail senden beim Speichern
annotationtext NULLInterne 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 Rhinowsr-tag.de
Support: kservice@sr-tag.de
Quellcode: gitlab.com/srhinow/event-reservation-bundle