This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/components/edit-category-security.js.es6
Osama Sayegh 70bd8e2dad
UX: Show a warning when admin clicks save without adding group when changing category permissions (#7947)
* UX: Show a warning when admin clicks save without adding group when changing category permissions

* Use div rather than pseudo element

* Don't pass controller to component

* Use observer instead of a delay

* Refactor

* Rename to validator

* validator is much better than saveValidator
2019-07-29 21:53:31 +03:00

62 lines
1.5 KiB
JavaScript

import { buildCategoryPanel } from "discourse/components/edit-category-panel";
import PermissionType from "discourse/models/permission-type";
import { on } from "ember-addons/ember-computed-decorators";
export default buildCategoryPanel("security", {
editingPermissions: false,
selectedGroup: null,
selectedPermission: null,
showPendingGroupChangesAlert: false,
interactedWithDropdowns: false,
@on("init")
_registerValidator() {
this.registerValidator(() => {
if (
!this.showPendingGroupChangesAlert &&
this.interactedWithDropdowns &&
this.activeTab
) {
this.set("showPendingGroupChangesAlert", true);
return true;
}
});
},
actions: {
onDropdownChange() {
this.set("interactedWithDropdowns", true);
},
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) })
});
}
this.set(
"selectedGroup",
this.get("category.availableGroups.firstObject")
);
this.setProperties({
showPendingGroupChangesAlert: false,
interactedWithDropdowns: false
});
},
removePermission(permission) {
if (!this.get("category.is_special")) {
this.category.removePermission(permission);
}
}
}
});