feat(newsletter): newsletter signup as internal component
Deploy / verify (push) Successful in 1m18s
Deploy / deploy (push) Successful in 1m34s

Wire a newsletter signup form into the CMS internal-component pattern
(form-newsletter). Posts to /api/newsletter which subscribes to listmonk
(double opt-in) and mirrors a best-effort backup record to the RustyCMS
forms plugin. Reuses the contact-form anti-spam stack: Cloudflare
Turnstile, honeypots, client-age check, origin validation.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Peter Meier
2026-06-25 11:02:48 +02:00
parent 0ab2c58eb4
commit af90483dc4
6 changed files with 506 additions and 1 deletions
+16
View File
@@ -353,6 +353,22 @@ const TRANSLATION_KEYS = [
"mitmachen_error_files_count", // {{n}}
"mitmachen_error_files_size", // {{mb}}
"mitmachen_error_files_type",
// Newsletter form (NewsletterFormComponent.svelte). Generische Submit-/
// Server-Error-Texte werden aus contact_* wiederverwendet.
"newsletter_label_name",
"newsletter_placeholder_name",
"newsletter_label_email",
"newsletter_placeholder_email",
"newsletter_label_consent",
"newsletter_privacy_note",
"newsletter_submit",
"newsletter_submitting",
"newsletter_success_title",
"newsletter_success_body",
"newsletter_error_email_required",
"newsletter_error_email_invalid",
"newsletter_error_email_max", // {{n}}
"newsletter_error_consent_required",
] as const;
export type TranslationKey = (typeof TRANSLATION_KEYS)[number];