Files
zulip/web/templates/stream_settings/stream_permissions.hbs
Sahil Batra 0a8238b993 stream-settings: Live update visibility of folder dropdown.
An error was raised where we tried to live update the folder name
in folder dropdown even when there was no dropdown visible
to the non-admin user in settings page. This was because
"There are no channel folders configured in this organization."
text was shown even when a folder was recently created in the
realm as we did not live update the visibility of dropdown on
creating or archiving a folder.

This commit fixes the bug by live-updating the visibility
of folder dropdown when creating or archiving a folder.
2025-08-14 13:18:31 -07:00

222 lines
11 KiB
Handlebars

<div class="stream-permissions {{#if is_stream_edit}}settings-subsection-parent{{/if}}">
{{#if is_stream_edit}}
<div class="subsection-header">
<h3 class="stream_setting_subsection_title">{{t "Channel permissions" }}
</h3>
{{> ../settings/settings_save_discard_widget section_name="stream-permissions" }}
</div>
<div class="stream-permissions-warning-banner"></div>
{{/if}}
<div class="input-group stream-privacy-values">
<div class="alert stream-privacy-status"></div>
<label>{{t 'Who can access this channel'}}
{{> ../help_link_widget link="/help/channel-permissions" }}
</label>
<div class="stream-privacy_choices prop-element" id="{{prefix}}stream_privacy" data-setting-widget-type="radio-group" data-setting-choice-type="string">
{{#each stream_privacy_policy_values}}
<div class="settings-radio-input-parent">
<label class="radio">
<input type="radio" name="privacy" value="{{ this.code }}" {{#if (eq this.code ../stream_privacy_policy) }}checked{{/if}} />
<b class="highlighted-element">{{ this.name }}:</b> {{ this.description }}
</label>
</div>
{{/each}}
</div>
</div>
{{#if ask_to_announce_stream}}
<div id="announce-new-stream">
{{>announce_stream_checkbox . }}
</div>
{{/if}}
<div class="default-stream">
{{> ../settings/settings_checkbox
prefix=prefix
setting_name="is_default_stream"
is_checked=check_default_stream
label=(t "Default channel for new users")
help_link="/help/set-default-channels-for-new-users"
}}
</div>
</div>
<div class="channel-folder-subsection {{#if is_stream_edit}}settings-subsection-parent{{/if}}">
<div class="channel-folder-title-container {{#if is_stream_edit}}subsection-header{{/if}}">
<h3 class="stream_setting_subsection_title">{{t "Folders"}}</h3>
{{#if is_stream_edit}}
{{> ../settings/settings_save_discard_widget section_name="stream-permissions" }}
{{/if}}
</div>
<div class="input-group channel-folder-container">
{{!-- This is a modified version of dropdown_widget_with_label.hbs
component so that we can show dropdown button and button to create
a new folder on same line without having to add much CSS with
hardcoded margin and padding values. --}}
<label class="settings-field-label" for="{{channel_folder_widget_name}}_widget">
{{t "Channel folder"}}
{{> ../help_link_widget link="/help/channel-folders" }}
</label>
<span class="prop-element hide" id="id_{{channel_folder_widget_name}}" data-setting-widget-type="dropdown-list-widget" data-setting-value-type="number"></span>
<div class="dropdown_widget_with_label_wrapper channel-folder-widget-container">
{{> ../dropdown_widget widget_name=channel_folder_widget_name}}
{{#if is_admin}}
{{> ../components/action_button
label=(t "Create new folder")
attention="quiet"
intent="neutral"
type="button"
custom_classes="create-channel-folder-button"
}}
{{/if}}
</div>
</div>
<span class="settings-field-label no-folders-configured-message">
{{t "There are no channel folders configured in this organization."}}
{{> ../help_link_widget link="/help/channel-folders" }}
</span>
</div>
<div class="advanced-configurations-container {{#if is_stream_edit}}settings-subsection-parent{{/if}}">
<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>
<h3 class="stream_setting_subsection_title"><span>{{t 'Advanced configuration' }}</span></h3>
</div>
</div>
<div class="advanced-configurations-collapase-view hide">
<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>
<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_send_message_group"
label=group_setting_labels.can_send_message_group
prefix=prefix
help_link="/help/channel-posting-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>
{{> topics_already_exist_error .}}
</div>
</div>
<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_within_channel_group"
label=group_setting_labels.can_move_messages_within_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 }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_resolve_topics_group"
label=group_setting_labels.can_resolve_topics_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_delete_any_message_group"
label=group_setting_labels.can_delete_any_message_group
prefix=prefix }}
{{> ../settings/group_setting_value_pill_input
setting_name="can_delete_own_message_group"
label=group_setting_labels.can_delete_own_message_group
prefix=prefix }}
</div>
<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 }}
{{#if (or is_owner is_stream_edit)}}
<div>
<div class="input-group 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>
{{> ../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 "Organization default {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>
{{/if}}
</div>
</div>
</div>