From 67159f82f96f2584e5b5c4ecb5c5118d4b965bce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Johannes=20H=C3=B6rmann?= <j.hoermann@adito.de>
Date: Wed, 24 Apr 2019 14:21:16 +0000
Subject: [PATCH] Contextname-prefix for titles

---
 entity/Attribute_entity/titleProcess.js       |  3 +-
 entity/Contact_entity/Contact_entity.aod      |  6 +---
 .../organisation_id/displayValueProcess.js    |  9 ------
 entity/Contract_entity/titleProcess.js        |  3 +-
 entity/Countries_Entity/titleProcess.js       |  3 +-
 entity/Employee_entity/titleProcess.js        |  3 +-
 .../KeywordAttribute_entity/titleProcess.js   |  3 +-
 entity/KeywordEntry_entity/titleProcess.js    |  3 +-
 .../ObjectRelationType_entity/titleProcess.js |  5 ++--
 entity/Offer_entity/Offer_entity.aod          | 11 -------
 .../valueProcess.js                           |  8 -----
 entity/Offer_entity/titleProcess.js           |  3 +-
 entity/Order_entity/Order_entity.aod          | 11 -------
 .../valueProcess.js                           |  8 -----
 entity/Order_entity/titleProcess.js           |  3 +-
 entity/Organisation_entity/titleProcess.js    |  3 +-
 entity/Person_entity/titleProcess.js          |  3 +-
 entity/Product_entity/titleProcess.js         |  3 +-
 .../titleProcess.js                           |  5 ++--
 entity/Salesproject_entity/titleProcess.js    |  3 +-
 .../OfferPreview_view/OfferPreview_view.aod   |  2 +-
 .../OrderPreview_view/OrderPreview_view.aod   |  2 +-
 process/Context_lib/process.js                | 30 +++++++++++++++++++
 23 files changed, 63 insertions(+), 70 deletions(-)
 delete mode 100644 entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js
 delete mode 100644 entity/Offer_entity/entityfields/offer_offercode_versnr_fieldgroup/valueProcess.js
 delete mode 100644 entity/Order_entity/entityfields/order_ordercode_versnr_fieldgroup/valueProcess.js

diff --git a/entity/Attribute_entity/titleProcess.js b/entity/Attribute_entity/titleProcess.js
index e55588aa4fb..0eb44535e0b 100644
--- a/entity/Attribute_entity/titleProcess.js
+++ b/entity/Attribute_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.FULL_ATTRIBUTE_NAME"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.FULL_ATTRIBUTE_NAME")));
\ No newline at end of file
diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod
index 47279e3e904..d70d8d0861d 100644
--- a/entity/Contact_entity/Contact_entity.aod
+++ b/entity/Contact_entity/Contact_entity.aod
@@ -2,6 +2,7 @@
 <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.2">
   <name>Contact_entity</name>
   <title>Contact</title>
+  <description></description>
   <majorModelMode>DISTRIBUTED</majorModelMode>
   <documentation>%aditoprj%/entity/Contact_entity/documentation.adoc</documentation>
   <onValidation>%aditoprj%/entity/Contact_entity/onValidation.js</onValidation>
@@ -27,7 +28,6 @@
       <title>Company</title>
       <consumer>Organisations</consumer>
       <mandatory v="false" />
-      <displayValueProcess>%aditoprj%/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js</displayValueProcess>
       <onValidation>%aditoprj%/entity/Contact_entity/entityfields/organisation_id/onValidation.js</onValidation>
     </entityField>
     <entityField>
@@ -299,10 +299,6 @@
           <name>DATE_EDIT.value</name>
           <recordfield>CONTACT.DATE_EDIT</recordfield>
         </dbRecordFieldMapping>
-        <dbRecordFieldMapping>
-          <name>ORGANISATION_ID.displayValue</name>
-          <recordfield>ORGANISATION.NAME</recordfield>
-        </dbRecordFieldMapping>
       </recordFieldMappings>
     </dbRecordContainer>
   </recordContainers>
diff --git a/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js b/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js
deleted file mode 100644
index 460b39849d5..00000000000
--- a/entity/Contact_entity/entityfields/organisation_id/displayValueProcess.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import("system.result");
-import("system.db");
-import("system.vars");
-import("Contact_lib");
-
-var organisationId = vars.get("$field.ORGANISATION_ID");
-var res = OrganisationUtils.getNameByOrganisationId(organisationId);
-
-result.string(res);
\ No newline at end of file
diff --git a/entity/Contract_entity/titleProcess.js b/entity/Contract_entity/titleProcess.js
index 46f60176775..3432c05f4a7 100644
--- a/entity/Contract_entity/titleProcess.js
+++ b/entity/Contract_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup")));
\ No newline at end of file
diff --git a/entity/Countries_Entity/titleProcess.js b/entity/Countries_Entity/titleProcess.js
index 6a135783542..27c78a47f57 100644
--- a/entity/Countries_Entity/titleProcess.js
+++ b/entity/Countries_Entity/titleProcess.js
@@ -1,3 +1,4 @@
+import("Context_lib");
 import("system.result");
 import("system.vars");
-result.string(vars.get("$field.NAME_TRANSLATED"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.NAME_TRANSLATED")));
\ No newline at end of file
diff --git a/entity/Employee_entity/titleProcess.js b/entity/Employee_entity/titleProcess.js
index cfe8dbda014..2c946bc446b 100644
--- a/entity/Employee_entity/titleProcess.js
+++ b/entity/Employee_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string((vars.get("$field.FIRSTNAME") + " " + vars.get("$field.LASTNAME")).trim());
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle((vars.get("$field.FIRSTNAME") + " " + vars.get("$field.LASTNAME")).trim()));
\ No newline at end of file
diff --git a/entity/KeywordAttribute_entity/titleProcess.js b/entity/KeywordAttribute_entity/titleProcess.js
index 28fd67de270..53fee4be6ad 100644
--- a/entity/KeywordAttribute_entity/titleProcess.js
+++ b/entity/KeywordAttribute_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.NAME"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.NAME")));
\ No newline at end of file
diff --git a/entity/KeywordEntry_entity/titleProcess.js b/entity/KeywordEntry_entity/titleProcess.js
index a907335e8d1..3a9950b109a 100644
--- a/entity/KeywordEntry_entity/titleProcess.js
+++ b/entity/KeywordEntry_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.TITLE_TRANSLATED"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.TITLE_TRANSLATED")));
\ No newline at end of file
diff --git a/entity/ObjectRelationType_entity/titleProcess.js b/entity/ObjectRelationType_entity/titleProcess.js
index dbc0c500302..5f55a99abcb 100644
--- a/entity/ObjectRelationType_entity/titleProcess.js
+++ b/entity/ObjectRelationType_entity/titleProcess.js
@@ -1,12 +1,13 @@
+import("Context_lib");
 import("system.translate");
 import("system.vars");
 import("system.result");
 
 if (vars.exists("$param.OnlyFirstSide_param") && vars.get("$param.OnlyFirstSide_param") == "1" && vars.get("$field.DIRECTION") != "same")
 {
-    result.string(translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE")));
+    result.string(ContextUtils.prefixWithCurrentContextTitle(translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE"))));
 }
 else
 {
-    result.string(translate.text(vars.get("$field.SOURCE_RELATION_TITLE")));
+    result.string(ContextUtils.prefixWithCurrentContextTitle(translate.text(vars.get("$field.SOURCE_RELATION_TITLE"))));
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod
index 91ae54bf765..32bcd06f2db 100644
--- a/entity/Offer_entity/Offer_entity.aod
+++ b/entity/Offer_entity/Offer_entity.aod
@@ -240,17 +240,6 @@
         <element>VERSNR</element>
       </fields>
     </entityFieldGroup>
-    <entityFieldGroup>
-      <name>Offer_OfferCode_VersNr_fieldgroup</name>
-      <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offer_offercode_versnr_fieldgroup/valueProcess.js</valueProcess>
-      <title>Offer number</title>
-      <description>"Offer " + OfferCode + VersNr</description>
-      <state>READONLY</state>
-      <fields>
-        <element>OFFERCODE</element>
-        <element>VERSNR</element>
-      </fields>
-    </entityFieldGroup>
     <entityParameter>
       <name>ContactId_param</name>
       <expose v="true" />
diff --git a/entity/Offer_entity/entityfields/offer_offercode_versnr_fieldgroup/valueProcess.js b/entity/Offer_entity/entityfields/offer_offercode_versnr_fieldgroup/valueProcess.js
deleted file mode 100644
index 6b1c8c5befc..00000000000
--- a/entity/Offer_entity/entityfields/offer_offercode_versnr_fieldgroup/valueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.translate");
-import("system.result");
-import("system.vars");
-
-// TODO: Kern-Fix, VersNr wird bei indirektem Aufruf nicht geladen, wenn kein "$field.VERSNR" hier ist:
-"$field.VERSNR"
-
-result.string(translate.text("Offer") + " " + vars.get("$field.OfferCode_VersNr_fieldgroup")); 
diff --git a/entity/Offer_entity/titleProcess.js b/entity/Offer_entity/titleProcess.js
index b5301f43f0d..7baf0cfba8e 100644
--- a/entity/Offer_entity/titleProcess.js
+++ b/entity/Offer_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.Offer_OfferCode_VersNr_fieldgroup"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.OfferCode_VersNr_fieldgroup")));
\ No newline at end of file
diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod
index 0afa28adacc..5276e8dd948 100644
--- a/entity/Order_entity/Order_entity.aod
+++ b/entity/Order_entity/Order_entity.aod
@@ -203,17 +203,6 @@
         <element>VERSNR</element>
       </fields>
     </entityFieldGroup>
-    <entityFieldGroup>
-      <name>Order_OrderCode_VersNr_fieldgroup</name>
-      <valueProcess>%aditoprj%/entity/Order_entity/entityfields/order_ordercode_versnr_fieldgroup/valueProcess.js</valueProcess>
-      <title>Receipt number</title>
-      <description>"Receipt " + ReceiptCode + VersNr</description>
-      <state>READONLY</state>
-      <fields>
-        <element>SALESORDERCODE</element>
-        <element>VERSNR</element>
-      </fields>
-    </entityFieldGroup>
     <entityParameter>
       <name>ContactId_param</name>
       <expose v="true" />
diff --git a/entity/Order_entity/entityfields/order_ordercode_versnr_fieldgroup/valueProcess.js b/entity/Order_entity/entityfields/order_ordercode_versnr_fieldgroup/valueProcess.js
deleted file mode 100644
index 777196873cb..00000000000
--- a/entity/Order_entity/entityfields/order_ordercode_versnr_fieldgroup/valueProcess.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import("system.translate");
-import("system.result");
-import("system.vars");
-
-// TODO: Kern-Fix, VersNr wird bei indirektem Aufruf nicht geladen, wenn kein "$field.VERSNR" hier ist:
-"$field.VERSNR"
-
-result.string(translate.text("Order") + " " + vars.get("$field.OrderCode_VersNr_fieldgroup")); 
diff --git a/entity/Order_entity/titleProcess.js b/entity/Order_entity/titleProcess.js
index f9b8aea4a9a..37977fc62e9 100644
--- a/entity/Order_entity/titleProcess.js
+++ b/entity/Order_entity/titleProcess.js
@@ -1,5 +1,6 @@
+import("Context_lib");
 import("system.translate");
 import("system.vars");
 import("system.result");
 
-result.string(translate.text("Receipt") + " " + vars.get("$field.OrderCode_VersNr_fieldgroup"));
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.OrderCode_VersNr_fieldgroup")));
diff --git a/entity/Organisation_entity/titleProcess.js b/entity/Organisation_entity/titleProcess.js
index dffd0bd73b9..5f2cd996da8 100644
--- a/entity/Organisation_entity/titleProcess.js
+++ b/entity/Organisation_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.NAME"))
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.NAME")))
\ No newline at end of file
diff --git a/entity/Person_entity/titleProcess.js b/entity/Person_entity/titleProcess.js
index abaa3df1566..5f2140b1f88 100644
--- a/entity/Person_entity/titleProcess.js
+++ b/entity/Person_entity/titleProcess.js
@@ -1,3 +1,4 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 import("Util_lib");
@@ -13,4 +14,4 @@ contact.lastname = vars.get("$field.LASTNAME");
 contact.organisationName = vars.get("$field.ORGANISATION_NAME");
 
 var renderer = new ContactTitleRenderer(contact, null);
-result.string(renderer.asString());
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(renderer.asString()));
\ No newline at end of file
diff --git a/entity/Product_entity/titleProcess.js b/entity/Product_entity/titleProcess.js
index 4f684f8c2a2..1df7a714a4d 100644
--- a/entity/Product_entity/titleProcess.js
+++ b/entity/Product_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.PRODUCTNAME"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.PRODUCTNAME")));
\ No newline at end of file
diff --git a/entity/SalesprojectMilestone_entity/titleProcess.js b/entity/SalesprojectMilestone_entity/titleProcess.js
index 658e8105ef1..a5a09944785 100644
--- a/entity/SalesprojectMilestone_entity/titleProcess.js
+++ b/entity/SalesprojectMilestone_entity/titleProcess.js
@@ -1,10 +1,11 @@
+import("Context_lib");
 import("system.vars");
 import("system.translate");
 import("system.result");
 
 if (vars.exists("$field.TYPE") && vars.get("$field.TYPE"))
 {
-    result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.TYPE")));
+    result.string(ContextUtils.prefixWithCurrentContextTitle(translate.text("Milestones") + " " + translate.text(vars.get("$field.TYPE"))));
 }
 else
-    result.string(translate.text("Milestones"));
\ No newline at end of file
+    result.string(ContextUtils.prefixWithCurrentContextTitle(translate.text("Milestones")));
\ No newline at end of file
diff --git a/entity/Salesproject_entity/titleProcess.js b/entity/Salesproject_entity/titleProcess.js
index 96a0a030e21..bcc2474490e 100644
--- a/entity/Salesproject_entity/titleProcess.js
+++ b/entity/Salesproject_entity/titleProcess.js
@@ -1,4 +1,5 @@
+import("Context_lib");
 import("system.vars");
 import("system.result");
 
-result.string(vars.get("$field.PROJECTTITLE"));
\ No newline at end of file
+result.string(ContextUtils.prefixWithCurrentContextTitle(vars.get("$field.PROJECTTITLE")));
\ No newline at end of file
diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod
index 9b73e6cfe91..a28c644d44e 100644
--- a/neonView/OfferPreview_view/OfferPreview_view.aod
+++ b/neonView/OfferPreview_view/OfferPreview_view.aod
@@ -12,7 +12,7 @@
     <cardViewTemplate>
       <name>Header</name>
       <iconField>IMAGE</iconField>
-      <titleField>Offer_OfferCode_VersNr_fieldgroup</titleField>
+      <titleField>OfferCode_VersNr_fieldgroup</titleField>
       <descriptionField>CONTACT_ID</descriptionField>
       <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
diff --git a/neonView/OrderPreview_view/OrderPreview_view.aod b/neonView/OrderPreview_view/OrderPreview_view.aod
index d9aa97ac59c..224df4dc3df 100644
--- a/neonView/OrderPreview_view/OrderPreview_view.aod
+++ b/neonView/OrderPreview_view/OrderPreview_view.aod
@@ -12,7 +12,7 @@
     <cardViewTemplate>
       <name>Header</name>
       <iconField>IMAGE</iconField>
-      <titleField>Order_OrderCode_VersNr_fieldgroup</titleField>
+      <titleField>OrderCode_VersNr_fieldgroup</titleField>
       <descriptionField>CONTACT_ID</descriptionField>
       <favoriteAction1>newActivity</favoriteAction1>
       <entityField>#ENTITY</entityField>
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index ee1242dde2f..e8fd86b075a 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -26,6 +26,21 @@ ContextUtils.getCurrentContextId = function()
     return vars.getString("$sys.currentcontextname");
 }
 
+/**
+ * Get the title of the current context
+ * Note: The variable contexttitle is not always available.
+ * In this case this function returns ""
+ * 
+ * @return {String} Title of the current context
+ */
+ContextUtils.getCurrentContextTitle = function()
+{
+    if (vars.exists("$sys.currentcontexttitle") && vars.get("$sys.currentcontexttitle"))
+        return vars.get("$sys.currentcontexttitle");
+
+    return "";
+}
+
 /**
  * TODO: use System function. Currently the Name is also the id.
  * Returns the Name of a context by the Id
@@ -100,6 +115,21 @@ ContextUtils.getContext = function(pContextId)
     return ContextUtils._contextDataMapping(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, pContextId));
 }
 
+/**
+ * Prefix the given title with the current context title. (only if the title is available)
+ * @param {String} pTitle
+ * 
+ * @return {String} e.g.: Kontakt - Herr Tim Admin
+ */
+ContextUtils.prefixWithCurrentContextTitle = function(pTitle)
+{
+    var titlePrefix = ContextUtils.getCurrentContextTitle();
+    if (titlePrefix)
+        return titlePrefix + " - " + pTitle;
+    
+    return pTitle;
+}
+
 /**
  * map the contextData from the system.project-lib to [contextId, contextName, contextTitle]
  *
-- 
GitLab