diff --git a/web/src/stream_create.js b/web/src/stream_create.js index ff181a03f5..7bd822f8e6 100644 --- a/web/src/stream_create.js +++ b/web/src/stream_create.js @@ -15,6 +15,7 @@ import * as settings_data from "./settings_data"; import * as stream_create_subscribers from "./stream_create_subscribers"; import * as stream_data from "./stream_data"; import * as stream_settings_ui from "./stream_settings_ui"; +import * as stream_ui_updates from "./stream_ui_updates"; import * as ui_report from "./ui_report"; import {parse_html} from "./ui_util"; @@ -360,6 +361,15 @@ export function show_new_stream_modal() { }); } } + const $add_subscribers_container = $( + "#stream_creation_form .subscriber_list_settings", + ).expectOne(); + + stream_ui_updates.enable_or_disable_add_subscribers_elements( + $add_subscribers_container, + settings_data.user_can_subscribe_other_users(), + true, + ); // set default state for "announce stream" option. update_announce_stream_state(); diff --git a/web/src/stream_ui_updates.js b/web/src/stream_ui_updates.js index c9be1a177f..544be6aaee 100644 --- a/web/src/stream_ui_updates.js +++ b/web/src/stream_ui_updates.js @@ -282,7 +282,11 @@ export function update_setting_element(sub, setting_name) { settings_org.discard_property_element_changes($elem, false, sub); } -export function enable_or_disable_add_subscribers_elements($container_elem, enable_elem) { +export function enable_or_disable_add_subscribers_elements( + $container_elem, + enable_elem, + stream_creation = false, +) { const $input_element = $container_elem.find(".input").expectOne(); const $add_subscribers_button = $container_elem .find('button[name="add_subscriber"]') @@ -298,4 +302,19 @@ export function enable_or_disable_add_subscribers_elements($container_elem, enab } else { $container_elem.find(".add_subscribers_container").addClass("add_subscribers_disabled"); } + + if (stream_creation) { + const $subscribe_all_users_button = $container_elem.find("button.add_all_users_to_stream"); + $subscribe_all_users_button.prop("disabled", !enable_elem); + + if (enable_elem) { + $container_elem + .find(".add_all_users_to_stream_btn_container") + .removeClass("add_subscribers_disabled"); + } else { + $container_elem + .find(".add_all_users_to_stream_btn_container") + .addClass("add_subscribers_disabled"); + } + } } diff --git a/web/src/tippyjs.js b/web/src/tippyjs.js index 6d26492488..13e069feda 100644 --- a/web/src/tippyjs.js +++ b/web/src/tippyjs.js @@ -647,6 +647,18 @@ export function initialize() { instance.destroy(); }, }); + + delegate("body", { + target: ["#stream_creation_form .add_subscribers_disabled"], + content: $t({ + defaultMessage: + "You do not have permission to add other users to streams in this organization.", + }), + appendTo: () => document.body, + onHidden(instance) { + instance.destroy(); + }, + }); } export function show_copied_confirmation($copy_button) { diff --git a/web/templates/stream_settings/new_stream_users.hbs b/web/templates/stream_settings/new_stream_users.hbs index 37c579007a..77784a96aa 100644 --- a/web/templates/stream_settings/new_stream_users.hbs +++ b/web/templates/stream_settings/new_stream_users.hbs @@ -1,10 +1,15 @@ -
- {{> add_subscribers_form}} -
-
+
+
+ {{> add_subscribers_form}} +
+
-{{t "Do you want to add everyone?"}} - + + {{t "Do you want to add everyone?"}} + + + +

{{t 'Subscribers' }}