From 47055841d83fe2e6d6d936e6c9674bbac2df572d Mon Sep 17 00:00:00 2001 From: Melissa Autumn Date: Tue, 10 Sep 2024 14:46:06 -0700 Subject: [PATCH 1/3] Re-work waiting list action, and string extract. --- frontend/src/components/GenericModal.vue | 1 - frontend/src/locales/en.json | 51 ++++++- frontend/src/views/LoginView.vue | 37 +++-- frontend/src/views/WaitingListActionView.vue | 146 +++++++++++-------- 4 files changed, 150 insertions(+), 85 deletions(-) diff --git a/frontend/src/components/GenericModal.vue b/frontend/src/components/GenericModal.vue index ef0a8454..040eaefb 100644 --- a/frontend/src/components/GenericModal.vue +++ b/frontend/src/components/GenericModal.vue @@ -84,7 +84,6 @@ onUnmounted(() => { width: 100%; flex-direction: column; align-items: center; - margin-top: 1rem; } .modal-actions { diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index f4881cbe..94d1af43 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -1,7 +1,8 @@ { "app": { "summary": "Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.", - "title": "Thunderbird Appointment" + "title": "Thunderbird Appointment", + "tagline": "Plan less, do more" }, "error": { "actionNeeded": "Action needed", @@ -320,6 +321,35 @@ "de": "German", "en": "English" }, + "login": { + "login": { + "title": "Simplify your day – just enter your email:", + "intro": { + "returning": [ + "Returning?", + "{strong} We'll recognize you and direct you to your account." + ], + "new": [ + "New?", + "{strong} We'll help you set up quickly." + ] + } + }, + "signUp": { + "title": "Have an invite code? Enter it here" + }, + "confirm": { + "title": "Complete your sign up", + "intro": [ + "Please confirm your email to join our waiting list.", + "Check your inbox for more information shortly." + ] + }, + "form": { + "privacy": "Your privacy is important to us.", + "no-invite-code": "If you don't have an invite code, add your email to our waiting list." + } + }, "placeholder": { "biWeeklyCafeDates": "Bi-weekly Café Dates…", "emailAddress": "john.doe{'@'}example.com", @@ -417,15 +447,22 @@ }, "waitingList": { "adminInviteNotice": "Notice: The Send button will not re-invite people already accepted, but you can still select them. Use the filters for clarity!", - "confirmHeading": "Your email is confirmed!", - "confirmInfo": "Your email is now confirmed and if selected you will be contacted about an invite code in the future.", + "confirmHeading": "You’re on the waitlist", + "confirmInfo": "You'll receive an invitation as soon as registration opens.", "errorHeading": "There was a problem with that link", "errorInfo": "Unfortunately this link is expired or is invalid.", - "leaveHeading": "You successfully left the waiting list", - "leaveInfo": "Sorry to see you go. You're welcome to re-join the waiting list at any time!", + "leaveHeading": "You’ve been removed from the waitlist", + "leaveInfo": "Your email has been successfully removed from our waitlist.\nIf you change your mind, you can always rejoin.", "signUpAlreadyExists": "You are already on the waiting list.", "signUpCheckYourEmail": "Check your email for more information.", - "signUpHeading": "Just one more step!", - "signUpInfo": "Before you can be added to the waiting list, you need to confirm your email address." + "signUpHeading": "Complete your sign up", + "signUpInfo": [ + "Please confirm your email to join our waiting list.", + "Check your inbox for more information shortly." + ], + "marketing": [ + "Own your calendar, share your time.", + "Thunderbird Appointment simplifies the way you find time to connect so you can soar past the planning, and get to the living." + ] } } diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue index e5a70d84..b3b0a3d5 100644 --- a/frontend/src/views/LoginView.vue +++ b/frontend/src/views/LoginView.vue @@ -9,11 +9,8 @@ import { import { BooleanResponse, AuthUrlResponse, - Exception, AuthUrl, Error, - PydanticExceptionDetail, - ExceptionDetail, PydanticException, } from '@/models'; import { posthog, usePosthog } from '@/composables/posthog'; @@ -214,34 +211,43 @@ const onEnter = () => {
-

Returning? We'll recognize you and direct you to your account.

-

New? We'll help you set up quickly.

+ + + + + +
-

Please confirm your email to join our waiting list.

-

Check your inbox for more information shortly.

+

{{ t('login.confirm.intro.0') }}

+

{{ t('login.confirm.intro.1') }}

- {{ t('label.email') }} + {{ t('label.email') }} {{ t('label.password') }} - {{ t('label.inviteCode') }} + {{ t('label.inviteCode') }}
@@ -270,6 +277,10 @@ const onEnter = () => { gap: 0.983125rem; margin-bottom: 1.5625rem; } +/* Tweak the generic-modal's modal-body style */ +:deep(.modal-body) { + margin-top: 1rem; +} .form-body { display: flex; flex-direction: column; diff --git a/frontend/src/views/WaitingListActionView.vue b/frontend/src/views/WaitingListActionView.vue index cafd20e9..2109696d 100644 --- a/frontend/src/views/WaitingListActionView.vue +++ b/frontend/src/views/WaitingListActionView.vue @@ -1,20 +1,25 @@ + From 805b9a7ae2ebfde949c474f9da64f8b538f17b72 Mon Sep 17 00:00:00 2001 From: Melissa Autumn Date: Tue, 10 Sep 2024 15:50:13 -0700 Subject: [PATCH 2/3] Update confirm your email...email --- backend/src/appointment/l10n/en/email.ftl | 9 ++-- .../templates/email/confirm_email.jinja2 | 52 ++++++++++++------- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/backend/src/appointment/l10n/en/email.ftl b/backend/src/appointment/l10n/en/email.ftl index fcb2f08c..cc1258fb 100644 --- a/backend/src/appointment/l10n/en/email.ftl +++ b/backend/src/appointment/l10n/en/email.ftl @@ -171,11 +171,12 @@ new-account-mail-plain = You've been invited to Thunderbird Appointment. ## Confirm Email for waiting list confirm-email-mail-subject = Confirm your email to join the waiting list! -confirm-email-mail-confirm-action = Confirm your email -confirm-email-mail-decline-action = Remove your email +confirm-email-mail-confirm-action = Confirm confirm-email-mail-html-heading = Thank you for your interest in Thunderbird Appointment. -confirm-email-mail-html-body = Before we add you to our waiting list we need you to confirm your email address below. -confirm-email-mail-html-body-2 = Did you receive this email in error, or are you no longer interested? +confirm-email-mail-html-body = To join our waiting list, please confirm your email by clicking the button below or pasting this link into your browser: +confirm-email-mail-html-body-2 = If you received this email in error or are no longer interested, you can +confirm-email-mail-html-body-2-link-text = remove your email. + # Variables: # $confirm_email_url (String) - URL to confirm your email # $decline_email_url (String) - URL to remove the email from the waiting list diff --git a/backend/src/appointment/templates/email/confirm_email.jinja2 b/backend/src/appointment/templates/email/confirm_email.jinja2 index d21f16ab..fe84feaa 100644 --- a/backend/src/appointment/templates/email/confirm_email.jinja2 +++ b/backend/src/appointment/templates/email/confirm_email.jinja2 @@ -1,17 +1,30 @@ {% extends "includes/base.jinja2" %} {# Code begins! #} {% block introduction %} -
+

{{ l10n('confirm-email-mail-html-heading') }}

{% endblock %} {% block call_to_action %} -

- {{ l10n('confirm-email-mail-html-body') }} +

+

+ {{ l10n('confirm-email-mail-html-body') }} +

+
+

+ {{ confirm_email_url }}

-
+
{{ l10n('confirm-email-mail-confirm-action') }}
-

+

+

{{ l10n('confirm-email-mail-html-body-2') }} -

- + text-decoration-line: underline;" + href="{{ decline_email_url }}">{{ l10n('confirm-email-mail-html-body-2-link-text') }} +

+
+ {% endblock %} From 53d6e647c961fc18d9aaee3fd48ca463e91f7b68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Wed, 11 Sep 2024 12:46:11 +0200 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=8C=90=20Update=20German=20translatio?= =?UTF-8?q?n,=20sort=20lang=20keys?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/appointment/l10n/de/email.ftl | 9 ++-- frontend/src/locales/de.json | 52 ++++++++++++++++++++--- frontend/src/locales/en.json | 52 +++++++++++------------ 3 files changed, 77 insertions(+), 36 deletions(-) diff --git a/backend/src/appointment/l10n/de/email.ftl b/backend/src/appointment/l10n/de/email.ftl index 2d4539a8..c37774e1 100644 --- a/backend/src/appointment/l10n/de/email.ftl +++ b/backend/src/appointment/l10n/de/email.ftl @@ -171,11 +171,12 @@ new-account-mail-plain = Du wurdest zu Thunderbird Appointment eingeladen. ## Confirm Email for waiting list confirm-email-mail-subject = Bestätige deine E-Mail-Adresse um der Warteliste beizutreten! -confirm-email-mail-confirm-action = Bestätige deine E-Mail-Adresse -confirm-email-mail-decline-action = Entferne deine E-Mail-Adresse +confirm-email-mail-confirm-action = Bestätigen confirm-email-mail-html-heading = Danke für Dein Interesse an Thunderbird Appointment. -confirm-email-mail-html-body = Bevor wir Dich auf unsere Warteliste setzen, musst Du Deine E-Mail-Adresse unten bestätigen. -confirm-email-mail-html-body-2 = Hast Du diese E-Mail irrtümlich erhalten, oder bist nicht mehr interessiert? +confirm-email-mail-html-body = Um der Warteliste beizutreten, bestätige bitte deine E-Mail-Adresse, indem du den Button unten klickst oder diesen Link in deinen Browser einfügst: +confirm-email-mail-html-body-2 = Hast Du diese E-Mail irrtümlich erhalten, oder bist nicht mehr interessiert, dann kannst du +confirm-email-mail-html-body-2-link-text = deine E-Mail-Adresse entfernen. + # Variables: # $confirm_email_url (String) - URL to confirm your email # $decline_email_url (String) - URL to remove the email from the waiting list diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index 8062e004..ca997740 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -1,6 +1,7 @@ { "app": { "summary": "Lass Freunde und Kollegen Zeiten in deinem Kalender wählen. Terminabsprachen so simpel wie möglich.", + "tagline": "Weniger planen, mehr schaffen", "title": "Thunderbird Appointment" }, "error": { @@ -317,6 +318,38 @@ "de": "Deutsch", "en": "Englisch" }, + "login": { + "confirm": { + "intro": [ + "Bitte bestätige die Registrierung um der Warteliste beizutreten.", + "Check dein Postfach, du erhälst in Kürze weitere Informationen." + ], + "title": "Vervollständige die Registrierung" + }, + "form": { + "no-invite-code": "Wenn du keinen Einladungscode hast, setze deine E-Mail-Adresse auf unsere Warteliste.", + "privacy": "Datenschutz ist uns wichtig." + }, + "login": { + "intro": { + "new": [ + "Neu hier?", + "{strong} Wir helfen bei der schnellen Einrichtung." + ], + "returning": [ + "Du bist zurück?", + "{strong} Wir leiten dich zu deinem Benutzerkonto weiter." + ] + }, + "title": "Mach deinen Tag leichter – gibt deine E-Mail-Adresse ein:" + }, + "signUp": { + "title": "Du hast einen Einladungscode? Gib ihn hier ein" + } + }, + "navBar": { + "report-bug": "Fehler melden" + }, "placeholder": { "biWeeklyCafeDates": "Zweiwöchentliche Café-Treffen …", "emailAddress": "max.muster{'@'}beispiel.de", @@ -414,15 +447,22 @@ }, "waitingList": { "adminInviteNotice": "Hinweis: Der Senden-Button wird bereits akzeptierte Personen nicht erneut einladen, sie können aber dennoch ausgewählt werden. Verwende die Filter für eine bessere Übersicht!", - "confirmHeading": "Deine E-Mail-Adresse wurde bestätigt!", - "confirmInfo": "Deine E-Mail-Adresse ist nun bestätigt. Sobald Du ausgewählt wurdest, wirst Du einen Einladungscode bekommen.", + "confirmHeading": "Du bist auf der Warteliste", + "confirmInfo": "Du bekommst eine Einladung sobald die Registrierung startet.", "errorHeading": "Es gab ein Problem mit diesem Link", "errorInfo": "Leider ist dieser Link abgelaufen oder ungültig.", - "leaveHeading": "Du hast die Warteliste erfolgreich verlassen", - "leaveInfo": "Schade, dass Du gehst. Du kannst Dich jederzeit wieder auf die Warteliste setzen lassen!", + "leaveHeading": "Du wurdest von von der Warteliste entfernt", + "leaveInfo": "Deine E-Mail-Adresse wurde erfolgreich von unserer Warteliste entfernt. Falls du deine Meinung änderst, kannst du dich jederzeit wieder auf die Warteliste setzen lassen.", + "marketing": [ + "Behalte deinen Kalender, teile deine Zeit.", + "Thunderbird Appointment vereinfacht die Art und Weise gemeinsamer Terminfindung, um durch weniger Planen mehr Zeit für die wichtigen Dinge zu haben." + ], "signUpAlreadyExists": "Du bist bereits auf der Warteliste.", "signUpCheckYourEmail": "Weitere Informationen findest Du in Deiner E-Mail.", - "signUpHeading": "Nur noch ein Schritt!", - "signUpInfo": "Bevor Du in die Warteliste aufgenommen werden kannst, musst Du Deine E-Mail-Adresse bestätigen." + "signUpHeading": "Registrierung abschließen", + "signUpInfo": [ + "Bitte bestätige deine E-Mail-Adresse, um auf die Warteliste zu kommen.", + "In Kürze erhätst du weitere Informationen in deinen Posteingang." + ] } } diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index 94d1af43..f57bc01c 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -1,8 +1,8 @@ { "app": { "summary": "Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.", - "title": "Thunderbird Appointment", - "tagline": "Plan less, do more" + "tagline": "Plan less, do more", + "title": "Thunderbird Appointment" }, "error": { "actionNeeded": "Action needed", @@ -92,9 +92,6 @@ }, "zoom": "Zoom" }, - "navBar": { - "report-bug": "Report Bug" - }, "icons": { "calendar": "Calendar", "critical": "Critical", @@ -322,34 +319,37 @@ "en": "English" }, "login": { + "confirm": { + "intro": [ + "Please confirm your email to join our waiting list.", + "Check your inbox for more information shortly." + ], + "title": "Complete your sign up" + }, + "form": { + "no-invite-code": "If you don't have an invite code, add your email to our waiting list.", + "privacy": "Your privacy is important to us." + }, "login": { - "title": "Simplify your day – just enter your email:", "intro": { - "returning": [ - "Returning?", - "{strong} We'll recognize you and direct you to your account." - ], "new": [ "New?", "{strong} We'll help you set up quickly." + ], + "returning": [ + "Returning?", + "{strong} We'll recognize you and direct you to your account." ] - } + }, + "title": "Simplify your day – just enter your email:" }, "signUp": { "title": "Have an invite code? Enter it here" - }, - "confirm": { - "title": "Complete your sign up", - "intro": [ - "Please confirm your email to join our waiting list.", - "Check your inbox for more information shortly." - ] - }, - "form": { - "privacy": "Your privacy is important to us.", - "no-invite-code": "If you don't have an invite code, add your email to our waiting list." } }, + "navBar": { + "report-bug": "Report Bug" + }, "placeholder": { "biWeeklyCafeDates": "Bi-weekly Café Dates…", "emailAddress": "john.doe{'@'}example.com", @@ -453,16 +453,16 @@ "errorInfo": "Unfortunately this link is expired or is invalid.", "leaveHeading": "You’ve been removed from the waitlist", "leaveInfo": "Your email has been successfully removed from our waitlist.\nIf you change your mind, you can always rejoin.", + "marketing": [ + "Own your calendar, share your time.", + "Thunderbird Appointment simplifies the way you find time to connect so you can soar past the planning, and get to the living." + ], "signUpAlreadyExists": "You are already on the waiting list.", "signUpCheckYourEmail": "Check your email for more information.", "signUpHeading": "Complete your sign up", "signUpInfo": [ "Please confirm your email to join our waiting list.", "Check your inbox for more information shortly." - ], - "marketing": [ - "Own your calendar, share your time.", - "Thunderbird Appointment simplifies the way you find time to connect so you can soar past the planning, and get to the living." ] } }