From f10caaed138aaf3928238941dbddb785ba86c64e Mon Sep 17 00:00:00 2001
From: Simon Leipold <s.leipold@adito.de>
Date: Mon, 27 May 2019 13:05:10 +0200
Subject: [PATCH] Permissions - refreshing after del/edit, refactoring and
 fixing display value bugs

---
 .../PermissionDetail_entity.aod               |  1 -
 .../accesstype/displayValueProcess.js         | 33 +++++++++++++++----
 .../entityfields/condtype/valueProcess.js     |  3 --
 .../recordcontainers/jdito/onDelete.js        |  3 ++
 .../recordcontainers/jdito/onUpdate.js        |  3 ++
 5 files changed, 33 insertions(+), 10 deletions(-)
 delete mode 100644 entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js

diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod
index 3ed12925636..254f12ad6aa 100644
--- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod
+++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod
@@ -66,7 +66,6 @@
       <title>Condition Type</title>
       <consumer>KeywordConditionType</consumer>
       <mandatory v="true" />
-      <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js</valueProcess>
       <displayValueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/condtype/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
diff --git a/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
index fe3b117045c..834f79bd2a7 100644
--- a/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
+++ b/entity/PermissionDetail_entity/entityfields/accesstype/displayValueProcess.js
@@ -1,18 +1,39 @@
+import("system.neon");
 import("system.vars");
 import("system.result");
 import("Permission_lib");
 
+var operatingState = vars.get("$sys.operatingstate");
 var field = vars.get("$field.FIELD");
 var role = vars.get("$field.ROLE");
 var entity = vars.get("$field.ENTITY");
+var accesstype = vars.get("$field.ACCESSTYPE");
 var rootPermSet = PermissionUtil.getRootPermissionSet(role, entity);
 
-if (rootPermSet == "") {
-    result.string("Entität");
+if (operatingState == neon.OPERATINGSTATE_SEARCH || neon.OPERATINGSTATE_VIEW) {
+    switch (accesstype) {
+        case "E":
+            result.string("Entität");
+            break;
+        case "R":
+            result.string("Datensatz");
+            break;
+        case "F":
+            result.string("Feld");
+            break;
+    }
 } else {
-    result.string("Datensatz");
-} 
+    // editing/creating a new permission
+    // if there is no permission set for a given role-entity-combination -> permission has to be Entity
+    // otherwise Record
+    // if $field.FIELD is filled, then its a permission on Field access level
+    if (rootPermSet == "") {
+        result.string("Entität");
+    } else {
+        result.string("Datensatz");
+    } 
 
-if (field != undefined && field != null && field != "") {
-    result.string("Feld");
+    if (field != undefined && field != null && field != "") {
+        result.string("Feld");
+    }
 }
\ No newline at end of file
diff --git a/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js b/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js
deleted file mode 100644
index 6f1c35b0b91..00000000000
--- a/entity/PermissionDetail_entity/entityfields/condtype/valueProcess.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import("system.result");
-
-result.string("true");
\ No newline at end of file
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js
index f2c594edd7e..372b60783ae 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onDelete.js
@@ -1,3 +1,4 @@
+import("system.neon");
 import("system.db");
 import("system.vars");
 import("Permission_lib");
@@ -48,3 +49,5 @@ switch (accessType) {
 if (PermissionUtil.permSetIsEmpty(parentPermSetId)) {
     db.deleteData("ASYS_PERMISSIONSET", sqlCondDelPermSet, alias); // delete empty permissionset
 }
+
+neon.refreshAll();
\ No newline at end of file
diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js b/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js
index 0cbb9dc17b7..7ccb059127d 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/onUpdate.js
@@ -1,3 +1,4 @@
+import("system.neon");
 import("system.logging");
 import("system.util");
 import("system.db");
@@ -31,3 +32,5 @@ PermissionUtil.updateIfDiff(permissionid, permCond, "COND", "ASYS_PERMISSION");
 PermissionUtil.updateIfDiff(permissionid, permCondType, "CONDTYPE", "ASYS_PERMISSION"); // updates CONDTYPE if the new condtype is different to CONDTYPE in DB
 // entity of children has to be changed/deleted/ignored?
 // PermissionUtil.updateIfDiff(PermissionUtil.getParentPermissionSet(permissionid), entityNew, "ENTITY_ID", "ASYS_PERMISSIONSET");
+
+neon.refreshAll(); 
\ No newline at end of file
-- 
GitLab