snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
1
templates/zerver/emails/.gitignore
vendored
Normal file
1
templates/zerver/emails/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
custom
|
||||
54
templates/zerver/emails/account_registered.html
Normal file
54
templates/zerver/emails/account_registered.html
Normal file
@@ -0,0 +1,54 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if realm_creation %}
|
||||
<p>
|
||||
{% trans %}Congratulations, you have created a new Zulip
|
||||
organization: <b>{{ realm_name }}</b>.{% endtrans %}
|
||||
</p>
|
||||
{% else %}
|
||||
<p>{{ _('Welcome to Zulip!') }}</p>
|
||||
<p>
|
||||
{% trans %}You've joined the Zulip organization <b>{{ realm_name }}</b>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{% 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 %}
|
||||
</p>
|
||||
<ul>
|
||||
<li>{% trans organization_url=macros.link_tag(realm_url) %}Organization URL: {{ organization_url }}{% endtrans %}<br /></li>
|
||||
{% if ldap %}
|
||||
{% if ldap_username %}
|
||||
<li>{% trans %}Your username: {{ ldap_username }}{% endtrans %}<br /></li>
|
||||
{% else %}
|
||||
<li>{{ _('Use your LDAP account to log in') }}<br /></li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li>{% trans email=macros.email_tag(email) %}Your account email: {{ email }}{% endtrans %}<br /></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<p>
|
||||
<a class="button" href="{{ realm_url }}">{{ _('Go to organization') }}</a>
|
||||
</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 %}
|
||||
{% trans %}We also have a guide for <a href="{{ getting_organization_started_link }}">moving your organization to Zulip</a>.{% endtrans %}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Questions? <a href="mailto:{{ support_email }}">Contact us</a> — we'd love to help!{% endtrans %}
|
||||
{% else %}
|
||||
{{macros.contact_us_self_hosted(support_email)}}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
9
templates/zerver/emails/account_registered.subject.txt
Normal file
9
templates/zerver/emails/account_registered.subject.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
{% if realm_creation %}
|
||||
{% trans -%}
|
||||
{{ realm_name }} on Zulip: Your new organization details
|
||||
{%- endtrans %}
|
||||
{% else %}
|
||||
{% trans -%}
|
||||
{{ realm_name }} on Zulip: Your new account details
|
||||
{%- endtrans %}
|
||||
{% endif %}
|
||||
35
templates/zerver/emails/account_registered.txt
Normal file
35
templates/zerver/emails/account_registered.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
{{ _('Welcome to Zulip!') }}
|
||||
|
||||
{% if realm_creation %}
|
||||
{% trans %}Congratulations, you have created a new Zulip organization: {{ realm_name }}.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}You've joined the Zulip organization {{ realm_name }}.{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% 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_url %}Organization URL: {{ organization_url }}{% endtrans %}
|
||||
|
||||
{% if ldap %}
|
||||
{% if ldap_username %}
|
||||
* {% trans %}Your username: {{ ldap_username }}{% endtrans %}
|
||||
{% else %}
|
||||
* {{ _('Use your LDAP account to log in') }}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
* {% trans %}Your account email: {{ email }}{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% trans %}If you are new to Zulip, check out our getting started guide ({{ getting_user_started_link }})!{% endtrans %}
|
||||
{% if is_realm_admin %}
|
||||
{% trans %} We also have a guide for moving your organization to Zulip ({{ getting_organization_started_link }}).{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Questions? Contact us at {{ support_email }} — we'd love to help!{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}If you have any questions, please contact this Zulip server's administrators at {{ support_email }}.{% endtrans %}
|
||||
{% endif %}
|
||||
14
templates/zerver/emails/confirm_demo_organization_email.html
Normal file
14
templates/zerver/emails/confirm_demo_organization_email.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>{% trans %}Hi,{% endtrans %}</p>
|
||||
|
||||
<p>{% trans realm_url=macros.link_tag(realm_url), new_email=macros.email_tag(new_email) %}We received a request to add the email address {{ new_email }} to your Zulip demo organization account on {{ realm_url }}. To confirm this update and set a password for this account, please click below:{% endtrans %}
|
||||
<a class="button" href="{{ activate_url }}">{{_('Confirm and set password') }}</a></p>
|
||||
|
||||
<p>{% trans support_email=macros.email_tag(support_email) %}If you did not request this change, please contact us immediately at {{ support_email }}.{% endtrans %}</p>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{{ _("Verify your email address for your Zulip demo organization") }}
|
||||
15
templates/zerver/emails/confirm_demo_organization_email.txt
Normal file
15
templates/zerver/emails/confirm_demo_organization_email.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
{% trans -%}
|
||||
Hi,
|
||||
{%- endtrans %}
|
||||
|
||||
|
||||
{% trans -%}
|
||||
We received a request to add the email address {{ new_email }} to your Zulip demo organization account on {{ realm_url }}. To confirm this update and set a password for this account, please click below:
|
||||
{%- endtrans %}
|
||||
|
||||
|
||||
{{ activate_url }}
|
||||
|
||||
{% trans -%}
|
||||
If you did not request this change, please contact us immediately at <{{ support_email }}>.
|
||||
{%- endtrans %}
|
||||
14
templates/zerver/emails/confirm_new_email.html
Normal file
14
templates/zerver/emails/confirm_new_email.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>{% trans %}Hi,{% endtrans %}</p>
|
||||
|
||||
<p>{% trans realm_url=macros.link_tag(realm_url), old_email=macros.email_tag(old_email), new_email=macros.email_tag(new_email) %}We received a request to change the email address for the Zulip account on {{ realm_url }} from {{ old_email }} to {{ new_email }}. To confirm this change, please click below:{% endtrans %}
|
||||
<a class="button" href="{{ activate_url }}">{{_('Confirm email change') }}</a></p>
|
||||
|
||||
<p>{% trans support_email=macros.email_tag(support_email) %}If you did not request this change, please contact us immediately at {{ support_email }}.{% endtrans %}</p>
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/confirm_new_email.subject.txt
Normal file
1
templates/zerver/emails/confirm_new_email.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}Verify your new email address for {{ organization_host }}{% endtrans %}
|
||||
15
templates/zerver/emails/confirm_new_email.txt
Normal file
15
templates/zerver/emails/confirm_new_email.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
{% trans -%}
|
||||
Hi,
|
||||
{%- endtrans %}
|
||||
|
||||
|
||||
{% trans -%}
|
||||
We received a request to change the email address for the Zulip account on {{ realm_url }} from {{ old_email }} to {{ new_email }}. To confirm this change, please click below:
|
||||
{%- endtrans %}
|
||||
|
||||
|
||||
{{ activate_url }}
|
||||
|
||||
{% trans -%}
|
||||
If you did not request this change, please contact us immediately at <{{ support_email }}>.
|
||||
{%- endtrans %}
|
||||
36
templates/zerver/emails/confirm_registration.html
Normal file
36
templates/zerver/emails/confirm_registration.html
Normal file
@@ -0,0 +1,36 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/registration_confirmation.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if create_realm %}
|
||||
<p>
|
||||
{{ _("You have requested a new Zulip organization:") }}
|
||||
</p>
|
||||
<ul>
|
||||
<li>{% trans %}Organization URL: {{ organization_url }}{% endtrans %}</li>
|
||||
<li>{% trans %}Organization type: {{ organization_type }}{% endtrans %}</li>
|
||||
</ul>
|
||||
{% else %}
|
||||
<p>
|
||||
{{ _("You recently signed up for Zulip. Awesome!") }}
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
{% if create_realm %}
|
||||
{{ _("Click the button below to create the organization and register your account. You'll be able to update the information above if you like.") }}
|
||||
{% else %}
|
||||
{{ _("Click the button below to complete registration.") }}
|
||||
{% endif %}
|
||||
<a class="button" href="{{ activate_url }}">{{ _("Complete registration") }}</a>
|
||||
</p>
|
||||
<p>
|
||||
{% if corporate_enabled %}
|
||||
{{macros.contact_us_zulip_cloud(support_email)}}
|
||||
{% else %}
|
||||
{{macros.contact_us_self_hosted(support_email)}}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
5
templates/zerver/emails/confirm_registration.subject.txt
Normal file
5
templates/zerver/emails/confirm_registration.subject.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
{% if create_realm %}
|
||||
{{ _("Create your Zulip organization") }}
|
||||
{% else %}
|
||||
{{ _("Activate your Zulip account") }}
|
||||
{% endif %}
|
||||
22
templates/zerver/emails/confirm_registration.txt
Normal file
22
templates/zerver/emails/confirm_registration.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
{% if create_realm %}
|
||||
{{ _("You have requested a new Zulip organization:") }}
|
||||
* {% trans %}Organization URL: {{ organization_url }}{% endtrans %}
|
||||
|
||||
* {% trans %}Organization type: {{ organization_type }}{% endtrans %}
|
||||
{% else %}
|
||||
{{ _("You recently signed up for Zulip. Awesome!") }}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% if create_realm %}
|
||||
{{ _("Click the button below to create the organization and register your account. You'll be able to update the information above if you like.") }}
|
||||
{% else %}
|
||||
{{ _("Click the link below to complete registration.") }}
|
||||
{% endif %}
|
||||
<{{ activate_url }}>
|
||||
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Do you have questions or feedback to share? Contact us at {{ support_email }} — we'd love to help!{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}If you have any questions, please contact this Zulip server's administrators at {{ support_email }}.{% endtrans %}
|
||||
{% endif %}
|
||||
25
templates/zerver/emails/custom_email_base.pre.html
Normal file
25
templates/zerver/emails/custom_email_base.pre.html
Normal file
@@ -0,0 +1,25 @@
|
||||
{% extends "zerver/emails/email_base_marketing.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{# Note: The below code is substituted by `manage.py send_custom_email` #}
|
||||
{{ rendered_input }}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block manage_preferences %}
|
||||
{% if remote_server_email %}
|
||||
{% if released_version %}
|
||||
<p>You are receiving this email because you opted into release notifications.</p>
|
||||
{% else %}
|
||||
<p>You are receiving this email to update you about important changes to Zulip's Terms of Service.</p>
|
||||
<a href="{{ unsubscribe_link }}">Unsubscribe</a>
|
||||
{% endif %}
|
||||
{% elif unsubscribe_link %}
|
||||
<p><a href="{{ realm_url }}/#settings/notifications">{{ _("Manage email preferences") }}</a> | <a href="{{ unsubscribe_link }}">{{ _("Unsubscribe from marketing emails") }}</a></p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
---
|
||||
{% if remote_server_email %}
|
||||
{% if released_version %}
|
||||
You are receiving this email because you opted into release notifications.
|
||||
{% else %}
|
||||
You are receiving this email to update you about important changes to Zulip's Terms of Service.
|
||||
|
||||
Unsubscribe: {{ unsubscribe_link }}
|
||||
{% endif %}
|
||||
{% elif unsubscribe_link %}
|
||||
{{ _("Manage email preferences") }}:
|
||||
|
||||
{{ realm_url }}/#settings/notifications
|
||||
|
||||
{{ _("Unsubscribe from marketing emails") }}:
|
||||
|
||||
{{ unsubscribe_link }}
|
||||
{% endif %}
|
||||
20
templates/zerver/emails/deactivate.html
Normal file
20
templates/zerver/emails/deactivate.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% trans %}
|
||||
Your Zulip account on <a href="{{ realm_url }}">{{ realm_url }}</a> has been deactivated, and you will no longer be able to log in.
|
||||
{% endtrans %}
|
||||
|
||||
<br/><br/>
|
||||
|
||||
{% if deactivation_notification_comment %}
|
||||
{{ _("The administrators provided the following comment:") }}
|
||||
|
||||
<pre class="deactivated-user-text">{{ deactivation_notification_comment }}</pre>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/deactivate.subject.txt
Normal file
1
templates/zerver/emails/deactivate.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}Notification of account deactivation on {{ realm_name }}{% endtrans %}
|
||||
9
templates/zerver/emails/deactivate.txt
Normal file
9
templates/zerver/emails/deactivate.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
{% trans %}
|
||||
Your Zulip account on {{ realm_url }} has been deactivated, and you will no longer be able to log in.
|
||||
{% endtrans %}
|
||||
|
||||
{% if deactivation_notification_comment %}
|
||||
{{ _("The administrators provided the following comment:") }}
|
||||
|
||||
{{ deactivation_notification_comment }}
|
||||
{% endif %}
|
||||
23
templates/zerver/emails/demo_request.html
Normal file
23
templates/zerver/emails/demo_request.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{% extends "zerver/emails/email_base_messages.html" %}
|
||||
|
||||
{% block content %}
|
||||
<b>Subject</b>: Demo request for {{ organization_name }}
|
||||
<br />
|
||||
<b>Full name</b>: {{ full_name }}
|
||||
<br />
|
||||
<b>Email</b>: {{ email }}
|
||||
<br />
|
||||
<b>Role</b>: {{ role }}
|
||||
<br />
|
||||
<b>Organization type</b>: {{ organization_type }}
|
||||
<br />
|
||||
<b>Organization website</b>: {{ organization_website }}
|
||||
<br />
|
||||
<b>Expected user count</b>: {{ expected_user_count }}
|
||||
<br />
|
||||
<b>Cloud or self-hosting?</b>: {{ type_of_hosting }}
|
||||
<br />
|
||||
<b>Message</b>: {{ message }}
|
||||
<br />
|
||||
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/demo_request.subject.txt
Normal file
1
templates/zerver/emails/demo_request.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
Demo request for {{organization_name}}
|
||||
17
templates/zerver/emails/demo_request.txt
Normal file
17
templates/zerver/emails/demo_request.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
Subject: Demo request for {{ organization_name }}
|
||||
|
||||
Full name: {{ full_name }}
|
||||
|
||||
Email: {{ email }}
|
||||
|
||||
Role: {{ role }}
|
||||
|
||||
Organization type: {{ organization_type }}
|
||||
|
||||
Organization website: {{ organization_website }}
|
||||
|
||||
Expected user count: {{ expected_user_count }}
|
||||
|
||||
Cloud or self-hosting?: {{ type_of_hosting }}
|
||||
|
||||
Message: {{ message }}
|
||||
58
templates/zerver/emails/digest.html
Normal file
58
templates/zerver/emails/digest.html
Normal file
@@ -0,0 +1,58 @@
|
||||
{% extends "zerver/emails/email_base_messages.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% if show_message_content %}
|
||||
{% if hot_conversations %}
|
||||
{% for convo in hot_conversations %}
|
||||
<div class='messages'>
|
||||
{% with recipient_block=convo.first_few_messages %}
|
||||
<div class='hot_convo_recipient_block'>
|
||||
<div class='hot_convo_recipient_header'>{{ recipient_block.header.html|safe }}</div>
|
||||
<div class='hot_convo_message_content'>
|
||||
{% for sender_block in recipient_block.senders %}
|
||||
{% for message_block in sender_block.content %}
|
||||
<div class='hot_convo_message_content_block'>
|
||||
{{ message_block.html|safe }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% if convo.count > 0 %}<p class="digest_paragraph">+ {{ convo.count }} more message{{ convo.count|pluralize }} by {{ convo.participants|display_list(4) }}.</p>{% endif %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% if new_channels.html %}
|
||||
<p class="digest_paragraph"><b>{% trans %}New channels{% endtrans %}</b></p>
|
||||
|
||||
<p class="digest_paragraph">{{ new_channels.html|display_list(1000)|safe }}.</p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p class="digest_paragraph">
|
||||
{% if new_messages_count > 0 and new_streams_count > 0 %}
|
||||
{% trans %}You have {{ new_messages_count }} new messages, and there are {{ new_streams_count }} new channels in <a href="{{ realm_url }}">{{ realm_name }}</a>.{% endtrans %}
|
||||
{% elif new_messages_count > 0 and new_streams_count == 0 %}
|
||||
{% trans %}You have {{ new_messages_count }} new messages in <a href="{{ realm_url }}">{{ realm_name }}</a>.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}There are {{ new_streams_count }} new channels in <a href="{{ realm_url }}">{{ realm_name }}</a>.{% endtrans %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p class="digest_paragraph">
|
||||
{% if message_content_disabled_by_realm %}
|
||||
{% trans help_url=realm_url + "/help/hide-message-content-in-emails" %}This email does not include message content because your organization <a class="content_disabled_help_link" href="{{ help_url }}">hides message content</a> in email notifications.{% endtrans %}
|
||||
{% elif message_content_disabled_by_user %}
|
||||
{% trans help_url=realm_url + "/help/email-notifications#hide-message-content" %}This email does not include message content because you have chosen to <a class="content_disabled_help_link" href="{{ help_url }}">hide message content</a> in email notifications.{% endtrans %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
<p class="digest_paragraph">{% trans %}<a href="{{ realm_url }}">Log in</a> to Zulip to catch up.{% endtrans %}</p>
|
||||
{% endblock %}
|
||||
|
||||
{% block manage_preferences %}
|
||||
<p class="digest_paragraph">
|
||||
<a href="{{ realm_url }}/#settings/notifications">{% trans %}Manage email preferences{% endtrans %}</a> |
|
||||
<a href="{{ unsubscribe_link }}">{% trans %}Unsubscribe from digest emails{% endtrans %}</a>
|
||||
</p>
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/digest.subject.txt
Normal file
1
templates/zerver/emails/digest.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}Zulip digest for {{ realm_name }}{% endtrans %}
|
||||
41
templates/zerver/emails/digest.txt
Normal file
41
templates/zerver/emails/digest.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
{% if show_message_content %}
|
||||
{% if hot_conversations %}
|
||||
{% for convo in hot_conversations %}{% with recipient_block=convo.first_few_messages %}{{ recipient_block.header.plain }}
|
||||
{% for sender_block in recipient_block.senders %}
|
||||
{% for message_block in sender_block.content %}{{ message_block.plain }}
|
||||
{% endfor %}{% endfor %}
|
||||
{% if convo.count > 0 %}+ {{ convo.count }} more message{{ convo.count|pluralize }} by {{ convo.participants|display_list(4) }}.{% endif %}{% endwith %}{% endfor %}{% endif %}
|
||||
|
||||
{% if new_channels.plain %}** {% trans %}New channels{% endtrans %} **
|
||||
{{ new_channels.plain|display_list(1000) }}.
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if new_messages_count > 0 and new_streams_count > 0 %}
|
||||
{% trans %}You have {{ new_messages_count }} new messages, and there are {{ new_streams_count }} new channels in {{ realm_name }}.{% endtrans %}
|
||||
{% elif new_messages_count > 0 and new_streams_count == 0 %}
|
||||
{% trans %}You have {{ new_messages_count }} new messages in {{ realm_name }}.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}There are {{ new_streams_count }} new channels in {{ realm_name }}.{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
{% if message_content_disabled_by_realm %}
|
||||
{% trans hide_content_url=realm_url + "/help/hide-message-content-in-emails" %}
|
||||
This email does not include message content because your organization hides message content in email notifications. See {{ hide_content_url }} for more details.
|
||||
{% endtrans %}
|
||||
{% elif message_content_disabled_by_user %}
|
||||
{% trans help_url=realm_url + "/help/email-notifications#hide-message-content" %}
|
||||
This email does not include message content because you have chosen to hide message content in email notifications. See {{ help_url }} for more details.
|
||||
{% endtrans %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% trans organization_url=realm_url %}Log in to Zulip to catch up: {{ organization_url }}.{% endtrans %}
|
||||
|
||||
--
|
||||
{% trans %}Manage email preferences:{% endtrans %}
|
||||
|
||||
{{ realm_url }}/#settings/notifications
|
||||
|
||||
{% trans %}Unsubscribe from digest emails:{% endtrans %}
|
||||
|
||||
{{ unsubscribe_link }}
|
||||
358
templates/zerver/emails/email.css
Normal file
358
templates/zerver/emails/email.css
Normal file
@@ -0,0 +1,358 @@
|
||||
/* stylelint-disable color-no-hex, media-feature-range-notation */
|
||||
|
||||
/* Hex color codes are used instead of our standard of hsl colors,
|
||||
because hex color codes are rendered by all email clients
|
||||
consistently; HSL colors aren't supported by Hotmail. */
|
||||
|
||||
.illustration img,
|
||||
img.bottom-illustration {
|
||||
border: none;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
max-width: 100%;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
body.default-email-font-settings {
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 1.4;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
/* These .layout tables are used to create sections within the email;
|
||||
see for example: https://templates.mailchimp.com/development/html/
|
||||
*/
|
||||
table.layout {
|
||||
border-collapse: separate;
|
||||
mso-table-lspace: 0;
|
||||
mso-table-rspace: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.layout > tbody > tr > td {
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* After email clients strip the actual body tag out of the email, the
|
||||
.body element will be the equivalent of our outer element. */
|
||||
.body {
|
||||
width: 100%;
|
||||
background-color: #f5f9f8;
|
||||
}
|
||||
|
||||
.container {
|
||||
display: block;
|
||||
margin: 0 auto !important;
|
||||
max-width: 500px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* This class is used to ensure that the images' width
|
||||
does not exceed the actual email layout width. */
|
||||
img.responsive-width {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* Our newsletters/marketing emails use a wider content width, to
|
||||
support more complex content with text to the side of images. */
|
||||
.container.wide-container {
|
||||
max-width: 700px;
|
||||
}
|
||||
|
||||
/* Mystery: .container contains .content, but the max-widths for this
|
||||
element are 80px wider than those for .container. */
|
||||
.content {
|
||||
box-sizing: border-box;
|
||||
display: block;
|
||||
margin: 20px auto 0;
|
||||
max-width: 580px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.content.wide-content {
|
||||
max-width: 780px;
|
||||
}
|
||||
|
||||
/*
|
||||
The main content region for the email; excludes the preheader and footer.
|
||||
*/
|
||||
.main {
|
||||
background-color: #fff;
|
||||
border-radius: 3px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Right/left padding to keep content away from edges of email client winder. */
|
||||
.wrapper {
|
||||
box-sizing: border-box;
|
||||
padding: 0 20px 20px;
|
||||
}
|
||||
|
||||
/* Footer section, containing unsubscribe links and the like. */
|
||||
.footer {
|
||||
clear: both;
|
||||
padding-top: 10px;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/*
|
||||
Apple mail and other popular email clients will convert the physical
|
||||
address into a link, so we set link color on it.
|
||||
*/
|
||||
.footer-content-block,
|
||||
.physical-address {
|
||||
color: #5f5ec7;
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/*
|
||||
Styles for the content section of Zulip newsletters and other custom emails.
|
||||
*/
|
||||
.custom-email-content h1 {
|
||||
font-size: 1.6em;
|
||||
margin-top: 25px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.content ul,
|
||||
.content ol {
|
||||
/* Override excessive indentation seen in Gmail. */
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
.body p,
|
||||
p.digest_paragraph,
|
||||
.content ul,
|
||||
.content ol {
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.messages p.digest_paragraph {
|
||||
line-height: normal;
|
||||
margin: 4px 0 0;
|
||||
}
|
||||
|
||||
.body p li,
|
||||
.content ul li,
|
||||
.content ol li {
|
||||
list-style-position: outside;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
/* Link color styling carefully tuned to not apply to user content
|
||||
inside missed-message emails. */
|
||||
.body a,
|
||||
.digest_paragraph a,
|
||||
.sponsorship_request_link,
|
||||
.support_request_link,
|
||||
.email-preferences a,
|
||||
.missed_message.no-content-explanation a {
|
||||
color: #5f5ec7;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.body a:hover,
|
||||
.digest_paragraph a:hover,
|
||||
.sponsorship_request_link:hover,
|
||||
.support_request_link:hover,
|
||||
.email-preferences a:hover,
|
||||
.missed_message.no-content-explanation a:hover {
|
||||
color: #434388 !important;
|
||||
}
|
||||
|
||||
.body .button {
|
||||
display: block;
|
||||
padding: 10px 0;
|
||||
margin: 20px auto;
|
||||
width: 200px;
|
||||
color: #5f5ec7;
|
||||
border: 2px solid #5f5ec7;
|
||||
background-color: #fff;
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
outline: none;
|
||||
font-family: sans-serif;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.body a.button:hover {
|
||||
background-color: #5f5ec7;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* The preheader is an invisible region that is used to control what
|
||||
email clients display as the textual preview of the email's content
|
||||
in inbox views. */
|
||||
.preheader {
|
||||
color: transparent;
|
||||
display: none;
|
||||
height: 0;
|
||||
max-height: 0;
|
||||
max-width: 0;
|
||||
opacity: 0;
|
||||
overflow: hidden;
|
||||
mso-hide: all;
|
||||
visibility: hidden;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
/* Illustrations appear over the top of the boundary between the
|
||||
blank space at the top of the email and the content box; for
|
||||
that reason they need a high z-index. */
|
||||
.illustration {
|
||||
pointer-events: none;
|
||||
cursor: default !important;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
/* Styling for empty topic placeholders. */
|
||||
.empty-topic-display {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* CSS for digest email content. */
|
||||
.messages {
|
||||
width: 600px;
|
||||
font-size: 12px;
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
overflow-y: auto;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.hot_convo_recipient_block {
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.hot_convo_recipient_header {
|
||||
background-color: #9ec9ff;
|
||||
border-bottom: 1px solid #000;
|
||||
font-weight: bold;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.hot_convo_message_content {
|
||||
margin-left: 1px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.hot_convo_message_content_block {
|
||||
padding-left: 6px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Text and link colors for missed-message emails. */
|
||||
.email-preferences {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.email-preferences a {
|
||||
color: #15c;
|
||||
}
|
||||
|
||||
.content_disabled_help_link {
|
||||
color: #15c;
|
||||
}
|
||||
|
||||
/* Quoted block for text written by an organization administrator to
|
||||
explain to the end user why their account got deactivated. */
|
||||
.deactivated-user-text {
|
||||
padding: 0 0 0 15px;
|
||||
margin: 0 0 20px;
|
||||
border-left: 5px solid #eee;
|
||||
white-space: pre-line;
|
||||
font-family: sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 620px) {
|
||||
table[class="body"] h1 {
|
||||
font-size: 28px !important;
|
||||
margin-bottom: 10px !important;
|
||||
}
|
||||
|
||||
table[class="body"] p,
|
||||
table[class="body"] ul,
|
||||
table[class="body"] ol,
|
||||
table[class="body"] td,
|
||||
table[class="body"] span,
|
||||
table[class="body"] a {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
table[class="body"] .wrapper {
|
||||
padding: 0 10px 10px;
|
||||
}
|
||||
|
||||
table[class="body"] .content {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
table[class="body"] .container {
|
||||
padding: 0 !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
table[class="body"] .main {
|
||||
border-left-width: 0 !important;
|
||||
border-radius: 0 !important;
|
||||
border-right-width: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media all {
|
||||
/* See https://templates.mailchimp.com/development/css/client-specific-styles/;
|
||||
ExternalClass is something Microsoft Outlook adds to emails. */
|
||||
.ExternalClass {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ExternalClass,
|
||||
.ExternalClass p,
|
||||
.ExternalClass span,
|
||||
.ExternalClass font,
|
||||
.ExternalClass td,
|
||||
.ExternalClass div {
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
/* iOS converts physical addresses in emails to links automatically,
|
||||
so this CSS has an effect on iOS even though we don't actually
|
||||
have a link inside the .physical-address element. */
|
||||
.physical-address a {
|
||||
color: inherit !important;
|
||||
font-family: inherit !important;
|
||||
font-size: inherit !important;
|
||||
font-weight: inherit !important;
|
||||
line-height: inherit !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Mechanism for images alongside content, mainly for use in newsletters. */
|
||||
.float-right-image {
|
||||
float: right;
|
||||
}
|
||||
|
||||
/* The 450px cutoff was determined by testing in Gmail as a point
|
||||
where an image looks good in either state. Logically it makes sense
|
||||
since then the text still has the majority of the space in the
|
||||
side-by-side view. */
|
||||
@media only screen and (min-width: 450px) {
|
||||
.float-right-image {
|
||||
max-width: 200px;
|
||||
}
|
||||
}
|
||||
53
templates/zerver/emails/email_base_default.html
Normal file
53
templates/zerver/emails/email_base_default.html
Normal file
@@ -0,0 +1,53 @@
|
||||
{% import 'zerver/emails/macros.html' as macros %}
|
||||
{% import 'zerver/emails/email.css' as css_styles %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta charset="UTF-8" />
|
||||
<title>Zulip</title>
|
||||
<style>{{css_styles}}</style>
|
||||
</head>
|
||||
<body class="default-email-font-settings">
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="body layout">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td class="container">
|
||||
<div class="content">
|
||||
<a href="#" class="illustration">
|
||||
{% block illustration %}{% endblock %}
|
||||
</a>
|
||||
<span class="preheader">
|
||||
{% block preheader %}{% endblock %}
|
||||
</span>
|
||||
<table class="main layout">
|
||||
<tr>
|
||||
<td class="wrapper">
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="layout">
|
||||
<tr>
|
||||
<td>
|
||||
{% block content %}{% endblock %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<img class="bottom-illustration" src="{{ email_images_base_url }}/footer.png" alt="{{ _('Swimming fish') }}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="footer">
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="layout">
|
||||
<tr>
|
||||
<td class="footer-content-block">
|
||||
<span class="physical-address">{{physical_address}}</span>
|
||||
{% block manage_preferences %}{% endblock %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
53
templates/zerver/emails/email_base_marketing.html
Normal file
53
templates/zerver/emails/email_base_marketing.html
Normal file
@@ -0,0 +1,53 @@
|
||||
{% import 'zerver/emails/macros.html' as macros %}
|
||||
{% import 'zerver/emails/email.css' as css_styles %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<meta charset="UTF-8" />
|
||||
<title>Zulip</title>
|
||||
<style>{{css_styles}}</style>
|
||||
</head>
|
||||
<body class="default-email-font-settings">
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="body layout">
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td class="container wide-container">
|
||||
<div class="content wide-content">
|
||||
<a href="#" class="illustration">
|
||||
{% block illustration %}{% endblock %}
|
||||
</a>
|
||||
<span class="preheader">
|
||||
{% block preheader %}{% endblock %}
|
||||
</span>
|
||||
<table class="main layout">
|
||||
<tr>
|
||||
<td class="wrapper">
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="layout">
|
||||
<tr>
|
||||
<td class="custom-email-content">
|
||||
{% block content %}{% endblock %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<img src="{{ email_images_base_url }}/footer.png" alt="{{ _('Swimming fish') }}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="footer">
|
||||
<table border="0" cellpadding="0" cellspacing="0" class="layout">
|
||||
<tr>
|
||||
<td class="footer-content-block">
|
||||
<span class="physical-address">{{physical_address}}</span>
|
||||
{% block manage_preferences %}{% endblock %}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
30
templates/zerver/emails/email_base_messages.html
Normal file
30
templates/zerver/emails/email_base_messages.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{% import 'zerver/emails/email.css' as css_styles %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Zulip</title>
|
||||
<style>{{css_styles}}</style>
|
||||
</head>
|
||||
<body>
|
||||
{% if has_preheader %}
|
||||
<span style="display:none !important;
|
||||
visibility:hidden;
|
||||
color:transparent;
|
||||
mso-hide:all;
|
||||
font-size:1px;
|
||||
color:hsl(0, 0%, 100%);
|
||||
line-height:1px;
|
||||
max-height:0px;
|
||||
height:0px;
|
||||
max-width:0px;
|
||||
width:0px;
|
||||
opacity:0;
|
||||
overflow:hidden;">
|
||||
{% block preheader %}{% endblock %}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% block content %}{% endblock %}
|
||||
{% block manage_preferences %}{% endblock %}
|
||||
</body>
|
||||
</html>
|
||||
7
templates/zerver/emails/error_processing_invoice.html
Normal file
7
templates/zerver/emails/error_processing_invoice.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% extends "zerver/emails/email_base_messages.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{{ message }}
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
Error processing paid customer invoice
|
||||
1
templates/zerver/emails/error_processing_invoice.txt
Normal file
1
templates/zerver/emails/error_processing_invoice.txt
Normal file
@@ -0,0 +1 @@
|
||||
{{ message }}
|
||||
41
templates/zerver/emails/find_team.html
Normal file
41
templates/zerver/emails/find_team.html
Normal file
@@ -0,0 +1,41 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if account_found %}
|
||||
<p>{{ _("Thanks for your request!") }}</p>
|
||||
|
||||
{% if corporate_enabled %}
|
||||
<p>{% trans %}Your email address {{ email }} has accounts with the following Zulip Cloud organizations:{% endtrans %}</p>
|
||||
{% else %}
|
||||
<p>{% trans %}Your email address {{ email }} has accounts with the following Zulip organizations hosted by {{ external_host }}:{% endtrans %}</p>
|
||||
{% endif %}
|
||||
|
||||
<ul>
|
||||
{% for realm_data in realms %}
|
||||
<li><a href="{{ realm_data.url }}">{{ realm_data.name }} ({{ realm_data.host }})</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
{% trans %}If you have trouble logging in, you can <a href="{{ help_reset_password_link }}">reset your password</a>.{% endtrans %}
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
{{ _("You have requested a list of Zulip accounts for this email address.") }}
|
||||
{% if corporate_enabled %}
|
||||
{{ _("Unfortunately, no Zulip Cloud accounts were found.") }}
|
||||
{% else %}
|
||||
{% trans%}Unfortunately, no accounts were found in Zulip organizations hosted by {{external_host}}.{% endtrans %}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% trans %}You can <a href = "{{ find_accounts_link }}" >check for accounts</a> with another email, or <a href ="{{ help_logging_in_link }}">try another way</a> to find your account.{% endtrans %}
|
||||
{{ _("If you do not recognize this request, you can safely ignore this email.") }}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
5
templates/zerver/emails/find_team.subject.txt
Normal file
5
templates/zerver/emails/find_team.subject.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
{% if account_found %}
|
||||
{{ _("Your Zulip accounts") }}
|
||||
{% else %}
|
||||
{{ _("No Zulip accounts found") }}
|
||||
{% endif %}
|
||||
36
templates/zerver/emails/find_team.txt
Normal file
36
templates/zerver/emails/find_team.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
{% if account_found %}
|
||||
{{ _("Thanks for your request!") }}
|
||||
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Your email address {{ email }} has accounts with the following Zulip Cloud organizations:{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}Your email address {{ email }} has accounts with the following Zulip organizations hosted by {{ external_host }}:{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% for realm_data in realms %}
|
||||
* {{ realm_data.name }}: {{ realm_data.url }}
|
||||
{% endfor %}
|
||||
|
||||
{% trans %}If you have trouble logging in, you can reset your password.{% endtrans %}
|
||||
|
||||
{{ help_reset_password_link }}
|
||||
|
||||
{% else %}
|
||||
{% if corporate_enabled %}
|
||||
{{ _("You have requested a list of Zulip accounts for this email address.") }} {{ _("Unfortunately, no Zulip Cloud accounts were found.") }}
|
||||
|
||||
{% trans %}You can check for accounts with another email ({{ find_accounts_link }}), or try another way to find your account ({{ help_logging_in_link }}).{% endtrans %}
|
||||
|
||||
|
||||
{{ _("If you do not recognize this request, you can safely ignore this email.") }}
|
||||
{% else %}
|
||||
{{ _("You have requested a list of Zulip accounts for this email address.") }} {% trans%}Unfortunately, no accounts were found in Zulip organizations hosted by {{external_host}}.{% endtrans %}
|
||||
|
||||
|
||||
{% trans %}You can check for accounts with another email ({{ find_accounts_link }}), or try another way to find your account ({{ help_logging_in_link }}).{% endtrans %}
|
||||
|
||||
|
||||
{{ _("If you do not recognize this request, you can safely ignore this email.") }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
28
templates/zerver/emails/internal_billing_notice.html
Normal file
28
templates/zerver/emails/internal_billing_notice.html
Normal file
@@ -0,0 +1,28 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p>Internal billing notice for {{ billing_entity }}.</p>
|
||||
|
||||
{% if notice_reason == "fixed_price_plan_ends_soon" %}
|
||||
<p>Reminder to re-evaluate the pricing and configure a new fixed-price plan accordingly.</p>
|
||||
{% elif notice_reason == "stale_audit_log_data" %}
|
||||
{% if fixed_price_plan %}
|
||||
<p>Unable to verify current licenses in use, but invoicing not delayed because customer has a fixed-price plan.</p>
|
||||
{% else %}
|
||||
<p>Unable to verify current licenses in use, which delays invoicing for this customer.</p>
|
||||
{% endif %}
|
||||
<b>Last data upload</b>: {{ last_audit_log_update }}
|
||||
{% elif notice_reason == "locally_deleted_realm_on_paid_plan" %}
|
||||
<p>Investigate why remote realm is marked as locally deleted when it's on a paid plan.</p>
|
||||
{% elif notice_reason == "license_discrepancy" %}
|
||||
<p>Discrepancy in licenses when upgraded to current plan.</p>
|
||||
<b>Licenses paid for</b>: {{ paid_licenses }}.
|
||||
<b>Reported licenses in use</b>: {{ current_licenses }}.
|
||||
{% endif %}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Support URL</b>: <a href="{{ support_url }}">{{ support_url }}</a>
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,9 @@
|
||||
{% if notice_reason == "fixed_price_plan_ends_soon" %}
|
||||
Fixed-price plan for {{ billing_entity }} ends on {{ end_date }}
|
||||
{% elif notice_reason == "stale_audit_log_data" %}
|
||||
Stale audit log data for {{ billing_entity }}'s plan
|
||||
{% elif notice_reason == "locally_deleted_realm_on_paid_plan" %}
|
||||
{{ billing_entity }} on paid plan marked as locally deleted
|
||||
{% elif notice_reason == "license_discrepancy" %}
|
||||
Check initial licenses invoiced for {{ billing_entity }}
|
||||
{% endif %}
|
||||
24
templates/zerver/emails/internal_billing_notice.txt
Normal file
24
templates/zerver/emails/internal_billing_notice.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
Internal billing notice for {{ billing_entity }}.
|
||||
|
||||
{% if notice_reason == "fixed_price_plan_ends_soon" %}
|
||||
Reminder to re-evaluate the pricing and configure a new fixed-price plan accordingly.
|
||||
{% elif notice_reason == "stale_audit_log_data" %}
|
||||
{% if fixed_price_plan %}
|
||||
Unable to verify current licenses in use, but invoicing not delayed because customer has a fixed-price plan.
|
||||
|
||||
Last data upload: {{ last_audit_log_update }}
|
||||
{% else %}
|
||||
Unable to verify current licenses in use, which delays invoicing for this customer.
|
||||
|
||||
Last data upload: {{ last_audit_log_update }}
|
||||
{% endif %}
|
||||
{% elif notice_reason == "locally_deleted_realm_on_paid_plan" %}
|
||||
Investigate why remote realm is marked as locally deleted when it's on a paid plan.
|
||||
{% elif notice_reason == "license_discrepancy" %}
|
||||
Discrepancy in licenses when upgraded to current plan.
|
||||
|
||||
Licenses paid for: {{ paid_licenses }}.
|
||||
Reported licenses in use: {{ current_licenses }}.
|
||||
{% endif %}
|
||||
|
||||
Support URL: {{ support_url }}
|
||||
25
templates/zerver/emails/invitation.html
Normal file
25
templates/zerver/emails/invitation.html
Normal file
@@ -0,0 +1,25 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/registration_confirmation.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p>{{ _("Hi there,") }}</p>
|
||||
|
||||
<p>
|
||||
{% trans referrer_name=macros.referrer_email_tag(referrer_email, referrer_full_name) %}{{ referrer_name }} wants you to join them on Zulip — the team communication tool designed for productivity.{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{{ _("To get started, click the button below.") }}
|
||||
<a class="button" href="{{ activate_url }}">{{ _("Complete registration") }}</a>
|
||||
</p>
|
||||
<p>
|
||||
{% if corporate_enabled %}
|
||||
{{macros.contact_us_zulip_cloud(support_email)}}
|
||||
{% else %}
|
||||
{{macros.contact_us_self_hosted(support_email)}}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/invitation.subject.txt
Normal file
1
templates/zerver/emails/invitation.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}{{referrer_full_name}} has invited you to join {{ referrer_realm_name }}{% endtrans %}
|
||||
12
templates/zerver/emails/invitation.txt
Normal file
12
templates/zerver/emails/invitation.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
{{ _("Hi there,") }}
|
||||
|
||||
{% trans %}{{ referrer_full_name }} ({{ referrer_email }}) wants you to join them on Zulip -- the team communication tool designed for productivity.{% endtrans %}
|
||||
|
||||
{{ _("To get started, click the link below.") }}
|
||||
<{{ activate_url }}>
|
||||
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Do you have questions or feedback to share? Contact us at {{ support_email }} — we'd love to help!{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}If you have any questions, please contact this Zulip server's administrators at {{ support_email }}.{% endtrans %}
|
||||
{% endif %}
|
||||
27
templates/zerver/emails/invitation_reminder.html
Normal file
27
templates/zerver/emails/invitation_reminder.html
Normal file
@@ -0,0 +1,27 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/invitation_reminder.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>{{ _("Hi again,") }}</p>
|
||||
|
||||
<p>{% trans referrer_name=macros.referrer_email_tag(referrer_email, referrer_name) %}This is a friendly reminder that {{ referrer_name }} wants you to join them on Zulip — the team communication tool designed for productivity.{% endtrans %}</p>
|
||||
|
||||
<p>
|
||||
{{ _("To get started, click the button below.") }}
|
||||
<a class="button" href="{{ activate_url }}">{{ _("Complete registration") }}</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ _("This is the last reminder you'll receive for this invitation.") }}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% trans referrer_name=macros.email_tag(referrer_email, referrer_name) %}
|
||||
This invitation expires in two days. If the invitation expires,
|
||||
you'll need to ask {{ referrer_name }} for another one.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/invitation_reminder.subject.txt
Normal file
1
templates/zerver/emails/invitation_reminder.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}Reminder: Join {{referrer_name}} at {{ referrer_realm_name }}{% endtrans %}
|
||||
10
templates/zerver/emails/invitation_reminder.txt
Normal file
10
templates/zerver/emails/invitation_reminder.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
{{ _("Hi again,") }}
|
||||
|
||||
{% trans %}This is a friendly reminder that {{ referrer_name }} ({{ referrer_email }}) wants you to join them on Zulip -- the team communication tool designed for productivity.{% endtrans %}
|
||||
|
||||
{{ _("To get started, click the link below.") }}
|
||||
<{{ activate_url }}>
|
||||
|
||||
{{ _("This is the last reminder you'll receive for this invitation.") }}
|
||||
|
||||
{% trans %}This invitation expires in two days. If the invitation expires, you'll need to ask {{ referrer_name }} for another one.{% endtrans %}
|
||||
19
templates/zerver/emails/macros.html
Normal file
19
templates/zerver/emails/macros.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% macro email_tag(email, text) -%}
|
||||
<a href="mailto:{{ email }}">{{ text | default(email) }}</a>
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro referrer_email_tag(referrer_email, referrer_name) -%}
|
||||
<a href="mailto:{{ referrer_email }}">{{ referrer_name }} ({{ referrer_email }})</a>
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro link_tag(url, text) -%}
|
||||
<a href="{{ url }}">{{ text | default(url) }}</a>
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro contact_us_self_hosted(email) -%}
|
||||
{% trans %}If you have any questions, please contact this Zulip server's administrators at <a href="mailto:{{ email }}">{{ email }}</a>.{% endtrans %}
|
||||
{%- endmacro %}
|
||||
|
||||
{% macro contact_us_zulip_cloud(email) -%}
|
||||
{% trans %}Do you have questions or feedback to share? <a href="mailto:{{ email }}">Contact us</a> — we'd love to help!{% endtrans %}
|
||||
{%- endmacro %}
|
||||
58
templates/zerver/emails/missed_message.html
Normal file
58
templates/zerver/emails/missed_message.html
Normal file
@@ -0,0 +1,58 @@
|
||||
{% extends "zerver/emails/email_base_messages.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% if show_message_content %}
|
||||
{% with recipient_block=messages %}
|
||||
{% for sender_block in recipient_block.senders %}
|
||||
<div class="missed_message">
|
||||
{% for message_block in sender_block.content %}
|
||||
{{ message_block.html|safe }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
<div class="missed_message no-content-explanation">
|
||||
{% if message_content_disabled_by_realm %}
|
||||
{% trans help_url=realm_url + "/help/hide-message-content-in-emails" %}This email does not include message content because your organization <a class="content_disabled_help_link" href="{{ help_url }}">hides message content</a> in email notifications.{% endtrans %}
|
||||
{% elif message_content_disabled_by_user %}
|
||||
{% trans help_url=realm_url + "/help/email-notifications#hide-message-content" %}This email does not include message content because you have chosen to <a class="content_disabled_help_link" href="{{ help_url }}">hide message content</a> in email notifications.{% endtrans %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block manage_preferences %}
|
||||
<div class="email-preferences">
|
||||
—<br />
|
||||
{% if personal_mentioned %}
|
||||
{% trans %}You are receiving this because you were personally mentioned.{% endtrans %}<br />
|
||||
{% elif mentioned_user_group_name %}
|
||||
{% trans %}You are receiving this because @{{ mentioned_user_group_name }} was mentioned.{% endtrans %}<br />
|
||||
{% elif topic_wildcard_mentioned_in_followed_topic %}
|
||||
{% trans %}You are receiving this because all topic participants were mentioned in #{{ channel_name }} > {{ topic_name }}.{% endtrans %}<br />
|
||||
{% elif stream_wildcard_mentioned_in_followed_topic %}
|
||||
{% trans %}You are receiving this because you have wildcard mention notifications enabled for topics you follow.{% endtrans %}<br />
|
||||
{% elif topic_wildcard_mentioned %}
|
||||
{% trans %}You are receiving this because all topic participants were mentioned in #{{ channel_name }} > {{ topic_name }}.{% endtrans %}<br />
|
||||
{% elif stream_wildcard_mentioned %}
|
||||
{% trans %}You are receiving this because everyone was mentioned in #{{ channel_name }}.{% endtrans %}<br />
|
||||
{% elif followed_topic_email_notify %}
|
||||
{% trans %}You are receiving this because you have email notifications enabled for topics you follow.{% endtrans %}<br />
|
||||
{% elif stream_email_notify %}
|
||||
{% trans %}You are receiving this because you have email notifications enabled for #{{ channel_name }}.{% endtrans %}<br />
|
||||
{% endif %}
|
||||
{% if reply_to_zulip %}
|
||||
{% trans notif_url=realm_url + "/#settings/notifications" %}Reply to this email directly, <a href="{{ narrow_url }}">view it in {{ realm_name }} Zulip</a>, or <a href="{{ notif_url }}">manage email preferences</a>.{% endtrans %}
|
||||
{% elif not show_message_content %}
|
||||
{% trans notif_url=realm_url + "/#settings/notifications" %}<a href="{{ narrow_url }}">View or reply in {{ realm_name }} Zulip</a>, or <a href="{{ notif_url }}">manage email preferences</a>.{% endtrans %} <br />
|
||||
{% else %}
|
||||
{% trans notif_url=realm_url + "/#settings/notifications" %}<a href="{{ narrow_url }}">Reply in {{ realm_name }} Zulip</a>, or <a href="{{ notif_url }}">manage email preferences</a>.{% endtrans %} <br />
|
||||
<br />
|
||||
{% trans url="https://zulip.readthedocs.io/en/latest/production/email-gateway.html" %}
|
||||
Do not reply to this email. This Zulip server is not configured to accept incoming emails (<a href="{{ url }}">help</a>).
|
||||
{% endtrans %}
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
20
templates/zerver/emails/missed_message.subject.txt
Normal file
20
templates/zerver/emails/missed_message.subject.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
{% if show_message_content %}
|
||||
{% if group_pm %} {% trans %}Group DMs with {{ direct_message_group_display_name }}{% endtrans %}
|
||||
{% elif private_message %} {% trans %}DMs with {{ sender_str }}{% endtrans %}
|
||||
{% elif stream_email_notify or mention or followed_topic_email_notify %}
|
||||
{#
|
||||
Some email clients, like Gmail Web (as of 2022), will auto-thread
|
||||
emails that share a subject and recipients, but will disregard
|
||||
[Bracketed Prefixes] in the style of old-school mailing lists. We take
|
||||
advantage of this to retain thread continuity in email notifications
|
||||
even after a topic is resolved.
|
||||
#}
|
||||
{% if topic_resolved %}{% trans %}[resolved] #{{ channel_name }} > {{ topic_name }}{% endtrans %}
|
||||
{% else %}#{{ channel_name }} > {{ topic_name }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% trans %}New messages{% endtrans %}
|
||||
{% endif %}
|
||||
{% if include_realm_name_in_missedmessage_emails_subject %} [{{ realm_str }}]
|
||||
{% endif %}
|
||||
62
templates/zerver/emails/missed_message.txt
Normal file
62
templates/zerver/emails/missed_message.txt
Normal file
@@ -0,0 +1,62 @@
|
||||
{% if show_message_content %}
|
||||
{% with recipient_block=messages %}
|
||||
{% for sender_block in recipient_block.senders %}
|
||||
{% for message_block in sender_block.content %}
|
||||
{{ message_block.plain }}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
{% else %}
|
||||
{% if message_content_disabled_by_realm %}
|
||||
{% trans hide_content_url=realm_url + "/help/hide-message-content-in-emails" %}
|
||||
This email does not include message content because your organization hides message content in email notifications. See {{ hide_content_url }} for more details.
|
||||
{% endtrans %}
|
||||
{% elif message_content_disabled_by_user %}
|
||||
{% trans help_url=realm_url + "/help/email-notifications#hide-message-content" %}
|
||||
This email does not include message content because you have chosen to hide message content in email notifications. See {{ help_url }} for more details.
|
||||
{% endtrans %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
--
|
||||
{% if personal_mentioned %}
|
||||
{% trans %}You are receiving this because you were personally mentioned.{% endtrans %}
|
||||
{% elif mentioned_user_group_name %}
|
||||
{% trans %}You are receiving this because @{{ mentioned_user_group_name }} was mentioned.{% endtrans %}
|
||||
{% elif topic_wildcard_mentioned_in_followed_topic %}
|
||||
{% trans %}You are receiving this because all topic participants were mentioned in #{{ channel_name }} > {{ topic_name }}.{% endtrans %}
|
||||
{% elif stream_wildcard_mentioned_in_followed_topic %}
|
||||
{% trans %}You are receiving this because you have wildcard mention notifications enabled for topics you follow.{% endtrans %}
|
||||
{% elif topic_wildcard_mentioned %}
|
||||
{% trans %}You are receiving this because all topic participants were mentioned in #{{ channel_name }} > {{ topic_name }}.{% endtrans %}
|
||||
{% elif stream_wildcard_mentioned %}
|
||||
{% trans %}You are receiving this because everyone was mentioned in #{{ channel_name }}.{% endtrans %}
|
||||
{% elif followed_topic_email_notify %}
|
||||
{% trans %}You are receiving this because you have email notifications enabled for topics you follow.{% endtrans %}
|
||||
{% elif stream_email_notify %}
|
||||
{% trans %}You are receiving this because you have email notifications enabled for #{{ channel_name }}.{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
{% if reply_to_zulip %}
|
||||
{% trans %}Reply to this email directly, or view it in {{ realm_name }} Zulip:{% endtrans %}
|
||||
|
||||
{{ narrow_url }}
|
||||
{% elif not show_message_content %}
|
||||
{% trans %}View or reply in {{ realm_name }} Zulip:{% endtrans %}
|
||||
|
||||
{{ narrow_url }}
|
||||
{% else %}
|
||||
{% trans %}Reply in {{ realm_name }} Zulip:{% endtrans %}
|
||||
|
||||
{{ narrow_url }}
|
||||
|
||||
{% trans %}
|
||||
Do not reply to this email. This Zulip server is not configured to accept
|
||||
incoming emails. Help:
|
||||
{% endtrans %}
|
||||
https://zulip.readthedocs.io/en/latest/production/email-gateway.html
|
||||
{% endif %}
|
||||
|
||||
{% trans %}Manage email preferences:{% endtrans %}
|
||||
|
||||
{{ realm_url }}/#settings/notifications
|
||||
16
templates/zerver/emails/notify_change_in_email.html
Normal file
16
templates/zerver/emails/notify_change_in_email.html
Normal file
@@ -0,0 +1,16 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>{{ _("Hi,") }}</p>
|
||||
<p>
|
||||
{% trans new_email=macros.email_tag(new_email), support_email=macros.email_tag(support_email) %}The email associated with your Zulip account was recently changed to {{ new_email }}. If you did not request this change, please contact us immediately at {{ support_email }}.{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{{ _("Best,") }}<br />
|
||||
{{ _("Team Zulip") }}
|
||||
</p>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{% trans %}Zulip email changed for {{ realm_name }}{% endtrans %}
|
||||
7
templates/zerver/emails/notify_change_in_email.txt
Normal file
7
templates/zerver/emails/notify_change_in_email.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
{{ _("Hi,") }}
|
||||
|
||||
{% trans %}The email associated with your Zulip account was recently changed to {{ new_email }}. If you did not request this change, please contact us immediately at <{{ support_email }}>.{% endtrans %}
|
||||
|
||||
|
||||
{{ _("Best,") }}
|
||||
{{ _("Team Zulip") }}
|
||||
45
templates/zerver/emails/notify_new_login.html
Normal file
45
templates/zerver/emails/notify_new_login.html
Normal file
@@ -0,0 +1,45 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block preheader %}
|
||||
{% trans organization_url=realm_url %}Organization: {{ organization_url }} Time: {{ login_time }} Email: {{ user_email }}{% endtrans %}
|
||||
{% endblock %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>{{ _("We noticed a recent login for the following Zulip account.") }}</p>
|
||||
<ul>
|
||||
<li>
|
||||
{% trans organization_link=macros.link_tag(realm_url) %}Organization: {{ organization_link }}{% endtrans %}
|
||||
</li>
|
||||
<li>
|
||||
{% trans user_email=macros.email_tag(user_email) %}Email: {{ user_email }}{% endtrans %}
|
||||
</li>
|
||||
<li>
|
||||
{% trans %}Time: {{ login_time }}{% endtrans %}
|
||||
</li>
|
||||
<li>
|
||||
{% trans %}Device: {{ device_browser }} on {{ device_os }}.{% endtrans %}
|
||||
</li>
|
||||
<li>
|
||||
{% trans %}IP address: {{ device_ip }}{% endtrans %}
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>{{ _("If this was you, great! There's nothing else you need to do.") }}</p>
|
||||
|
||||
<p>
|
||||
{% trans support_email=macros.email_tag(support_email), reset_link=realm_url + "/accounts/password/reset/" %}If you do not recognize this login, or think your account may have been compromised, please <a href="{{ reset_link }}">reset your password</a> or contact us immediately at {{ support_email }}.{% endtrans %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ _("Thanks,") }}<br />
|
||||
{{ _("Zulip Security") }}
|
||||
</p>
|
||||
{% endblock %}
|
||||
|
||||
{% block manage_preferences %}
|
||||
<p><a href="{{ realm_url }}/#settings/notifications">{{ _("Manage email preferences") }}</a> | <a href="{{ unsubscribe_link }}">{{ _("Unsubscribe from login notifications") }}</a></p>
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/notify_new_login.subject.txt
Normal file
1
templates/zerver/emails/notify_new_login.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}New login from {{ device_browser }} on {{ device_os }}{% endtrans %}
|
||||
22
templates/zerver/emails/notify_new_login.txt
Normal file
22
templates/zerver/emails/notify_new_login.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
{{ _("We noticed a recent login for the following Zulip account.") }}
|
||||
|
||||
{% trans organization_url=realm_url %}Organization: {{ organization_url }}{% endtrans %}
|
||||
|
||||
{% trans %}Email: {{ user_email }}{% endtrans %}
|
||||
|
||||
{% trans %}Time: {{ login_time }}{% endtrans %}
|
||||
|
||||
{% trans %}Device: {{ device_browser }} on {{ device_os }}.{% endtrans %}
|
||||
|
||||
{% trans %}IP address: {{ device_ip }}{% endtrans %}
|
||||
|
||||
|
||||
{{ _("If this was you, great! There's nothing else you need to do.") }}
|
||||
|
||||
{% trans reset_link=realm_url + "/accounts/password/reset/" %}
|
||||
If you do not recognize this login, or think your account may have been compromised, please reset your password at {{ reset_link }} or contact us immediately at {{ support_email }}.
|
||||
{%- endtrans %}
|
||||
|
||||
|
||||
{{ _("Thanks,") }}
|
||||
{{ _("Zulip Security") }}
|
||||
40
templates/zerver/emails/onboarding_team_to_zulip.html
Normal file
40
templates/zerver/emails/onboarding_team_to_zulip.html
Normal file
@@ -0,0 +1,40 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p>
|
||||
{% trans %}If you've already decided to use Zulip for your organization, welcome! You can use our <a href="{{ get_organization_started }}">guide for moving to Zulip</a> to get started.{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans %}Otherwise, here is some advice we often hear from customers for evaluating <i>any</i> team chat product:{% endtrans %}
|
||||
</p>
|
||||
<ol>
|
||||
<li>{% trans %}<a href="{{ invite_users }}"><b>Invite your teammates</b></a> to explore with you and share their unique perspectives.{% endtrans %}
|
||||
{% trans %}Use the app itself to chat about your impressions.{% endtrans %}
|
||||
</li>
|
||||
<li>{% trans %}<a href="{{ trying_out_zulip}}"><b>Run a week-long trial</b></a> with your team, without using any other chat tools. This is the only way to truly experience how a new chat app will help your team communicate.{% endtrans %}
|
||||
</li>
|
||||
</ol>
|
||||
<p>
|
||||
{% trans %}Zulip is designed to <a href="{{ why_zulip }}">enable efficient communication</a>, and we hope these tips help your team experience it in action.{% endtrans %}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{% if corporate_enabled %}
|
||||
{{macros.contact_us_zulip_cloud(support_email)}}
|
||||
{% else %}
|
||||
{{macros.contact_us_self_hosted(support_email)}}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block manage_preferences %}
|
||||
|
||||
<p><a href="{{ unsubscribe_link }}">{% trans %}Unsubscribe from welcome emails for {{ realm_name }}{% endtrans %}</a></p>
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{{ _("Choosing the chat app for your team") }}
|
||||
19
templates/zerver/emails/onboarding_team_to_zulip.txt
Normal file
19
templates/zerver/emails/onboarding_team_to_zulip.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
{% trans %}If you've already decided to use Zulip for your organization, welcome! You can use our guide for moving to Zulip to get started.{% endtrans %} [ {{ get_organization_started }} ]
|
||||
|
||||
{% trans %}Otherwise, here is some advice we often hear from customers for evaluating any team chat product:{% endtrans %}
|
||||
|
||||
|
||||
1. {% trans %}Invite your teammates to explore with you and share their unique perspectives.{% endtrans %} [ {{ invite_users }} ] {% trans %}Use the app itself to chat about your impressions.{% endtrans %}
|
||||
|
||||
2. {% trans %}Run a week-long trial with your team, without using any other chat tools. This is the only way to truly experience how a new chat app will help your team communicate.{% endtrans %} [ {{ trying_out_zulip }} ]
|
||||
|
||||
{% trans %}Zulip is designed to enable efficient communication, and we hope these tips help your team experience it in action.{% endtrans %} [ {{ why_zulip }} ]
|
||||
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Do you have questions or feedback to share? Contact us at {{ support_email }} — we'd love to help!{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}If you have any questions, please contact this Zulip server's administrators at {{ support_email }}.{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
----
|
||||
{% trans %}Unsubscribe from welcome emails for {{ realm_name }}{% endtrans %}: {{ unsubscribe_link }}
|
||||
42
templates/zerver/emails/onboarding_zulip_guide.html
Normal file
42
templates/zerver/emails/onboarding_zulip_guide.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<p>{{ _("As you are getting started with Zulip, we'd love to help you discover how it can work best for your needs. Check out this guide to key Zulip features for organizations like yours!") }}</p>
|
||||
|
||||
|
||||
{% if organization_type == "business" %}
|
||||
<a class="button" href="{{ zulip_guide_link }}">{{ _("View Zulip guide for businesses") }}</a>
|
||||
{% elif organization_type == "opensource" %}
|
||||
<a class="button" href="{{ zulip_guide_link }}">{{ _("View Zulip guide for open-source projects") }}</a>
|
||||
{% elif organization_type == "education" %}
|
||||
<a class="button" href="{{ zulip_guide_link }}">{{ _("View Zulip guide for education") }}</a>
|
||||
{% elif organization_type == "research" %}
|
||||
<a class="button" href="{{ zulip_guide_link }}">{{ _("View Zulip guide for research") }}</a>
|
||||
{% elif organization_type == "event" %}
|
||||
<a class="button" href="{{ zulip_guide_link }}">{{ _("View Zulip guide for events and conferences") }}</a>
|
||||
{% elif organization_type == "nonprofit" %}
|
||||
<a class="button" href="{{ zulip_guide_link }}">{{ _("View Zulip guide for non-profits") }}</a>
|
||||
{% elif organization_type == "community" %}
|
||||
<a class="button" href="{{ zulip_guide_link }}">{{ _("View Zulip guide for communities") }}</a>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{% if corporate_enabled %}
|
||||
{{macros.contact_us_zulip_cloud(support_email)}}
|
||||
{% else %}
|
||||
{{macros.contact_us_self_hosted(support_email)}}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block manage_preferences %}
|
||||
|
||||
<p><a href="{{ unsubscribe_link }}">{% trans %}Unsubscribe from welcome emails for {{ realm_name }}{% endtrans %}</a></p>
|
||||
|
||||
{% endblock %}
|
||||
15
templates/zerver/emails/onboarding_zulip_guide.subject.txt
Normal file
15
templates/zerver/emails/onboarding_zulip_guide.subject.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
{% if organization_type == "business" %}
|
||||
{{ _("Zulip guide for businesses") }}
|
||||
{% elif organization_type == "opensource" %}
|
||||
{{ _("Zulip guide for open-source projects") }}
|
||||
{% elif organization_type == "education" %}
|
||||
{{ _("Zulip guide for education") }}
|
||||
{% elif organization_type == "research" %}
|
||||
{{ _("Zulip guide for research") }}
|
||||
{% elif organization_type == "event" %}
|
||||
{{ _("Zulip guide for events and conferences") }}
|
||||
{% elif organization_type == "nonprofit" %}
|
||||
{{ _("Zulip guide for non-profits") }}
|
||||
{% elif organization_type == "community" %}
|
||||
{{ _("Zulip guide for communities") }}
|
||||
{% endif %}
|
||||
28
templates/zerver/emails/onboarding_zulip_guide.txt
Normal file
28
templates/zerver/emails/onboarding_zulip_guide.txt
Normal file
@@ -0,0 +1,28 @@
|
||||
{{ _("As you are getting started with Zulip, we'd love to help you discover how it can work best for your needs. Check out this guide to key Zulip features for organizations like yours!") }}
|
||||
|
||||
{% if organization_type == "business" %}
|
||||
{{ _("View Zulip guide for businesses") }}:
|
||||
{% elif organization_type == "opensource" %}
|
||||
{{ _("View Zulip guide for open-source projects") }}:
|
||||
{% elif organization_type == "education" %}
|
||||
{{ _("View Zulip guide for education") }}:
|
||||
{% elif organization_type == "research" %}
|
||||
{{ _("View Zulip guide for research") }}:
|
||||
{% elif organization_type == "event" %}
|
||||
{{ _("View Zulip guide for events and conferences") }}:
|
||||
{% elif organization_type == "nonprofit" %}
|
||||
{{ _("View Zulip guide for non-profits") }}:
|
||||
{% elif organization_type == "community" %}
|
||||
{{ _("View Zulip guide for communities") }}:
|
||||
{% endif %}
|
||||
<{{ zulip_guide_link }}>
|
||||
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Do you have questions or feedback to share? Contact us at {{ support_email }} — we'd love to help!{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}If you have any questions, please contact this Zulip server's administrators at {{ support_email }}.{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
----
|
||||
{% trans %}Unsubscribe from welcome emails for {{ realm_name }}{% endtrans %}:
|
||||
{{ unsubscribe_link }}
|
||||
36
templates/zerver/emails/onboarding_zulip_topics.html
Normal file
36
templates/zerver/emails/onboarding_zulip_topics.html
Normal file
@@ -0,0 +1,36 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/day2_1.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
{{ _("Here are some tips for keeping your Zulip conversations organized with topics.") }}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{{ _("In Zulip, <b>channels</b> determine who gets a message. <b>Topics</b> tell you what the message is about.")}} {{ _("Using topics, you can read Zulip one conversation at a time. You'll see each message in context, no matter how many different discussions are going on.") }}
|
||||
</p>
|
||||
|
||||
<img class="responsive-width" src="{{ email_images_base_url }}/channels-and-topics.png" alt="{{ _('Channels and topics in the Zulip app') }}"/>
|
||||
|
||||
<p>
|
||||
{{ _("To kick off a new conversation, just pick a channel and start a new topic. This way, the new conversation thread won't interrupt ongoing discussions. For a good topic name, think about finishing the sentence: “Hey, can we chat about…?”") }}
|
||||
</p>
|
||||
|
||||
<img class="responsive-width" src="{{ email_images_base_url }}/day2_2.png" alt="{{ _('Examples of short topics') }}"/>
|
||||
|
||||
<p>
|
||||
{% trans %}Don't stress about picking the perfect name for your topic. If anything is out of place, it's easy to <a href="{{ move_messages_link }}">move messages</a>, <a href="{{ rename_topics_link }}">rename topics</a>, or even <a href="{{ move_channels_link }}">move a topic to a different channel</a>.{% endtrans %}
|
||||
</p>
|
||||
|
||||
<a class="button" href="{{ realm_url }}">{{ _("Go to Zulip") }}</a>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block manage_preferences %}
|
||||
|
||||
<p><a href="{{ unsubscribe_link }}">{% trans %}Unsubscribe from welcome emails for {{ realm_name }}{% endtrans %}</a></p>
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{{ _("Keep your conversations organized with topics") }}
|
||||
15
templates/zerver/emails/onboarding_zulip_topics.txt
Normal file
15
templates/zerver/emails/onboarding_zulip_topics.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
{{ _("Here are some tips for keeping your Zulip conversations organized with topics.") }}
|
||||
|
||||
{{ _("In Zulip, channels determine who gets a message. Topics tell you what the message is about.") }} {{ _("Using topics, you can read Zulip one conversation at a time. You'll see each message in context, no matter how many different discussions are going on.") }}
|
||||
|
||||
{{ _("To kick off a new conversation, just pick a channel and start a new topic. This way, the new conversation thread won't interrupt ongoing discussions. For a good topic name, think about finishing the sentence: “Hey, can we chat about…?”") }}
|
||||
|
||||
{% trans %}Don't stress about picking the perfect name for your topic. If anything is out of place, it's easy to move messages ({{ move_messages_link }}), rename topics ({{ rename_topics_link }}), or even move a topic to a different channel ({{ move_channels_link }}).{% endtrans %}
|
||||
|
||||
|
||||
{{ _("Go to Zulip") }}:
|
||||
<{{ realm_url }}>
|
||||
|
||||
----
|
||||
{% trans %}Unsubscribe from welcome emails for {{ realm_name }}{% endtrans %}:
|
||||
{{ unsubscribe_link }}
|
||||
42
templates/zerver/emails/password_reset.html
Normal file
42
templates/zerver/emails/password_reset.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
{% trans email=macros.email_tag(email), realm_url=macros.link_tag(realm_url) %}Somebody (possibly you) requested a new password for the Zulip account {{ email }} on {{ realm_url }}.{% endtrans %}
|
||||
</p>
|
||||
{% if active_account_in_realm %}
|
||||
<p>
|
||||
{{ _('Click the button below to reset your password.') }}
|
||||
<a class="button" href="{{ reset_url }}">{{ _("Reset password") }}</a>
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
{% if user_deactivated %}
|
||||
{% trans organization_url=macros.link_tag(realm_url), help_link=realm_url + "/help/deactivate-or-reactivate-a-user" %}You previously had an account on {{ organization_url }}, but it has been deactivated. You can contact an organization administrator to <a href="{{ help_link }}">reactivate your account</a>.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}You do not have an account in that Zulip organization.{% endtrans %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if other_realm_urls %}
|
||||
<p>
|
||||
{{ _("You do have active accounts in the following organization(s).") }}
|
||||
</p>
|
||||
<ul>
|
||||
{% for realm_url in other_realm_urls %}
|
||||
<li>{{ realm_url }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p>
|
||||
{% trans %}You can try logging in or resetting your password in the organization(s) above.{% endtrans %}
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{% trans %}If you do not recognize this activity, you can safely ignore this email.{% endtrans %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/password_reset.subject.txt
Normal file
1
templates/zerver/emails/password_reset.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}Password reset request for {{ realm_name }}{% endtrans %}
|
||||
35
templates/zerver/emails/password_reset.txt
Normal file
35
templates/zerver/emails/password_reset.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
{% trans -%}
|
||||
Somebody (possibly you) requested a new password for the Zulip account {{ email }} on {{ realm_url }}.
|
||||
{%- endtrans %}
|
||||
|
||||
{% if active_account_in_realm %}
|
||||
{{ _('Click the link below to reset your password.') }}
|
||||
{{ reset_url }}
|
||||
{% else %}
|
||||
{% if user_deactivated %}
|
||||
{% trans -%}
|
||||
You previously had an account on {{ realm_url }}, but it has been deactivated. You can contact an organization administrator to reactivate your account.
|
||||
{%- endtrans %}
|
||||
{{ realm_url }}/help/deactivate-or-reactivate-a-user
|
||||
{% else %}
|
||||
{% trans -%}
|
||||
You do not have an account in that Zulip organization.
|
||||
{%- endtrans %}
|
||||
{% endif %}
|
||||
|
||||
{% if other_realm_urls %}
|
||||
|
||||
{{ _("You do have active accounts in the following organization(s).") }}
|
||||
{% for realm_url in other_realm_urls %}
|
||||
{{ realm_url }}
|
||||
{% endfor %}
|
||||
|
||||
{% trans -%}
|
||||
You can try logging in or resetting your password in the organization(s) above.
|
||||
{%- endtrans %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% trans -%}
|
||||
If you do not recognize this activity, you can safely ignore this email.
|
||||
{%- endtrans %}
|
||||
25
templates/zerver/emails/realm_auto_downgraded.html
Normal file
25
templates/zerver/emails/realm_auto_downgraded.html
Normal file
@@ -0,0 +1,25 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% trans organization_name_with_link=macros.link_tag(realm_url, string_id) %}
|
||||
Your organization, {{ organization_name_with_link }}, has been downgraded to the Zulip Cloud
|
||||
Free plan because of unpaid invoices. The unpaid invoices have been voided.
|
||||
{% endtrans %}
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
{% trans upgrade_url=macros.link_tag(upgrade_url) %}
|
||||
To continue on the Zulip Cloud Standard plan, please upgrade again by going to {{ upgrade_url }}.
|
||||
{% endtrans %}
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
{% trans support_email=macros.email_tag(support_email) %}
|
||||
If you think this was a mistake or need more details, please reach out to us at {{ support_email }}.
|
||||
{% endtrans %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{{ string_id }}: Your organization has been downgraded to Zulip Cloud Free
|
||||
8
templates/zerver/emails/realm_auto_downgraded.txt
Normal file
8
templates/zerver/emails/realm_auto_downgraded.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Your organization, {{ realm_url }}, has been downgraded to the Zulip Cloud
|
||||
Free plan because of unpaid invoices. The unpaid invoices have been voided.
|
||||
|
||||
To continue on the Zulip Cloud Standard plan, please upgrade again by going
|
||||
to {{ upgrade_url }}.
|
||||
|
||||
If you think this was a mistake or need more details, please reach out
|
||||
to us at support@zulip.com.
|
||||
39
templates/zerver/emails/realm_deactivated.html
Normal file
39
templates/zerver/emails/realm_deactivated.html
Normal file
@@ -0,0 +1,39 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
{% set localized_date = event_date|localize %}
|
||||
{% if scheduled_deletion_date %}
|
||||
{% set deletion_date = scheduled_deletion_date|localize %}
|
||||
{% endif %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
{% if is_demo_organization %}
|
||||
{% if acting_user and initiated_deactivation %}
|
||||
{% trans %}You have deactivated your Zulip demo organization, {{ realm_name }}, on {{ localized_date }}.{% endtrans %}
|
||||
{% elif acting_user %}
|
||||
{% trans %}Your Zulip demo organization, {{ realm_name }}, was deactivated by {{ deactivating_owner }} on {{ localized_date }}.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}Your Zulip demo organization, {{ realm_name }}, was deactivated on {{ localized_date }}.{% endtrans %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if acting_user and initiated_deactivation %}
|
||||
{% trans %}You have deactivated your Zulip organization, {{ realm_name }}, on {{ localized_date }}.{% endtrans %}
|
||||
{% elif acting_user %}
|
||||
{% trans %}Your Zulip organization, {{ realm_name }}, was deactivated by {{ deactivating_owner }} on {{ localized_date }}.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}Your Zulip organization, {{ realm_name }}, was deactivated on {{ localized_date }}.{% endtrans %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if data_already_deleted %}
|
||||
{% trans %}All data associated with this organization has been permanently deleted.{% endtrans %}
|
||||
{% elif scheduled_deletion_date %}
|
||||
{% trans %}All data associated with this organization will be permanently deleted on {{ deletion_date }}.{% endtrans %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans %}If you have any questions or concerns, please reply to this email as soon as possible.{% endtrans %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/realm_deactivated.subject.txt
Normal file
1
templates/zerver/emails/realm_deactivated.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
{% trans %}Your Zulip organization {{ realm_name }} has been deactivated{% endtrans %}
|
||||
29
templates/zerver/emails/realm_deactivated.txt
Normal file
29
templates/zerver/emails/realm_deactivated.txt
Normal file
@@ -0,0 +1,29 @@
|
||||
{% set localized_date = event_date|localize %}
|
||||
{% if scheduled_deletion_date %}
|
||||
{% set deletion_date = scheduled_deletion_date|localize %}
|
||||
{% endif %}
|
||||
{% if is_demo_organization %}
|
||||
{% if acting_user and initiated_deactivation %}
|
||||
{% trans %}You have deactivated your Zulip demo organization, {{ realm_name }}, on {{ localized_date }}.{% endtrans %}
|
||||
{% elif acting_user %}
|
||||
{% trans %}Your Zulip demo organization, {{ realm_name }}, was deactivated by {{ deactivating_owner }} on {{ localized_date }}.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}Your Zulip demo organization, {{ realm_name }}, was deactivated on {{ localized_date }}.{% endtrans %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if acting_user and initiated_deactivation %}
|
||||
{% trans %}You have deactivated your Zulip organization, {{ realm_name }}, on {{ localized_date }}.{% endtrans %}
|
||||
{% elif acting_user %}
|
||||
{% trans %}Your Zulip organization, {{ realm_name }}, was deactivated by {{ deactivating_owner }} on {{ localized_date }}.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}Your Zulip organization, {{ realm_name }}, was deactivated on {{ localized_date }}.{% endtrans %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if data_already_deleted %}
|
||||
{% trans %}All data associated with this organization has been permanently deleted.{% endtrans %}
|
||||
{% elif scheduled_deletion_date %}
|
||||
{% trans %}All data associated with this organization will be permanently deleted on {{ deletion_date }}.{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{% trans%}If you have any questions or concerns, please reply to this email as soon as possible.{% endtrans %}
|
||||
30
templates/zerver/emails/realm_reactivation.html
Normal file
30
templates/zerver/emails/realm_reactivation.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/registration_confirmation.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>{% trans %}Dear former administrators of {{ realm_name }},{% endtrans %}</p>
|
||||
|
||||
{% if is_demo_organization %}
|
||||
<p>{% trans realm_url=macros.link_tag(realm_url) %}One of your administrators requested reactivation of the previously deactivated Zulip demo organization hosted at {{ realm_url }}.{% endtrans %}</p>
|
||||
{% else %}
|
||||
<p>{% trans realm_url=macros.link_tag(realm_url) %}One of your administrators requested reactivation of the previously deactivated Zulip organization hosted at {{ realm_url }}.{% endtrans %}</p>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{{ _('Click the button below to reactivate your organization.') }}
|
||||
<a class="button" href="{{ confirmation_url }}">{{ _('Reactivate organization') }}</a>
|
||||
</p>
|
||||
|
||||
<p>{% trans %}If the request was in error, you can take no action and this link will expire in 24 hours.{% endtrans %}</p>
|
||||
|
||||
<p>
|
||||
{% if corporate_enabled %}
|
||||
{{macros.contact_us_zulip_cloud(support_email)}}
|
||||
{% else %}
|
||||
{{macros.contact_us_self_hosted(support_email)}}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
5
templates/zerver/emails/realm_reactivation.subject.txt
Normal file
5
templates/zerver/emails/realm_reactivation.subject.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
{% if is_demo_organization %}
|
||||
{% trans %}Reactivate your Zulip demo organization{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}Reactivate your Zulip organization{% endtrans %}
|
||||
{% endif %}
|
||||
21
templates/zerver/emails/realm_reactivation.txt
Normal file
21
templates/zerver/emails/realm_reactivation.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
{% trans %}Dear former administrators of {{ realm_name }},{% endtrans %}
|
||||
|
||||
|
||||
{% if is_demo_organization %}
|
||||
{% trans %}One of your administrators requested reactivation of the previously deactivated Zulip demo organization hosted at {{ realm_url }}.{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}One of your administrators requested reactivation of the previously deactivated Zulip organization hosted at {{ realm_url }}.{% endtrans %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
{{ _('Click the link below to reactivate your organization.') }}
|
||||
<{{ confirmation_url }}>
|
||||
|
||||
{% trans %}If the request was in error, you can take no action and this link will expire in 24 hours.{% endtrans %}
|
||||
|
||||
|
||||
{% if corporate_enabled %}
|
||||
{% trans %}Do you have questions or feedback to share? Contact us at {{ support_email }} — we'd love to help!{% endtrans %}
|
||||
{% else %}
|
||||
{% trans %}If you have any questions, please contact this Zulip server's administrators at {{ support_email }}.{% endtrans %}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,26 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/registration_confirmation.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
{% trans %}Either you, or someone on your behalf, has requested a log in link to manage the Zulip plan for <b>{{ remote_server_hostname }}</b>.{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans %}
|
||||
Click the button below to log in.
|
||||
{% endtrans %}
|
||||
|
||||
{% trans %}
|
||||
This link will expire in {{ validity_in_hours }} hours.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
<a class="button" href="{{ confirmation_url }}">{{ _("Log in") }}</a>
|
||||
</p>
|
||||
<p>
|
||||
{% trans billing_contact_email=macros.email_tag(billing_contact_email) %}Questions? <a href="{{ billing_help_link }}">Learn more</a> or contact {{ billing_contact_email }}.{% endtrans %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{% trans %}Log in to Zulip plan management{% endtrans %}
|
||||
@@ -0,0 +1,8 @@
|
||||
{% trans %}Either you, or someone on your behalf, has requested a log in link to manage the Zulip plan for {{ remote_server_hostname }}.{% endtrans %}
|
||||
|
||||
|
||||
{% trans %}Click the link below to log in.{% endtrans %} {% trans %}This link will expire in {{ validity_in_hours }} hours.{% endtrans %}
|
||||
|
||||
{{ _("Log in") }}: {{ confirmation_url }}
|
||||
|
||||
{% trans %}Questions? Learn more at {{ billing_help_link }} or contact {{ billing_contact_email }}.{% endtrans %}
|
||||
@@ -0,0 +1,19 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/registration_confirmation.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
{% trans %}
|
||||
Click the button below to confirm your email and log in to Zulip plan management for <b>{{ remote_realm_host }}</b>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
<a class="button" href="{{ confirmation_url }}">{{ _("Confirm and log in") }}</a>
|
||||
</p>
|
||||
<p>
|
||||
{% trans billing_contact_email=macros.email_tag(billing_contact_email) %}Questions? <a href="{{ billing_help_link }}">Learn more</a> or contact {{ billing_contact_email }}.{% endtrans %}
|
||||
</p>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{% trans %}Confirm email for Zulip plan management{% endtrans %}
|
||||
@@ -0,0 +1,6 @@
|
||||
{% trans %}Click the link below to confirm your email and log in to Zulip plan management for {{remote_realm_host}}.{% endtrans %}
|
||||
|
||||
|
||||
{{ _("Confirm and log in") }}: {{ confirmation_url }}
|
||||
|
||||
{% trans %}Questions? Learn more at {{ billing_help_link }} or contact {{ billing_contact_email }}.{% endtrans %}
|
||||
23
templates/zerver/emails/sales_support_request.html
Normal file
23
templates/zerver/emails/sales_support_request.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{% extends "zerver/emails/email_base_messages.html" %}
|
||||
|
||||
{% block content %}
|
||||
<b>Subject</b>: Sales support request for {{ organization_name }}
|
||||
<br />
|
||||
<b>Full name</b>: {{ full_name }}
|
||||
<br />
|
||||
<b>Email</b>: {{ email }}
|
||||
<br />
|
||||
<b>Role</b>: {{ role }}
|
||||
<br />
|
||||
<b>Organization type</b>: {{ organization_type }}
|
||||
<br />
|
||||
<b>Organization website</b>: {{ organization_website }}
|
||||
<br />
|
||||
<b>Expected user count</b>: {{ expected_user_count }}
|
||||
<br />
|
||||
<b>Message</b>: {{ message }}
|
||||
<br />
|
||||
<b>Support link</b>: {{ support_link }}
|
||||
<br />
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
Sales support request for {{organization_name}}
|
||||
17
templates/zerver/emails/sales_support_request.txt
Normal file
17
templates/zerver/emails/sales_support_request.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
Subject: Sales support request for {{ organization_name }}
|
||||
|
||||
Full name: {{ full_name }}
|
||||
|
||||
Email: {{ email }}
|
||||
|
||||
Role: {{ role }}
|
||||
|
||||
Organization type: {{ organization_type }}
|
||||
|
||||
Organization website: {{ organization_website }}
|
||||
|
||||
Expected user count: {{ expected_user_count }}
|
||||
|
||||
Message: {{ message }}
|
||||
|
||||
Support link: {{ support_link }}
|
||||
@@ -0,0 +1,15 @@
|
||||
{% extends "zerver/emails/email_base_default.html" %}
|
||||
|
||||
{% block illustration %}
|
||||
<img src="{{ email_images_base_url }}/email_logo.png" alt=""/>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>
|
||||
{% trans %}Your request for Zulip sponsorship has been approved! Your organization has been upgraded to the <a href="{{ plans_link }}">Zulip Community plan</a>.{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans %}If you could <a href="{{ link_to_zulip }}">list Zulip as a sponsor on your website</a>, we would really appreciate it!{% endtrans %}
|
||||
</p>
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1 @@
|
||||
{% trans %}Community plan sponsorship approved for {{ billing_entity }}!{% endtrans %}
|
||||
@@ -0,0 +1,5 @@
|
||||
{{ _("Your request for Zulip sponsorship has been approved! Your organization has been upgraded to the Zulip Community plan.") }}
|
||||
{{ plans_link }}
|
||||
|
||||
{{ _("If you could list Zulip as a sponsor on your website, we would really appreciate it!") }}
|
||||
{{ link_to_zulip }}
|
||||
57
templates/zerver/emails/sponsorship_request.html
Normal file
57
templates/zerver/emails/sponsorship_request.html
Normal file
@@ -0,0 +1,57 @@
|
||||
{% extends "zerver/emails/email_base_messages.html" %}
|
||||
|
||||
{% block content %}
|
||||
<br />
|
||||
|
||||
{% if is_cloud_organization %}
|
||||
<b>Zulip Cloud</b>
|
||||
{% else %}
|
||||
<b>Self-hosted</b>
|
||||
{% endif %}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Support URL</b>: <a class="sponsorship_request_link" href="{{ support_url }}">{{ support_url }}</a>
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Website</b>: <a class="sponsorship_request_link" href="{{ website }}">{{ website }}</a>
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Organization type</b>: {{ organization_type }}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Description</b>:
|
||||
<br />
|
||||
{{ description }}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>How do you plan to use Zulip?</b>
|
||||
<br />
|
||||
{{ plan_to_use_zulip }}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Expected users</b>: {{ expected_total_users }}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Paid staff</b>: {{ paid_users_count }}
|
||||
<br />
|
||||
<b>Description of paid staff</b>:
|
||||
<br />
|
||||
{{ paid_users_description }}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Requested by</b>: {{ requested_by }} ({{ user_role }})
|
||||
|
||||
{% if requested_plan %}
|
||||
<br /><br />
|
||||
<b>Requested plan</b>: {{ requested_plan }}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
1
templates/zerver/emails/sponsorship_request.subject.txt
Normal file
1
templates/zerver/emails/sponsorship_request.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
Sponsorship request for {{ billing_entity }}
|
||||
20
templates/zerver/emails/sponsorship_request.txt
Normal file
20
templates/zerver/emails/sponsorship_request.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
Support URL: {{ support_url }}
|
||||
|
||||
Website: {{ website }}
|
||||
|
||||
Organization type: {{ organization_type }}
|
||||
|
||||
Description:
|
||||
{{ description }}
|
||||
|
||||
How do you plan to use Zulip?
|
||||
{{ plan_to_use_zulip }}
|
||||
|
||||
Expected users:
|
||||
- Total: {{ expected_total_users }}
|
||||
- Paid: {{ paid_users_count }}
|
||||
|
||||
Description of paid users:
|
||||
{{ paid_users_description }}
|
||||
|
||||
Requested by: {{ requested_by }} ({{ user_role }})
|
||||
17
templates/zerver/emails/stylelint.config.js
Normal file
17
templates/zerver/emails/stylelint.config.js
Normal file
@@ -0,0 +1,17 @@
|
||||
// @ts-check
|
||||
|
||||
/** @type {import("stylelint").Config} */
|
||||
export default {
|
||||
extends: ["../../../stylelint.config"],
|
||||
rules: {
|
||||
// Add some exceptions for recommended rules
|
||||
"property-no-unknown": [true, {ignoreProperties: [/^mso-/]}],
|
||||
|
||||
// We don't run autoprefixer on email CSS
|
||||
"at-rule-no-vendor-prefix": null,
|
||||
"media-feature-name-no-vendor-prefix": null,
|
||||
"property-no-vendor-prefix": null,
|
||||
"selector-no-vendor-prefix": null,
|
||||
"value-no-vendor-prefix": null,
|
||||
},
|
||||
};
|
||||
21
templates/zerver/emails/support_request.html
Normal file
21
templates/zerver/emails/support_request.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{% extends "zerver/emails/email_base_messages.html" %}
|
||||
|
||||
{% block content %}
|
||||
<b>Support URL</b>: <a class="support_request_link" href="{{ support_url }}">{{ support_url }}</a>
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Subject</b>: {{ request_subject }}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Message</b>:
|
||||
<br />
|
||||
{{ request_message }}
|
||||
|
||||
<br /><br />
|
||||
|
||||
<b>Requested by</b>: {{ requested_by }} ({{ user_role }})
|
||||
|
||||
{% endblock %}
|
||||
|
||||
1
templates/zerver/emails/support_request.subject.txt
Normal file
1
templates/zerver/emails/support_request.subject.txt
Normal file
@@ -0,0 +1 @@
|
||||
Support request for {{ realm_string_id }}
|
||||
8
templates/zerver/emails/support_request.txt
Normal file
8
templates/zerver/emails/support_request.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Support URL: {{ support_url }}
|
||||
|
||||
Subject: {{ request_subject }}
|
||||
|
||||
Message:
|
||||
{{ request_message }}
|
||||
|
||||
Requested by: {{ requested_by }} ({{ user_role }})
|
||||
Reference in New Issue
Block a user