From c7d4640af569d8de4fb1e257be444c20d38c5425 Mon Sep 17 00:00:00 2001 From: sahil839 Date: Fri, 30 Apr 2021 13:05:20 +0530 Subject: [PATCH] setting: Add dropdown for managing who can move messages between streams. This commit adds the dropdown in 'Stream settings' section of organization permissions page to control who can move messages between streams and also hides the stream-edit UI in message-edit form accordingly. Fixes #14499. --- frontend_tests/node_tests/settings_data.js | 5 +++++ static/js/message_edit.js | 4 +++- static/js/settings_data.js | 4 ++++ static/js/settings_org.js | 1 + .../templates/settings/organization_permissions_admin.hbs | 7 +++++++ 5 files changed, 20 insertions(+), 1 deletion(-) 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}} +
+ + +