Grund: vad module-contact-form är
module-contact-form är CCMS formulärmodul för inkommande kontaktärenden med inbyggd klientvalidering och Turnstile-skydd.
Modulen är designad för tydlig lead-insamling: du väljer vilka fält som visas, vilka som är obligatoriska och vilka texter användaren ser i varje steg.
Formuläret används ofta tillsammans med module-contact i samma sektion, men kan konfigureras separat.
Val 1: kärnnycklar och fältstruktur
Top-level ligger i contact_form med nycklar som module_type, display, appearance, aria_label, id, language, submit_button_text, success_message och error_message.
Fältsektionerna är:
text1,text2,text3email,phone,dropdown,file,textareatermsochmessages
Språkvarianter följer mönstret <lang>_contact_form, till exempel en_contact_form.
Val 2: fältaktivering, required och validering
Varje fältblock använder display för att visas/döljas och kan ha name, key, label, placeholder, maxlength och required.
Builden omvandlar required till required_attr så templaten kan rendera attributet konsekvent.
Klientvalidering använder webbläsarens checkValidity() och läser feltexter från contact_form.messages.* med variabler som och .
Val 3: terms, statusflöde och filfält
terms.display visar en villkorsrad med länk. Innehållet i terms.content_json parseas i runtime och visas i en enkel dialog/alert.
messages.* styr både valideringsfel och statussteg som status_precheck, status_robot, status_sending, status_done och status_timeout.
file-fältet kan visas i UI, men nuvarande runtime blockerar faktisk filuppladdning och visar i stället ett informationsmeddelande vid klick.
Val 4: endpoint, Turnstile och submit-payload
Formuläret skickas till site.api_endpoints.contact_form (eller dev-endpoint på *.pages.dev). Endpoints som inte är https:// blockeras direkt.
Innan submit hämtas en färsk Turnstile-token via ensureTurnstileToken(). Payloaden skickas som JSON med data, formId, language och token i både header och body.
Vid lyckad submit tas formulärkortet bort från DOM och användaren får success-text via statusdialogen.
Val 5: SEO, AI-optimering och datakvalitet
Formcopy ska vara konkret och intentspecifik: tydliga labels, tydliga placeholders och exakt feedback vid fel. Det förbättrar både konvertering och AI-tolkning av sidans syfte.
Översätt alla synliga texter i <lang>_contact_form, inklusive messages.*, för konsekvent upplevelse i varje språkversion.
Formulärmodulen bör normalt inte duplicera global schema-data. Låt i stället global struktur bära Organization/LocalBusiness-signalerna.