Newer
Older
Martin Groppe
committed
import("Keyword_lib");
2
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
84
85
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());
87
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
122
123
124
125
126
127
128
129
130
131
132
133
134
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
}