Initial bundle implementation

This commit is contained in:
Jürgen Mummert
2026-02-18 21:30:04 +01:00
commit 00ef6aba91
18 changed files with 1488 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
# gymnasium-nossen-bundle
Contao 5.7 Bundle für eine gefilterte Eventliste mit PDF-Export.
## Funktionen
- Frontend-Modul `gymnasium_eventlist` (Kategorie `events`)
- Zwei-Spalten-Layout im Frontend (links Filter/Export, rechts Eventliste)
- Filter über:
- Event-Archive (Checkboxen, Multi-Select)
- Date-Range `from` und `to` (`YYYY-MM-DD`)
- Auto-Filter ohne separaten Submit-Button (bei Datums- oder Archivänderung)
- Flatpickr via CDN (Dark Theme) mit Clear-Button pro Datumsfeld
- Ausgabe nur erlaubter Archive/Events gemäß Archivschutz
- CSS-Klassen pro Event im Markup:
- `pid-<id>`
- `is-featured` (wenn Event im Backend hervorgehoben)
- PDF-Export ausgewählter Events über `/events/pdf`
- Optionale PDF-Felder:
- Überschrift
- Einleitungstext
## Anforderungen
- PHP `^8.4`
- `contao/core-bundle ^5.7`
- `contao/calendar-bundle ^5.7`
- `dompdf/dompdf ^3.1`
## Installation im Hauptprojekt
Das Bundle wird als `path`-Repository eingebunden und im Hauptprojekt per Composer installiert.
## Modul-Konfiguration
Backend-Modultyp:
- `gefilterte Eventliste` (`gymnasium_eventlist`)
Einstellungen:
- `cal_calendar` (Mehrfachauswahl)
Hinweis zur Archivfilter-Vorauswahl:
- Erstaufruf: alle erlaubten Archive sind vorausgewählt
- Bewusst alle Archive abgewählt: es werden keine Events angezeigt (`Keine Termine gefunden.`)
## PDF-Export
Route:
- `POST /events/pdf`
POST-Felder:
- `event_ids[]` (Pflicht)
- `from` (optional)
- `to` (optional)
- `pdf_heading` (optional)
- `pdf_intro` (optional)
PDF-Inhalt:
- Logo oben rechts (nur erste Seite)
- Überschrift (optional überschreibbar)
- Einleitungstext (optional)
- Datumsbereich (falls gesetzt)
- Eventzeilen mit Contao-Zeitlogik (`addTime`, `startDate/endDate`, `startTime/endTime`)
- Datum/Uhrzeit in Dunkelgrau und kursiv
## Berechtigungslogik (Archive)
- Nicht eingeloggte Nutzer sehen nur ungeschützte Event-Archive.
- Eingeloggte `tl_member` sehen zusätzlich geschützte Archive, wenn ihre Mitgliedsgruppen in den Archivgruppen enthalten sind.
- Diese Logik gilt sowohl für den Archiv-Filter als auch für die Eventliste.
## Aktive Struktur (final)
- `contao/config/modules.php`
- `contao/dca/tl_module.php`
- `contao/languages/de/modules.php`
- `contao/languages/en/modules.php`
- `contao/templates/frontend/module_event_list.html.twig`
- `src/Contao/Manager/Plugin.php`
- `src/Controller/EventListModuleController.php`
- `src/Controller/EventPdfController.php`
- `src/DependencyInjection/GymnasiumNossenExtension.php`
- `src/Resources/config/routes.yaml`
- `src/Resources/contao/config/services.yaml`
- `Resources/views/frontend/module_event_list.html.twig`
- `Resources/views/pdf/events.html.twig`
- `Resources/img/2022_06_26_Gymnasium_Nossen_Siegel_schwarz.svg`
## Hinweise
- Die primären Twig-Dateien für das Runtime-Rendering liegen unter `Resources/views/...`.
- Nach Änderungen: `cache:clear` ausführen.