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

This commit is contained in:
upstream-mirror
2026-09-15 15:05:30 +05:00
commit 64898b2c79
8999 changed files with 1757358 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
{% extends "zerver/portico_signup.html" %}
{% block title %}
<title>{{ _("Try Zulip in a demo organization") }} | Zulip</title>
{% endblock %}
{% block portico_content %}
<div class="register-account flex full-page">
<div class="center-block new-style" id="demo-realm-creation">
<div class="registration-lead-section">
<h1 class="registration-lead-title">{{ _("Try Zulip in a demo organization") }}</h1>
<p class="registration-lead-subtitle">
{% trans %}
No email required. Or <a class="registration-lead-subtitle-link" href="{{ root_domain_url }}/new/">create a permanent organization</a>.
{% endtrans %}
</p>
</div>
<form class="white-box" id="create_demo_realm" action="{{ current_url() }}" method="post">
{{ csrf_input }}
<input type='hidden' name='timezone' id='demo-creator-timezone'/>
{% include 'zerver/create_realm/realm_creation_base_form_fields.html' %}
{% include 'zerver/create_realm/found_zulip_form_field.html' %}
{% if terms_of_service %}
{% include 'zerver/create_user/terms_of_service_form_field.html' %}
{% endif %}
<div class="input-box" id="demo-submit-button-container">
<button type="submit" class="new-organization-button register-button">{{ _("Try Zulip") }}</button>
{% include 'zerver/altcha_form_field.html' %}
</div>
</form>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,67 @@
{% extends "zerver/portico_signup.html" %}
{# Home page for not logged-in users. #}
{% block title %}
<title>{{ _("Create a new organization") }} | Zulip</title>
{% endblock %}
{# This is where we pitch the app and solicit signups. #}
{% block portico_content %}
<div class="app register-page">
<div class="app-main register-page-container new-style flex full-page">
<div class="register-form" id="new-realm-creation">
<div class="registration-lead-section">
<h1 class="registration-lead-title">{{ _("Create a new Zulip organization") }}</h1>
{% if corporate_enabled %}
<p class="registration-lead-subtitle">
{% trans %}
Or <a class="registration-lead-subtitle-link" href="{{ root_domain_url }}/new/demo/">create a demo organization</a> — no email required!
{% endtrans %}
</p>
{% endif %}
</div>
<div class="white-box">
<form class="form-inline" id="create_realm" name="email_form"
action="{{ current_url() }}" method="post">
{{ csrf_input }}
{% include 'zerver/create_realm/realm_creation_name_form_field.html' %}
{% include 'zerver/create_realm/realm_creation_base_form_fields.html' %}
{% include 'zerver/create_realm/realm_creation_subdomain_form_field.html' %}
{% if is_realm_import_enabled %}
{% include 'zerver/create_realm/realm_creation_import_form_field.html' %}
{% endif %}
<div class="input-box horizontal">
<div class="inline-block relative">
<input type="text" class="email required" placeholder="{{ _("Enter your email address") }}"
id="email" name="email" required />
<label for="email">{{ _('Your email') }}</label>
</div>
{% if form.email.errors %}
{% for error in form.email.errors %}
<div class="alert alert-error">{{ error }}</div>
{% endfor %}
{% endif %}
</div>
<div class="input-box" id="altcha-submit-button-container">
<button type="submit" class="new-organization-button register-button">{{ _("Create organization") }}</button>
{% include 'zerver/altcha_form_field.html' %}
</div>
</form>
</div>
{% if not is_realm_import_enabled %}
<div class="bottom-text">
{% trans %}
Or import
from <a href="/help/import-from-slack">Slack</a>, <a href="/help/import-from-mattermost">Mattermost</a>,
or <a href="/help/import-from-rocketchat">Rocket.Chat</a>.
{% endtrans %}
</div>
{% endif %}
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,24 @@
<div class="input-group input-box" id="how-realm-creator-found-zulip">
<label for="how_realm_creator_found_zulip">
{{ _('How did you first hear about Zulip?') }}
{% if not corporate_enabled %}
<i class="fa fa-question-circle-o" aria-hidden="true" data-tippy-content="{% trans %}This value is used only if you sign up for a plan, in which case it will be sent to the Zulip team.{% endtrans %}"></i>
{% endif %}
</label>
<select id="how_realm_creator_found_zulip" name="how_realm_creator_found_zulip" class="required" required>
<option value="" selected disabled>{{ _('Select an option') }}</option>
{% for option_id, option_name in how_realm_creator_found_zulip_options %}
<option value="{{ option_id }}">{{ option_name }}</option>
{% endfor %}
</select>
<input id="how-realm-creator-found-zulip-other" class="how-found-zulip-extra-data-input" type="text" placeholder="{{ _('Please describe') }}" name="how_realm_creator_found_zulip_other_text" maxlength="100"/>
<input id="how-realm-creator-found-zulip-where-ad" class="how-found-zulip-extra-data-input" type="text" placeholder="{{ _('Where did you see the ad?') }}" name="how_realm_creator_found_zulip_where_ad" maxlength="100"/>
<input id="how-realm-creator-found-zulip-which-organization" class="how-found-zulip-extra-data-input" type="text" placeholder="{{ _('Which organization?') }}" name="how_realm_creator_found_zulip_which_organization" maxlength="100"/>
<input id="how-realm-creator-found-zulip-review-site" class="how-found-zulip-extra-data-input" type="text" placeholder="{{ _('Which one?') }}" name="how_realm_creator_found_zulip_review_site" maxlength="100"/>
<input id="how-realm-creator-found-zulip-which-ai-chatbot" class="how-found-zulip-extra-data-input" type="text" placeholder="{{ _('Which one?') }}" name="how_realm_creator_found_zulip_which_ai_chatbot" maxlength="100"/>
{% if form.how_realm_creator_found_zulip.errors %}
{% for error in form.how_realm_creator_found_zulip.errors %}
<p class="error help-inline alert alert-error">{{ error }}</p>
{% endfor %}
{% endif %}
</div>

View File

@@ -0,0 +1,37 @@
<div class="realm-creation-editable-inputs {% if user_registration_form and not form.realm_subdomain.errors %}hide{% endif %}">
<div class="input-box">
<div class="inline-block relative">
<select name="realm_type" id="realm_type" required>
<option disabled selected value>-- {{ _("Select one") }} --</option>
{% for realm_type in sorted_realm_types %}
{% if not realm_type.hidden %}
<option value="{{ realm_type.id }}" {% if form.realm_type.value() == realm_type.id %}selected{% endif %} >{{ _(realm_type.name) }}</option>
{% endif %}
{% endfor %}
</select>
</div>
<label for="realm_type" class="inline-block label-title">{{ _('Organization type') }}
<a href="/help/organization-type" target="_blank" rel="noopener noreferrer">
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
</a>
</label>
</div>
<div class="input-box">
<div class="inline-block relative">
<select name="realm_default_language" id="realm_default_language">
{% for language in language_list %}
<option value="{{ language.code }}" {% if form.realm_default_language.value() == language.code %}selected{% endif %} >{{ _(language.name) }}</option>
{% endfor %}
</select>
</div>
<label for="realm_default_language" class="inline-block label-title">
{{ _('Organization language') }}
<a href="/help/configure-organization-language" target="_blank" rel="noopener noreferrer">
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
</a>
</label>
</div>
</div>

View File

@@ -0,0 +1,27 @@
<div class="realm-creation-editable-inputs {% if user_registration_form and not form.realm_subdomain.errors %}hide{% endif %}">
<div class="input-box">
<div class="inline-block" id="realm-creation-import-from-wrapper">
<select id="import_from" name="import_from"
{% if user_registration_form %}
disabled
{% endif %}
>
{% for key, choice in import_from_choices %}
<option value="{{ key }}" {% if key == "none" %}selected{% endif %}>{{ _(choice) }}</option>
{% endfor %}
</select>
{% if not user_registration_form %}
<p class="extra-info-realm-creation-import-from registration-form-hint">
{% trans %}
Learn how to import from
<a href="/help/import-from-mattermost">Mattermost</a> or
<a href="/help/import-from-rocketchat">Rocket.Chat</a>.
{% endtrans %}
</p>
{% endif %}
</div>
<label for="import_from" class="inline-block">
{{ _('Import chat history?') }}
</label>
</div>
</div>

View File

@@ -0,0 +1,20 @@
<div class="realm-creation-editable-inputs {% if user_registration_form and not form.realm_subdomain.errors %}hide{% endif %}">
<div class="input-box">
<div class="inline-block relative">
<input id="id_team_name" class="required" type="text"
value="{% if form.realm_name.value() %}{{ form.realm_name.value() }}{% endif %}"
name="realm_name" maxlength="{{ MAX_REALM_NAME_LENGTH }}" required {% if not user_registration_form %}autofocus{% endif %} />
</div>
<label for="id_team_name" class="inline-block label-title">
{{ _('Organization name') }}
<a href="/help/create-your-organization-profile" target="_blank" rel="noopener noreferrer">
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
</a>
</label>
{% if form.realm_name.errors %}
{% for error in form.realm_name.errors %}
<p class="help-inline text-error">{{ error }}</p>
{% endfor %}
{% endif %}
</div>
</div>

View File

@@ -0,0 +1,35 @@
<div class="realm-creation-editable-inputs {% if user_registration_form and not form.realm_subdomain.errors %}hide{% endif %}">
<div class="input-box">
<label class="static org-url">
{{ _('Organization URL') }}
</label>
{% if root_domain_available %}
<label class="checkbox static" for="realm_in_root_domain">
<input type="checkbox" name="realm_in_root_domain" id="realm_in_root_domain"
{% if not form.realm_subdomain.value() and not form.realm_subdomain.errors %}checked="checked"{% endif %}/>
<span class="rendered-checkbox"></span>
{% trans %}Use {{ external_host }}{% endtrans %}
</label>
{% endif %}
<div id="subdomain_section" {% if root_domain_available and
not form.realm_subdomain.errors and not form.realm_subdomain.value() %}style="display: none;"{% endif %}>
<div class="or"><span>{{ _('OR') }}</span></div>
<div class="inline-block relative">
<input id="id_team_subdomain"
class="{% if root_domain_landing_page %}required{% endif %} subdomain" type="text"
placeholder="acme"
value="{% if form.realm_subdomain.value() %}{{ form.realm_subdomain.value() }}{% endif %}"
name="realm_subdomain" maxlength="{{ MAX_REALM_SUBDOMAIN_LENGTH }}"
{% if root_domain_landing_page %}required{% endif %} />
<label for="id_team_subdomain" class="realm_subdomain_label">.{{ external_host }}</label>
<p id="id_team_subdomain_error_client" class="error help-inline text-error"></p>
</div>
{% if form.realm_subdomain.errors %}
{% for error in form.realm_subdomain.errors %}
<p class="error help-inline text-error team_subdomain_error_server">{{ error }}</p>
{% endfor %}
{% endif %}
</div>
</div>
</div>