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_default_twenty_four_hour_time: false,
|
||||||
realm_invite_to_stream_policy: settings_config.common_policy_values.by_admins_only.code,
|
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_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());
|
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.attr("id", "id_realm_email_address_visibility");
|
||||||
email_address_visibility_elem.data = () => "number";
|
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)}`);
|
let subsection_elem = $(`#org-${CSS.escape(subsection)}`);
|
||||||
subsection_elem.closest = () => subsection_elem;
|
subsection_elem.closest = () => subsection_elem;
|
||||||
subsection_elem.set_find_results(".prop-element", [
|
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("create_stream_policy");
|
||||||
test_common_policy("invite_to_stream_policy");
|
test_common_policy("invite_to_stream_policy");
|
||||||
|
test_common_policy("invite_to_realm_policy");
|
||||||
|
|
||||||
{
|
{
|
||||||
/* Test message content edit limit minutes sync */
|
/* Test message content edit limit minutes sync */
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ const admin_settings_label = {
|
|||||||
defaultMessage: "Prevent users from changing their email address",
|
defaultMessage: "Prevent users from changing their email address",
|
||||||
}),
|
}),
|
||||||
realm_avatar_changes_disabled: $t({defaultMessage: "Prevent users from changing their avatar"}),
|
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() {
|
function insert_tip_box() {
|
||||||
@@ -122,6 +125,7 @@ export function build_page() {
|
|||||||
bot_creation_policy_values: settings_bots.bot_creation_policy_values,
|
bot_creation_policy_values: settings_bots.bot_creation_policy_values,
|
||||||
email_address_visibility_values: settings_config.email_address_visibility_values,
|
email_address_visibility_values: settings_config.email_address_visibility_values,
|
||||||
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(),
|
||||||
|
realm_invite_required: page_params.realm_invite_required,
|
||||||
...settings_org.get_organization_settings_options(),
|
...settings_org.get_organization_settings_options(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -180,49 +180,6 @@ function get_property_value(property_name) {
|
|||||||
return "no_restriction";
|
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") {
|
if (property_name === "realm_default_twenty_four_hour_time") {
|
||||||
return JSON.stringify(page_params[property_name]);
|
return JSON.stringify(page_params[property_name]);
|
||||||
}
|
}
|
||||||
@@ -245,7 +202,7 @@ const simple_dropdown_properties = [
|
|||||||
"realm_user_group_edit_policy",
|
"realm_user_group_edit_policy",
|
||||||
"realm_private_message_policy",
|
"realm_private_message_policy",
|
||||||
"realm_add_emoji_by_admins_only",
|
"realm_add_emoji_by_admins_only",
|
||||||
"realm_user_invite_restriction",
|
"realm_invite_to_realm_policy",
|
||||||
"realm_wildcard_mention_policy",
|
"realm_wildcard_mention_policy",
|
||||||
"realm_move_messages_between_streams_policy",
|
"realm_move_messages_between_streams_policy",
|
||||||
];
|
];
|
||||||
@@ -502,10 +459,6 @@ export function sync_realm_settings(property) {
|
|||||||
case "allow_message_deleting":
|
case "allow_message_deleting":
|
||||||
property = "msg_delete_limit_setting";
|
property = "msg_delete_limit_setting";
|
||||||
break;
|
break;
|
||||||
case "invite_required":
|
|
||||||
case "invite_to_realm_policy":
|
|
||||||
property = "user_invite_restriction";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
const element = $(`#id_realm_${CSS.escape(property)}`);
|
const element = $(`#id_realm_${CSS.escape(property)}`);
|
||||||
if (element.length) {
|
if (element.length) {
|
||||||
@@ -896,49 +849,6 @@ export function build_page() {
|
|||||||
break;
|
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();
|
const waiting_period_threshold = $("#id_realm_waiting_period_setting").val();
|
||||||
switch (waiting_period_threshold) {
|
switch (waiting_period_threshold) {
|
||||||
case "none":
|
case "none":
|
||||||
|
|||||||
@@ -1589,14 +1589,14 @@ body:not(.night-mode) #settings_page .custom_user_field .datepicker {
|
|||||||
#id_realm_user_group_edit_policy,
|
#id_realm_user_group_edit_policy,
|
||||||
#id_realm_email_address_visibility,
|
#id_realm_email_address_visibility,
|
||||||
#id_realm_wildcard_mention_policy,
|
#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;
|
width: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#id_realm_bot_creation_policy,
|
#id_realm_bot_creation_policy,
|
||||||
#id_realm_giphy_rating,
|
#id_realm_giphy_rating,
|
||||||
#id_realm_org_join_restrictions,
|
#id_realm_org_join_restrictions {
|
||||||
#id_realm_user_invite_restriction {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,17 +8,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="m-10 inline-block organization-permissions-parent">
|
<div class="m-10 inline-block organization-permissions-parent">
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<label for="realm_user_invite_restriction" class="dropdown-title">{{t "Are invitations required for joining the organization?" }}</label>
|
<label for="realm_invite_to_realm_policy" class="dropdown-title">{{t "Who can invite users to this organization" }}</label>
|
||||||
<select name="realm_user_invite_restriction" id="id_realm_user_invite_restriction" class="prop-element">
|
<select name="realm_invite_to_realm_policy" id="id_realm_invite_to_realm_policy" class="prop-element" data-setting-widget-type="number">
|
||||||
<option value="no_invite_required">{{t "No. Members and admins can send invitations." }}</option>
|
{{> dropdown_options_widget option_values=common_policy_values}}
|
||||||
<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>
|
|
||||||
</select>
|
</select>
|
||||||
|
{{> settings_checkbox
|
||||||
|
setting_name="realm_invite_required"
|
||||||
|
prefix="id_"
|
||||||
|
is_checked=realm_invite_required
|
||||||
|
label=admin_settings_label.realm_invite_required}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
|
|||||||
Reference in New Issue
Block a user