feat: Mitmachen-Formular nativ (löst OpnForm ab)
Deploy / verify (push) Successful in 1m8s
Deploy / deploy (push) Successful in 1m17s

- MitmachenFormComponent: Name der BI*, Anliegen*, Ansprechpartner,
  Telefon, E-Mail, Datei-Upload (max 5×5MB, JPG/PNG/WebP/GIF/PDF),
  Consent — Honeypots + Client-Age + Turnstile wie Kontaktformular
- /api/mitmachen: Multipart-Validierung (shared Modul), Forwarding an
  CMS /api/forms/mitmachen/submit-multipart
- internal_component: form-mitmachen registriert
- ~35 neue mitmachen_*-Translation-Keys

Prod braucht BODY_SIZE_LIMIT=30M (adapter-node default 512K) — via
secrets .env.prod deployt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Peter Meier
2026-06-12 11:59:31 +02:00
parent d9519a867e
commit b29dd587b8
6 changed files with 727 additions and 1 deletions
+36
View File
@@ -317,6 +317,42 @@ const TRANSLATION_KEYS = [
"contact_error_consent_required",
"contact_captcha_pending",
"contact_server_error_captcha",
// Mitmachen form (MitmachenFormComponent.svelte). Generische Submit-/
// Server-Error-Texte werden aus contact_* wiederverwendet.
"mitmachen_label_title",
"mitmachen_placeholder_title",
"mitmachen_label_description",
"mitmachen_placeholder_description",
"mitmachen_label_contact_name",
"mitmachen_placeholder_contact_name",
"mitmachen_label_phone",
"mitmachen_placeholder_phone",
"mitmachen_label_email",
"mitmachen_placeholder_email",
"mitmachen_label_files",
"mitmachen_files_help", // {{n}}, {{mb}}
"mitmachen_files_add",
"mitmachen_files_remove",
"mitmachen_label_consent",
"mitmachen_privacy_note",
"mitmachen_submit",
"mitmachen_success_title",
"mitmachen_success_body",
"mitmachen_error_title_min", // {{n}}
"mitmachen_error_title_max", // {{n}}
"mitmachen_error_title_invalid",
"mitmachen_error_description_min", // {{n}}
"mitmachen_error_description_max", // {{n}}
"mitmachen_error_description_too_many_links", // {{n}}
"mitmachen_error_description_invalid",
"mitmachen_error_contact_name_max", // {{n}}
"mitmachen_error_contact_name_invalid",
"mitmachen_error_phone_invalid",
"mitmachen_error_email_invalid",
"mitmachen_error_consent_required",
"mitmachen_error_files_count", // {{n}}
"mitmachen_error_files_size", // {{mb}}
"mitmachen_error_files_type",
] as const;
export type TranslationKey = (typeof TRANSLATION_KEYS)[number];