# filtered-eventsexport-bundle Contao 5.7 Bundle für eine gefilterte Eventliste mit PDF-Export. ## Funktionen - Frontend-Modul `filtered_eventsexport_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-` - `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 oder per Git-Repository eingebunden und im Hauptprojekt per Composer installiert. Paketname: - `mummert/filtered-eventsexport-bundle` Beispiel-Repository (Gitea): - `ssh://git@git.mummert.media:3245/mummert/filtered-eventsexport-bundle.git` ## Modul-Konfiguration Backend-Modultyp: - `gefilterte Eventliste` (`filtered_eventsexport_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/FilteredEventsExportExtension.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.