diff --git a/frontend_tests/node_tests/settings_data.js b/frontend_tests/node_tests/settings_data.js index fbcef67bf6..64d83443c6 100644 --- a/frontend_tests/node_tests/settings_data.js +++ b/frontend_tests/node_tests/settings_data.js @@ -157,3 +157,8 @@ test_policy( "realm_invite_to_realm_policy", settings_data.user_can_invite_others_to_realm, ); +test_policy( + "user_can_move_messages_between_streams", + "realm_move_messages_between_streams_policy", + settings_data.user_can_move_messages_between_streams, +); diff --git a/static/js/message_edit.js b/static/js/message_edit.js index df5acb0816..ffc70c9df4 100644 --- a/static/js/message_edit.js +++ b/static/js/message_edit.js @@ -21,6 +21,7 @@ import * as message_viewport from "./message_viewport"; import {page_params} from "./page_params"; import * as resize from "./resize"; import * as rows from "./rows"; +import * as settings_data from "./settings_data"; import * as stream_bar from "./stream_bar"; import * as stream_data from "./stream_data"; import * as ui_report from "./ui_report"; @@ -346,7 +347,8 @@ function edit_message(row, raw_content) { file_upload_enabled = true; } - const show_edit_stream = message.is_stream && page_params.is_admin; + const show_edit_stream = + message.is_stream && settings_data.user_can_move_messages_between_streams(); // current message's stream has been already been added and selected in handlebar const available_streams = show_edit_stream ? stream_data.subscribed_subs().filter((s) => s.stream_id !== message.stream_id) diff --git a/static/js/settings_data.js b/static/js/settings_data.js index 575885800b..12b9efb42c 100644 --- a/static/js/settings_data.js +++ b/static/js/settings_data.js @@ -126,3 +126,7 @@ export function user_can_subscribe_other_users() { export function user_can_create_streams() { return user_has_permission(page_params.realm_create_stream_policy); } + +export function user_can_move_messages_between_streams() { + return user_has_permission(page_params.realm_move_messages_between_streams_policy); +} diff --git a/static/js/settings_org.js b/static/js/settings_org.js index b2724fdf9d..e29f1a0754 100644 --- a/static/js/settings_org.js +++ b/static/js/settings_org.js @@ -247,6 +247,7 @@ const simple_dropdown_properties = [ "realm_add_emoji_by_admins_only", "realm_user_invite_restriction", "realm_wildcard_mention_policy", + "realm_move_messages_between_streams_policy", ]; function set_property_dropdown_value(property_name) { diff --git a/static/templates/settings/organization_permissions_admin.hbs b/static/templates/settings/organization_permissions_admin.hbs index bb3da2e538..52b09b5e9d 100644 --- a/static/templates/settings/organization_permissions_admin.hbs +++ b/static/templates/settings/organization_permissions_admin.hbs @@ -115,6 +115,13 @@ {{> dropdown_options_widget option_values=wildcard_mention_policy_values}} +
+ + +