From 792915e3ae48e81349e47fed9e62b5e5f8f8bac6 Mon Sep 17 00:00:00 2001
From: Simon Leipold <s.leipold@adito.de>
Date: Fri, 23 Aug 2019 13:38:20 +0200
Subject: [PATCH] Permissions - bug fix - sorting takes condition into account
 now

---
 .../recordcontainers/jdito/contentProcess.js  | 28 ++++++++++---------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
index 7170234c11d..a9d472d2b63 100644
--- a/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionDetail_entity/recordcontainers/jdito/contentProcess.js
@@ -106,7 +106,8 @@ if (selectedPermission == null) {
     }
 }
 
-result.object(res.sort(sortResultsByCondition).sort(sortResultsByAccessTypes));
+res = res.sort(sortResultsByCondition).sort(sortResultsByAccessTypes);
+result.object(res);
 
 function prepareResultArray(pEntry, pRes) {
     var parentPermission = "";
@@ -163,7 +164,10 @@ function sortActions(actions, accesstype) {
 
 // sorts result array: Entity -> Records -> Fields
 function sortResultsByAccessTypes(a, b) {
-    if (a[6] == b[6] && a[6] != "F" && a[6] != "R")
+    var noCondA = "{\"entity\":\"" + a[1] + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
+    var noCondB = "{\"entity\":\"" + b[1] + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
+
+    if (a[6] == b[6] && a[6] == "E")
         return 0;
     else if (a[6] == "E")
         return -1;
@@ -173,28 +177,26 @@ function sortResultsByAccessTypes(a, b) {
         return -1;
     else if (a[6] == "F" && b[6] == "R")
         return 1;
-    else if (a[6] == "R" && b[6] == "R" && a[4] == "")
-        return -1;
-    else if (a[6] == "R" && b[6] == "R" && b[4] == "")
-        return 1;
-    else if (a[6] == "F" && b[6] == "F" && a[4] == "")
+    else if (a[6] == b[6] && (a[4] == "" || a[4] == noCondA))
         return -1;
-    else if (a[6] == "F" && b[6] == "F" && b[4] == "")
+    else if (a[6] == b[6] && (b[4] == "" || b[4] == noCondB))
         return 1;
-    else
+    else 
         return 0;
 }
 
 // sorts result array: default permission -> conditional permission
 function sortResultsByCondition(a, b) {
-    var noCond = "{\"entity\":\"" + vars.get("$field.ENTITY") + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
+    var noCondA = "{\"entity\":\"" + a[1] + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
+    var noCondB = "{\"entity\":\"" + b[1] + "\",\"filter\":{\"type\":\"group\",\"operator\":\"AND\",\"childs\":[]}}";
+    
     if (a[4] == "" || a[4] == noCond) {
         return -1;
-    } else if (b[4] == "" || b[4] == noCond) {
+    } else if (b[4] == "" || b[4] == noCondB) {
         return -1;
-    } else if (a[4] != "" && a[4] != noCond) {
+    } else if (a[4] != "" && a[4] != noCondA) {
         return 1;
-    } else if (b[4] != "" && b[4] != noCond) {
+    } else if (b[4] != "" && b[4] != noCondB) {
         return 1;
     } else {
         return 0;
-- 
GitLab