diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod index 023fd014ccb6b8ef5a39cc45578e2db06a052002..8e6196406f40514531865d2024fb067803b9d508 100644 --- a/entity/Role_entity/Role_entity.aod +++ b/entity/Role_entity/Role_entity.aod @@ -150,6 +150,7 @@ <title>delete linked permissions and hierarchies</title> <onActionProcess>%aditoprj%/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/onActionProcess.js</onActionProcess> <iconId>VAADIN:CLOSE</iconId> + <stateProcess>%aditoprj%/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js</stateProcess> </entityActionField> <entityConsumer> <name>RoleParents</name> diff --git a/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js b/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0b7b5d057edba98f018f8356f6928a5bd773e645 --- /dev/null +++ b/entity/Role_entity/entityfields/deleteeverythinglinkedtorole/stateProcess.js @@ -0,0 +1,20 @@ +import("system.logging"); +import("system.neon"); +import("system.result"); +import("system.vars"); +import("Permission_lib"); + +// action enabled if role has permissions or is part of hierarchy +// if role is deletable -> disable action +var roleName = vars.get("$field.ROLENAME"); +var roleType = vars.get("$field.ROLETYPE"); + +if (roleType == "CUSTOM") { + if (PermissionUtil.roleIsDeletable(roleName)) { + result.string(neon.COMPONENTSTATE_DISABLED); + } else { + result.string(neon.COMPONENTSTATE_EDITABLE); + } +} else { + result.string(neon.COMPONENTSTATE_INVISIBLE); +}