mirror of
https://github.com/zulip/zulip.git
synced 2025-11-10 08:56:10 +00:00
This commit basically updates the frontend code to directly use delivery_email field instead of functions like show_email or email_for_user_settings at places where we want to show email. We can do this change since we recently updated the server code to always pass "delivery_email" code in the user objects with its value being null if the real email is not accessible. Showing email or "hidden" or nothing at various places in UI like in users list, subscriber list, user profile popover and modal is same as before. Major points - - Removed show_email and email_for_user_settings functions since we directly use delivery_email field now as explained above. - While sorting by emails in the users list, users with real emails hidden are always shown in last when sorting alphabetically and at the top when sorting reverse alphabetically. Also, those users with real emails hidden, are sorted by name among themselves. As we did before, we do not allow sorting by email when all emails are hidden. - There is no change in typeahead behavior at this point. We either hide the email completely or show the real or fake email based on user level setting. - Added code to handle delivery_email events and appropriately add/remove delivery_email field from person objects.
240 lines
13 KiB
JavaScript
240 lines
13 KiB
JavaScript
import $ from "jquery";
|
|
|
|
import render_admin_tab from "../templates/settings/admin_tab.hbs";
|
|
import render_settings_organization_settings_tip from "../templates/settings/organization_settings_tip.hbs";
|
|
|
|
import {$t, get_language_name, language_list} from "./i18n";
|
|
import * as overlays from "./overlays";
|
|
import {page_params} from "./page_params";
|
|
import {realm_user_settings_defaults} from "./realm_user_settings_defaults";
|
|
import * as settings from "./settings";
|
|
import * as settings_bots from "./settings_bots";
|
|
import * as settings_config from "./settings_config";
|
|
import * as settings_data from "./settings_data";
|
|
import * as settings_invites from "./settings_invites";
|
|
import * as settings_org from "./settings_org";
|
|
import * as settings_panel_menu from "./settings_panel_menu";
|
|
import * as settings_sections from "./settings_sections";
|
|
import * as settings_toggle from "./settings_toggle";
|
|
import * as settings_users from "./settings_users";
|
|
|
|
const admin_settings_label = {
|
|
// Organization profile
|
|
realm_want_advertise_in_communities_directory: $t({
|
|
defaultMessage: "Advertise organization in the Zulip communities directory",
|
|
}),
|
|
// Organization settings
|
|
realm_allow_edit_history: $t({defaultMessage: "Enable message edit history"}),
|
|
realm_mandatory_topics: $t({defaultMessage: "Require topics in stream messages"}),
|
|
realm_notifications_stream: $t({defaultMessage: "New stream announcements"}),
|
|
realm_signup_notifications_stream: $t({defaultMessage: "New user announcements"}),
|
|
realm_inline_image_preview: $t({defaultMessage: "Show previews of uploaded and linked images"}),
|
|
realm_inline_url_embed_preview: $t({defaultMessage: "Show previews of linked websites"}),
|
|
realm_send_welcome_emails: $t({defaultMessage: "Send emails introducing Zulip to new users"}),
|
|
realm_message_content_allowed_in_email_notifications: $t({
|
|
defaultMessage: "Allow message content in message notification emails",
|
|
}),
|
|
realm_enable_spectator_access: $t({
|
|
defaultMessage: "Allow creating web-public streams (visible to anyone on the Internet)",
|
|
}),
|
|
realm_digest_emails_enabled: $t({
|
|
defaultMessage: "Send weekly digest emails to inactive users",
|
|
}),
|
|
realm_default_code_block_language: $t({defaultMessage: "Default language for code blocks"}),
|
|
|
|
// Organization permissions
|
|
realm_name_changes_disabled: $t({defaultMessage: "Prevent users from changing their name"}),
|
|
realm_email_changes_disabled: $t({
|
|
defaultMessage: "Prevent users from changing their email address",
|
|
}),
|
|
realm_avatar_changes_disabled: $t({defaultMessage: "Prevent users from changing their avatar"}),
|
|
realm_invite_required: $t({
|
|
defaultMessage: "Invitations are required for joining this organization",
|
|
}),
|
|
realm_default_language: $t({
|
|
defaultMessage: "Language for automated messages and invitation emails",
|
|
}),
|
|
realm_allow_message_editing: $t({defaultMessage: "Allow message editing"}),
|
|
realm_enable_read_receipts: $t({defaultMessage: "Enable read receipts"}),
|
|
realm_enable_read_receipts_parens_text: $t({
|
|
defaultMessage: "Users can always disable their personal read receipts.",
|
|
}),
|
|
};
|
|
|
|
function insert_tip_box() {
|
|
if (page_params.is_admin) {
|
|
return;
|
|
}
|
|
const tip_box = render_settings_organization_settings_tip({is_admin: page_params.is_admin});
|
|
$(".organization-box")
|
|
.find(".settings-section")
|
|
.not("#emoji-settings")
|
|
.not("#user-groups-admin")
|
|
.not("#organization-auth-settings")
|
|
.not("#admin-bot-list")
|
|
.not("#admin-invites-list")
|
|
.prepend(tip_box);
|
|
}
|
|
|
|
function get_realm_level_notification_settings(options) {
|
|
const all_notifications_settings = settings_config.all_notifications(
|
|
realm_user_settings_defaults,
|
|
);
|
|
|
|
// We remove enable_marketing_emails and enable_login_emails
|
|
// setting from all_notification_settings, since there are no
|
|
// realm-level defaults for these setting.
|
|
all_notifications_settings.settings.other_email_settings = ["enable_digest_emails"];
|
|
|
|
options.general_settings = all_notifications_settings.general_settings;
|
|
options.notification_settings = all_notifications_settings.settings;
|
|
options.show_push_notifications_tooltip =
|
|
all_notifications_settings.show_push_notifications_tooltip;
|
|
}
|
|
|
|
export function build_page() {
|
|
const options = {
|
|
custom_profile_field_types: page_params.custom_profile_field_types,
|
|
full_name: page_params.full_name,
|
|
realm_name: page_params.realm_name,
|
|
realm_org_type: page_params.realm_org_type,
|
|
realm_available_video_chat_providers: page_params.realm_available_video_chat_providers,
|
|
giphy_rating_options: page_params.giphy_rating_options,
|
|
giphy_api_key_empty: page_params.giphy_api_key === "",
|
|
realm_description: page_params.realm_description,
|
|
realm_inline_image_preview: page_params.realm_inline_image_preview,
|
|
server_inline_image_preview: page_params.server_inline_image_preview,
|
|
realm_inline_url_embed_preview: page_params.realm_inline_url_embed_preview,
|
|
server_inline_url_embed_preview: page_params.server_inline_url_embed_preview,
|
|
realm_authentication_methods: page_params.realm_authentication_methods,
|
|
realm_user_group_edit_policy: page_params.realm_user_group_edit_policy,
|
|
realm_name_changes_disabled: page_params.realm_name_changes_disabled,
|
|
realm_email_changes_disabled: page_params.realm_email_changes_disabled,
|
|
realm_avatar_changes_disabled: page_params.realm_avatar_changes_disabled,
|
|
realm_add_custom_emoji_policy: page_params.realm_add_custom_emoji_policy,
|
|
can_add_emojis: settings_data.user_can_add_custom_emoji(),
|
|
can_create_new_bots: settings_bots.can_create_new_bots(),
|
|
realm_message_content_edit_limit_minutes: settings_org.get_realm_time_limits_in_minutes(
|
|
"realm_message_content_edit_limit_seconds",
|
|
),
|
|
realm_message_content_delete_limit_minutes: settings_org.get_realm_time_limits_in_minutes(
|
|
"realm_message_content_delete_limit_seconds",
|
|
),
|
|
realm_message_retention_days: page_params.realm_message_retention_days,
|
|
realm_allow_edit_history: page_params.realm_allow_edit_history,
|
|
realm_allow_message_editing: page_params.realm_allow_message_editing,
|
|
language_list,
|
|
realm_default_language_name: get_language_name(page_params.realm_default_language),
|
|
realm_default_language_code: page_params.realm_default_language,
|
|
realm_waiting_period_threshold: page_params.realm_waiting_period_threshold,
|
|
realm_notifications_stream_id: page_params.realm_notifications_stream_id,
|
|
realm_signup_notifications_stream_id: page_params.realm_signup_notifications_stream_id,
|
|
is_admin: page_params.is_admin,
|
|
is_guest: page_params.is_guest,
|
|
is_owner: page_params.is_owner,
|
|
user_can_change_logo: settings_data.user_can_change_logo(),
|
|
realm_icon_source: page_params.realm_icon_source,
|
|
realm_icon_url: page_params.realm_icon_url,
|
|
realm_logo_source: page_params.realm_logo_source,
|
|
realm_logo_url: page_params.realm_logo_url,
|
|
realm_night_logo_source: page_params.realm_night_logo_source,
|
|
realm_night_logo_url: page_params.realm_night_logo_url,
|
|
realm_mandatory_topics: page_params.realm_mandatory_topics,
|
|
realm_send_welcome_emails: page_params.realm_send_welcome_emails,
|
|
realm_message_content_allowed_in_email_notifications:
|
|
page_params.realm_message_content_allowed_in_email_notifications,
|
|
realm_enable_spectator_access: page_params.realm_enable_spectator_access,
|
|
settings_send_digest_emails: page_params.settings_send_digest_emails,
|
|
realm_digest_emails_enabled: page_params.realm_digest_emails_enabled,
|
|
realm_digest_weekday: page_params.realm_digest_weekday,
|
|
development: page_params.development_environment,
|
|
zulip_plan_is_not_limited: page_params.zulip_plan_is_not_limited,
|
|
upgrade_text_for_wide_organization_logo:
|
|
page_params.upgrade_text_for_wide_organization_logo,
|
|
realm_default_external_accounts: page_params.realm_default_external_accounts,
|
|
admin_settings_label,
|
|
msg_edit_limit_dropdown_values: settings_config.msg_edit_limit_dropdown_values,
|
|
msg_delete_limit_dropdown_values: settings_config.msg_delete_limit_dropdown_values,
|
|
msg_move_limit_dropdown_values: settings_config.msg_move_limit_dropdown_values,
|
|
bot_creation_policy_values: settings_bots.bot_creation_policy_values,
|
|
email_address_visibility_values: settings_config.email_address_visibility_values,
|
|
waiting_period_threshold_dropdown_values:
|
|
settings_config.waiting_period_threshold_dropdown_values,
|
|
can_invite_others_to_realm: settings_data.user_can_invite_others_to_realm(),
|
|
realm_invite_required: page_params.realm_invite_required,
|
|
can_edit_user_groups: settings_data.user_can_edit_user_groups(),
|
|
policy_values: settings_config.common_policy_values,
|
|
realm_delete_own_message_policy: page_params.realm_delete_own_message_policy,
|
|
DELETE_OWN_MESSAGE_POLICY_ADMINS_ONLY:
|
|
settings_config.common_message_policy_values.by_admins_only.code,
|
|
...settings_org.get_organization_settings_options(),
|
|
demote_inactive_streams_values: settings_config.demote_inactive_streams_values,
|
|
user_list_style_values: settings_config.user_list_style_values,
|
|
color_scheme_values: settings_config.color_scheme_values,
|
|
default_view_values: settings_config.default_view_values,
|
|
settings_object: realm_user_settings_defaults,
|
|
display_settings: settings_config.get_all_display_settings(),
|
|
settings_label: settings_config.realm_user_settings_defaults_labels,
|
|
desktop_icon_count_display_values: settings_config.desktop_icon_count_display_values,
|
|
enable_sound_select:
|
|
realm_user_settings_defaults.enable_sounds ||
|
|
realm_user_settings_defaults.enable_stream_audible_notifications,
|
|
email_notifications_batching_period_values:
|
|
settings_config.email_notifications_batching_period_values,
|
|
twenty_four_hour_time_values: settings_config.twenty_four_hour_time_values,
|
|
create_web_public_stream_policy_values:
|
|
settings_config.create_web_public_stream_policy_values,
|
|
disable_enable_spectator_access_setting:
|
|
!page_params.server_web_public_streams_enabled ||
|
|
!page_params.zulip_plan_is_not_limited,
|
|
realm_push_notifications_enabled: page_params.realm_push_notifications_enabled,
|
|
realm_org_type_values: settings_org.get_org_type_dropdown_options(),
|
|
realm_want_advertise_in_communities_directory:
|
|
page_params.realm_want_advertise_in_communities_directory,
|
|
disable_want_advertise_in_communities_directory:
|
|
!page_params.realm_push_notifications_enabled,
|
|
is_business_type_org:
|
|
page_params.realm_org_type === settings_config.all_org_type_values.business.code,
|
|
realm_enable_read_receipts: page_params.realm_enable_read_receipts,
|
|
allow_sorting_deactivated_users_list_by_email:
|
|
settings_users.allow_sorting_deactivated_users_list_by_email(),
|
|
};
|
|
|
|
if (options.realm_logo_source !== "D" && options.realm_night_logo_source === "D") {
|
|
// If no dark theme logo is specified but a light theme one is,
|
|
// use the light theme one. See also similar code in realm_logo.js.
|
|
options.realm_night_logo_url = options.realm_logo_url;
|
|
}
|
|
|
|
options.giphy_help_link = "/help/animated-gifs-from-giphy";
|
|
if (options.giphy_api_key_empty) {
|
|
options.giphy_help_link =
|
|
"https://zulip.readthedocs.io/en/latest/production/giphy-gif-integration.html";
|
|
}
|
|
|
|
get_realm_level_notification_settings(options);
|
|
|
|
const rendered_admin_tab = render_admin_tab(options);
|
|
$("#settings_content .organization-box").html(rendered_admin_tab);
|
|
$("#settings_content .alert").removeClass("show");
|
|
|
|
settings_bots.update_bot_settings_tip();
|
|
settings_invites.update_invite_users_setting_tip();
|
|
insert_tip_box();
|
|
|
|
$("#id_realm_bot_creation_policy").val(page_params.realm_bot_creation_policy);
|
|
$("#id_realm_email_address_visibility").val(page_params.realm_email_address_visibility);
|
|
|
|
$("#id_realm_digest_weekday").val(options.realm_digest_weekday);
|
|
}
|
|
|
|
export function launch(section) {
|
|
settings.build_page();
|
|
build_page();
|
|
settings_sections.reset_sections();
|
|
|
|
overlays.open_settings();
|
|
settings_panel_menu.org_settings.activate_section_or_default(section);
|
|
settings_toggle.highlight_toggle("organization");
|
|
}
|