Turn-Anfrageformular: Feld „Geburtsdatum des Kindes" wieder da
Auf der alten Seite gab es das Feld, beim Neubau ist es untergegangen. Gegen 2024.tsv08kulmbach.de geprüft: dort hieß es input_alter_kind, war type="date", OPTIONAL und trug das Label „Geburtsdatum des Kindes" — genau so wieder eingebaut. Die Abteilung braucht es, weil die Gruppen nach Alter eingeteilt sind. Nur in der Turn-Variante. In der allgemeinen wäre es sinnlos und würde ohne Not personenbezogene Daten Minderjähriger erheben. Dafür drei Stellen: - contact_variant(): Schalter ask_birthdate (true nur für turnen) - contact-form.php: Feld definiert, bedingt gerendert, direkt nach der Gruppenauswahl wie auf der alten Seite - contact-submit.php: Validierung UND Rücksetzen auf leer, wenn die Variante das Feld nicht anbietet — sonst könnte ein manipulierter POST es an der allgemeinen Variante vorbei einschmuggeln Validierung serverseitig, nicht nur per type=date: echtes Datum, nicht in der Zukunft, nicht vor 1900. createFromFormat mit Rückvergleich, weil PHP sonst Scheindaten wie 2019-02-31 stillschweigend auf den 3. März verschiebt. Geprüft mit ausreichend altem Token (die Time-Trap verlangt 3 s, meine ersten Versuche liefen deshalb als Bot durch): 2019-02-31 abgewiesen, 2030-01-01 abgewiesen, gültiges Datum passiert. Ohne JS bleibt der Wert bei HTTP 422 erhalten (value="2019-03-12" im Re-Render nachgewiesen). Kein neues Markup: form-field kann type=date und min/max längst, die Prop für den Hilfetext heißt hint (nicht help, das war mein erster Fehlgriff). Docblock der Komponente um date und min/max ergänzt. Datenschutzerklärung mitgezogen, wie die Projektregel es für neue Formularfelder verlangt — mit Zweckbindung (Zuordnung zur Altersgruppe) und dem ausdrücklichen Hinweis, dass es keine Pflichtangabe ist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
This commit is contained in:
@@ -177,7 +177,11 @@ Funktion, sie ist die einzige Stelle, an der aus JSON HTML entsteht.
|
||||
- **Varianten statt Zweitformular:** das Kontaktformular hat zwei Ausprägungen, gesteuert vom
|
||||
Hidden-Feld `department` (`''` = allgemein, `'turnen'` = Turnabteilung auf `/turnen`).
|
||||
`contact_variant()` (`helpers.php`) ist die **einzige** Quelle für Auswahlliste, Feldregeln
|
||||
(Betreff-Feld, Pflichtfelder) und Empfänger; Komponente und Action lesen beide dort. Ein
|
||||
(Betreff-Feld, Geburtsdatum-Feld, Pflichtfelder) und Empfänger; Komponente und Action lesen beide
|
||||
dort. Ein variantenspezifisches Feld braucht **drei** Stellen: den Schalter in
|
||||
`contact_variant()`, die bedingte Ausgabe in `contact-form.php` und in der Action beides —
|
||||
Validierung **und** ein Zurücksetzen auf leer, wenn die Variante das Feld nicht anbietet (sonst
|
||||
könnte ein manipulierter POST es an einer Variante vorbei einschmuggeln). Ein
|
||||
unbekannter Wert fällt auf die allgemeine Variante zurück, ein manipuliertes Feld erreicht also
|
||||
keinen fremden Empfänger. Die Turn-Variante geht an `club.email_turnen`, hat die Disziplinen aus
|
||||
`data/turnen.json` als Auswahl (Pflicht, ersetzt den Betreff) und eine freiwillige Nachricht.
|
||||
|
||||
Reference in New Issue
Block a user