From a9b1421c2e29b9a485abf07d98e3387dee22dd5d Mon Sep 17 00:00:00 2001
From: Sebastian Listl <s.listl@adito.de>
Date: Wed, 16 Dec 2020 16:36:35 +0100
Subject: [PATCH] ContextUtils.getContexts blacklist logic changed

---
 process/Context_lib/process.js | 48 ++++++++++++++++++++--------------
 process/Util_lib/process.js    |  2 +-
 2 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index 40e6e00d4c2..5d0a3a81c1d 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -269,28 +269,36 @@ ContextUtils.loadContent = function(pEntity, pUid, pFields, pExcludeIDs, pProvid
  */
 ContextUtils.getContexts = function(pBlacklist, pInvertBlacklist)
 {
-    if (pInvertBlacklist == undefined)
-        pInvertBlacklist = false;
-
-
-    var contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT);
-    var contextsStandardList = ["Organisation", "Person", "PrivatePerson", "Activity", "Salesproject", "Contract", "Offer", "Order", "Product", "Task",
-    "Campaign", "CampaignStep", "SupportTicket", "Leadimport"];
-
-    contexts = contexts.filter(function(pContext) {
-        if (contextsStandardList.indexOf(pContext[0]) > -1)
-            return true;
-        return false;
-    });
-
-    if (pBlacklist)
+    var whitelist;
+    if (pInvertBlacklist && pBlacklist)
+        whitelist = new Set(pBlacklist);
+    else
     {
-        contexts = contexts.filter(function(pContext) {
-            if (pBlacklist && pBlacklist.indexOf(pContext[0]) > -1 != pInvertBlacklist)
-                return false;
-            return true;
-        });
+        whitelist = new Set()
+            .add("Organisation")
+            .add("Person")
+            .add("PrivatePerson")
+            .add("Activity")
+            .add("Salesproject")
+            .add("Contract")
+            .add("Offer")
+            .add("Order")
+            .add("Product")
+            .add("Task")
+            .add("Campaign")
+            .add("CampaignStep")
+            .add("SupportTicket")
+            .add("Leadimport");
+            
+        if (pBlacklist)
+            pBlacklist.forEach(whitelist["delete"], whitelist);
     }
+    
+    var contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT);
+    contexts = contexts.filter(function(context) 
+    {
+        return whitelist.has(context[0]);
+    });
 
     return contexts.map(ContextUtils._contextDataMapping).sort(function(pContext1, pContext2)
     {
diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js
index 00ddb82a71b..154076f048f 100644
--- a/process/Util_lib/process.js
+++ b/process/Util_lib/process.js
@@ -411,7 +411,7 @@ Utils.objectValues = function (pObject)
  */
 Utils.buildFilterObj = function(pFilterObj, pFieldName, pOperator, pContentType, pValue, pKey, pParentOperator)
 {
-    
+    //TODO: maybe something like this should be inside the JditoFilter_lib, but more fluent
     if(pParentOperator && pParentOperator != "AND" && pParentOperator != "OR")
         throw new Error(translate.text("Illegal Parent Operator in buildFilterObj-Function: "+pParentOperator));
     
-- 
GitLab