stream_settings: Reorganize settings in subsections.

This commit reorganizes channel settings in the "Advanced
configurations" section into four subsections.

Fixes #34837.
This commit is contained in:
Vector73
2025-07-07 09:22:24 +00:00
committed by Tim Abbott
parent b2bd4500ab
commit f65fdb7bef
2 changed files with 100 additions and 70 deletions

View File

@@ -1784,8 +1784,7 @@ export function create_stream_group_setting_widget({
if (sub !== undefined) {
set_group_setting_widget_value(pill_widget, sub[setting_name]);
const $edit_container = stream_settings_containers.get_edit_container(sub);
const $subsection = $edit_container.find(".advanced-configurations-container");
const $subsection = $pill_container.closest(".settings-subsection-parent");
pill_widget.onTextInputHook(() => {
save_discard_stream_settings_widget_status_handler($subsection, sub);

View File

@@ -82,89 +82,120 @@
<div class="advance-config-title-container {{#if is_stream_edit}}subsection-header{{/if}}">
<div class="advance-config-toggle-area">
<i class="fa fa-sm fa-caret-right toggle-advanced-configurations-icon" aria-hidden="true"></i>
<h4 class="stream_setting_subsection_title"><span>{{t 'Advanced configuration' }}</span></h4>
<h3 class="stream_setting_subsection_title"><span>{{t 'Advanced configuration' }}</span></h3>
</div>
{{#if is_stream_edit}}
{{> ../settings/settings_save_discard_widget section_name="stream-permissions" }}
{{/if}}
</div>
<div class="advanced-configurations-collapase-view hide">
<div class="admin-permissions-tip">
{{t 'Organization administrators can automatically administer all channels.'}}
<div id="channel-subscription-permissions" class="settings-subsection-parent">
<div class="channel-subscription-permissions-title-container {{#if is_stream_edit}}subsection-header{{/if}}">
<h4 class="stream_setting_subsection_title">{{t "Subscription permissions"}}</h4>
{{#if is_stream_edit}}
{{> ../settings/settings_save_discard_widget section_name="subscription-permissions"}}
{{/if}}
</div>
{{> ../settings/group_setting_value_pill_input
setting_name="can_subscribe_group"
label=group_setting_labels.can_subscribe_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_add_subscribers_group"
label=group_setting_labels.can_add_subscribers_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_remove_subscribers_group"
label=group_setting_labels.can_remove_subscribers_group
prefix=prefix }}
</div>
{{> ../settings/group_setting_value_pill_input
setting_name="can_subscribe_group"
label=group_setting_labels.can_subscribe_group
prefix=prefix }}
<div id="channel-messaging-permissions" class="settings-subsection-parent">
<div class="channel-messaging-permissions-title-container {{#if is_stream_edit}}subsection-header{{/if}}">
<h4 class="stream_setting_subsection_title">{{t "Messaging permissions"}}</h4>
{{#if is_stream_edit}}
{{> ../settings/settings_save_discard_widget section_name="messaging-permissions"}}
{{/if}}
</div>
{{> ../settings/group_setting_value_pill_input
setting_name="can_add_subscribers_group"
label=group_setting_labels.can_add_subscribers_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_send_message_group"
label=group_setting_labels.can_send_message_group
prefix=prefix
help_link="/help/stream-sending-policy" }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_remove_subscribers_group"
label=group_setting_labels.can_remove_subscribers_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_send_message_group"
label=group_setting_labels.can_send_message_group
prefix=prefix
help_link="/help/stream-sending-policy" }}
<div class="input-group">
<label for="{{prefix}}topics_policy" class="settings-field-label">{{> stream_topics_policy_label .}}</label>
<select name="stream-topics-policy-setting" id="{{prefix}}topics_policy" class="prop-element settings_select bootstrap-focus-style" data-setting-widget-type="string">
{{> ../settings/dropdown_options_widget option_values=stream_topics_policy_values}}
</select>
<div class="input-group">
<label for="{{prefix}}topics_policy" class="settings-field-label">{{> stream_topics_policy_label .}}</label>
<select name="stream-topics-policy-setting" id="{{prefix}}topics_policy" class="prop-element settings_select bootstrap-focus-style" data-setting-widget-type="string">
{{> ../settings/dropdown_options_widget option_values=stream_topics_policy_values}}
</select>
</div>
</div>
{{> ../settings/group_setting_value_pill_input
setting_name="can_move_messages_within_channel_group"
label=group_setting_labels.can_move_messages_within_channel_group
prefix=prefix }}
<div id="channel-moderation-permissions" class="settings-subsection-parent">
<div class="channel-moderation-permissions-title-container {{#if is_stream_edit}}subsection-header{{/if}}">
<h4 class="stream_setting_subsection_title">{{t "Moderation permissions"}}</h4>
{{#if is_stream_edit}}
{{> ../settings/settings_save_discard_widget section_name="moderation-permissions"}}
{{/if}}
</div>
{{> ../settings/group_setting_value_pill_input
setting_name="can_move_messages_out_of_channel_group"
label=group_setting_labels.can_move_messages_out_of_channel_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_move_messages_within_channel_group"
label=group_setting_labels.can_move_messages_within_channel_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_administer_channel_group"
label=group_setting_labels.can_administer_channel_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_move_messages_out_of_channel_group"
label=group_setting_labels.can_move_messages_out_of_channel_group
prefix=prefix }}
</div>
{{#if (or is_owner is_stream_edit)}}
<div>
<div class="input-group inline-block message-retention-setting-group time-limit-setting">
<label class="dropdown-title settings-field-label" for="{{prefix}}message_retention_days">{{t "Message retention period" }}
{{> ../help_link_widget link="/help/message-retention-policy" }}
</label>
<div id="channel-administrative-permissions" class="settings-subsection-parent">
<div class="channel-administrative-permissions-title-container {{#if is_stream_edit}}subsection-header{{/if}}">
<h4 class="stream_setting_subsection_title">{{t "Administrative permissions"}}</h4>
{{#if is_stream_edit}}
{{> ../settings/settings_save_discard_widget section_name="administrative-permissions"}}
{{/if}}
</div>
<div class="admin-permissions-tip">
{{t 'Organization administrators can automatically administer all channels.'}}
</div>
{{> ../settings/group_setting_value_pill_input
setting_name="can_administer_channel_group"
label=group_setting_labels.can_administer_channel_group
prefix=prefix }}
{{> ../settings/upgrade_tip_widget .}}
<select name="stream_message_retention_setting"
class="stream_message_retention_setting prop-element settings_select bootstrap-focus-style"
id="{{prefix}}message_retention_days"
data-setting-widget-type="message-retention-setting">
<option value="realm_default">{{t "Use organization level settings {org_level_message_retention_setting}" }}</option>
<option value="unlimited">{{t 'Retain forever' }}</option>
<option value="custom_period">{{t 'Custom' }}</option>
</select>
<div class="dependent-settings-block stream-message-retention-days-input">
<label class="inline-block" for="{{prefix}}stream_message_retention_custom_input">
{{t 'Retention period (days)' }}:
{{#if (or is_owner is_stream_edit)}}
<div>
<div class="input-group inline-block message-retention-setting-group time-limit-setting">
<label class="dropdown-title settings-field-label" for="{{prefix}}message_retention_days">{{t "Message retention period" }}
{{> ../help_link_widget link="/help/message-retention-policy" }}
</label>
<input type="text" autocomplete="off"
name="stream-message-retention-days"
class="stream-message-retention-days message-retention-setting-custom-input time-limit-custom-input"
id="{{prefix}}stream_message_retention_custom_input" />
{{> ../settings/upgrade_tip_widget .}}
<select name="stream_message_retention_setting"
class="stream_message_retention_setting prop-element settings_select bootstrap-focus-style"
id="{{prefix}}message_retention_days"
data-setting-widget-type="message-retention-setting">
<option value="realm_default">{{t "Use organization level settings {org_level_message_retention_setting}" }}</option>
<option value="unlimited">{{t 'Retain forever' }}</option>
<option value="custom_period">{{t 'Custom' }}</option>
</select>
<div class="dependent-settings-block stream-message-retention-days-input">
<label class="inline-block" for="{{prefix}}stream_message_retention_custom_input">
{{t 'Retention period (days)' }}:
</label>
<input type="text" autocomplete="off"
name="stream-message-retention-days"
class="stream-message-retention-days message-retention-setting-custom-input time-limit-custom-input"
id="{{prefix}}stream_message_retention_custom_input" />
</div>
</div>
</div>
</div>
{{/if}}
{{/if}}
</div>
</div>
</div>