mirror of https://github.com/zulip/zulip.git
emails: Improve followup_day1 (registration confirmation) email.
- Clean up the language. - Add a prominent "Go to organization" button. - Link to guides for new users and admins. - Fix duplication bug in text email version. Co-authored-by: Mateusz Mandera <mateusz.mandera@zulip.com>
This commit is contained in:
parent
a8d0908893
commit
27b703f617
|
@ -5,51 +5,55 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<p>{{ _('Welcome to Zulip!') }}</p>
|
{% if realm_creation %}
|
||||||
|
{% if is_demo_org %}
|
||||||
<p>
|
<p>
|
||||||
{% if realm_creation %}
|
{% trans demo_organizations_help_link="https://zulip.com/help/demo-organizations" %}Congratulations, you have created a new Zulip demo organization. Note
|
||||||
{% if is_demo_org %}
|
that this organization will be automatically deleted in 30 days. Learn more
|
||||||
{% trans %}You've created a demo Zulip organization. Note that this organization will be automatically deleted in 30 days. Learn more about demo organizations <a href="https://zulip.com/help/demo-organizations">here</a>!{% endtrans %}
|
about demo organizations <a
|
||||||
{% else %}
|
href="{{ demo_organizations_help_link }}">here</a>!
|
||||||
{% trans %}You've created the new Zulip organization <b>{{ realm_name }}</b>.{% endtrans %}
|
{% endtrans %}
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
{% trans %}You've joined the Zulip organization <b>{{ realm_name }}</b>.{% endtrans %}
|
|
||||||
{% endif %}
|
|
||||||
</p>
|
</p>
|
||||||
|
{% else %}
|
||||||
|
<p>
|
||||||
|
{% trans %}Congratulations, you have created a new Zulip
|
||||||
|
organization: <b>{{ realm_name }}</b>.{% endtrans %}
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
<p>{{ _('Welcome to Zulip!') }}</p>
|
||||||
|
<p>
|
||||||
|
{% trans %}You've joined the Zulip organization <b>{{ realm_name }}</b>.
|
||||||
|
{% endtrans %}
|
||||||
|
</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
{{ _('Your account details:') }}
|
{% trans apps_page_link="https://zulip.com/apps" %}You will use the following info to log into the Zulip web, <a href="{{ apps_page_link }}">mobile and desktop</a> apps:{% endtrans %}
|
||||||
<ul>
|
<ul>
|
||||||
<li>{% trans organization_url=macros.link_tag(realm_uri) %}Organization URL: {{ organization_url }}{% endtrans %}<br /></li>
|
<li>{% trans organization_url=macros.link_tag(realm_uri) %}Organization URL: {{ organization_url }}{% endtrans %}<br /></li>
|
||||||
{% if ldap %}
|
{% if ldap %}
|
||||||
{% if ldap_username %}
|
{% if ldap_username %}
|
||||||
<li>{% trans %}Username: {{ ldap_username }}{% endtrans %}<br /></li>
|
<li>{% trans %}Your username: {{ ldap_username }}{% endtrans %}<br /></li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<li>{{ _('Use your LDAP account to log in') }}<br /></li>
|
<li>{{ _('Use your LDAP account to log in') }}<br /></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<li>{% trans email=macros.email_tag(email) %}Email: {{ email }}{% endtrans %}<br /></li>
|
<li>{% trans email=macros.email_tag(email) %}Your account email: {{ email }}{% endtrans %}<br /></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
{% trans apps_page_link="https://zulip.com/apps" %}(you'll need these to sign in to the <a href="{{ apps_page_link }}">mobile and desktop</a> apps){% endtrans %}
|
<a class="button" href="{{ realm_uri }}">{{ _('Go to organization') }}</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
{% trans %}If you are new to Zulip, check out our <a href="{{ getting_user_started_link }}">Getting started guide</a>!{% endtrans %}
|
||||||
{% if is_realm_admin %}
|
{% if is_realm_admin %}
|
||||||
{% trans %}Check out our <a href="{{ getting_started_link }}">guide for admins</a>, become a Zulip pro with a few <a href="{{ keyboard_shortcuts_link }}">keyboard shortcuts</a>, or <a href="{{ realm_uri }}">dive right in</a>!{% endtrans %}
|
{% trans %}We also have a guide for <a href="{{ getting_organization_started_link }}">Setting up your organization</a>.{% endtrans %}
|
||||||
{% else %}
|
|
||||||
{% trans %}<a href="{{ getting_started_link }}">Learn more</a> about Zulip, become a pro with a few <a href="{{ keyboard_shortcuts_link }}">keyboard shortcuts</a>, or <a href="{{ realm_uri }}">dive right in</a>!{% endtrans %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
{{ _("Cheers,") }}<br />
|
{% trans support_email=macros.email_tag(support_email) %}Questions? Contact
|
||||||
{{ _("Team Zulip") }}
|
us any time at {{ support_email }}.{% endtrans %}
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
{% trans %}PS: Follow us on <a href="https://twitter.com/zulip">Twitter</a>, star us on <a href="https://github.com/zulip/zulip">GitHub</a>, or chat with us live on the <a href="https://zulip.com/development-community/">Zulip community server</a>!{% endtrans %}
|
|
||||||
</p>
|
</p>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -2,38 +2,31 @@
|
||||||
|
|
||||||
{% if realm_creation %}
|
{% if realm_creation %}
|
||||||
{% if is_demo_org %}
|
{% if is_demo_org %}
|
||||||
{% trans %}You've created a demo Zulip organization. Note that this organization will be automatically deleted in 30 days. Learn more about demo organizations here: https://zulip.com/help/demo-organizations{% endtrans %}
|
{% trans demo_organizations_help_link="https://zulip.com/help/demo-organizations" %} Congratulations, you have created a new demo Zulip organization. Note that this organization will be automatically deleted in 30 days. Learn more about demo organizations here: {{ demo_organizations_help_link }}!{% endtrans %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% trans %}You've created the new Zulip organization {{ realm_name }}.{% endtrans %}
|
{% trans %}Congratulations, you have created a new Zulip organization: {{ realm_name }}.{% endtrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% trans %}You've created the new Zulip organization {{ realm_name }}.{% endtrans %}
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{% trans %}You've joined the Zulip organization {{ realm_name }}.{% endtrans %}
|
{% trans %}You've joined the Zulip organization {{ realm_name }}.{% endtrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{{ _('Your account details:') }}
|
{% trans apps_page_link="https://zulip.com/apps" %}You will use the following info to log into the Zulip web, mobile and desktop apps ({{ apps_page_link}}):{% endtrans %}
|
||||||
|
|
||||||
* {% trans organization_url=realm_uri %}Organization URL: {{ organization_url }}{% endtrans %}
|
* {% trans organization_url=realm_uri %}Organization URL: {{ organization_url }}{% endtrans %}
|
||||||
|
|
||||||
{% if ldap %}
|
{% if ldap %}
|
||||||
{% if ldap_username %}
|
{% if ldap_username %}
|
||||||
* {% trans %}Username: {{ ldap_username }}{% endtrans %}
|
* {% trans %}Your username: {{ ldap_username }}{% endtrans %}
|
||||||
{% else %}
|
{% else %}
|
||||||
* {{ _('Use your LDAP account to log in') }}
|
* {{ _('Use your LDAP account to log in') }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
* {% trans %}Email: {{ email }}{% endtrans %}
|
* {% trans %}Your account email: {{ email }}{% endtrans %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% trans apps_page_link="https://zulip.com/apps" %}(you'll need these to sign in to the mobile and desktop apps ({{ apps_page_link }})){% endtrans %}
|
|
||||||
|
|
||||||
|
|
||||||
|
{% trans %}If you are new to Zulip, check out our Getting started guide ({{ getting_user_started_link }})!{% endtrans %}
|
||||||
{% if is_realm_admin %}
|
{% if is_realm_admin %}
|
||||||
{% trans %}Check out our guide ({{ getting_started_link }}) for admins, become a Zulip pro with a few keyboard shortcuts ({{ keyboard_shortcuts_link }}), or dive right in to {{ realm_uri }}!{% endtrans %}
|
{% trans %} We also have a guide for Setting up your organization ({{ getting_organization_started_link }}).{% endtrans %}
|
||||||
{% else %}
|
|
||||||
{% trans %}Learn more ({{ getting_started_link }}) about Zulip, become a pro with a few keyboard shortcuts ({{ keyboard_shortcuts_link }}), or dive right in to {{ realm_uri }}!{% endtrans %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{{ _("Cheers,") }}
|
|
||||||
{{ _("Team Zulip") }}
|
|
||||||
|
|
||||||
{% trans %}PS: Check us out on Twitter (@zulip), star us on GitHub (https://github.com/zulip/zulip), or chat with us live on the Zulip community server (https://zulip.com/development-community/)!{% endtrans %}
|
|
||||||
|
|
|
@ -687,12 +687,11 @@ def enqueue_welcome_emails(user: UserProfile, realm_creation: bool = False) -> N
|
||||||
is_realm_admin=user.is_realm_admin,
|
is_realm_admin=user.is_realm_admin,
|
||||||
is_demo_org=user.realm.demo_organization_scheduled_deletion_date is not None,
|
is_demo_org=user.realm.demo_organization_scheduled_deletion_date is not None,
|
||||||
)
|
)
|
||||||
if user.is_realm_admin:
|
|
||||||
context["getting_started_link"] = (
|
context["getting_organization_started_link"] = (
|
||||||
user.realm.uri + "/help/getting-your-organization-started-with-zulip"
|
user.realm.uri + "/help/getting-your-organization-started-with-zulip"
|
||||||
)
|
)
|
||||||
else:
|
context["getting_user_started_link"] = user.realm.uri + "/help/getting-started-with-zulip"
|
||||||
context["getting_started_link"] = "https://zulip.com"
|
|
||||||
|
|
||||||
# Imported here to avoid import cycles.
|
# Imported here to avoid import cycles.
|
||||||
from zproject.backends import ZulipLDAPAuthBackend, email_belongs_to_ldap
|
from zproject.backends import ZulipLDAPAuthBackend, email_belongs_to_ldap
|
||||||
|
|
|
@ -214,7 +214,10 @@ class TestFollowupEmails(ZulipTestCase):
|
||||||
email_data = orjson.loads(scheduled_emails[0].data)
|
email_data = orjson.loads(scheduled_emails[0].data)
|
||||||
self.assertEqual(email_data["context"]["email"], self.example_email("hamlet"))
|
self.assertEqual(email_data["context"]["email"], self.example_email("hamlet"))
|
||||||
self.assertEqual(email_data["context"]["is_realm_admin"], False)
|
self.assertEqual(email_data["context"]["is_realm_admin"], False)
|
||||||
self.assertEqual(email_data["context"]["getting_started_link"], "https://zulip.com")
|
self.assertEqual(
|
||||||
|
email_data["context"]["getting_user_started_link"],
|
||||||
|
"http://zulip.testserver/help/getting-started-with-zulip",
|
||||||
|
)
|
||||||
self.assertNotIn("ldap_username", email_data["context"])
|
self.assertNotIn("ldap_username", email_data["context"])
|
||||||
|
|
||||||
ScheduledEmail.objects.all().delete()
|
ScheduledEmail.objects.all().delete()
|
||||||
|
@ -226,9 +229,13 @@ class TestFollowupEmails(ZulipTestCase):
|
||||||
self.assertEqual(email_data["context"]["email"], self.example_email("iago"))
|
self.assertEqual(email_data["context"]["email"], self.example_email("iago"))
|
||||||
self.assertEqual(email_data["context"]["is_realm_admin"], True)
|
self.assertEqual(email_data["context"]["is_realm_admin"], True)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
email_data["context"]["getting_started_link"],
|
email_data["context"]["getting_organization_started_link"],
|
||||||
"http://zulip.testserver/help/getting-your-organization-started-with-zulip",
|
"http://zulip.testserver/help/getting-your-organization-started-with-zulip",
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
email_data["context"]["getting_user_started_link"],
|
||||||
|
"http://zulip.testserver/help/getting-started-with-zulip",
|
||||||
|
)
|
||||||
self.assertNotIn("ldap_username", email_data["context"])
|
self.assertNotIn("ldap_username", email_data["context"])
|
||||||
|
|
||||||
# See https://zulip.readthedocs.io/en/latest/production/authentication-methods.html#ldap-including-active-directory
|
# See https://zulip.readthedocs.io/en/latest/production/authentication-methods.html#ldap-including-active-directory
|
||||||
|
@ -350,7 +357,7 @@ class TestFollowupEmails(ZulipTestCase):
|
||||||
self.assert_length(outbox, 1)
|
self.assert_length(outbox, 1)
|
||||||
|
|
||||||
message = outbox[0]
|
message = outbox[0]
|
||||||
self.assertIn("You've created the new Zulip organization", message.body)
|
self.assertIn("you have created a new Zulip organization", message.body)
|
||||||
self.assertNotIn("demo org", message.body)
|
self.assertNotIn("demo org", message.body)
|
||||||
|
|
||||||
def test_followup_emails_for_demo_realms(self) -> None:
|
def test_followup_emails_for_demo_realms(self) -> None:
|
||||||
|
@ -372,7 +379,7 @@ class TestFollowupEmails(ZulipTestCase):
|
||||||
self.assert_length(outbox, 1)
|
self.assert_length(outbox, 1)
|
||||||
|
|
||||||
message = outbox[0]
|
message = outbox[0]
|
||||||
self.assertIn("You've created a demo Zulip organization", message.body)
|
self.assertIn("you have created a new demo Zulip organization", message.body)
|
||||||
|
|
||||||
|
|
||||||
class TestMissedMessages(ZulipTestCase):
|
class TestMissedMessages(ZulipTestCase):
|
||||||
|
|
|
@ -69,7 +69,9 @@ class EmailTranslationTestCase(ZulipTestCase):
|
||||||
|
|
||||||
with self.settings(DEVELOPMENT_LOG_EMAILS=True):
|
with self.settings(DEVELOPMENT_LOG_EMAILS=True):
|
||||||
enqueue_welcome_emails(hamlet)
|
enqueue_welcome_emails(hamlet)
|
||||||
check_translation("Viele Grüße", "")
|
# TODO: Uncomment and replace with translation once we have German translations for the strings
|
||||||
|
# in followup_day1 emails.
|
||||||
|
# check_translation("Viele Grüße", "")
|
||||||
|
|
||||||
|
|
||||||
class TranslationTestCase(ZulipTestCase):
|
class TranslationTestCase(ZulipTestCase):
|
||||||
|
|
Loading…
Reference in New Issue