organization settings: Clean up labels for custom time limits.

We make the text "minutes" agree with the number
in the input field.
In the future, we could make the units configurable
as in the invitation modal.

Fixes #34692.
This commit is contained in:
Kislay Verma
2025-06-14 12:15:47 +05:30
committed by Tim Abbott
parent d5e9d81957
commit 9507b7b36f
5 changed files with 59 additions and 12 deletions

View File

@@ -122,6 +122,8 @@ IGNORED_PHRASES = [
r"^cookie$", r"^cookie$",
# Used to refer custom time limits # Used to refer custom time limits
r"\bN\b", r"\bN\b",
r"minute",
r"minutes",
# Capital c feels obtrusive in clear status option # Capital c feels obtrusive in clear status option
r"clear", r"clear",
r"group direct messages with \{recipient\}", r"group direct messages with \{recipient\}",
@@ -278,6 +280,8 @@ def check_banned_words(text: str) -> list[str]:
or "realm_uri" in lower_cased_text or "realm_uri" in lower_cased_text
or "realm_url" in lower_cased_text or "realm_url" in lower_cased_text
or "remote_realm_host" in lower_cased_text or "remote_realm_host" in lower_cased_text
or "realm_message" in lower_cased_text
or "realm_move" in lower_cased_text
): ):
continue continue
kwargs = dict(word=word, text=text, reason=reason) kwargs = dict(word=word, text=text, reason=reason)

View File

@@ -156,6 +156,14 @@ export function build_page(): void {
settings_components.get_realm_time_limits_in_minutes( settings_components.get_realm_time_limits_in_minutes(
"realm_message_content_edit_limit_seconds", "realm_message_content_edit_limit_seconds",
), ),
realm_move_messages_between_streams_limit_minutes:
settings_components.get_realm_time_limits_in_minutes(
"realm_move_messages_between_streams_limit_seconds",
),
realm_move_messages_within_stream_limit_minutes:
settings_components.get_realm_time_limits_in_minutes(
"realm_move_messages_within_stream_limit_seconds",
),
realm_message_content_delete_limit_minutes: realm_message_content_delete_limit_minutes:
settings_components.get_realm_time_limits_in_minutes( settings_components.get_realm_time_limits_in_minutes(
"realm_message_content_delete_limit_seconds", "realm_message_content_delete_limit_seconds",

View File

@@ -305,6 +305,19 @@ function get_jitsi_server_url_setting_value(
return JSON.stringify($custom_input_elem.val()); return JSON.stringify($custom_input_elem.val());
} }
export function update_custom_time_limit_minute_text($input: JQuery<HTMLInputElement>): void {
const $minutes_text = $input.parent().find(".time-unit-text");
const count = Number.parseInt($input.val()!, 10);
$minutes_text.text(
$t(
{
defaultMessage: "{count, plural, one {minute} other {minutes}}",
},
{count},
),
);
}
export function update_custom_value_input(property_name: MessageTimeLimitSetting): void { export function update_custom_value_input(property_name: MessageTimeLimitSetting): void {
const $dropdown_elem = $(`#id_${CSS.escape(property_name)}`); const $dropdown_elem = $(`#id_${CSS.escape(property_name)}`);
const custom_input_elem_id = $dropdown_elem const custom_input_elem_id = $dropdown_elem
@@ -314,11 +327,11 @@ export function update_custom_value_input(property_name: MessageTimeLimitSetting
const show_custom_limit_input = $dropdown_elem.val() === "custom_period"; const show_custom_limit_input = $dropdown_elem.val() === "custom_period";
change_element_block_display_property(custom_input_elem_id, show_custom_limit_input); change_element_block_display_property(custom_input_elem_id, show_custom_limit_input);
if (show_custom_limit_input) { if (!show_custom_limit_input) {
$(`#${CSS.escape(custom_input_elem_id)}`).val( return;
get_realm_time_limits_in_minutes(property_name),
);
} }
$(`#${CSS.escape(custom_input_elem_id)}`).val(get_realm_time_limits_in_minutes(property_name));
update_custom_time_limit_minute_text($(`#${CSS.escape(custom_input_elem_id)}`));
} }
export function get_time_limit_dropdown_setting_value( export function get_time_limit_dropdown_setting_value(

View File

@@ -1349,6 +1349,16 @@ export function build_page(): void {
register_save_discard_widget_handlers($(".admin-realm-form"), "/json/realm", false); register_save_discard_widget_handlers($(".admin-realm-form"), "/json/realm", false);
$(".org-permissions-form").on(
"input change",
".time-limit-custom-input",
function (this: HTMLInputElement, e) {
e.preventDefault();
e.stopPropagation();
settings_components.update_custom_time_limit_minute_text($(this));
},
);
$(".settings-subsection-parent").on("keydown", "input", (e) => { $(".settings-subsection-parent").on("keydown", "input", (e) => {
e.stopPropagation(); e.stopPropagation();
if (keydown_util.is_enter_event(e)) { if (keydown_util.is_enter_event(e)) {

View File

@@ -171,14 +171,19 @@
</select> </select>
<div class="dependent-settings-block"> <div class="dependent-settings-block">
<label for="id_realm_message_content_edit_limit_minutes" class="inline-block realm-time-limit-label"> <label for="id_realm_message_content_edit_limit_minutes" class="inline-block realm-time-limit-label">
{{t 'Duration editing is allowed after posting (minutes)'}}:&nbsp; {{t 'Time limit'}}:&nbsp;
</label> </label>
<input type="text" id="id_realm_message_content_edit_limit_minutes" <input type="text" id="id_realm_message_content_edit_limit_minutes"
name="realm_message_content_edit_limit_minutes" name="realm_message_content_edit_limit_minutes"
class="time-limit-custom-input" class="time-limit-custom-input"
autocomplete="off" autocomplete="off"
value="{{ realm_message_content_edit_limit_minutes }}" value="{{ realm_message_content_edit_limit_minutes }}"
{{#unless realm_allow_message_editing}}disabled{{/unless}}/> {{#unless realm_allow_message_editing}}disabled{{/unless}}/>&nbsp;
<span class="time-unit-text">
{{t "{realm_message_content_edit_limit_minutes, plural, one {minute} other {minutes}}"}}
</span>
</div> </div>
</div> </div>
</div> </div>
@@ -205,12 +210,15 @@
</select> </select>
<div class="dependent-settings-block"> <div class="dependent-settings-block">
<label for="id_realm_move_messages_within_stream_limit_minutes" class="inline-block realm-time-limit-label"> <label for="id_realm_move_messages_within_stream_limit_minutes" class="inline-block realm-time-limit-label">
{{t 'Duration editing is allowed after posting (minutes)'}}:&nbsp; {{t 'Time limit'}}:&nbsp;
</label> </label>
<input type="text" id="id_realm_move_messages_within_stream_limit_minutes" <input type="text" id="id_realm_move_messages_within_stream_limit_minutes"
name="realm_move_messages_within_stream_limit_minutes" name="realm_move_messages_within_stream_limit_minutes"
class="time-limit-custom-input" class="time-limit-custom-input"
autocomplete="off"/> autocomplete="off"/>&nbsp;
<span class="time-unit-text">
{{t "{realm_move_messages_within_stream_limit_minutes, plural, one {minute} other {minutes}}"}}
</span>
</div> </div>
</div> </div>
@@ -227,12 +235,15 @@
</select> </select>
<div class="dependent-settings-block"> <div class="dependent-settings-block">
<label for="id_realm_move_messages_between_streams_limit_minutes" class="inline-block realm-time-limit-label"> <label for="id_realm_move_messages_between_streams_limit_minutes" class="inline-block realm-time-limit-label">
{{t 'Duration moving is allowed after posting (minutes)'}}:&nbsp; {{t 'Time limit'}}:&nbsp;
</label> </label>
<input type="text" id="id_realm_move_messages_between_streams_limit_minutes" <input type="text" id="id_realm_move_messages_between_streams_limit_minutes"
name="realm_move_messages_between_streams_limit_minutes" name="realm_move_messages_between_streams_limit_minutes"
class="time-limit-custom-input" class="time-limit-custom-input"
autocomplete="off"/> autocomplete="off"/>&nbsp;
<span class="time-unit-text">
{{t "{realm_move_messages_between_streams_limit_minutes, plural, one {minute} other {minutes}}"}}
</span>
</div> </div>
</div> </div>
@@ -268,13 +279,14 @@
</select> </select>
<div class="dependent-settings-block"> <div class="dependent-settings-block">
<label for="id_realm_message_content_delete_limit_minutes" class="inline-block realm-time-limit-label"> <label for="id_realm_message_content_delete_limit_minutes" class="inline-block realm-time-limit-label">
{{t "Duration deletion is allowed after posting (minutes)" }}: {{t "Time limit" }}:&nbsp;
</label> </label>
<input type="text" id="id_realm_message_content_delete_limit_minutes" <input type="text" id="id_realm_message_content_delete_limit_minutes"
name="realm_message_content_delete_limit_minutes" name="realm_message_content_delete_limit_minutes"
class="time-limit-custom-input" class="time-limit-custom-input"
autocomplete="off" autocomplete="off"
value="{{ realm_message_content_delete_limit_minutes }}"/> value="{{ realm_message_content_delete_limit_minutes }}"/>&nbsp;
<span class="time-unit-text">{{t "{realm_message_content_delete_limit_minutes, plural, one {minute} other {minutes}}"}}</span>
</div> </div>
</div> </div>
</div> </div>