79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
import { buildCategoryPanel } from "discourse/components/edit-category-panel";
|
|
import PermissionType from "discourse/models/permission-type";
|
|
import { on } from "discourse-common/utils/decorators";
|
|
|
|
export default buildCategoryPanel("security", {
|
|
editingPermissions: false,
|
|
selectedGroup: null,
|
|
selectedPermission: null,
|
|
showPendingGroupChangesAlert: false,
|
|
interactedWithDropdowns: false,
|
|
|
|
@on("init")
|
|
_setup() {
|
|
this.setProperties({
|
|
selectedGroup: this.get("category.availableGroups.firstObject"),
|
|
selectedPermission: this.get(
|
|
"category.availablePermissions.firstObject.id"
|
|
)
|
|
});
|
|
},
|
|
|
|
@on("init")
|
|
_registerValidator() {
|
|
this.registerValidator(() => {
|
|
if (
|
|
!this.showPendingGroupChangesAlert &&
|
|
this.interactedWithDropdowns &&
|
|
this.activeTab
|
|
) {
|
|
this.set("showPendingGroupChangesAlert", true);
|
|
return true;
|
|
}
|
|
});
|
|
},
|
|
|
|
actions: {
|
|
onSelectGroup(selectedGroup) {
|
|
this.setProperties({
|
|
interactedWithDropdowns: true,
|
|
selectedGroup
|
|
});
|
|
},
|
|
|
|
onSelectPermission(selectedPermission) {
|
|
this.setProperties({
|
|
interactedWithDropdowns: true,
|
|
selectedPermission
|
|
});
|
|
},
|
|
|
|
editPermissions() {
|
|
if (!this.get("category.is_special")) {
|
|
this.set("editingPermissions", true);
|
|
}
|
|
},
|
|
|
|
addPermission(group, id) {
|
|
if (!this.get("category.is_special")) {
|
|
this.category.addPermission({
|
|
group_name: group + "",
|
|
permission: PermissionType.create({ id: parseInt(id, 10) })
|
|
});
|
|
}
|
|
|
|
this.setProperties({
|
|
selectedGroup: this.get("category.availableGroups.firstObject"),
|
|
showPendingGroupChangesAlert: false,
|
|
interactedWithDropdowns: false
|
|
});
|
|
},
|
|
|
|
removePermission(permission) {
|
|
if (!this.get("category.is_special")) {
|
|
this.category.removePermission(permission);
|
|
}
|
|
}
|
|
}
|
|
});
|