mirror of
https://github.com/zulip/zulip.git
synced 2025-11-09 08:26:11 +00:00
setting: Divide user_invite_restriction into a checkbox and dropdown.
This commit divides the user_invite_restriction setting dropdown to a checkbox and a dropdown. The checkbox is used for 'realm_invite_required' setting and dropdown for 'realm_invite_to_realm_policy'. This separation of UI elements is fine as these two settings are separate in database also and also helps in removing excess if-else conditions and switch cases.
This commit is contained in:
@@ -181,6 +181,7 @@ function test_submit_settings_form(override, submit_form) {
|
||||
realm_default_twenty_four_hour_time: false,
|
||||
realm_invite_to_stream_policy: settings_config.common_policy_values.by_admins_only.code,
|
||||
realm_create_stream_policy: settings_config.common_policy_values.by_members.code,
|
||||
realm_invite_to_realm_policy: settings_config.common_policy_values.by_members.code,
|
||||
});
|
||||
|
||||
override(global, "setTimeout", (func) => func());
|
||||
@@ -231,6 +232,11 @@ function test_submit_settings_form(override, submit_form) {
|
||||
email_address_visibility_elem.attr("id", "id_realm_email_address_visibility");
|
||||
email_address_visibility_elem.data = () => "number";
|
||||
|
||||
const invite_to_realm_policy_elem = $("#id_realm_invite_to_realm_policy");
|
||||
invite_to_realm_policy_elem.val("2");
|
||||
invite_to_realm_policy_elem.attr("id", "id_realm_invite_to_realm_policy");
|
||||
invite_to_realm_policy_elem.data = () => "number";
|
||||
|
||||
let subsection_elem = $(`#org-${CSS.escape(subsection)}`);
|
||||
subsection_elem.closest = () => subsection_elem;
|
||||
subsection_elem.set_find_results(".prop-element", [
|
||||
@@ -470,6 +476,7 @@ function test_sync_realm_settings() {
|
||||
|
||||
test_common_policy("create_stream_policy");
|
||||
test_common_policy("invite_to_stream_policy");
|
||||
test_common_policy("invite_to_realm_policy");
|
||||
|
||||
{
|
||||
/* Test message content edit limit minutes sync */
|
||||
|
||||
@@ -43,6 +43,9 @@ const admin_settings_label = {
|
||||
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",
|
||||
}),
|
||||
};
|
||||
|
||||
function insert_tip_box() {
|
||||
@@ -122,6 +125,7 @@ export function build_page() {
|
||||
bot_creation_policy_values: settings_bots.bot_creation_policy_values,
|
||||
email_address_visibility_values: settings_config.email_address_visibility_values,
|
||||
can_invite_others_to_realm: settings_data.user_can_invite_others_to_realm(),
|
||||
realm_invite_required: page_params.realm_invite_required,
|
||||
...settings_org.get_organization_settings_options(),
|
||||
};
|
||||
|
||||
|
||||
@@ -180,49 +180,6 @@ function get_property_value(property_name) {
|
||||
return "no_restriction";
|
||||
}
|
||||
|
||||
if (property_name === "realm_user_invite_restriction") {
|
||||
if (!page_params.realm_invite_required) {
|
||||
if (
|
||||
page_params.realm_invite_to_realm_policy ===
|
||||
settings_config.common_policy_values.by_admins_only.code
|
||||
) {
|
||||
return "no_invite_required_by_admins_only";
|
||||
}
|
||||
if (
|
||||
page_params.realm_invite_to_realm_policy ===
|
||||
settings_config.common_policy_values.by_moderators_only.code
|
||||
) {
|
||||
return "no_invite_required_by_moderators_only";
|
||||
}
|
||||
if (
|
||||
page_params.realm_invite_to_realm_policy ===
|
||||
settings_config.common_policy_values.by_full_members.code
|
||||
) {
|
||||
return "no_invite_required_by_full_members";
|
||||
}
|
||||
return "no_invite_required";
|
||||
}
|
||||
if (
|
||||
page_params.realm_invite_to_realm_policy ===
|
||||
settings_config.common_policy_values.by_admins_only.code
|
||||
) {
|
||||
return "by_admins_only";
|
||||
}
|
||||
if (
|
||||
page_params.realm_invite_to_realm_policy ===
|
||||
settings_config.common_policy_values.by_moderators_only.code
|
||||
) {
|
||||
return "by_moderators_only";
|
||||
}
|
||||
if (
|
||||
page_params.realm_invite_to_realm_policy ===
|
||||
settings_config.common_policy_values.by_full_members.code
|
||||
) {
|
||||
return "by_full_members";
|
||||
}
|
||||
return "by_anyone";
|
||||
}
|
||||
|
||||
if (property_name === "realm_default_twenty_four_hour_time") {
|
||||
return JSON.stringify(page_params[property_name]);
|
||||
}
|
||||
@@ -245,7 +202,7 @@ const simple_dropdown_properties = [
|
||||
"realm_user_group_edit_policy",
|
||||
"realm_private_message_policy",
|
||||
"realm_add_emoji_by_admins_only",
|
||||
"realm_user_invite_restriction",
|
||||
"realm_invite_to_realm_policy",
|
||||
"realm_wildcard_mention_policy",
|
||||
"realm_move_messages_between_streams_policy",
|
||||
];
|
||||
@@ -502,10 +459,6 @@ export function sync_realm_settings(property) {
|
||||
case "allow_message_deleting":
|
||||
property = "msg_delete_limit_setting";
|
||||
break;
|
||||
case "invite_required":
|
||||
case "invite_to_realm_policy":
|
||||
property = "user_invite_restriction";
|
||||
break;
|
||||
}
|
||||
const element = $(`#id_realm_${CSS.escape(property)}`);
|
||||
if (element.length) {
|
||||
@@ -896,49 +849,6 @@ export function build_page() {
|
||||
break;
|
||||
}
|
||||
|
||||
const user_invite_restriction = $("#id_realm_user_invite_restriction").val();
|
||||
switch (user_invite_restriction) {
|
||||
case "no_invite_required":
|
||||
data.invite_required = false;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_members.code;
|
||||
break;
|
||||
case "no_invite_required_by_admins_only":
|
||||
data.invite_required = false;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_admins_only.code;
|
||||
break;
|
||||
case "no_invite_required_by_moderators_only":
|
||||
data.invite_required = false;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_moderators_only.code;
|
||||
break;
|
||||
case "no_invite_required_by_full_members":
|
||||
data.invite_required = false;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_full_members.code;
|
||||
break;
|
||||
case "by_admins_only":
|
||||
data.invite_required = true;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_admins_only.code;
|
||||
break;
|
||||
case "by_moderators_only":
|
||||
data.invite_required = true;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_moderators_only.code;
|
||||
break;
|
||||
case "by_full_members":
|
||||
data.invite_required = true;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_full_members.code;
|
||||
break;
|
||||
default:
|
||||
data.invite_required = true;
|
||||
data.invite_to_realm_policy =
|
||||
settings_config.common_policy_values.by_members.code;
|
||||
}
|
||||
|
||||
const waiting_period_threshold = $("#id_realm_waiting_period_setting").val();
|
||||
switch (waiting_period_threshold) {
|
||||
case "none":
|
||||
|
||||
@@ -1589,14 +1589,14 @@ body:not(.night-mode) #settings_page .custom_user_field .datepicker {
|
||||
#id_realm_user_group_edit_policy,
|
||||
#id_realm_email_address_visibility,
|
||||
#id_realm_wildcard_mention_policy,
|
||||
#id_realm_move_messages_between_streams_policy {
|
||||
#id_realm_move_messages_between_streams_policy,
|
||||
#id_realm_invite_to_realm_policy {
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
#id_realm_bot_creation_policy,
|
||||
#id_realm_giphy_rating,
|
||||
#id_realm_org_join_restrictions,
|
||||
#id_realm_user_invite_restriction {
|
||||
#id_realm_org_join_restrictions {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,17 +8,15 @@
|
||||
</div>
|
||||
<div class="m-10 inline-block organization-permissions-parent">
|
||||
<div class="input-group">
|
||||
<label for="realm_user_invite_restriction" class="dropdown-title">{{t "Are invitations required for joining the organization?" }}</label>
|
||||
<select name="realm_user_invite_restriction" id="id_realm_user_invite_restriction" class="prop-element">
|
||||
<option value="no_invite_required">{{t "No. Members and admins can send invitations." }}</option>
|
||||
<option value="no_invite_required_by_full_members">{{t "No. Only full members and admins can send invitations." }}</option>
|
||||
<option value="no_invite_required_by_moderators_only">{{t "No. Only moderators and admins can send invitations." }}</option>
|
||||
<option value="no_invite_required_by_admins_only">{{t "No. Only admins can send invitations." }}</option>
|
||||
<option value="by_anyone">{{t "Yes. Members and admins can send invitations." }}</option>
|
||||
<option value="by_full_members">{{t "Yes. Only full members and admins can send invitations."}}</option>
|
||||
<option value="by_moderators_only">{{t "Yes. Only moderators and admins can send invitations." }}</option>
|
||||
<option value="by_admins_only">{{t "Yes. Only admins can send invitations." }}</option>
|
||||
<label for="realm_invite_to_realm_policy" class="dropdown-title">{{t "Who can invite users to this organization" }}</label>
|
||||
<select name="realm_invite_to_realm_policy" id="id_realm_invite_to_realm_policy" class="prop-element" data-setting-widget-type="number">
|
||||
{{> dropdown_options_widget option_values=common_policy_values}}
|
||||
</select>
|
||||
{{> settings_checkbox
|
||||
setting_name="realm_invite_required"
|
||||
prefix="id_"
|
||||
is_checked=realm_invite_required
|
||||
label=admin_settings_label.realm_invite_required}}
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
|
||||
Reference in New Issue
Block a user