Feature-Toggles, Administration, wiederkehrende Events und Event-Serien

- Administration & Rollenmanagement: Neuer Admin-Bereich mit Feature-Toggles
  und Sichtbarkeitseinstellungen pro Rolle (11 Toggles, 24 Visibility-Settings)
- AdministrationController mit eigenem Settings-Tab, aus SettingsController extrahiert
- Feature-Toggle-Guards in Controllers (Invitation, File, ListGenerator, Comment)
  und Views (events/show, events/edit, events/create)
- Setting::isFeatureEnabled() und isFeatureVisibleFor() Hilfsmethoden
- Wiederkehrende Trainings: Täglich/Wöchentlich/2-Wöchentlich mit Ende per
  Datum oder Anzahl (max. 52), Vorschau im Formular
- Event-Serien: Verknüpfung über event_series_id (UUID), Modal-Dialog beim
  Speichern und Löschen mit Optionen "nur dieses" / "alle folgenden"
- Löschen-Button direkt in der Event-Bearbeitung mit Serien-Dialog
- DemoDataSeeder: 4 Trainings als Serie mit gemeinsamer event_series_id
- Übersetzungen in allen 6 Sprachen (de, en, pl, ru, ar, tr)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rhino
2026-03-03 08:38:45 +01:00
parent 0990e4249c
commit 8ccadbe89f
27 changed files with 1968 additions and 698 deletions

View File

@@ -663,4 +663,57 @@ return [
// Sichtbarkeit
'visibility_feature_finances' => 'Finanzen',
// Administration
'nav_administration' => 'Administration',
'admin_title' => 'Administration',
'admin_tab_features' => 'Rollenmanagement',
'admin_tab_mail' => 'E-Mail',
'admin_tab_license' => 'Lizenz & Support',
'admin_tab_maintenance' => 'Wartung',
'admin_tab_activity' => 'Aktivitätslog',
'features_description' => 'Aktiviere oder deaktiviere Funktionen global und steuere die Sichtbarkeit pro Rolle. Basis-Funktionen (Events, Teams, Spieler, Benutzer) sind immer aktiv.',
'feature_enabled' => 'Aktiviert',
'feature_disabled' => 'Deaktiviert',
'feature_statistics' => 'Statistiken',
'feature_finances' => 'Finanzen',
'feature_catering' => 'Catering',
'feature_timekeepers' => 'Zeitnehmer',
'feature_carpools' => 'Fahrgemeinschaften',
'feature_comments' => 'Kommentare',
'feature_files' => 'Dateien',
'feature_faqs' => 'FAQs',
'feature_list_generator' => 'Listenerstellung',
'feature_invitations' => 'Einladungen',
'feature_player_stats' => 'Spielerstatistiken',
'features_saved' => 'Rollenmanagement gespeichert.',
'activity_recent' => 'Letzte Aktivitäten',
// Wiederholung
'recurrence' => 'Wiederholung',
'recurrence_none' => 'Keine Wiederholung',
'recurrence_daily' => 'Täglich',
'recurrence_weekly' => 'Wöchentlich',
'recurrence_biweekly' => 'Alle 2 Wochen',
'recurrence_end_type' => 'Ende der Wiederholung',
'recurrence_end_date' => 'Bis Datum',
'recurrence_end_count' => 'Anzahl Wiederholungen',
'recurrence_count_label' => 'Anzahl (ohne erstes Event)',
'recurrence_preview' => ':count weitere Events werden erstellt',
'recurrence_max_warning' => 'Maximal :max Events möglich',
'recurrence_created' => ':count Trainings-Events erstellt.',
// Event-Serien
'save_following' => 'Alle folgenden aktualisieren',
'series_hint' => 'Dieses Event ist Teil einer Serie. Es gibt :count weitere Folgetermine.',
'save_series_title' => 'Änderungen speichern',
'save_series_description' => 'Dieses Event gehört zu einer Serie mit :count weiteren Folgeterminen. Sollen die Änderungen auch auf die Folgetermine angewendet werden?',
'save_only_this' => 'Nur dieses Event speichern',
'save_this_and_following' => 'Dieses und alle folgenden Events aktualisieren',
'delete_series_title' => 'Event-Serie löschen',
'delete_series_description' => 'Dieses Event gehört zu einer wiederkehrenden Serie. Was möchten Sie löschen?',
'delete_only_this' => 'Nur dieses Event löschen',
'delete_this_and_following' => 'Dieses und alle folgenden Events löschen',
'series_events_deleted' => ':count Events gelöscht.',
'series_events_updated' => 'Dieses Event und :count Folgetermine aktualisiert.',
];