Newer
Older
Martin Groppe
committed
import("Keyword_lib");
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import("system.vars");
import("Placeholder_lib");
import("Binary_lib");
import("system.db");
import("system.util");
import("Sql_lib");
import("KeywordRegistry_basic");
import("system.tools");
//saves a Mosaico Template
function restpost(pRequest)
{
var request = JSON.parse(pRequest);
var body = JSON.parse(util.decodeBase64String(request.body, "UTF-8"));
var mosaicoTemplateId = body.id;
var userId = body.user;
var employee = tools.getUserByAttribute(tools.NAME, userId, tools.PROFILE_DEFAULT);
if(mosaicoTemplateId)
{
//check if template exists in db
var name = newSelect("NAME")
.from("MOSAICOTEMPLATE")
.where("MOSAICOTEMPLATE.MOSAICOTEMPLATEID", mosaicoTemplateId)
.cell(true);
if (name)
{
newWhere("MOSAICOTEMPLATE.MOSAICOTEMPLATEID", mosaicoTemplateId)
.updateFields({
"METADATA": body.metadata,
"CONTENT": body.content,
"USER_EDIT":employee[tools.TITLE],
"DATE_EDIT":vars.get("$sys.date")
});
SingleBinaryUtils.set("MOSAICOTEMPLATE", "DOCUMENT", mosaicoTemplateId, util.encodeBase64String(body.html),name +".html","");
var bulkMailsWithTemplate = newSelect(["BULKMAIL.BULKMAILID", "BULKMAIL.NAME"])
.from("BULKMAIL")
.where("BULKMAIL.MOSAICOTEMPLATE_ID", mosaicoTemplateId)
.table();
//update all bulkmails which use the template with the new html file
bulkMailsWithTemplate.forEach(function ([pBulkMailId, pBulkMailName])
{
var metaData = SingleBinaryUtils.getMetadata("BULKMAIL", "DOCUMENT", pBulkMailId);
SingleBinaryUtils.set("BULKMAIL", "DOCUMENT", pBulkMailId, util.encodeBase64String(body.html), metaData[db.BINARY_FILENAME] || (pBulkMailName+".html"));
});
request.response.httpStatusCode = 200;
}
else
{
request.response.httpStatusCode = 500;
}
}
else
{
request.response.httpStatusCode = 500;
}
return JSON.stringify(request);
}
//get information about the template, links and placeholders for use in the mosaico editor
function restget(pRequest)
{
var responseBody = {}
var request = JSON.parse(pRequest);
var mosaicoTemplateId = request.query.id;
var userName = request.query.user;
if (mosaicoTemplateId && userName)
{
var mosaicoTemplateData = newSelect(["METADATA","CONTENT"])
.from("MOSAICOTEMPLATE")
.where("MOSAICOTEMPLATE.MOSAICOTEMPLATEID", mosaicoTemplateId)
.arrayRow();
if (mosaicoTemplateData.length > 0)
{
responseBody = {"metadata": mosaicoTemplateData[0], "content": mosaicoTemplateData[1]};
}
responseBody.links = _getMosaicoLinks();
responseBody.placeholders = _getMosaicoPlaceholders(userName);
Martin Groppe
committed
responseBody.colors = KeywordUtils.getEntryArray($KeywordRegistry.mosaicoColor());
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
if(responseBody.hasOwnProperty("metadata"))
{
request.response.httpStatusCode = 200; //ok
}
else
{
request.response.httpStatusCode = 404; //not found
}
}
else
{
request.response.httpStatusCode = 400; //bad request
}
request.response.body = JSON.stringify(responseBody);
return JSON.stringify(request);
}
function _getMosaicoLinks()
{
return newSelect("PLACEHOLDER")
.from("WEBLINK")
.where("WEBLINK.PLACEHOLDER is not null")
.orderBy("PLACEHOLDER asc")
.arrayColumn();
}
function _getMosaicoPlaceholders(pUserName)
{
var employee = tools.getUserByAttribute(tools.NAME, pUserName, tools.PROFILE_DEFAULT);
var employeeContactId = employee[tools.PARAMS][tools.CONTACTID];
var replacements = new DocumentTemplate().getReplacementsByContactIds([employeeContactId],null,true)
var mosaicoPlaceholders = PlaceholderUtils.getPlaceholders()
.map( function(pPlaceholder)
{
return {title: pPlaceholder.title,
preview: replacements[employeeContactId][pPlaceholder.getFormattedName()],
placeholder: pPlaceholder.getFormattedName(),
variableName: pPlaceholder.placeholderName};
});
return mosaicoPlaceholders
}