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