mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	For few settings like `waiting_period_threshold` it makes sense to have the "value" attribute of option to have a value other than the actual setting value because multiple settings are depending upon this dropdown, so handling them in JS code makes more sense. But for many settings (which has integer values), we have followed a wrong trend over the time of representing every new dropdown with human-readable values and manually handling them in JS Code, where it makes more sense to use actual setting value. The result of which is code has become less concise, sensible and less likely to be mistaken.
		
			
				
	
	
		
			124 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const render_admin_tab = require('../templates/admin_tab.hbs');
 | 
						|
 | 
						|
const admin_settings_label = {
 | 
						|
    // Organization settings
 | 
						|
    realm_allow_community_topic_editing: i18n.t("Users can edit the topic of any message"),
 | 
						|
    realm_allow_edit_history: i18n.t("Enable message edit history"),
 | 
						|
    realm_mandatory_topics: i18n.t("Require topics in stream messages"),
 | 
						|
    realm_notifications_stream: i18n.t("New stream notifications:"),
 | 
						|
    realm_signup_notifications_stream: i18n.t("New user notifications:"),
 | 
						|
    realm_inline_image_preview: i18n.t("Show previews of uploaded and linked images"),
 | 
						|
    realm_inline_url_embed_preview: i18n.t("Show previews of linked websites"),
 | 
						|
    realm_default_twenty_four_hour_time: i18n.t("Time format"),
 | 
						|
    realm_send_welcome_emails: i18n.t("Send emails introducing Zulip to new users"),
 | 
						|
    realm_message_content_allowed_in_email_notifications:
 | 
						|
        i18n.t("Allow message content in missed message emails"),
 | 
						|
    realm_digest_emails_enabled: i18n.t("Send weekly digest emails to inactive users"),
 | 
						|
 | 
						|
    // Organization permissions
 | 
						|
    realm_name_changes_disabled: i18n.t("Prevent users from changing their name"),
 | 
						|
    realm_email_changes_disabled: i18n.t("Prevent users from changing their email address"),
 | 
						|
    realm_avatar_changes_disabled: i18n.t("Prevent users from changing their avatar"),
 | 
						|
};
 | 
						|
 | 
						|
exports.build_page = function () {
 | 
						|
    const options = {
 | 
						|
        custom_profile_field_types: page_params.custom_profile_field_types,
 | 
						|
        realm_name: page_params.realm_name,
 | 
						|
        realm_available_video_chat_providers: page_params.realm_available_video_chat_providers,
 | 
						|
        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_default_twenty_four_hour_time_values: settings_display.twenty_four_hour_time_values,
 | 
						|
        realm_authentication_methods: page_params.realm_authentication_methods,
 | 
						|
        realm_create_stream_policy: page_params.realm_create_stream_policy,
 | 
						|
        realm_invite_to_stream_policy: page_params.realm_invite_to_stream_policy,
 | 
						|
        realm_user_group_edit_policy: page_params.realm_user_group_edit_policy,
 | 
						|
        USER_GROUP_EDIT_POLICY_MEMBERS: 1,
 | 
						|
        realm_private_message_policy: page_params.realm_private_message_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_emoji_by_admins_only: page_params.realm_add_emoji_by_admins_only,
 | 
						|
        can_add_emojis: settings_emoji.can_add_emoji(),
 | 
						|
        realm_allow_community_topic_editing: page_params.realm_allow_community_topic_editing,
 | 
						|
        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,
 | 
						|
        language_list: page_params.language_list,
 | 
						|
        realm_default_language: 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,
 | 
						|
        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,
 | 
						|
        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,
 | 
						|
        show_email: settings_org.show_email(),
 | 
						|
        development: page_params.development_environment,
 | 
						|
        plan_includes_wide_organization_logo: page_params.plan_includes_wide_organization_logo,
 | 
						|
        upgrade_text_for_wide_organization_logo:
 | 
						|
            page_params.upgrade_text_for_wide_organization_logo,
 | 
						|
        realm_default_external_accounts: page_params.realm_default_external_accounts,
 | 
						|
    };
 | 
						|
 | 
						|
    options.admin_settings_label = admin_settings_label;
 | 
						|
    options.msg_edit_limit_dropdown_values = settings_org.msg_edit_limit_dropdown_values;
 | 
						|
    options.msg_delete_limit_dropdown_values = settings_org.msg_delete_limit_dropdown_values;
 | 
						|
    options.bot_creation_policy_values = settings_bots.bot_creation_policy_values;
 | 
						|
    options.email_address_visibility_values = settings_org.email_address_visibility_values;
 | 
						|
    _.extend(options, settings_org.get_organization_settings_options());
 | 
						|
 | 
						|
    if (options.realm_logo_source !== 'D' && options.realm_night_logo_source === 'D') {
 | 
						|
        // If no night mode logo is specified but a day mode one is,
 | 
						|
        // use the day mode one.  See also similar code in realm_logo.js.
 | 
						|
        options.realm_night_logo_url = options.realm_logo_url;
 | 
						|
    }
 | 
						|
 | 
						|
    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();
 | 
						|
    $("#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_default_language").val(page_params.realm_default_language);
 | 
						|
    $("#id_realm_digest_weekday").val(options.realm_digest_weekday);
 | 
						|
 | 
						|
    // default_twenty_four_hour time is a boolean in the API but a
 | 
						|
    // dropdown, so we need to convert the value to a string for
 | 
						|
    // storage in the browser's DOM.
 | 
						|
    $("#id_realm_default_twenty_four_hour_time").val(JSON.stringify(
 | 
						|
        page_params.realm_default_twenty_four_hour_time));
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
exports.launch = function (section) {
 | 
						|
    settings.build_page();
 | 
						|
    exports.build_page();
 | 
						|
    settings_sections.reset_sections();
 | 
						|
 | 
						|
    overlays.open_settings();
 | 
						|
    settings_panel_menu.org_settings.activate_section(section);
 | 
						|
    settings_toggle.highlight_toggle('organization');
 | 
						|
};
 | 
						|
 | 
						|
window.admin = exports;
 |