settings: Add checkbox for whether message editing is allowed or not.

This commit adds a checkbox for allow_message_editing setting and
thus we also remove the "Never" option from the time limit dropdown
as unchecking the newly added checkbox will mean the same.

We also disable the time limit input if message editing is not
allowed.

This commit also changes the label for time limit dropdown.

Fixes part of #21739.
This commit is contained in:
Sahil Batra
2022-04-12 13:26:58 +05:30
committed by Tim Abbott
parent a1f40ccda5
commit 0c67c7d269
5 changed files with 34 additions and 35 deletions

View File

@@ -374,19 +374,12 @@ function test_sync_realm_settings() {
$property_elem.length = 1;
$property_elem.attr("id", "id_realm_msg_edit_limit_setting");
page_params.realm_allow_message_editing = false;
page_params.realm_message_content_edit_limit_seconds = 120;
settings_org.sync_realm_settings("allow_message_editing");
assert.equal($("#id_realm_msg_edit_limit_setting").val(), "never");
page_params.realm_allow_message_editing = true;
page_params.realm_message_content_edit_limit_seconds = 120;
settings_org.sync_realm_settings("allow_message_editing");
settings_org.sync_realm_settings("message_content_edit_limit_seconds");
assert.equal($("#id_realm_msg_edit_limit_setting").val(), "upto_two_min");
page_params.realm_message_content_edit_limit_seconds = 130;
settings_org.sync_realm_settings("allow_message_editing");
settings_org.sync_realm_settings("message_content_edit_limit_seconds");
assert.equal($("#id_realm_msg_edit_limit_setting").val(), "custom_limit");
}

View File

@@ -52,6 +52,7 @@ const admin_settings_label = {
realm_default_language: $t({
defaultMessage: "Language for automated messages and invitation emails",
}),
realm_allow_message_editing: $t({defaultMessage: "Allow message editing"}),
};
function insert_tip_box() {
@@ -113,6 +114,7 @@ export function build_page() {
),
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,

View File

@@ -278,12 +278,6 @@ const time_limit_dropdown_values = new Map([
seconds: null,
},
],
[
"never",
{
text: $t({defaultMessage: "Never"}),
},
],
[
"upto_two_min",
{

View File

@@ -166,10 +166,6 @@ function get_property_value(property_name, for_realm_default_settings) {
}
if (property_name === "realm_msg_edit_limit_setting") {
if (!page_params.realm_allow_message_editing) {
return "never";
}
if (page_params.realm_message_content_edit_limit_seconds === null) {
return "any_time";
}
@@ -297,6 +293,16 @@ function set_giphy_rating_dropdown() {
$("#id_realm_giphy_rating").val(rating_id);
}
function update_message_edit_sub_settings(is_checked) {
settings_ui.disable_sub_setting_onchange(is_checked, "id_realm_msg_edit_limit_setting", true);
settings_ui.disable_sub_setting_onchange(
is_checked,
"id_realm_message_content_edit_limit_minutes",
true,
);
settings_ui.disable_sub_setting_onchange(is_checked, "id_realm_edit_topic_policy", true);
}
function set_msg_edit_limit_dropdown() {
const value = get_property_value("realm_msg_edit_limit_setting");
$("#id_realm_msg_edit_limit_setting").val(value);
@@ -304,7 +310,6 @@ function set_msg_edit_limit_dropdown() {
"id_realm_message_content_edit_limit_minutes",
value === "custom_limit",
);
settings_ui.disable_sub_setting_onchange(value !== "never", "id_realm_edit_topic_policy", true);
}
function message_delete_limit_setting_enabled() {
@@ -458,6 +463,9 @@ function update_dependent_subsettings(property_name) {
case "realm_video_chat_provider":
set_video_chat_provider_dropdown();
break;
case "realm_allow_message_editing":
update_message_edit_sub_settings(page_params.realm_allow_message_editing);
break;
case "realm_msg_edit_limit_setting":
case "realm_message_content_edit_limit_minutes":
set_msg_edit_limit_dropdown();
@@ -581,9 +589,6 @@ export function sync_realm_settings(property) {
case "message_content_edit_limit_seconds":
property = "message_content_edit_limit_minutes";
break;
case "allow_message_editing":
property = "msg_edit_limit_setting";
break;
case "emails_restricted_to_domains":
case "disallow_disposable_email_addresses":
property = "org_join_restrictions";
@@ -904,28 +909,21 @@ export function register_save_discard_widget_handlers(
switch (subsection) {
case "msg_editing": {
const edit_limit_setting_value = $("#id_realm_msg_edit_limit_setting").val();
data.allow_message_editing = $("#id_realm_allow_message_editing").prop("checked");
switch (edit_limit_setting_value) {
case "never": {
data.allow_message_editing = false;
break;
}
case "custom_limit": {
data.message_content_edit_limit_seconds = parse_time_limit(
$("#id_realm_message_content_edit_limit_minutes"),
);
data.allow_message_editing = true;
break;
}
case "any_time": {
data.allow_message_editing = true;
data.message_content_edit_limit_seconds = JSON.stringify("unlimited");
break;
}
default: {
data.allow_message_editing = true;
data.message_content_edit_limit_seconds =
settings_config.msg_edit_limit_dropdown_values.get(
edit_limit_setting_value,
@@ -1194,6 +1192,11 @@ export function build_page() {
}
});
$("#id_realm_allow_message_editing").on("change", (e) => {
const is_checked = $(e.target).prop("checked");
update_message_edit_sub_settings(is_checked);
});
$("#id_realm_org_join_restrictions").on("click", (e) => {
// This prevents the disappearance of modal when there are
// no allowed domains otherwise it gets closed due to

View File

@@ -148,9 +148,15 @@
{{> settings_save_discard_widget section_name="msg-editing" }}
</div>
<div class="inline-block organization-settings-parent">
{{> settings_checkbox
setting_name="realm_allow_message_editing"
prefix="id_"
is_checked=realm_allow_message_editing
label=admin_settings_label.realm_allow_message_editing}}
<div class="input-group">
<label for="realm_msg_edit_limit_setting" class="dropdown-title">{{t "Allow message editing" }}</label>
<select name="realm_msg_edit_limit_setting" id="id_realm_msg_edit_limit_setting" class="prop-element">
<label for="realm_msg_edit_limit_setting" class="dropdown-title">{{t "Time limit for editing messages" }}</label>
<select name="realm_msg_edit_limit_setting" id="id_realm_msg_edit_limit_setting" class="prop-element" {{#unless realm_allow_message_editing}}disabled{{/unless}}>
{{#each msg_edit_limit_dropdown_values}}
<option value="{{0}}">{{1.text}}</option>
{{/each}}
@@ -164,12 +170,13 @@
name="realm_message_content_edit_limit_minutes"
class="admin-realm-time-limit-input prop-element"
autocomplete="off"
value="{{ realm_message_content_edit_limit_minutes }}"/>
value="{{ realm_message_content_edit_limit_minutes }}"
{{#unless realm_allow_message_editing}}disabled{{/unless}}/>
</div>
<div class="input-group">
<label for="realm_edit_topic_policy" class="dropdown-title">{{t "Who can edit the topic of any message" }}</label>
<select name="realm_edit_topic_policy" id="id_realm_edit_topic_policy" class="prop-element" data-setting-widget-type="number">
<select name="realm_edit_topic_policy" id="id_realm_edit_topic_policy" class="prop-element" data-setting-widget-type="number" {{#unless realm_allow_message_editing}}disabled{{/unless}}>
{{> dropdown_options_widget option_values=common_message_policy_values}}
</select>
</div>