templates: Fix invalid lists inside <p>.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2025-09-05 14:34:58 -07:00
committed by Tim Abbott
parent 9a5c41cb9d
commit d3238e9a1b
14 changed files with 188 additions and 185 deletions

View File

@@ -65,11 +65,12 @@
<p>
You can get set up to participate on an encrypted Zephyr class using Zulip by either:
<ol>
<li><p>E-mailing us at <a href="mailto:{{ support_email }}">{{ support_email }}</a> to get set up, or</p></li>
<li><p>Someone who is already set up to participate on that encrypted Zephyr class using Zulip can use Zulip to invite you</p></li>
</ol>
</p>
<ol>
<li><p>E-mailing us at <a href="mailto:{{ support_email }}">{{ support_email }}</a> to get set up, or</p></li>
<li><p>Someone who is already set up to participate on that encrypted Zephyr class using Zulip can use Zulip to invite you</p></li>
</ol>
</div>
</div>
</div>

View File

@@ -97,20 +97,19 @@
</tbody>
</table>
<h2>Useful management commands</h2>
<p>Development-specific <a href="https://zulip.readthedocs.io/en/latest/production/management-commands.html">management commands</a> live in <code>zilencer/management/commands</code>. Highlights include:
<ul>
<li><code>./manage.py populate_db</code>: Rebuilds database. Has options to, for example, create 3K users for testing.</li>
<li><code>./manage.py mark_all_messages_unread</code>: Useful for testing reading messages.</li>
<li><code>./manage.py create_realm</code>: Add a new realm. Useful for testing onboarding.</li>
<li><code>./manage.py create_user</code>: Add a new user. Useful for testing onboarding.</li>
<li><code>./manage.py send_zulip_update_announcements</code>: Send <a href="https://zulip.com/help/configure-automated-notices#zulip-update-announcements">Zulip
<p>Development-specific <a href="https://zulip.readthedocs.io/en/latest/production/management-commands.html">management commands</a> live in <code>zilencer/management/commands</code>. Highlights include:</p>
<ul>
<li><code>./manage.py populate_db</code>: Rebuilds database. Has options to, for example, create 3K users for testing.</li>
<li><code>./manage.py mark_all_messages_unread</code>: Useful for testing reading messages.</li>
<li><code>./manage.py create_realm</code>: Add a new realm. Useful for testing onboarding.</li>
<li><code>./manage.py create_user</code>: Add a new user. Useful for testing onboarding.</li>
<li><code>./manage.py send_zulip_update_announcements</code>: Send <a href="https://zulip.com/help/configure-automated-notices#zulip-update-announcements">Zulip
update notices</a> drafted in `zerver/lib/zulip_update_announcements.py`.</li>
<li><code>./manage.py add_mock_conversation</code>: Add test messages, streams, images, emoji, etc.
into the dev environment. First edit zilencer/management/commands/add_mock_conversation.py
to add the data you're testing.
</li>
</ul>
</p>
<li><code>./manage.py add_mock_conversation</code>: Add test messages, streams, images, emoji, etc.
into the dev environment. First edit zilencer/management/commands/add_mock_conversation.py
to add the data you're testing.
</li>
</ul>
<p>We also have
<a href="https://zulip.readthedocs.io/en/latest/development/authentication.html">documentation on testing LDAP, Google &amp; GitHub authentication</a> in the development environment.
</p>

View File

@@ -30,18 +30,20 @@
<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 %}
<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 %}
</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>{% trans email=macros.email_tag(email) %}Your account email: {{ email }}{% endtrans %}<br /></li>
<li>{{ _('Use your LDAP account to log in') }}<br /></li>
{% endif %}
</ul>
{% 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>

View File

@@ -5,30 +5,32 @@
{% endblock %}
{% block content %}
<p>
{% if create_realm %}
{{ _("You have requested a new Zulip organization:") }}
<ul>
<li>{% trans %}Organization URL: {{ organization_url }}{% endtrans %}</li>
<li>{% trans %}Organization type: {{ organization_type }}{% endtrans %}</li>
</ul>
<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 %}
{{ _("You recently signed up for Zulip. Awesome!") }}
<p>
{{ _("You recently signed up for Zulip. Awesome!") }}
</p>
{% endif %}
</p>
<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>
<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 %}

View File

@@ -10,25 +10,23 @@
{% block content %}
<p>{{ _("We noticed a recent login for the following Zulip account.") }}</p>
<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>
<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>

View File

@@ -11,14 +11,14 @@
</p>
<p>
{% trans %}Otherwise, here is some advice we often hear from customers for evaluating <i>any</i> team chat product:{% endtrans %}
<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>
<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>

View File

@@ -9,29 +9,31 @@
{% 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>
<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>
<p>
<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 %}
{{ _("You do have active accounts in the following organization(s).") }}
<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>
{% trans %}You can try logging in or resetting your password in the organization(s) above.{% endtrans %}
<p>
{% trans %}You can try logging in or resetting your password in the organization(s) above.{% endtrans %}
</p>
{% endif %}
</p>
{% endif %}
<p>

View File

@@ -1,13 +1,12 @@
<p>
{{#tr}}Archiving this channel will:{{/tr}}
</p>
<p>
<ul>
<li>{{#tr}}Remove it from the left sidebar for all users.{{/tr}}</li>
<li>{{#tr}}Prevent new messages from being sent to this channel.{{/tr}}</li>
<li>{{#tr}}Prevent messages in this channel from being edited, deleted, or moved.{{/tr}}</li>
{{#if is_announcement_stream}}
<li>{{#tr}}Disable announcements that are currently sent to this channel:{{/tr}}</li>
<ul>
<li>{{#tr}}Remove it from the left sidebar for all users.{{/tr}}</li>
<li>{{#tr}}Prevent new messages from being sent to this channel.{{/tr}}</li>
<li>{{#tr}}Prevent messages in this channel from being edited, deleted, or moved.{{/tr}}</li>
{{#if is_announcement_stream}}
<li>{{#tr}}Disable announcements that are currently sent to this channel:{{/tr}}
<ul>
{{#if is_new_stream_announcements_stream}}
<li>{{#tr}}New channel announcements{{/tr}}</li>
@@ -19,8 +18,10 @@
<li>{{#tr}}Zulip update announcements{{/tr}}</li>
{{/if}}
</ul>
{{/if}}
</ul>
</li>
{{/if}}
</ul>
<p>
{{#tr}}
Users can still search for messages in archived channels.
You can always unarchive this channel.

View File

@@ -11,15 +11,17 @@
<strong>{username}</strong> has {number_of_invites_by_user, plural, one {# unexpired invitation} other {# unexpired invitations}}.
{{/tr}}
{{/if}}
{{#if bots_owned_by_user}}
{{t "They administer the following bots:"}}
<ul>
{{#each bots_owned_by_user}}
<li>{{this.full_name}}</li>
{{/each}}
</ul>
{{/if}}
</p>
{{#if bots_owned_by_user}}
<p>
{{t "They administer the following bots:"}}
</p>
<ul>
{{#each bots_owned_by_user}}
<li>{{this.full_name}}</li>
{{/each}}
</ul>
{{/if}}
<label class="checkbox">
<input type="checkbox" class="send_email" />
<span class="rendered-checkbox"></span>

View File

@@ -11,12 +11,10 @@
{{/tr}}
{{/if}}
</div>
<p>
<ul>
{{#each attachments_list}}
<li>
<a href="/user_uploads/{{this.path_id}}" rel="noopener noreferrer" target="_blank">{{this.name}}</a>
</li>
{{/each}}
</ul>
</p>
<ul>
{{#each attachments_list}}
<li>
<a href="/user_uploads/{{this.path_id}}" rel="noopener noreferrer" target="_blank">{{this.name}}</a>
</li>
{{/each}}
</ul>

View File

@@ -12,17 +12,15 @@
{{/tr}}
{{/if}}
</p>
<p>
<div>
{{#if (eq deleted_options_count 1)}}
{{t "Deleted option:" }}
{{else}}
{{t "Deleted options:" }}
{{/if}}
</div>
<ul>
{{#each deleted_values}}
<li>{{this}}</li>
{{/each}}
</ul>
</p>
<div>
{{#if (eq deleted_options_count 1)}}
{{t "Deleted option:" }}
{{else}}
{{t "Deleted options:" }}
{{/if}}
</div>
<ul>
{{#each deleted_values}}
<li>{{this}}</li>
{{/each}}
</ul>

View File

@@ -1,10 +1,8 @@
<p>
{{#tr}}Unarchiving this channel will:{{/tr}}
</p>
<p>
<ul>
<li>{{#tr}}Make it appear in the left sidebar for all subscribers.{{/tr}}</li>
<li>{{#tr}}Allow sending new messages to this channel.{{/tr}}</li>
<li>{{#tr}}Allow messages in this channel to be edited, deleted, or moved.{{/tr}}</li>
</ul>
</p>
<ul>
<li>{{#tr}}Make it appear in the left sidebar for all subscribers.{{/tr}}</li>
<li>{{#tr}}Allow sending new messages to this channel.{{/tr}}</li>
<li>{{#tr}}Allow messages in this channel to be edited, deleted, or moved.{{/tr}}</li>
</ul>

View File

@@ -19,36 +19,36 @@
</p>
<p>
{{t 'Click on a conversation to view it. To return here, you can:'}}
<ul>
<li>
</p>
<ul>
<li>
{{#tr}}
Use the <z-highlight>back</z-highlight> button in your browser or desktop app.
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
</li>
<li>
{{#if (eq zulip_view "inbox")}}
{{#tr}}
Use the <z-highlight>back</z-highlight> button in your browser or desktop app.
Click <z-icon-inbox></z-icon-inbox> <z-highlight>Inbox</z-highlight> in the left sidebar.
{{#*inline "z-icon-inbox"}}<i class="zulip-icon zulip-icon-inbox" aria-hidden="true"></i>{{/inline}}
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
{{else if (eq zulip_view "recent_conversations")}}
{{#tr}}
Click <z-icon-recent></z-icon-recent> <z-highlight>Recent conversations</z-highlight> in the left sidebar.
{{#*inline "z-icon-recent"}}<i class="zulip-icon zulip-icon-recent" aria-hidden="true"></i>{{/inline}}
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
</li>
<li>
{{#if (eq zulip_view "inbox")}}
{{#tr}}
Click <z-icon-inbox></z-icon-inbox> <z-highlight>Inbox</z-highlight> in the left sidebar.
{{#*inline "z-icon-inbox"}}<i class="zulip-icon zulip-icon-inbox" aria-hidden="true"></i>{{/inline}}
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
{{else if (eq zulip_view "recent_conversations")}}
{{#tr}}
Click <z-icon-recent></z-icon-recent> <z-highlight>Recent conversations</z-highlight> in the left sidebar.
{{#*inline "z-icon-recent"}}<i class="zulip-icon zulip-icon-recent" aria-hidden="true"></i>{{/inline}}
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
{{/if}}
</li>
{{#if current_home_view_and_escape_navigation_enabled}}
<li>
{{#tr}}
Use <z-button>Esc</z-button> to go to your home view.
{{#*inline "z-button"}}<span class="keyboard-button">{{> @partial-block}}</span>{{/inline}}
{{/tr}}
</li>
{{/if}}
</ul>
</p>
</li>
{{#if current_home_view_and_escape_navigation_enabled}}
<li>
{{#tr}}
Use <z-button>Esc</z-button> to go to your home view.
{{#*inline "z-button"}}<span class="keyboard-button">{{> @partial-block}}</span>{{/inline}}
{{/tr}}
</li>
{{/if}}
</ul>
</div>

View File

@@ -1,26 +1,28 @@
<p>
{{t "Explore how hundreds of community participants use Zulip to brainstorm ideas, discuss technical challenges, ask questions, and give feedback:" }}
</p>
<ul>
<li>
{{#tr}}
You'll see a list of <z-highlight>recent conversations</z-highlight>, where each conversation is
labeled with a topic by the person who started it. Click on a conversation to
view it. You can always get back to recent conversations from the left sidebar.
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
</li>
<li>
{{#tr}}
Click the name of a channel in the left sidebar, and click on any topic underneath
to view one conversation at a time. You can explore discussions of changes to the
design of the Zulip app in <z-highlight>#design</z-highlight>, or see ongoing issue
investigations in <z-highlight>#issues</z-highlight>.
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
</li>
</ul>
<ul>
<li>
{{#tr}}
You'll see a list of <z-highlight>recent conversations</z-highlight>, where each conversation is
labeled with a topic by the person who started it. Click on a conversation to
view it. You can always get back to recent conversations from the left sidebar.
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
</li>
<li>
{{#tr}}
Click the name of a channel in the left sidebar, and click on any topic underneath
to view one conversation at a time. You can explore discussions of changes to the
design of the Zulip app in <z-highlight>#design</z-highlight>, or see ongoing issue
investigations in <z-highlight>#issues</z-highlight>.
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}}
</li>
</ul>
<p>
{{#tr}}
If you have any questions, please post in the <z-highlight>#user questions</z-highlight> channel, and we'll be happy to help.
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}