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> <p>
You can get set up to participate on an encrypted Zephyr class using Zulip by either: 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> </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> </div>
</div> </div>

View File

@@ -97,20 +97,19 @@
</tbody> </tbody>
</table> </table>
<h2>Useful management commands</h2> <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: <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> <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 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 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_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 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 <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> 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. <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 into the dev environment. First edit zilencer/management/commands/add_mock_conversation.py
to add the data you're testing. to add the data you're testing.
</li> </li>
</ul> </ul>
</p>
<p>We also have <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. <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> </p>

View File

@@ -30,18 +30,20 @@
<p> <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 %} {% 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> </p>
<li>{% trans organization_url=macros.link_tag(realm_url) %}Organization URL: {{ organization_url }}{% endtrans %}<br /></li> <ul>
{% if ldap %} <li>{% trans organization_url=macros.link_tag(realm_url) %}Organization URL: {{ organization_url }}{% endtrans %}<br /></li>
{% if ldap_username %} {% if ldap %}
<li>{% trans %}Your username: {{ ldap_username }}{% endtrans %}<br /></li> {% if ldap_username %}
{% else %} <li>{% trans %}Your username: {{ ldap_username }}{% endtrans %}<br /></li>
<li>{{ _('Use your LDAP account to log in') }}<br /></li>
{% endif %}
{% else %} {% 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 %} {% 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> <a class="button" href="{{ realm_url }}">{{ _('Go to organization') }}</a>
</p> </p>

View File

@@ -5,30 +5,32 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<p>
{% if create_realm %} {% if create_realm %}
{{ _("You have requested a new Zulip organization:") }} <p>
<ul> {{ _("You have requested a new Zulip organization:") }}
<li>{% trans %}Organization URL: {{ organization_url }}{% endtrans %}</li> </p>
<li>{% trans %}Organization type: {{ organization_type }}{% endtrans %}</li> <ul>
</ul> <li>{% trans %}Organization URL: {{ organization_url }}{% endtrans %}</li>
<li>{% trans %}Organization type: {{ organization_type }}{% endtrans %}</li>
</ul>
{% else %} {% else %}
{{ _("You recently signed up for Zulip. Awesome!") }} <p>
{{ _("You recently signed up for Zulip. Awesome!") }}
</p>
{% endif %} {% endif %}
</p> <p>
<p> {% if create_realm %}
{% 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.") }}
{{ _("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 %}
{% else %} {{ _("Click the button below to complete registration.") }}
{{ _("Click the button below to complete registration.") }} {% endif %}
{% endif %} <a class="button" href="{{ activate_url }}">{{ _("Complete registration") }}</a>
<a class="button" href="{{ activate_url }}">{{ _("Complete registration") }}</a> </p>
</p> <p>
<p> {% if corporate_enabled %}
{% if corporate_enabled %} {{macros.contact_us_zulip_cloud(support_email)}}
{{macros.contact_us_zulip_cloud(support_email)}} {% else %}
{% else %} {{macros.contact_us_self_hosted(support_email)}}
{{macros.contact_us_self_hosted(support_email)}} {% endif %}
{% endif %} </p>
</p>
{% endblock %} {% endblock %}

View File

@@ -10,25 +10,23 @@
{% block content %} {% block content %}
<p>{{ _("We noticed a recent login for the following Zulip account.") }}</p> <p>{{ _("We noticed a recent login for the following Zulip account.") }}</p>
<p> <ul>
<ul> <li>
<li> {% trans organization_link=macros.link_tag(realm_url) %}Organization: {{ organization_link }}{% endtrans %}
{% trans organization_link=macros.link_tag(realm_url) %}Organization: {{ organization_link }}{% endtrans %} </li>
</li> <li>
<li> {% trans user_email=macros.email_tag(user_email) %}Email: {{ user_email }}{% endtrans %}
{% trans user_email=macros.email_tag(user_email) %}Email: {{ user_email }}{% endtrans %} </li>
</li> <li>
<li> {% trans %}Time: {{ login_time }}{% endtrans %}
{% trans %}Time: {{ login_time }}{% endtrans %} </li>
</li> <li>
<li> {% trans %}Device: {{ device_browser }} on {{ device_os }}.{% endtrans %}
{% trans %}Device: {{ device_browser }} on {{ device_os }}.{% endtrans %} </li>
</li> <li>
<li> {% trans %}IP address: {{ device_ip }}{% endtrans %}
{% trans %}IP address: {{ device_ip }}{% endtrans %} </li>
</li> </ul>
</ul>
</p>
<p>{{ _("If this was you, great! There's nothing else you need to do.") }}</p> <p>{{ _("If this was you, great! There's nothing else you need to do.") }}</p>

View File

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

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 %} {% 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> </p>
{% if active_account_in_realm %} {% if active_account_in_realm %}
<p> <p>
{{ _('Click the button below to reset your password.') }} {{ _('Click the button below to reset your password.') }}
<a class="button" href="{{ reset_url }}">{{ _("Reset password") }}</a> <a class="button" href="{{ reset_url }}">{{ _("Reset password") }}</a>
</p> </p>
{% else %} {% else %}
<p> <p>
{% if user_deactivated %} {% 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 %} {% 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 %} {% else %}
{% trans %}You do not have an account in that Zulip organization.{% endtrans %} {% trans %}You do not have an account in that Zulip organization.{% endtrans %}
{% endif %} {% endif %}
</p> </p>
<p>
{% if other_realm_urls %} {% 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> <ul>
{% for realm_url in other_realm_urls %} {% for realm_url in other_realm_urls %}
<li>{{ realm_url }}</li> <li>{{ realm_url }}</li>
{% endfor %} {% endfor %}
</ul> </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 %} {% endif %}
</p>
{% endif %} {% endif %}
<p> <p>

View File

@@ -1,13 +1,12 @@
<p> <p>
{{#tr}}Archiving this channel will:{{/tr}} {{#tr}}Archiving this channel will:{{/tr}}
</p> </p>
<p> <ul>
<ul> <li>{{#tr}}Remove it from the left sidebar for all users.{{/tr}}</li>
<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 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>
<li>{{#tr}}Prevent messages in this channel from being edited, deleted, or moved.{{/tr}}</li> {{#if is_announcement_stream}}
{{#if is_announcement_stream}} <li>{{#tr}}Disable announcements that are currently sent to this channel:{{/tr}}
<li>{{#tr}}Disable announcements that are currently sent to this channel:{{/tr}}</li>
<ul> <ul>
{{#if is_new_stream_announcements_stream}} {{#if is_new_stream_announcements_stream}}
<li>{{#tr}}New channel announcements{{/tr}}</li> <li>{{#tr}}New channel announcements{{/tr}}</li>
@@ -19,8 +18,10 @@
<li>{{#tr}}Zulip update announcements{{/tr}}</li> <li>{{#tr}}Zulip update announcements{{/tr}}</li>
{{/if}} {{/if}}
</ul> </ul>
{{/if}} </li>
</ul> {{/if}}
</ul>
<p>
{{#tr}} {{#tr}}
Users can still search for messages in archived channels. Users can still search for messages in archived channels.
You can always unarchive this channel. 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}}. <strong>{username}</strong> has {number_of_invites_by_user, plural, one {# unexpired invitation} other {# unexpired invitations}}.
{{/tr}} {{/tr}}
{{/if}} {{/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> </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"> <label class="checkbox">
<input type="checkbox" class="send_email" /> <input type="checkbox" class="send_email" />
<span class="rendered-checkbox"></span> <span class="rendered-checkbox"></span>

View File

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

View File

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

View File

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

View File

@@ -19,36 +19,36 @@
</p> </p>
<p> <p>
{{t 'Click on a conversation to view it. To return here, you can:'}} {{t 'Click on a conversation to view it. To return here, you can:'}}
<ul> </p>
<li> <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}} {{#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}} {{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}} {{/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}} {{/if}}
</ul> </li>
</p> {{#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> </div>

View File

@@ -1,26 +1,28 @@
<p> <p>
{{t "Explore how hundreds of community participants use Zulip to brainstorm ideas, discuss technical challenges, ask questions, and give feedback:" }} {{t "Explore how hundreds of community participants use Zulip to brainstorm ideas, discuss technical challenges, ask questions, and give feedback:" }}
</p>
<ul> <ul>
<li> <li>
{{#tr}} {{#tr}}
You'll see a list of <z-highlight>recent conversations</z-highlight>, where each conversation is 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 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. 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}} {{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}} {{/tr}}
</li> </li>
<li> <li>
{{#tr}} {{#tr}}
Click the name of a channel in the left sidebar, and click on any topic underneath 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 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 design of the Zulip app in <z-highlight>#design</z-highlight>, or see ongoing issue
investigations in <z-highlight>#issues</z-highlight>. investigations in <z-highlight>#issues</z-highlight>.
{{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}} {{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}
{{/tr}} {{/tr}}
</li> </li>
</ul> </ul>
<p>
{{#tr}} {{#tr}}
If you have any questions, please post in the <z-highlight>#user questions</z-highlight> channel, and we'll be happy to help. 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}} {{#*inline "z-highlight"}}<b class="highlighted-element">{{> @partial-block}}</b>{{/inline}}