mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
settings: Add moderators and full members options in user-group setting.
This commit adds moderators and full members options for user group settings in frontend.
This commit is contained in:
@@ -181,6 +181,11 @@ test_policy(
|
||||
"realm_move_messages_between_streams_policy",
|
||||
settings_data.user_can_move_messages_between_streams,
|
||||
);
|
||||
test_policy(
|
||||
"user_can_edit_user_groups",
|
||||
"realm_user_group_edit_policy",
|
||||
settings_data.user_can_edit_user_groups,
|
||||
);
|
||||
|
||||
function test_message_policy(label, policy, validation_func) {
|
||||
run_test(label, () => {
|
||||
|
||||
@@ -32,6 +32,7 @@ const ui_report = mock_esm("../../static/js/ui_report");
|
||||
|
||||
const people = zrequire("people");
|
||||
const settings_config = zrequire("settings_config");
|
||||
const settings_data = zrequire("settings_data");
|
||||
const settings_user_groups = zrequire("settings_user_groups");
|
||||
const user_pill = zrequire("user_pill");
|
||||
|
||||
@@ -51,16 +52,10 @@ function test_ui(label, f) {
|
||||
}
|
||||
|
||||
test_ui("can_edit", () => {
|
||||
page_params.is_guest = false;
|
||||
page_params.is_admin = true;
|
||||
assert.ok(settings_user_groups.can_edit(1));
|
||||
|
||||
page_params.is_admin = false;
|
||||
page_params.is_guest = true;
|
||||
settings_data.user_can_edit_user_groups = () => false;
|
||||
assert.ok(!settings_user_groups.can_edit(1));
|
||||
|
||||
page_params.is_guest = false;
|
||||
page_params.is_admin = false;
|
||||
settings_data.user_can_edit_user_groups = () => true;
|
||||
user_groups.is_member_of = (group_id, user_id) => {
|
||||
assert.equal(group_id, 1);
|
||||
assert.equal(user_id, undefined);
|
||||
@@ -68,20 +63,15 @@ test_ui("can_edit", () => {
|
||||
};
|
||||
assert.ok(!settings_user_groups.can_edit(1));
|
||||
|
||||
page_params.realm_user_group_edit_policy = 2;
|
||||
page_params.is_admin = true;
|
||||
assert.ok(settings_user_groups.can_edit(1));
|
||||
|
||||
page_params.is_admin = false;
|
||||
user_groups.is_member_of = (group_id, user_id) => {
|
||||
assert.equal(group_id, 1);
|
||||
assert.equal(user_id, undefined);
|
||||
return true;
|
||||
};
|
||||
assert.ok(!settings_user_groups.can_edit(1));
|
||||
page_params.is_moderator = true;
|
||||
assert.ok(settings_user_groups.can_edit(1));
|
||||
|
||||
page_params.realm_user_group_edit_policy = 1;
|
||||
page_params.is_admin = false;
|
||||
page_params.is_moderator = false;
|
||||
user_groups.is_member_of = (group_id, user_id) => {
|
||||
assert.equal(group_id, 1);
|
||||
assert.equal(user_id, undefined);
|
||||
|
||||
@@ -73,7 +73,6 @@ export function build_page() {
|
||||
realm_default_twenty_four_hour_time_values: settings_config.twenty_four_hour_time_values,
|
||||
realm_authentication_methods: page_params.realm_authentication_methods,
|
||||
realm_user_group_edit_policy: page_params.realm_user_group_edit_policy,
|
||||
USER_GROUP_EDIT_POLICY_MEMBERS: 1,
|
||||
realm_name_changes_disabled: page_params.realm_name_changes_disabled,
|
||||
realm_email_changes_disabled: page_params.realm_email_changes_disabled,
|
||||
realm_avatar_changes_disabled: page_params.realm_avatar_changes_disabled,
|
||||
@@ -122,6 +121,8 @@ export function build_page() {
|
||||
email_address_visibility_values: settings_config.email_address_visibility_values,
|
||||
can_invite_others_to_realm: settings_data.user_can_invite_others_to_realm(),
|
||||
realm_invite_required: page_params.realm_invite_required,
|
||||
can_edit_user_groups: settings_data.user_can_edit_user_groups(),
|
||||
policy_values: settings_config.common_policy_values,
|
||||
...settings_org.get_organization_settings_options(),
|
||||
};
|
||||
|
||||
|
||||
@@ -130,19 +130,6 @@ export const common_policy_values = {
|
||||
},
|
||||
};
|
||||
|
||||
export const user_group_edit_policy_values = {
|
||||
by_admins_only: {
|
||||
order: 1,
|
||||
code: 2,
|
||||
description: $t({defaultMessage: "Admins"}),
|
||||
},
|
||||
by_members: {
|
||||
order: 2,
|
||||
code: 1,
|
||||
description: $t({defaultMessage: "Admins and members"}),
|
||||
},
|
||||
};
|
||||
|
||||
export const private_message_policy_values = {
|
||||
by_anyone: {
|
||||
order: 1,
|
||||
|
||||
@@ -149,6 +149,10 @@ export function user_can_move_messages_between_streams() {
|
||||
return user_has_permission(page_params.realm_move_messages_between_streams_policy);
|
||||
}
|
||||
|
||||
export function user_can_edit_user_groups() {
|
||||
return user_has_permission(page_params.realm_user_group_edit_policy);
|
||||
}
|
||||
|
||||
export function user_can_edit_topic_of_any_message() {
|
||||
if (
|
||||
page_params.realm_edit_topic_policy ===
|
||||
|
||||
@@ -95,9 +95,6 @@ export function get_sorted_options_list(option_values_object) {
|
||||
export function get_organization_settings_options() {
|
||||
const options = {};
|
||||
options.common_policy_values = get_sorted_options_list(settings_config.common_policy_values);
|
||||
options.user_group_edit_policy_values = get_sorted_options_list(
|
||||
settings_config.user_group_edit_policy_values,
|
||||
);
|
||||
options.private_message_policy_values = get_sorted_options_list(
|
||||
settings_config.private_message_policy_values,
|
||||
);
|
||||
|
||||
@@ -10,6 +10,7 @@ import {$t, $t_html} from "./i18n";
|
||||
import {page_params} from "./page_params";
|
||||
import * as people from "./people";
|
||||
import * as pill_typeahead from "./pill_typeahead";
|
||||
import * as settings_data from "./settings_data";
|
||||
import * as ui_report from "./ui_report";
|
||||
import * as user_groups from "./user_groups";
|
||||
import * as user_pill from "./user_pill";
|
||||
@@ -32,21 +33,18 @@ export function reload() {
|
||||
populate_user_groups();
|
||||
}
|
||||
|
||||
const USER_GROUP_EDIT_POLICY_MEMBERS = 1;
|
||||
|
||||
export function can_edit(group_id) {
|
||||
if (page_params.is_admin) {
|
||||
if (!settings_data.user_can_edit_user_groups()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Admins and moderators are allowed to edit user groups even if they
|
||||
// are not a member of that user group. Members can edit user groups
|
||||
// only if they belong to that group.
|
||||
if (page_params.is_admin || page_params.is_moderator) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (page_params.is_guest) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (page_params.realm_user_group_edit_policy !== USER_GROUP_EDIT_POLICY_MEMBERS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return user_groups.is_member_of(group_id, people.my_current_user_id());
|
||||
}
|
||||
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
<div class="input-group">
|
||||
<label for="realm_user_group_edit_policy" class="dropdown-title">{{t "Who can create and manage user groups" }}</label>
|
||||
<select name="realm_user_group_edit_policy" id="id_realm_user_group_edit_policy" class="prop-element" data-setting-widget-type="number">
|
||||
{{> dropdown_options_widget option_values=user_group_edit_policy_values}}
|
||||
{{> dropdown_options_widget option_values=common_policy_values}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<div id="user-groups-admin" class="settings-section" data-name="user-groups-admin">
|
||||
{{#if (eq realm_user_group_edit_policy USER_GROUP_EDIT_POLICY_MEMBERS) }}
|
||||
<div class="tip">{{t 'Only group members and organization administrators can modify a group.' }}</div>
|
||||
{{#if (eq realm_user_group_edit_policy policy_values.by_members.code) }}
|
||||
<div class="tip">{{t 'Only group members, organization administrators and moderators can modify a group.' }}</div>
|
||||
{{else if (eq realm_user_group_edit_policy policy_values.by_full_members.code) }}
|
||||
<div class="tip">{{t 'Only full members belonging to the group, organization administrators and moderators can modify a group.' }}</div>
|
||||
{{else if (eq realm_user_group_edit_policy policy_values.by_moderators_only.code) }}
|
||||
<div class="tip">{{t 'Only organization administrators and moderators can modify user groups in this organization.' }}</div>
|
||||
{{else}}
|
||||
<div class="tip">{{t 'Only organization administrators can modify user groups in this organization.' }}</div>
|
||||
{{/if}}
|
||||
@@ -12,7 +16,7 @@
|
||||
{{#*inline "z-link"}}<a href="/help/mention-a-user-or-group" target="_blank" rel="noopener noreferrer">{{> @partial-block}}</a>{{/inline}}
|
||||
{{/tr}}
|
||||
</p>
|
||||
{{#if (or is_admin (eq realm_user_group_edit_policy USER_GROUP_EDIT_POLICY_MEMBERS))}}
|
||||
{{#if can_edit_user_groups}}
|
||||
<form class="form-horizontal admin-user-group-form">
|
||||
<div class="add-new-user-group-box grey-box">
|
||||
<div class="new-user-group-form">
|
||||
|
||||
Reference in New Issue
Block a user