mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 22:13:26 +00:00
user_groups: Add can_add_members_group field to group create/edit.
This commit is contained in:
committed by
Tim Abbott
parent
f134662312
commit
8a2a8b64aa
@@ -917,6 +917,7 @@ export function check_group_property_changed(elem: HTMLElement, group: UserGroup
|
|||||||
const current_val = get_group_property_value(property_name, group);
|
const current_val = get_group_property_value(property_name, group);
|
||||||
let proposed_val;
|
let proposed_val;
|
||||||
switch (property_name) {
|
switch (property_name) {
|
||||||
|
case "can_add_members_group":
|
||||||
case "can_join_group":
|
case "can_join_group":
|
||||||
case "can_manage_group": {
|
case "can_manage_group": {
|
||||||
const pill_widget = get_group_setting_widget(property_name);
|
const pill_widget = get_group_setting_widget(property_name);
|
||||||
@@ -1404,6 +1405,7 @@ export function initialize_disable_btn_hint_popover(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const group_setting_widget_map = new Map<string, GroupSettingPillContainer | null>([
|
export const group_setting_widget_map = new Map<string, GroupSettingPillContainer | null>([
|
||||||
|
["can_add_members_group", null],
|
||||||
["can_join_group", null],
|
["can_join_group", null],
|
||||||
["can_manage_group", null],
|
["can_manage_group", null],
|
||||||
]);
|
]);
|
||||||
@@ -1446,7 +1448,7 @@ export function set_group_setting_widget_value(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type group_setting_name = "can_manage_group" | "can_join_group";
|
type group_setting_name = "can_manage_group" | "can_join_group" | "can_add_members_group";
|
||||||
|
|
||||||
export function create_group_setting_widget({
|
export function create_group_setting_widget({
|
||||||
$pill_container,
|
$pill_container,
|
||||||
|
|||||||
@@ -145,6 +145,7 @@ export const user_group_schema = z.object({
|
|||||||
members: z.array(z.number()),
|
members: z.array(z.number()),
|
||||||
is_system_group: z.boolean(),
|
is_system_group: z.boolean(),
|
||||||
direct_subgroup_ids: z.array(z.number()),
|
direct_subgroup_ids: z.array(z.number()),
|
||||||
|
can_add_members_group: group_setting_value_schema,
|
||||||
can_join_group: group_setting_value_schema,
|
can_join_group: group_setting_value_schema,
|
||||||
can_manage_group: group_setting_value_schema,
|
can_manage_group: group_setting_value_schema,
|
||||||
can_mention_group: z.number(),
|
can_mention_group: z.number(),
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export type UserGroupUpdateEvent = {
|
|||||||
data: {
|
data: {
|
||||||
name?: string;
|
name?: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
|
can_add_members_group?: number;
|
||||||
can_join_group?: number;
|
can_join_group?: number;
|
||||||
can_manage_group?: number;
|
can_manage_group?: number;
|
||||||
can_mention_group?: number;
|
can_mention_group?: number;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ export function get_name(): string | undefined {
|
|||||||
return created_group_name;
|
return created_group_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let can_add_members_group_widget: GroupSettingPillContainer | undefined;
|
||||||
let can_manage_group_widget: GroupSettingPillContainer | undefined;
|
let can_manage_group_widget: GroupSettingPillContainer | undefined;
|
||||||
let can_join_group_widget: GroupSettingPillContainer | undefined;
|
let can_join_group_widget: GroupSettingPillContainer | undefined;
|
||||||
|
|
||||||
@@ -154,6 +155,11 @@ function create_user_group(): void {
|
|||||||
}
|
}
|
||||||
const user_ids = user_group_create_members.get_principals();
|
const user_ids = user_group_create_members.get_principals();
|
||||||
|
|
||||||
|
assert(can_add_members_group_widget !== undefined);
|
||||||
|
const can_add_members_group = settings_components.get_group_setting_widget_value(
|
||||||
|
can_add_members_group_widget,
|
||||||
|
);
|
||||||
|
|
||||||
assert(can_manage_group_widget !== undefined);
|
assert(can_manage_group_widget !== undefined);
|
||||||
const can_manage_group =
|
const can_manage_group =
|
||||||
settings_components.get_group_setting_widget_value(can_manage_group_widget);
|
settings_components.get_group_setting_widget_value(can_manage_group_widget);
|
||||||
@@ -174,6 +180,7 @@ function create_user_group(): void {
|
|||||||
name: group_name,
|
name: group_name,
|
||||||
description,
|
description,
|
||||||
members: JSON.stringify(user_ids),
|
members: JSON.stringify(user_ids),
|
||||||
|
can_add_members_group: JSON.stringify(can_add_members_group),
|
||||||
can_join_group: JSON.stringify(can_join_group),
|
can_join_group: JSON.stringify(can_join_group),
|
||||||
can_mention_group,
|
can_mention_group,
|
||||||
can_manage_group: JSON.stringify(can_manage_group),
|
can_manage_group: JSON.stringify(can_manage_group),
|
||||||
@@ -248,6 +255,12 @@ export function set_up_handlers(): void {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
can_add_members_group_widget = settings_components.create_group_setting_widget({
|
||||||
|
$pill_container: $container.find(".can-add-members-group-container .pill-container"),
|
||||||
|
setting_name: "can_add_members_group",
|
||||||
|
setting_type: "group",
|
||||||
|
});
|
||||||
|
|
||||||
const $pill_container = $container.find(".can-manage-group-container .pill-container");
|
const $pill_container = $container.find(".can-manage-group-container .pill-container");
|
||||||
can_manage_group_widget = settings_components.create_group_setting_widget({
|
can_manage_group_widget = settings_components.create_group_setting_widget({
|
||||||
$pill_container,
|
$pill_container,
|
||||||
|
|||||||
@@ -170,6 +170,13 @@ function show_membership_settings(group) {
|
|||||||
function show_general_settings(group) {
|
function show_general_settings(group) {
|
||||||
user_group_components.setup_permissions_dropdown("can_mention_group", group, false);
|
user_group_components.setup_permissions_dropdown("can_mention_group", group, false);
|
||||||
const $edit_container = get_edit_container(group);
|
const $edit_container = get_edit_container(group);
|
||||||
|
settings_components.create_group_setting_widget({
|
||||||
|
$pill_container: $edit_container.find(".can-add-members-group-container .pill-container"),
|
||||||
|
setting_name: "can_add_members_group",
|
||||||
|
setting_type: "group",
|
||||||
|
group,
|
||||||
|
});
|
||||||
|
|
||||||
settings_components.create_group_setting_widget({
|
settings_components.create_group_setting_widget({
|
||||||
$pill_container: $edit_container.find(".can-manage-group-container .pill-container"),
|
$pill_container: $edit_container.find(".can-manage-group-container .pill-container"),
|
||||||
setting_name: "can_manage_group",
|
setting_name: "can_manage_group",
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ export function add(user_group_raw: UserGroupRaw): UserGroup {
|
|||||||
members: new Set(user_group_raw.members),
|
members: new Set(user_group_raw.members),
|
||||||
is_system_group: user_group_raw.is_system_group,
|
is_system_group: user_group_raw.is_system_group,
|
||||||
direct_subgroup_ids: new Set(user_group_raw.direct_subgroup_ids),
|
direct_subgroup_ids: new Set(user_group_raw.direct_subgroup_ids),
|
||||||
|
can_add_members_group: user_group_raw.can_add_members_group,
|
||||||
can_join_group: user_group_raw.can_join_group,
|
can_join_group: user_group_raw.can_join_group,
|
||||||
can_manage_group: user_group_raw.can_manage_group,
|
can_manage_group: user_group_raw.can_manage_group,
|
||||||
can_mention_group: user_group_raw.can_mention_group,
|
can_mention_group: user_group_raw.can_mention_group,
|
||||||
@@ -102,6 +103,12 @@ export function update(event: UserGroupUpdateEvent): void {
|
|||||||
user_group_name_dict.set(group.name, group);
|
user_group_name_dict.set(group.name, group);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.data.can_add_members_group !== undefined) {
|
||||||
|
group.can_add_members_group = event.data.can_add_members_group;
|
||||||
|
user_group_name_dict.delete(group.name);
|
||||||
|
user_group_name_dict.set(group.name, group);
|
||||||
|
}
|
||||||
|
|
||||||
if (event.data.can_mention_group !== undefined) {
|
if (event.data.can_mention_group !== undefined) {
|
||||||
group.can_mention_group = event.data.can_mention_group;
|
group.can_mention_group = event.data.can_mention_group;
|
||||||
user_group_name_dict.delete(group.name);
|
user_group_name_dict.delete(group.name);
|
||||||
|
|||||||
@@ -22,3 +22,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="input-group can-add-members-group-container">
|
||||||
|
<label>{{t "Who can add members to this group" }}</label>
|
||||||
|
<div class="pill-container person_picker prop-element" id="id_{{can_add_members_group_widget_name}}" data-setting-widget-type="group-setting-type">
|
||||||
|
<div class="input" contenteditable="true"
|
||||||
|
data-placeholder="{{t 'Add roles, groups or users' }}">
|
||||||
|
{{~! Squash whitespace so that placeholder is displayed when empty. ~}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{> group_permissions
|
{{> group_permissions
|
||||||
|
can_add_members_group_widget_name="new_group_can_add_members_group"
|
||||||
can_join_group_widget_name="new_group_can_join_group"
|
can_join_group_widget_name="new_group_can_join_group"
|
||||||
can_mention_group_widget_name="new_group_can_mention_group" can_manage_group_widget_name="new_group_can_manage_group"
|
can_mention_group_widget_name="new_group_can_mention_group" can_manage_group_widget_name="new_group_can_manage_group"
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
{{> ../settings/settings_save_discard_widget section_name="group-permissions" }}
|
{{> ../settings/settings_save_discard_widget section_name="group-permissions" }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{> group_permissions can_join_group_widget_name="can_join_group" can_mention_group_widget_name="can_mention_group" can_manage_group_widget_name="can_manage_group"}}
|
{{> group_permissions can_add_members_group_widget_name="can_add_members_group" can_join_group_widget_name="can_join_group" can_mention_group_widget_name="can_mention_group" can_manage_group_widget_name="can_manage_group"}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="group_detail_box">
|
<div class="group_detail_box">
|
||||||
|
|||||||
@@ -448,6 +448,7 @@ const hamletcharacters = user_group_item({
|
|||||||
members: new Set([100, 104]),
|
members: new Set([100, 104]),
|
||||||
is_system_group: false,
|
is_system_group: false,
|
||||||
direct_subgroup_ids: new Set([]),
|
direct_subgroup_ids: new Set([]),
|
||||||
|
can_add_members_group: 2,
|
||||||
can_join_group: 2,
|
can_join_group: 2,
|
||||||
can_manage_group: 2,
|
can_manage_group: 2,
|
||||||
can_mention_group: 2,
|
can_mention_group: 2,
|
||||||
@@ -463,6 +464,7 @@ const backend = user_group_item({
|
|||||||
members: new Set([101]),
|
members: new Set([101]),
|
||||||
is_system_group: false,
|
is_system_group: false,
|
||||||
direct_subgroup_ids: new Set([1]),
|
direct_subgroup_ids: new Set([1]),
|
||||||
|
can_add_members_group: 1,
|
||||||
can_join_group: 1,
|
can_join_group: 1,
|
||||||
can_manage_group: 1,
|
can_manage_group: 1,
|
||||||
can_mention_group: 1,
|
can_mention_group: 1,
|
||||||
@@ -478,6 +480,7 @@ const call_center = user_group_item({
|
|||||||
members: new Set([102]),
|
members: new Set([102]),
|
||||||
is_system_group: false,
|
is_system_group: false,
|
||||||
direct_subgroup_ids: new Set([]),
|
direct_subgroup_ids: new Set([]),
|
||||||
|
can_add_members_group: 2,
|
||||||
can_join_group: 2,
|
can_join_group: 2,
|
||||||
can_manage_group: 2,
|
can_manage_group: 2,
|
||||||
can_mention_group: 2,
|
can_mention_group: 2,
|
||||||
|
|||||||
@@ -835,6 +835,7 @@ exports.fixtures = {
|
|||||||
members: [1],
|
members: [1],
|
||||||
is_system_group: false,
|
is_system_group: false,
|
||||||
direct_subgroup_ids: [2],
|
direct_subgroup_ids: [2],
|
||||||
|
can_add_members_group: 16,
|
||||||
can_join_group: 16,
|
can_join_group: 16,
|
||||||
can_manage_group: 16,
|
can_manage_group: 16,
|
||||||
can_mention_group: 11,
|
can_mention_group: 11,
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ run_test("user_groups", () => {
|
|||||||
members: new Set([1, 2]),
|
members: new Set([1, 2]),
|
||||||
is_system_group: false,
|
is_system_group: false,
|
||||||
direct_subgroup_ids: new Set([4, 5]),
|
direct_subgroup_ids: new Set([4, 5]),
|
||||||
|
can_add_members_group: 1,
|
||||||
can_join_group: 1,
|
can_join_group: 1,
|
||||||
can_manage_group: 1,
|
can_manage_group: 1,
|
||||||
can_mention_group: 2,
|
can_mention_group: 2,
|
||||||
@@ -45,6 +46,7 @@ run_test("user_groups", () => {
|
|||||||
members: new Set([3]),
|
members: new Set([3]),
|
||||||
is_system_group: false,
|
is_system_group: false,
|
||||||
direct_subgroup_ids: new Set([]),
|
direct_subgroup_ids: new Set([]),
|
||||||
|
can_add_members_group: 1,
|
||||||
can_join_group: 1,
|
can_join_group: 1,
|
||||||
can_manage_group: 1,
|
can_manage_group: 1,
|
||||||
can_mention_group: 2,
|
can_mention_group: 2,
|
||||||
|
|||||||
Reference in New Issue
Block a user