FEATURE: Allow group owners promote more owners (#19768)
This change allows group owners (in addition to admins) to promote other members to owners.
This commit is contained in:
@@ -43,6 +43,15 @@ export default DropdownSelectBoxComponent.extend({
|
||||
icon: "shield-alt",
|
||||
});
|
||||
}
|
||||
} else if (this.canEditGroup && !this.member.owner) {
|
||||
items.push({
|
||||
id: "makeOwner",
|
||||
name: I18n.t("groups.members.make_owner"),
|
||||
description: I18n.t("groups.members.make_owner_description", {
|
||||
username: this.get("member.username"),
|
||||
}),
|
||||
icon: "shield-alt",
|
||||
});
|
||||
}
|
||||
|
||||
if (this.currentUser.staff) {
|
||||
|
||||
@@ -134,17 +134,17 @@ export default Controller.extend({
|
||||
case "removeMembers":
|
||||
return ajax(`/groups/${this.model.id}/members.json`, {
|
||||
type: "DELETE",
|
||||
data: { user_ids: selection.map((u) => u.id).join(",") },
|
||||
data: { user_ids: selection.mapBy("id").join(",") },
|
||||
}).then(() => {
|
||||
this.model.reloadMembers(this.memberParams, true);
|
||||
this.set("isBulk", false);
|
||||
});
|
||||
|
||||
case "makeOwners":
|
||||
return ajax(`/admin/groups/${this.model.id}/owners.json`, {
|
||||
return ajax(`/groups/${this.model.id}/owners.json`, {
|
||||
type: "PUT",
|
||||
data: {
|
||||
group: { usernames: selection.map((u) => u.username).join(",") },
|
||||
usernames: selection.mapBy("username").join(","),
|
||||
},
|
||||
}).then(() => {
|
||||
selection.forEach((s) => s.set("owner", true));
|
||||
|
||||
@@ -148,9 +148,9 @@ const Group = RestModel.extend({
|
||||
},
|
||||
|
||||
async addOwners(usernames, filter, notifyUsers) {
|
||||
const response = await ajax(`/admin/groups/${this.id}/owners.json`, {
|
||||
const response = await ajax(`/groups/${this.id}/owners.json`, {
|
||||
type: "PUT",
|
||||
data: { group: { usernames, notify_users: notifyUsers } },
|
||||
data: { usernames, notify_users: notifyUsers },
|
||||
});
|
||||
|
||||
if (filter) {
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<BulkGroupMemberDropdown
|
||||
@bulkSelection={{this.bulkSelection}}
|
||||
@canAdminGroup={{this.model.can_admin_group}}
|
||||
@canEditGroup={{this.model.can_edit_group}}
|
||||
@onChange={{action "actOnSelection" this.bulkSelection}}
|
||||
/>
|
||||
{{/if}}
|
||||
@@ -148,6 +149,7 @@
|
||||
<GroupMemberDropdown
|
||||
@member={{m}}
|
||||
@canAdminGroup={{this.model.can_admin_group}}
|
||||
@canEditGroup={{this.model.can_edit_group}}
|
||||
@onChange={{action "actOnGroup" m}}
|
||||
/>
|
||||
{{/if}}
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
<GroupMemberDropdown
|
||||
@member={{user}}
|
||||
@canAdminGroup={{this.model.can_admin_group}}
|
||||
@canEditGroup={{this.model.can_edit_group}}
|
||||
@onChange={{action "actOnGroup" user}}
|
||||
/>
|
||||
{{/if}}
|
||||
|
||||
@@ -39,7 +39,7 @@ acceptance("Group Members", function (needs) {
|
||||
needs.user();
|
||||
|
||||
needs.pretender((server, helper) => {
|
||||
server.put("/admin/groups/47/owners.json", () => {
|
||||
server.put("/groups/47/owners.json", () => {
|
||||
return helper.response({ success: true });
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user