From 39d335ae7e98428e680004e457cbf1a177196cd0 Mon Sep 17 00:00:00 2001
From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local>
Date: Tue, 23 Jul 2019 16:31:08 +0200
Subject: [PATCH] Bulkmail editing the content

---
 .../entityfields/content/valueProcess.js      | 17 ++--
 .../recordcontainers/db/onDBUpdate.js         | 72 +++++++++-------
 .../Organisation_entity.aod                   |  2 +
 .../_____LANGUAGE_de/_____LANGUAGE_de.aod     |  1 +
 neonContext/BulkMail/BulkMail.aod             |  2 +-
 .../BulkMailContent_view.aod}                 | 82 +++++++++----------
 .../BulkMailMain_view/BulkMailMain_view.aod   |  2 +-
 process/DocumentTemplate_lib/process.js       | 48 ++++++++---
 8 files changed, 133 insertions(+), 93 deletions(-)
 rename neonView/{BulkMailTest_view/BulkMailTest_view.aod => BulkMailContent_view/BulkMailContent_view.aod} (93%)

diff --git a/entity/BulkMail_entity/entityfields/content/valueProcess.js b/entity/BulkMail_entity/entityfields/content/valueProcess.js
index 22151f2828..7abb9759cf 100644
--- a/entity/BulkMail_entity/entityfields/content/valueProcess.js
+++ b/entity/BulkMail_entity/entityfields/content/valueProcess.js
@@ -1,11 +1,13 @@
+import("system.neon");
 import("Document_lib");
 import("system.util");
 import("system.result");
 import("system.vars");
 import("system.db");
 import("DocumentTemplate_lib");
+import("Bulkmail_lib");
 
-if (!vars.get("$this.value"))
+if (vars.get("$this.value") == null)
 {
     var upload = vars.get("$field.BINDATA");
     var template;
@@ -14,20 +16,13 @@ if (!vars.get("$this.value"))
         var binData = DocumentUtil.getBindataFromUpload(upload);
         var filename = DocumentUtil.getFilenameFromUpload(upload);
         var type = DocumentUtil.getFileExtensionFromUpload(filename);
-        type = ({
-            "txt" : DocumentTemplate.types.TXT,
-            "html" : DocumentTemplate.types.HTML,
-            "htm" : DocumentTemplate.types.HTML,
-            "eml" : DocumentTemplate.types.EML
-        })[type];
-        template = new DocumentTemplate(binData, type);
-        
+        template = new DocumentTemplate(binData, DocumentTemplate.types.fromFileExtension(type));
     }
     else
     {
-        template = DocumentTemplate.loadTemplate(vars.get("$field.DOCUMENTTEMPLATE_ID"));
+        template = BulkMailUtils.getBulkMailTemplate(vars.get("$field.BULKMAILID"), vars.get("$field.DOCUMENTTEMPLATE_ID"));
     }
     var content = template.getReplacedContent({}, true);
 
     result.string(content);
-}
+}
\ No newline at end of file
diff --git a/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js b/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js
index 4b8b28c49a..345ac72193 100644
--- a/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js
+++ b/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js
@@ -1,28 +1,44 @@
-import("Sql_lib");
-import("system.result");
-import("system.vars");
-import("system.db");
-import("system.util");
-import("Document_lib");
-
-//TODO - Function
-
-var upload = vars.get("$field.BINDATA");
-var bindataUpload = DocumentUtil.getBindataFromUpload(upload);
-var filename = "";
-var bindata = "";
-
-if(bindataUpload != "")
-{
-    filename = DocumentUtil.getFilenameFromUpload(upload);
-    bindata  = bindataUpload;
-}
-
-if(bindata != "" && filename != "")
-{
-    let sysAlias = "_____SYSTEMALIAS";
-    var binaryId = db.cell(SqlCondition.begin(sysAlias)
-        .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.BULKMAILID")
-        .buildSql("select ID from ASYS_BINARIES", "1=2"), sysAlias);
-    db.updateBinary(binaryId, "", bindata, filename, "", "", sysAlias);
-}
\ No newline at end of file
+import("system.neon");
+import("Sql_lib");
+import("DocumentTemplate_lib");
+import("system.result");
+import("system.vars");
+import("system.db");
+import("system.util");
+import("Document_lib");
+import("Bulkmail_lib");
+
+//TODO - Function
+
+var content = vars.get("$field.content");
+var originalBinData = vars.get("$field.BINDATA");
+var filename, type, template;
+
+if(vars.get("$field.BINDATA"))
+{
+    filename = DocumentUtil.getFilenameFromUpload(vars.get("$field.BINDATA"));
+    type = DocumentUtil.getFileExtensionFromUpload(filename);
+    type = DocumentTemplate.types.fromFileExtension(type);
+}
+else
+{
+    template = BulkMailUtils.getBulkMailTemplate(vars.get("$field.BULKMAILID"), vars.get("$field.DOCUMENTTEMPLATE_ID"));
+    type = template.type;
+}
+
+if (type == DocumentTemplate.types.EML || type == DocumentTemplate.types.HTML)
+    content = "<html>" + content + "</html>";
+
+var bindata = util.encodeBase64String(content);
+if (!filename)
+    filename = vars.get("$field.NAME") + ".txt";
+
+if(bindata != "")
+{
+    let sysAlias = "_____SYSTEMALIAS";
+    var binaryId = db.cell(SqlCondition.begin(sysAlias)
+        .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.BULKMAILID")
+        .buildSql("select ID from ASYS_BINARIES", "1=2"), sysAlias);
+    db.updateBinary(binaryId, "", bindata, filename, "", "", sysAlias);
+    neon.refresh(["$field.content"]);
+}
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index f42f895db6..fce0095544 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -771,6 +771,8 @@
         <entityActionField>
           <name>addToSerialLetter</name>
           <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/campaignactiongroup/children/addtoserialletter/onActionProcess.js</onActionProcess>
+          <isObjectAction v="false" />
+          <isSelectionAction v="true" />
           <iconId>VAADIN:ENVELOPES</iconId>
         </entityActionField>
       </children>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 11ccd000ad..fb5e5683a7 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -6328,6 +6328,7 @@
     </entry>
     <entry>
       <key>Download letter</key>
+      <value>Brief herunterladen</value>
     </entry>
     <entry>
       <key>Phase progression</key>
diff --git a/neonContext/BulkMail/BulkMail.aod b/neonContext/BulkMail/BulkMail.aod
index 8001515cc6..ae4fd6a679 100644
--- a/neonContext/BulkMail/BulkMail.aod
+++ b/neonContext/BulkMail/BulkMail.aod
@@ -27,7 +27,7 @@
     </neonViewReference>
     <neonViewReference>
       <name>6b057fb0-94ac-4bca-88b2-c97fdfcf9d6e</name>
-      <view>BulkMailTest_view</view>
+      <view>BulkMailContent_view</view>
     </neonViewReference>
   </references>
 </neonContext>
diff --git a/neonView/BulkMailTest_view/BulkMailTest_view.aod b/neonView/BulkMailContent_view/BulkMailContent_view.aod
similarity index 93%
rename from neonView/BulkMailTest_view/BulkMailTest_view.aod
rename to neonView/BulkMailContent_view/BulkMailContent_view.aod
index 0192108f41..43b3a83dea 100644
--- a/neonView/BulkMailTest_view/BulkMailTest_view.aod
+++ b/neonView/BulkMailContent_view/BulkMailContent_view.aod
@@ -1,41 +1,41 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
-  <name>BulkMailTest_view</name>
-  <title>Preview</title>
-  <majorModelMode>DISTRIBUTED</majorModelMode>
-  <layout>
-    <noneLayout>
-      <name>layout</name>
-    </noneLayout>
-  </layout>
-  <children>
-    <genericViewTemplate>
-      <name>Subject</name>
-      <showDrawer v="true" />
-      <drawerCaption>Subject</drawerCaption>
-      <fixedDrawer v="true" />
-      <hideLabels v="true" />
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>d85c2b49-3a32-4261-95aa-6e13d9debe46</name>
-          <entityField>subjectPreview</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-    <genericViewTemplate>
-      <name>Body</name>
-      <showDrawer v="true" />
-      <drawerCaption>Content</drawerCaption>
-      <fixedDrawer v="true" />
-      <hideLabels v="true" />
-      <entityField>#ENTITY</entityField>
-      <fields>
-        <entityFieldLink>
-          <name>af0d45a2-a96f-4031-a93d-62ac177efb43</name>
-          <entityField>content</entityField>
-        </entityFieldLink>
-      </fields>
-    </genericViewTemplate>
-  </children>
-</neonView>
+<?xml version="1.0" encoding="UTF-8"?>
+<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
+  <name>BulkMailContent_view</name>
+  <title>Content</title>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <layout>
+    <noneLayout>
+      <name>layout</name>
+    </noneLayout>
+  </layout>
+  <children>
+    <genericViewTemplate>
+      <name>Subject</name>
+      <showDrawer v="true" />
+      <drawerCaption>Subject</drawerCaption>
+      <fixedDrawer v="true" />
+      <hideLabels v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>d85c2b49-3a32-4261-95aa-6e13d9debe46</name>
+          <entityField>subjectPreview</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+    <genericViewTemplate>
+      <name>Body</name>
+      <showDrawer v="true" />
+      <drawerCaption>Content</drawerCaption>
+      <fixedDrawer v="true" />
+      <hideLabels v="true" />
+      <entityField>#ENTITY</entityField>
+      <fields>
+        <entityFieldLink>
+          <name>af0d45a2-a96f-4031-a93d-62ac177efb43</name>
+          <entityField>content</entityField>
+        </entityFieldLink>
+      </fields>
+    </genericViewTemplate>
+  </children>
+</neonView>
diff --git a/neonView/BulkMailMain_view/BulkMailMain_view.aod b/neonView/BulkMailMain_view/BulkMailMain_view.aod
index d95de24eec..128f5bdff4 100644
--- a/neonView/BulkMailMain_view/BulkMailMain_view.aod
+++ b/neonView/BulkMailMain_view/BulkMailMain_view.aod
@@ -22,7 +22,7 @@
     <neonViewReference>
       <name>3222ace8-c6d6-4dab-ada1-1f50b983e7e7</name>
       <entityField>#ENTITY</entityField>
-      <view>BulkMailTest_view</view>
+      <view>BulkMailContent_view</view>
     </neonViewReference>
   </children>
 </neonView>
diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js
index dbcfb36a91..f182936863 100644
--- a/process/DocumentTemplate_lib/process.js
+++ b/process/DocumentTemplate_lib/process.js
@@ -52,7 +52,42 @@ DocumentTemplate.types = {
     EML : "eml",
     ODT : "odt",
     DOCX : "docx",
-    PLAIN : "plain" //for simple strings
+    PLAIN : "plain", //for simple strings
+    fromFileExtension : function (pFileExtension)
+    {
+        switch (pFileExtension)
+        {
+            case "html":
+            case "htm":
+                return this.HTML;
+            case "eml":
+                return this.EML;
+            case "odt":
+                return this.ODT;
+            case "docx":
+                return this.DOCX;
+            case "txt":
+            default:
+                return this.TXT;
+        }
+    },
+    fromMimetype : function (pMimetype)
+    {
+        switch (pMimetype)
+        {
+            case "text/html":
+                return this.HTML;
+            case "message/rfc822":
+                return this.EML;
+            case "application/vnd.oasis.opendocument.text":
+                return this.ODT;
+            case "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
+                return this.DOCX;
+            case "text/plain":
+            default:
+                return this.TXT;
+        }
+    }
 };
 
 /**
@@ -76,16 +111,7 @@ DocumentTemplate.loadTemplate = function (pAssignmentRowId, pAssignmentTable)
     var binaryId = templateDocument[0][db.BINARY_ID];
     var filename = templateDocument[0][db.BINARY_FILENAME];
     var mimetype = templateDocument[0][db.BINARY_MIMETYPE];
-    var typeMap = {
-        "text/plain" : DocumentTemplate.types.TXT,
-        "text/html" : DocumentTemplate.types.HTML,
-        "message/rfc822" : DocumentTemplate.types.EML,
-        "application/vnd.oasis.opendocument.text" : DocumentTemplate.types.ODT,
-        "application/vnd.openxmlformats-officedocument.wordprocessingml.document" : DocumentTemplate.types.DOCX
-    };
-    var type = typeMap[mimetype];
-    if (type === undefined)
-        throw new Error("Invalid mime type for document template");
+    var type = DocumentTemplate.types.fromMimetype(mimetype);
     
     return new DocumentTemplate(db.getBinaryContent(binaryId, alias), type, filename);
 }
-- 
GitLab