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.
This commit is contained in:
sahil839
2021-04-30 13:05:20 +05:30
committed by Tim Abbott
parent 6f4af26585
commit c7d4640af5
5 changed files with 20 additions and 1 deletions

View File

@@ -157,3 +157,8 @@ test_policy(
"realm_invite_to_realm_policy", "realm_invite_to_realm_policy",
settings_data.user_can_invite_others_to_realm, 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,
);

View File

@@ -21,6 +21,7 @@ import * as message_viewport from "./message_viewport";
import {page_params} from "./page_params"; import {page_params} from "./page_params";
import * as resize from "./resize"; import * as resize from "./resize";
import * as rows from "./rows"; import * as rows from "./rows";
import * as settings_data from "./settings_data";
import * as stream_bar from "./stream_bar"; import * as stream_bar from "./stream_bar";
import * as stream_data from "./stream_data"; import * as stream_data from "./stream_data";
import * as ui_report from "./ui_report"; import * as ui_report from "./ui_report";
@@ -346,7 +347,8 @@ function edit_message(row, raw_content) {
file_upload_enabled = true; 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 // current message's stream has been already been added and selected in handlebar
const available_streams = show_edit_stream const available_streams = show_edit_stream
? stream_data.subscribed_subs().filter((s) => s.stream_id !== message.stream_id) ? stream_data.subscribed_subs().filter((s) => s.stream_id !== message.stream_id)

View File

@@ -126,3 +126,7 @@ export function user_can_subscribe_other_users() {
export function user_can_create_streams() { export function user_can_create_streams() {
return user_has_permission(page_params.realm_create_stream_policy); 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);
}

View File

@@ -247,6 +247,7 @@ const simple_dropdown_properties = [
"realm_add_emoji_by_admins_only", "realm_add_emoji_by_admins_only",
"realm_user_invite_restriction", "realm_user_invite_restriction",
"realm_wildcard_mention_policy", "realm_wildcard_mention_policy",
"realm_move_messages_between_streams_policy",
]; ];
function set_property_dropdown_value(property_name) { function set_property_dropdown_value(property_name) {

View File

@@ -115,6 +115,13 @@
{{> dropdown_options_widget option_values=wildcard_mention_policy_values}} {{> dropdown_options_widget option_values=wildcard_mention_policy_values}}
</select> </select>
</div> </div>
<div class="input-group">
<label for="realm_move_messages_between_streams_policy">{{t "Who can move messages between streams" }}
</label>
<select name="realm_move_messages_between_streams_policy" class="setting-widget prop-element" id="id_realm_move_messages_between_streams_policy" data-setting-widget-type="number">
{{> dropdown_options_widget option_values=common_policy_values}}
</select>
</div>
</div> </div>
</div> </div>