- Wired the checkout wizard for Google “comfort login”: added Socialite controller + dependency, new Google env

hooks in config/services.php/.env.example, and updated wizard steps/controllers to store session payloads,
attach packages, and surface localized success/error states.
- Retooled payment handling for both Stripe and PayPal, adding richer status management in CheckoutController/
PayPalController, fallback flows in the wizard’s PaymentStep.tsx, and fresh feature tests for intent
creation, webhooks, and the wizard CTA.
- Introduced a consent-aware Matomo analytics stack: new consent context, cookie-banner UI, useAnalytics/
useCtaExperiment hooks, and MatomoTracker component, then instrumented marketing pages (Home, Packages,
Checkout) with localized copy and experiment tracking.
- Polished package presentation across marketing UIs by centralizing formatting in PresentsPackages, surfacing
localized description tables/placeholders, tuning badges/layouts, and syncing guest/marketing translations.
- Expanded docs & reference material (docs/prp/*, TODOs, public gallery overview) and added a Playwright smoke
test for the hero CTA while reconciling outstanding checklist items.
This commit is contained in:
Codex Agent
2025-10-19 11:41:03 +02:00
parent ae9b9160ac
commit a949c8d3af
113 changed files with 5169 additions and 712 deletions

View File

@@ -50,5 +50,33 @@
"email_verify_title": "E-Mail verifizieren",
"email_verify_desc": "Bitte überprüfen Sie Ihre E-Mail und klicken Sie auf den Verifizierungslink.",
"language_select": "Sprache wählen"
},
"consent": {
"banner": {
"title": "Wir respektieren deine Privatsphäre",
"body": "Wir verwenden Cookies für notwendige Funktionen und optionale Analysen zur Verbesserung. Du entscheidest, was erlaubt ist.",
"accept": "Alle akzeptieren",
"reject": "Nur notwendige",
"customize": "Individuell auswählen"
},
"modal": {
"title": "Privatsphäre-Einstellungen",
"description": "Lege fest, wie wir Cookies und ähnliche Technologien nutzen. Du kannst deine Auswahl jederzeit ändern.",
"functional": "Notwendige Cookies",
"functional_desc": "Wichtig für sicheren Login, Spracheinstellungen und die Grundfunktionen der Website.",
"analytics": "Analyse",
"analytics_desc": "Hilft uns mit Matomo, die Nutzung zu verstehen und Angebote zu verbessern.",
"required": "Pflicht",
"save": "Auswahl speichern",
"cancel": "Abbrechen",
"accept_all": "Alle akzeptieren",
"reject_all": "Nur notwendige"
},
"accessibility": {
"banner_label": "Cookie-Hinweis"
},
"footer": {
"manage_link": "Cookie-Einstellungen"
}
}
}
}

View File

@@ -12,6 +12,7 @@
"hero_title": "Fotospiel",
"hero_description": "Sammle Gastfotos für Events mit QR-Codes. Unsere sichere PWA-Plattform für Gäste und Organisatoren einfach, mobil und datenschutzkonform. Besser als Konkurrenz, geliebt von Tausenden.",
"cta_explore": "Pakete entdecken",
"cta_explore_highlight": "Jetzt loslegen",
"hero_image_alt": "Event-Fotos mit QR-Code",
"how_title": "So funktioniert es",
"step1_title": "Paket wählen",
@@ -62,6 +63,7 @@
"hero_title": "Entdecken Sie unsere flexiblen Packages",
"hero_description": "Von kostenlosem Einstieg bis Premium-Features: Passen Sie Ihr Event-Paket an Ihre Bedürfnisse an. Einfach, sicher und skalierbar.",
"cta_explore": "Pakete entdecken",
"cta_explore_highlight": "Lieblingspaket sichern",
"tab_endcustomer": "Endkunden",
"tab_reseller": "Reseller & Agenturen",
"section_endcustomer": "Packages für Endkunden (Einmalkauf pro Event)",
@@ -115,8 +117,16 @@
"feature_overview": "Feature-Überblick",
"order_hint": "Sofort startklar keine versteckten Kosten, sichere Zahlung via Stripe oder PayPal.",
"features_label": "Features",
"feature_highlights": "Feature-Highlights",
"more_details_tab": "Mehr Details",
"quick_facts": "Schnelle Fakten",
"quick_facts_hint": "Der schnelle Überblick über die wichtigsten Kennzahlen.",
"more_details_link": "Noch mehr Details anzeigen",
"badge_deep_dive": "Deep Dive",
"breakdown_label": "Leistungsübersicht",
"breakdown_label_hint": "Erfahre, wie das Paket im Detail aufgebaut ist.",
"limits_label": "Limits & Kapazitäten",
"limits_label_hint": "Alle Kennzahlen auf einen Blick ideal für Planung und Freigaben.",
"for_endcustomers": "Für Endkunden",
"for_resellers": "Für Reseller",
"details_show": "Details anzeigen",
@@ -378,7 +388,12 @@
"next_to_payment": "Weiter zur Zahlung",
"switch_to_register": "Registrieren",
"switch_to_login": "Anmelden",
"google_coming_soon": "Google-Login kommt bald im Comfort-Delta."
"continue_with_google": "Mit Google fortfahren",
"google_success_toast": "Mit Google angemeldet.",
"google_error_title": "Google-Anmeldung fehlgeschlagen",
"google_missing_package": "Bitte wähle zuerst ein Paket aus, bevor du Google Login nutzt.",
"google_missing_email": "Wir konnten deine Google-E-Mail-Adresse nicht abrufen.",
"google_error_fallback": "Die Google-Anmeldung konnte nicht abgeschlossen werden. Bitte versuche es erneut."
},
"payment_step": {
"title": "Zahlung",
@@ -389,6 +404,7 @@
"activate_package": "Paket aktivieren",
"loading_payment": "Zahlungsdaten werden geladen...",
"secure_payment_desc": "Sichere Zahlung mit Kreditkarte, Debitkarte oder SEPA-Lastschrift.",
"secure_paypal_desc": "Sichere Zahlung mit PayPal.",
"payment_failed": "Zahlung fehlgeschlagen. ",
"error_card": "Kartenfehler aufgetreten.",
"error_validation": "Eingabedaten sind ungültig.",
@@ -404,7 +420,23 @@
"pay_now": "Jetzt bezahlen (€{price})",
"stripe_not_loaded": "Stripe ist nicht initialisiert. Bitte Seite neu laden.",
"network_error": "Netzwerkfehler beim Laden der Zahlungsdaten",
"payment_intent_error": "Fehler beim Laden der Zahlungsdaten"
"payment_intent_error": "Fehler beim Laden der Zahlungsdaten",
"paypal_order_error": "PayPal-Bestellung konnte nicht erstellt werden. Bitte erneut versuchen.",
"paypal_capture_error": "PayPal-Abschluss fehlgeschlagen. Bitte erneut versuchen.",
"paypal_error": "PayPal meldete einen Fehler.",
"paypal_cancelled": "Sie haben die PayPal-Zahlung abgebrochen.",
"paypal_missing_plan": "Für dieses Paket fehlt die PayPal-Plan-Konfiguration. Bitte wählen Sie eine andere Zahlungsmethode.",
"auth_required": "Bitte melde dich an, um mit der Zahlung fortzufahren.",
"status_loading": "Zahlungsvorbereitung läuft…",
"status_ready": "Zahlungsformular bereit. Bitte gib deine Daten ein.",
"status_processing": "Zahlung mit {{provider}} wird verarbeitet…",
"status_success": "Zahlung bestätigt. Wir schließen den Kauf ab…",
"status_info_title": "Zahlungsstatus",
"status_error_title": "Zahlung fehlgeschlagen",
"status_success_title": "Zahlung abgeschlossen",
"status_retry": "Erneut versuchen",
"method_stripe": "Kreditkarte (Stripe)",
"method_paypal": "PayPal"
},
"confirmation_step": {
"title": "Bestätigung",
@@ -427,7 +459,12 @@
"already_logged_in": "Sie sind bereits als {email} eingeloggt.",
"switch_to_register": "Registrieren",
"switch_to_login": "Anmelden",
"google_coming_soon": "Google-Login kommt bald im Comfort-Delta."
"continue_with_google": "Mit Google fortfahren",
"google_success_toast": "Mit Google angemeldet.",
"google_error_title": "Google-Anmeldung fehlgeschlagen",
"google_missing_package": "Bitte wähle zuerst ein Paket aus, bevor du Google Login nutzt.",
"google_missing_email": "Wir konnten deine Google-E-Mail-Adresse nicht abrufen.",
"google_error_fallback": "Die Google-Anmeldung konnte nicht abgeschlossen werden. Bitte versuche es erneut."
}
}
}

View File

@@ -50,5 +50,33 @@
"email_verify_title": "Verify Email",
"email_verify_desc": "Please check your email and click the verification link.",
"language_select": "Language Select"
},
"consent": {
"banner": {
"title": "We respect your privacy",
"body": "We use cookies for essential features and optional analytics to improve our service. Choose what you allow.",
"accept": "Accept all",
"reject": "Reject non-essential",
"customize": "Customize"
},
"modal": {
"title": "Privacy settings",
"description": "Adjust how we use cookies and similar technologies. You can update your choice at any time.",
"functional": "Necessary cookies",
"functional_desc": "Required to deliver secure login, remember your language, and keep the site running.",
"analytics": "Analytics",
"analytics_desc": "Helps us understand usage with Matomo so we can improve the experience.",
"required": "Required",
"save": "Save selection",
"cancel": "Cancel",
"accept_all": "Accept all",
"reject_all": "Reject all"
},
"accessibility": {
"banner_label": "Cookie consent banner"
},
"footer": {
"manage_link": "Cookie settings"
}
}
}
}

View File

@@ -4,6 +4,7 @@
"hero_title": "Fotospiel",
"hero_description": "Collect guest photos for events with QR codes. Our secure PWA platform for guests and organizers simple, mobile, and privacy-compliant. Better than competitors, loved by thousands.",
"cta_explore": "Discover Packages",
"cta_explore_highlight": "Get started now",
"hero_image_alt": "Event photos with QR code",
"how_title": "How it works",
"step1_title": "Choose Package",
@@ -52,6 +53,7 @@
"hero_title": "Discover our flexible Packages",
"hero_description": "From free entry to premium features: Tailor your event package to your needs. Simple, secure, and scalable.",
"cta_explore": "Discover Packages",
"cta_explore_highlight": "Explore top packages",
"tab_endcustomer": "End Customers",
"tab_reseller": "Resellers & Agencies",
"section_endcustomer": "Packages for End Customers (One-time purchase per event)",
@@ -105,8 +107,16 @@
"feature_overview": "Feature overview",
"order_hint": "Launch instantly secure Stripe or PayPal checkout, no hidden fees.",
"features_label": "Features",
"feature_highlights": "Feature Highlights",
"more_details_tab": "More Details",
"quick_facts": "Quick Facts",
"quick_facts_hint": "Your at-a-glance snapshot of core limits.",
"more_details_link": "See even more details",
"badge_deep_dive": "Deep Dive",
"breakdown_label": "At-a-glance",
"breakdown_label_hint": "Dive deeper into how the package is structured.",
"limits_label": "Limits & Capacity",
"limits_label_hint": "Understand the exact limits for planning and approvals.",
"for_endcustomers": "For End Customers",
"for_resellers": "For Resellers",
"details_show": "Show Details",
@@ -372,7 +382,12 @@
"next_to_payment": "Next to Payment",
"switch_to_register": "Register",
"switch_to_login": "Login",
"google_coming_soon": "Google Login coming soon in Comfort-Delta."
"continue_with_google": "Continue with Google",
"google_success_toast": "Signed in with Google.",
"google_error_title": "Google login failed",
"google_missing_package": "Please choose a package before using Google login.",
"google_missing_email": "We could not retrieve your Google email address.",
"google_error_fallback": "We couldn't complete the Google login. Please try again."
},
"payment_step": {
"title": "Payment",
@@ -383,6 +398,7 @@
"activate_package": "Activate Package",
"loading_payment": "Payment data is loading...",
"secure_payment_desc": "Secure payment with credit card, debit card or SEPA direct debit.",
"secure_paypal_desc": "Pay securely with PayPal.",
"payment_failed": "Payment failed. ",
"error_card": "Card error occurred.",
"error_validation": "Input data is invalid.",
@@ -398,7 +414,23 @@
"pay_now": "Pay Now (${price})",
"stripe_not_loaded": "Stripe is not initialized. Please reload the page.",
"network_error": "Network error loading payment data",
"payment_intent_error": "Error loading payment data"
"payment_intent_error": "Error loading payment data",
"paypal_order_error": "Could not create the PayPal order. Please try again.",
"paypal_capture_error": "PayPal capture failed. Please try again.",
"paypal_error": "PayPal reported an error.",
"paypal_cancelled": "You cancelled the PayPal payment.",
"paypal_missing_plan": "Missing PayPal plan configuration for this package. Please choose another payment method.",
"auth_required": "Please log in to continue to payment.",
"status_loading": "Preparing secure payment data…",
"status_ready": "Payment form ready. Enter your details to continue.",
"status_processing": "Processing payment with {{provider}}…",
"status_success": "Payment confirmed. Finalising your order…",
"status_info_title": "Payment status",
"status_error_title": "Payment failed",
"status_success_title": "Payment completed",
"status_retry": "Retry",
"method_stripe": "Credit Card (Stripe)",
"method_paypal": "PayPal"
},
"confirmation_step": {
"title": "Confirmation",
@@ -421,7 +453,12 @@
"already_logged_in": "You are already logged in as {email}.",
"switch_to_register": "Register",
"switch_to_login": "Login",
"google_coming_soon": "Google Login coming soon in Comfort-Delta."
"continue_with_google": "Continue with Google",
"google_success_toast": "Signed in with Google.",
"google_error_title": "Google login failed",
"google_missing_package": "Please choose a package before using Google login.",
"google_missing_email": "We could not retrieve your Google email address.",
"google_error_fallback": "We couldn't complete the Google login. Please try again."
}
}
}