gear menu: Add organization info.

Fixes #22205
This commit is contained in:
Ganesh Pawar 2022-07-31 22:35:40 +05:30 committed by Tim Abbott
parent 966e63cc14
commit 4df8c6610f
6 changed files with 208 additions and 0 deletions

View File

@ -0,0 +1,67 @@
"use strict";
const {strict: assert} = require("assert");
const {zrequire} = require("../zjsunit/namespace");
const {run_test} = require("../zjsunit/test");
const {page_params} = require("../zjsunit/zpage_params");
const gear_menu = zrequire("gear_menu");
run_test("version_display_string", () => {
let expected_version_display_string;
// An official release
page_params.zulip_version = "5.6";
page_params.zulip_merge_base = "5.6";
expected_version_display_string = "translated: Zulip Server 5.6";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// An official beta
page_params.zulip_version = "6.0-beta1";
page_params.zulip_merge_base = "6.0-beta1";
expected_version_display_string = "translated: Zulip Server 6.0-beta1";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// An official release candidate
page_params.zulip_version = "6.0-rc1";
page_params.zulip_merge_base = "6.0-rc1";
expected_version_display_string = "translated: Zulip Server 6.0-rc1";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// The Zulip development environment
page_params.zulip_version = "6.0-dev+git";
page_params.zulip_merge_base = "6.0-dev+git";
expected_version_display_string = "translated: Zulip Server dev environment";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// A commit on Zulip's main branch.
page_params.zulip_version = "6.0-dev-1976-g4bb381fc80";
page_params.zulip_merge_base = "6.0-dev-1976-g4bb381fc80";
expected_version_display_string = "translated: Zulip Server 6.0-dev";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// A fork with 18 commits beyond Zulip's main branch.
page_params.zulip_version = "6.0-dev-1994-g93730766b0";
page_params.zulip_merge_base = "6.0-dev-1976-g4bb381fc80";
expected_version_display_string = "translated: Zulip Server 6.0-dev (modified)";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// A commit from the Zulip 5.x branch
page_params.zulip_version = "5.6+git-4-g385a408be5";
page_params.zulip_merge_base = "5.6+git-4-g385a408be5";
expected_version_display_string = "translated: Zulip Server 5.6 (patched)";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// A fork with 3 commits beyond the Zulip 5.x branch.
page_params.zulip_version = "5.6+git-4-g385a408be5";
page_params.zulip_merge_base = "5.6+git-7-abcda4235c2";
expected_version_display_string = "translated: Zulip Server 5.6 (modified)";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
// A fork of a Zulip release commit, not on 5.x branch.
page_params.zulip_version = "5.3-1-g7ed896c0db";
page_params.zulip_merge_base = "5.3";
expected_version_display_string = "translated: Zulip Server 5.3 (modified)";
assert.equal(gear_menu.version_display_string(), expected_version_display_string);
});

View File

@ -98,8 +98,52 @@ export function update_org_settings_menu_item() {
} }
} }
export function version_display_string() {
const version = page_params.zulip_version;
const is_fork = page_params.zulip_merge_base && page_params.zulip_merge_base !== version;
if (page_params.zulip_version.endsWith("-dev+git")) {
// The development environment uses this version string format.
return $t({defaultMessage: "Zulip Server dev environment"});
}
if (is_fork) {
// For forks, we want to describe the Zulip version this was
// forked from, and that it was modified.
const display_version = page_params.zulip_merge_base
.replace(/\+git.*/, "")
.replace(/-dev.*/, "-dev");
return $t({defaultMessage: "Zulip Server {display_version} (modified)"}, {display_version});
}
// The below cases are all for official versions; either a
// release, or Git commit from one of Zulip's official branches.
if (version.includes("+git")) {
// A version from a Zulip official maintenance branch such as 5.x.
const display_version = version.replace(/\+git.*/, "");
return $t({defaultMessage: "Zulip Server {display_version} (patched)"}, {display_version});
}
const display_version = version.replace(/\+git.*/, "").replace(/-dev.*/, "-dev");
return $t({defaultMessage: "Zulip Server {display_version}"}, {display_version});
}
export function initialize() { export function initialize() {
const rendered_gear_menu = render_gear_menu({ const rendered_gear_menu = render_gear_menu({
realm_name: page_params.realm_name,
realm_uri: new URL(page_params.realm_uri).hostname,
is_owner: page_params.is_owner,
is_admin: page_params.is_admin,
is_self_hosted: page_params.realm_plan_type === 1,
is_plan_limited: page_params.realm_plan_type === 2,
is_plan_standard: page_params.realm_plan_type === 3,
is_plan_standard_sponsored_for_free: page_params.realm_plan_type === 4,
is_business_org: page_params.realm_org_type === 10,
is_education_org: page_params.realm_org_type === 30 || page_params.realm_org_type === 35,
standard_plan_name: "Zulip Cloud Standard",
server_needs_upgrade: page_params.server_needs_upgrade,
version_display_string: version_display_string(),
apps_page_url: page_params.apps_page_url, apps_page_url: page_params.apps_page_url,
can_invite_others_to_realm: settings_data.user_can_invite_others_to_realm(), can_invite_others_to_realm: settings_data.user_can_invite_others_to_realm(),
corporate_enabled: page_params.corporate_enabled, corporate_enabled: page_params.corporate_enabled,

View File

@ -504,6 +504,10 @@ body.dark-theme {
.light-theme { .light-theme {
display: block; display: block;
} }
.dropdown-menu a:hover {
color: hsl(0, 0%, 100%);
}
} }
.nav .dropdown-menu::after, .nav .dropdown-menu::after,

View File

@ -361,6 +361,59 @@ p.n-margin {
} }
} }
#gear-menu .dropdown-menu {
.org-name,
.org-url {
padding: 0 20px;
}
.org-info {
text-align: center;
a {
white-space: normal;
}
}
.org-name {
font-size: large;
font-weight: bold;
}
.org-url {
line-height: 100%;
color: hsl(0, 0%, 52%);
}
.org-version {
padding-top: 3px;
white-space: normal;
}
.org-upgrade {
color: hsl(226, 82%, 60%);
a {
padding: 0;
}
}
.org-plan,
.org-upgrade {
a {
line-height: 16px;
}
}
.plan-separator {
line-height: 8px;
}
.small-font-size {
font-size: 12px;
}
}
.app { .app {
width: 100%; width: 100%;
height: 100%; height: 100%;

View File

@ -8,6 +8,45 @@
view is a Bootstrap nav tab, even though we don't show the tab view is a Bootstrap nav tab, even though we don't show the tab
anymore --}} anymore --}}
<li class="invisible" style="display:none;" role="presentation"><a href="#message_feed_container" data-toggle="tab"></a></li> <li class="invisible" style="display:none;" role="presentation"><a href="#message_feed_container" data-toggle="tab"></a></li>
<li class="org-info org-name">{{realm_name}}</li>
<li class="org-info org-url">{{realm_uri}}</li>
{{#if is_self_hosted }}
<li class="org-info org-version">
<a href="#about-zulip" role="menuitem">{{version_display_string}}</a>
</li>
{{#if server_needs_upgrade }}
<li class="org-info org-upgrade small-font-size">
<a href="https://zulip.readthedocs.io/en/stable/production/upgrade-or-modify.html" target="_blank" rel="noopener noreferrer" role="menuitem">{{t 'Upgrade to the latest release' }}</a>
</li>
{{/if}}
{{else}}
<li class="org-info org-plan hidden-for-spectators small-font-size">
{{#if is_plan_limited }}
<a href="/plans" target="_blank" rel="noopener noreferrer" role="menuitem">Zulip Cloud Free</a>
{{else if is_plan_standard}}
<a href="/plans" target="_blank" rel="noopener noreferrer" role="menuitem">Zulip Cloud Standard</a>
{{else if is_plan_standard_sponsored_for_free}}
<a href="/plans" target="_blank" rel="noopener noreferrer" role="menuitem">Zulip Cloud Standard, sponsored for free</a>
{{/if}}
</li>
{{/if}}
{{#if (and is_plan_limited is_owner) }}
<li class="org-info org-upgrade small-font-size">
<a href="/upgrade" target="_blank" rel="noopener noreferrer" role="menuitem">{{#tr}}Upgrade to {standard_plan_name}{{/tr}}</a>
</li>
{{/if}}
{{#if is_plan_limited }}
{{#if is_education_org }}
<li class="org-info org-upgrade small-font-size">
<a href="/upgrade" target="_blank" rel="noopener noreferrer" role="menuitem">{{t 'Request education pricing' }}</a>
</li>
{{else if (not is_business_org) }}
<li class="org-info org-upgrade small-font-size">
<a href="/upgrade" target="_blank" rel="noopener noreferrer" role="menuitem">{{t 'Request sponsorship' }}</a>
</li>
{{/if}}
{{/if}}
<li class="divider" role="presentation"></li>
<li class="hidden-for-spectators" role="presentation"> <li class="hidden-for-spectators" role="presentation">
<a href="#streams/subscribed" role="menuitem"> <a href="#streams/subscribed" role="menuitem">
<i class="fa fa-exchange" aria-hidden="true"></i> {{t 'Manage streams' }} <i class="fa fa-exchange" aria-hidden="true"></i> {{t 'Manage streams' }}

View File

@ -42,6 +42,7 @@ IGNORED_PHRASES = [
r"Zephyr", r"Zephyr",
r"Zoom", r"Zoom",
r"Zulip", r"Zulip",
r"Zulip Server",
r"Zulip Account Security", r"Zulip Account Security",
r"Zulip Security", r"Zulip Security",
r"Zulip Cloud Standard", r"Zulip Cloud Standard",