# Workshop-Wahlen ## Überblick Dieses WordPress-Plugin ermöglicht die Verwaltung und Durchführung von Workshop-Wahlen für Konfi-Castle-Events. Es bietet ein vollständiges Backend für Admins (Wahlen, Workshops, Teilnehmer, Teamer, Zuteilungen) und ein Frontend-Formular für Teilnehmer. ## Architektur & Hauptkomponenten - **Haupt-Plugin-Datei:** `konficastle-workshopwahl.php` – Registriert Hooks, lädt Assets, initialisiert Admin-Menüs. - **Backend-Module (im `includes/`-Verzeichnis):** - `admin-wahlen.php`, `admin-workshops.php`, `admin-teilnehmer.php`, `admin-teamer.php`, `admin-zuteilungen.php`, `admin-data.php`, `force-zuteilung.php`: Jeweils eigene Admin-Seiten für die Verwaltung der zugehörigen Entitäten. - `zuteilungslogik.php`: Kernlogik für die automatische Zuteilung von Teilnehmern zu Workshops (inkl. Force-Zuteilungen und Kapazitätsprüfung). - **Frontend:** - `frontend-form.php`: Shortcode `[konficastle_workshopwahl wahl=ID]` für das Teilnehmer-Formular. - `frontend-ergebnis.php`: Shortcode `[konficastle_workshop_ergebnis wahl=ID]` für Ergebnisanzeige. - **Styles & Assets:** - `assets/`: Enthält CSS für Admin und Frontend. ## Datenbank & Installation - Tabellen werden über `install.php` beim Aktivieren angelegt (z.B. `kc_wahlen`, `kc_workshops`, `kc_teilnehmer`, `kc_zuteilung`, ...). - Tabellenpräfix wird dynamisch über `$wpdb->prefix` verwendet. ## Entwickler-Workflows - **Testdaten:** Über die Admin-Seite "Datenverwaltung" (`admin-data.php`) können Testdaten generiert werden (nur User ID 1). - **CSV-Export:** Zuteilungen können über die Admin-Seite exportiert werden (`admin-zuteilungen.php`). - **Zuteilungslogik:** Anpassungen an der Kernlogik erfolgen in `zuteilungslogik.php`. - **Shortcodes:** - `[konficastle_workshopwahl wahl=ID]` – Teilnehmer-Frontend - `[konficastle_workshop_ergebnis wahl=ID]` – Ergebnisanzeige ## Besondere Konventionen & Hinweise - **Namensschema:** Alle Plugin-Funktionen und Tabellen sind mit `kc_` (Konfi-Castle) prefixiert. - **Admin-Tabs:** Navigation zwischen Admin-Seiten über `kc_admin_tabs()`. - **Force-Zuteilungen:** Manuelle Zuweisungen haben Vorrang vor automatischer Logik. - **Teamer-Passwort:** Verwaltung über eigene Admin-Seite, Passwort-Hash in WP-Optionen. - **Frontend-Validierung:** Erfolgt serverseitig, keine komplexe JS-Logik im Frontend. ## Einstiegspunkte & Beispiele - **Admin-Menüstruktur:** Siehe `konficastle-workshopwahl.php` und `includes/admin-wahlen.php`. - **Zuteilungslogik:** Siehe `includes/zuteilungslogik.php` (Funktionen wie `kc_run_zuteilung`). - **Frontend-Formular:** Siehe `includes/frontend-form.php` (Shortcode-Handler). --- Für Detailfragen zu Datenbankstruktur, Shortcodes oder Zuteilungslogik siehe die jeweiligen Dateien im `includes/`-Verzeichnis. ## Release Notes & Changelog Siehe die ausführlichen Hinweise zur Version 1.0 in [RELEASE_NOTES.md](RELEASE_NOTES.md). Das fortlaufende Changelog befindet sich im Ordner [Notes/CHANGELOG.md](Notes/CHANGELOG.md).