@tiledesk/tiledesk-server 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +16 -4
- package/app.js +2 -2
- package/channels/chat21/chat21WebHook.js +12 -1
- package/event/botEvent.js +1 -1
- package/fonts/Roboto-Italic.ttf +0 -0
- package/fonts/Roboto-Medium.ttf +0 -0
- package/fonts/Roboto-MediumItalic.ttf +0 -0
- package/fonts/Roboto-Regular.ttf +0 -0
- package/middleware/passport.js +4 -1
- package/models/lead.js +2 -0
- package/models/request.js +38 -11
- package/package.json +3 -2
- package/pubmodules/activities/test/activityRoute.js +4 -4
- package/pubmodules/messageActions/messageActionsInterceptor.js +4 -2
- package/pubmodules/scheduler/tasks/closeAgentUnresponsiveRequestTask.js +3 -1
- package/pubmodules/scheduler/tasks/closeBotUnresponsiveRequestTask.js +3 -1
- package/pubmodules/trigger/rulesTrigger.js +3 -2
- package/routes/lead.js +24 -1
- package/routes/message.js +6 -3
- package/routes/public-request.js +265 -2
- package/routes/request.js +83 -11
- package/routes/user-request.js +3 -2
- package/routes/widget.js +16 -1
- package/routes/widgetLoader.js +31 -0
- package/services/requestService.js +364 -6
- package/test/messageRoute.js +69 -0
- package/test/requestService.js +3 -1
- package/models/subscriptionEvent.js +0 -11
package/routes/public-request.js
CHANGED
@@ -3,10 +3,22 @@ var router = express.Router();
|
|
3
3
|
var Message = require("../models/message");
|
4
4
|
var Request = require("../models/request");
|
5
5
|
var User = require("../models/user");
|
6
|
-
var Project = require("../models/project");
|
7
|
-
var emailService = require("../services/emailService");
|
8
6
|
var winston = require('../config/winston');
|
9
7
|
|
8
|
+
var fonts = {
|
9
|
+
Roboto: {
|
10
|
+
normal: 'fonts/Roboto-Regular.ttf',
|
11
|
+
bold: 'fonts/Roboto-Medium.ttf',
|
12
|
+
italics: 'fonts/Roboto-Italic.ttf',
|
13
|
+
bolditalics: 'fonts/Roboto-MediumItalic.ttf'
|
14
|
+
}
|
15
|
+
};
|
16
|
+
|
17
|
+
var PdfPrinter = require('pdfmake');
|
18
|
+
var printer = new PdfPrinter(fonts);
|
19
|
+
// var fs = require('fs');
|
20
|
+
|
21
|
+
|
10
22
|
|
11
23
|
|
12
24
|
|
@@ -49,6 +61,126 @@ var winston = require('../config/winston');
|
|
49
61
|
});
|
50
62
|
|
51
63
|
|
64
|
+
router.get('/:requestid/messages.csv', function(req, res) {
|
65
|
+
|
66
|
+
winston.debug(req.params);
|
67
|
+
winston.debug("here");
|
68
|
+
return Message.find({"recipient": req.params.requestid}).sort({createdAt: 'asc'}).lean().exec(function(err, messages) {
|
69
|
+
if (err) {
|
70
|
+
return res.status(500).send({success: false, msg: 'Error getting object.'});
|
71
|
+
}
|
72
|
+
|
73
|
+
if(!messages){
|
74
|
+
return res.status(404).send({success: false, msg: 'Object not found.'});
|
75
|
+
}
|
76
|
+
|
77
|
+
messages.forEach(function(element) {
|
78
|
+
|
79
|
+
var channel_name = "";
|
80
|
+
if (element.channel && element.channel.name) {
|
81
|
+
channel_name = element.channel.name;
|
82
|
+
}
|
83
|
+
delete element.channel;
|
84
|
+
element.channel_name = channel_name;
|
85
|
+
|
86
|
+
delete element.attributes;
|
87
|
+
});
|
88
|
+
|
89
|
+
return res.csv(messages, true);
|
90
|
+
});
|
91
|
+
|
92
|
+
});
|
93
|
+
|
94
|
+
|
95
|
+
router.get('/:requestid/messages.txt', function(req, res) {
|
96
|
+
|
97
|
+
winston.debug(req.params);
|
98
|
+
winston.debug("here");
|
99
|
+
return Message.find({"recipient": req.params.requestid}).sort({createdAt: 'asc'}).exec(function(err, messages) {
|
100
|
+
if (err) {
|
101
|
+
return res.status(500).send({success: false, msg: 'Error getting object.'});
|
102
|
+
}
|
103
|
+
|
104
|
+
if(!messages){
|
105
|
+
return res.status(404).send({success: false, msg: 'Object not found.'});
|
106
|
+
}
|
107
|
+
|
108
|
+
|
109
|
+
var text = "Chat transcript:\n" //+ req.project.name;
|
110
|
+
|
111
|
+
messages.forEach(function(element) {
|
112
|
+
text = text + "[ " + element.createdAt.toLocaleString('en', { timeZone: 'UTC' })+ "] " + element.senderFullname + ": " + element.text + "\n";
|
113
|
+
});
|
114
|
+
|
115
|
+
|
116
|
+
res.set({"Content-Disposition":"attachment; filename=\"transcript.txt\""});
|
117
|
+
res.send(text);
|
118
|
+
});
|
119
|
+
|
120
|
+
});
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
router.get('/:requestid/messages.pdf', function(req, res) {
|
125
|
+
|
126
|
+
|
127
|
+
winston.debug(req.params);
|
128
|
+
winston.debug("here");
|
129
|
+
return Message.find({"recipient": req.params.requestid}).sort({createdAt: 'asc'}).exec(function(err, messages) {
|
130
|
+
if (err) {
|
131
|
+
return res.status(500).send({success: false, msg: 'Error getting object.'});
|
132
|
+
}
|
133
|
+
|
134
|
+
|
135
|
+
if(!messages){
|
136
|
+
return res.status(404).send({success: false, msg: 'Object not found.'});
|
137
|
+
}
|
138
|
+
|
139
|
+
|
140
|
+
var docDefinition = {
|
141
|
+
content: [
|
142
|
+
{ text: 'Chat Transcript', style: 'header' },
|
143
|
+
{
|
144
|
+
ul: [
|
145
|
+
// 'item 1',
|
146
|
+
// 'item 2',
|
147
|
+
// 'item 3'
|
148
|
+
]
|
149
|
+
},
|
150
|
+
|
151
|
+
],
|
152
|
+
styles: {
|
153
|
+
header: {
|
154
|
+
bold: true,
|
155
|
+
fontSize: 15
|
156
|
+
}
|
157
|
+
},
|
158
|
+
defaultStyle: {
|
159
|
+
fontSize: 12
|
160
|
+
}
|
161
|
+
};
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
messages.forEach(function(element) {
|
166
|
+
docDefinition.content[1].ul.push("[ " + element.createdAt.toLocaleString('en', { timeZone: 'UTC' })+ "] " + element.senderFullname + ": " + element.text );
|
167
|
+
});
|
168
|
+
|
169
|
+
console.log(docDefinition);
|
170
|
+
|
171
|
+
var pdfDoc = printer.createPdfKitDocument(docDefinition);
|
172
|
+
// pdfDoc.pipe(fs.createWriteStream('lists.pdf'));
|
173
|
+
pdfDoc.pipe(res);
|
174
|
+
pdfDoc.end();
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
});
|
179
|
+
|
180
|
+
});
|
181
|
+
|
182
|
+
|
183
|
+
|
52
184
|
router.get('/:requestid/messages-user.html', function(req, res) {
|
53
185
|
|
54
186
|
winston.debug(req.params);
|
@@ -60,6 +192,7 @@ var winston = require('../config/winston');
|
|
60
192
|
|
61
193
|
var messages = messages.filter(m => m.sender != "system" );
|
62
194
|
|
195
|
+
|
63
196
|
//skip info message
|
64
197
|
if(!messages){
|
65
198
|
return res.status(404).send({success: false, msg: 'Object not found.'});
|
@@ -70,4 +203,134 @@ var winston = require('../config/winston');
|
|
70
203
|
|
71
204
|
});
|
72
205
|
|
206
|
+
|
207
|
+
|
208
|
+
router.get('/:requestid/messages-user.txt', function(req, res) {
|
209
|
+
|
210
|
+
winston.debug(req.params);
|
211
|
+
winston.debug("here");
|
212
|
+
return Message.find({"recipient": req.params.requestid}).sort({createdAt: 'asc'}).exec(function(err, messages) {
|
213
|
+
if (err) {
|
214
|
+
return res.status(500).send({success: false, msg: 'Error getting object.'});
|
215
|
+
}
|
216
|
+
|
217
|
+
if(!messages){
|
218
|
+
return res.status(404).send({success: false, msg: 'Object not found.'});
|
219
|
+
}
|
220
|
+
|
221
|
+
|
222
|
+
var messages = messages.filter(m => m.sender != "system" );
|
223
|
+
|
224
|
+
var text = "Chat transcript:\n" //+ req.project.name;
|
225
|
+
|
226
|
+
messages.forEach(function(element) {
|
227
|
+
text = text + "[ " + element.createdAt.toLocaleString('en', { timeZone: 'UTC' })+ "] " + element.senderFullname + ": " + element.text + "\n";
|
228
|
+
});
|
229
|
+
|
230
|
+
|
231
|
+
res.set({"Content-Disposition":"attachment; filename=\"transcript.txt\""});
|
232
|
+
res.send(text);
|
233
|
+
});
|
234
|
+
|
235
|
+
});
|
236
|
+
|
237
|
+
|
238
|
+
router.get('/:requestid/messages-user.pdf', function(req, res) {
|
239
|
+
|
240
|
+
|
241
|
+
winston.debug(req.params);
|
242
|
+
winston.debug("here");
|
243
|
+
return Message.find({"recipient": req.params.requestid}).sort({createdAt: 'asc'}).exec(function(err, messages) {
|
244
|
+
if (err) {
|
245
|
+
return res.status(500).send({success: false, msg: 'Error getting object.'});
|
246
|
+
}
|
247
|
+
|
248
|
+
var messages = messages.filter(m => m.sender != "system" );
|
249
|
+
|
250
|
+
|
251
|
+
//skip info message
|
252
|
+
if(!messages){
|
253
|
+
return res.status(404).send({success: false, msg: 'Object not found.'});
|
254
|
+
}
|
255
|
+
|
256
|
+
|
257
|
+
var docDefinition = {
|
258
|
+
content: [
|
259
|
+
{ text: 'Chat Transcript', style: 'header' },
|
260
|
+
{
|
261
|
+
ul: [
|
262
|
+
// 'item 1',
|
263
|
+
// 'item 2',
|
264
|
+
// 'item 3'
|
265
|
+
]
|
266
|
+
},
|
267
|
+
|
268
|
+
],
|
269
|
+
styles: {
|
270
|
+
header: {
|
271
|
+
bold: true,
|
272
|
+
fontSize: 15
|
273
|
+
}
|
274
|
+
},
|
275
|
+
defaultStyle: {
|
276
|
+
fontSize: 12
|
277
|
+
}
|
278
|
+
};
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
messages.forEach(function(element) {
|
283
|
+
docDefinition.content[1].ul.push("[ " + element.createdAt.toLocaleString('en', { timeZone: 'UTC' })+ "] " + element.senderFullname + ": " + element.text );
|
284
|
+
});
|
285
|
+
|
286
|
+
console.log(docDefinition);
|
287
|
+
|
288
|
+
var pdfDoc = printer.createPdfKitDocument(docDefinition);
|
289
|
+
// pdfDoc.pipe(fs.createWriteStream('lists.pdf'));
|
290
|
+
pdfDoc.pipe(res);
|
291
|
+
pdfDoc.end();
|
292
|
+
|
293
|
+
|
294
|
+
|
295
|
+
});
|
296
|
+
|
297
|
+
});
|
298
|
+
|
299
|
+
|
300
|
+
router.get('/:requestid/messages-user.csv', function(req, res) {
|
301
|
+
|
302
|
+
winston.debug(req.params);
|
303
|
+
winston.debug("here");
|
304
|
+
return Message.find({"recipient": req.params.requestid}).sort({createdAt: 'asc'}).lean().exec(function(err, messages) {
|
305
|
+
if (err) {
|
306
|
+
return res.status(500).send({success: false, msg: 'Error getting object.'});
|
307
|
+
}
|
308
|
+
|
309
|
+
var messages = messages.filter(m => m.sender != "system" );
|
310
|
+
|
311
|
+
|
312
|
+
//skip info message
|
313
|
+
if(!messages){
|
314
|
+
return res.status(404).send({success: false, msg: 'Object not found.'});
|
315
|
+
}
|
316
|
+
|
317
|
+
|
318
|
+
messages.forEach(function(element) {
|
319
|
+
|
320
|
+
var channel_name = "";
|
321
|
+
if (element.channel && element.channel.name) {
|
322
|
+
channel_name = element.channel.name;
|
323
|
+
}
|
324
|
+
delete element.channel;
|
325
|
+
element.channel_name = channel_name;
|
326
|
+
|
327
|
+
delete element.attributes;
|
328
|
+
});
|
329
|
+
|
330
|
+
|
331
|
+
return res.csv(messages, true);
|
332
|
+
});
|
333
|
+
|
334
|
+
});
|
335
|
+
|
73
336
|
module.exports = router;
|
package/routes/request.js
CHANGED
@@ -196,8 +196,9 @@ router.patch('/:requestid', function (req, res) {
|
|
196
196
|
router.put('/:requestid/close', function (req, res) {
|
197
197
|
winston.debug(req.body);
|
198
198
|
|
199
|
-
// closeRequestByRequestId(request_id, id_project)
|
200
|
-
|
199
|
+
// closeRequestByRequestId(request_id, id_project, skipStatsUpdate, notify, closed_by)
|
200
|
+
const closed_by = req.user.id;
|
201
|
+
return requestService.closeRequestByRequestId(req.params.requestid, req.projectid, false, true, closed_by).then(function(closedRequest) {
|
201
202
|
|
202
203
|
winston.verbose("request closed", closedRequest);
|
203
204
|
|
@@ -518,6 +519,72 @@ router.delete('/:requestid/notes/:noteid', function (req, res) {
|
|
518
519
|
|
519
520
|
});
|
520
521
|
|
522
|
+
|
523
|
+
|
524
|
+
|
525
|
+
|
526
|
+
|
527
|
+
router.post('/:requestid/followers',
|
528
|
+
[
|
529
|
+
check('member').notEmpty(),
|
530
|
+
],
|
531
|
+
function (req, res) {
|
532
|
+
winston.info("followers add", req.body);
|
533
|
+
|
534
|
+
const errors = validationResult(req);
|
535
|
+
if (!errors.isEmpty()) {
|
536
|
+
return res.status(422).json({ errors: errors.array() });
|
537
|
+
}
|
538
|
+
|
539
|
+
//addParticipantByRequestId(request_id, id_project, member)
|
540
|
+
return requestService.addFollowerByRequestId(req.params.requestid, req.projectid, req.body.member ).then(function(updatedRequest) {
|
541
|
+
|
542
|
+
winston.verbose("participant added", updatedRequest);
|
543
|
+
|
544
|
+
return res.json(updatedRequest);
|
545
|
+
});
|
546
|
+
|
547
|
+
});
|
548
|
+
|
549
|
+
|
550
|
+
router.put('/:requestid/followers', function (req, res) {
|
551
|
+
winston.debug("req.body", req.body);
|
552
|
+
|
553
|
+
var followers = [];
|
554
|
+
req.body.forEach(function(follower,index) {
|
555
|
+
followers.push(follower);
|
556
|
+
});
|
557
|
+
winston.debug("var followers", followers);
|
558
|
+
|
559
|
+
// setFollowersByRequestId(request_id, id_project, newfollowers)
|
560
|
+
return requestService.setFollowersByRequestId(req.params.requestid, req.projectid, followers ).then(function(updatedRequest) {
|
561
|
+
|
562
|
+
winston.debug("followers set", updatedRequest);
|
563
|
+
|
564
|
+
return res.json(updatedRequest);
|
565
|
+
});
|
566
|
+
|
567
|
+
});
|
568
|
+
|
569
|
+
router.delete('/:requestid/followers/:followerid', function (req, res) {
|
570
|
+
winston.debug(req.body);
|
571
|
+
|
572
|
+
//removeFollowerByRequestId(request_id, id_project, member)
|
573
|
+
return requestService.removeFollowerByRequestId(req.params.requestid, req.projectid, req.params.followerid ).then(function(updatedRequest) {
|
574
|
+
|
575
|
+
winston.verbose("follower removed", updatedRequest);
|
576
|
+
|
577
|
+
return res.json(updatedRequest);
|
578
|
+
});
|
579
|
+
|
580
|
+
|
581
|
+
});
|
582
|
+
|
583
|
+
|
584
|
+
|
585
|
+
|
586
|
+
|
587
|
+
|
521
588
|
// TODO make a synchronous chat21 version (with query parameter?) with request.support_group.created
|
522
589
|
router.delete('/:requestid', function (req, res) {
|
523
590
|
|
@@ -709,6 +776,7 @@ router.get('/', function (req, res, next) {
|
|
709
776
|
* THE SEARCH FOR DATE INTERVAL OF THE HISTORY OF REQUESTS ARE DISABLED AND
|
710
777
|
* ARE DISPLAYED ONLY THE REQUESTS OF THE LAST 14 DAYS
|
711
778
|
*/
|
779
|
+
//secondo me qui manca un parentesi tonda per gli or
|
712
780
|
if ( history_search === true && req.project && req.project.profile && (req.project.profile.type === 'free' && req.project.trialExpired === true) || (req.project.profile.type === 'payment' && req.project.isActiveSubscription === false)) {
|
713
781
|
|
714
782
|
|
@@ -813,7 +881,14 @@ router.get('/', function (req, res, next) {
|
|
813
881
|
}
|
814
882
|
|
815
883
|
if (req.query.channel) {
|
816
|
-
|
884
|
+
if (req.query.channel === "offline") {
|
885
|
+
query["channel.name"] = {"$in" : ["email", "form"]}
|
886
|
+
} else if (req.query.channel === "online") {
|
887
|
+
query["channel.name"] = {"$nin" : ["email", "form"]}
|
888
|
+
} else {
|
889
|
+
query["channel.name"] = req.query.channel
|
890
|
+
}
|
891
|
+
|
817
892
|
winston.debug('REQUEST ROUTE - QUERY channel', query.channel);
|
818
893
|
}
|
819
894
|
|
@@ -901,6 +976,7 @@ router.get('/', function (req, res, next) {
|
|
901
976
|
count: results[1],
|
902
977
|
requests: results[0]
|
903
978
|
};
|
979
|
+
winston.debug('REQUEST ROUTE - objectToReturn ');
|
904
980
|
winston.debug('REQUEST ROUTE - objectToReturn ', objectToReturn);
|
905
981
|
return res.json(objectToReturn);
|
906
982
|
|
@@ -1025,7 +1101,11 @@ router.get('/csv', function (req, res, next) {
|
|
1025
1101
|
winston.debug("sort query", sortQuery);
|
1026
1102
|
|
1027
1103
|
|
1104
|
+
// TODO ORDER BY SCORE
|
1105
|
+
// return Faq.find(query, {score: { $meta: "textScore" } })
|
1106
|
+
// .sort( { score: { $meta: "textScore" } } ) //https://docs.mongodb.com/manual/reference/operator/query/text/#sort-by-text-search-score
|
1028
1107
|
|
1108
|
+
// aggiungi filtro per data marco
|
1029
1109
|
|
1030
1110
|
winston.debug('REQUEST ROUTE - REQUEST FIND ', query)
|
1031
1111
|
return Request.find(query, '-transcript -status -__v').
|
@@ -1126,14 +1206,6 @@ router.get('/csv', function (req, res, next) {
|
|
1126
1206
|
|
1127
1207
|
winston.debug('REQUEST ROUTE - REQUEST AS CSV', requests);
|
1128
1208
|
|
1129
|
-
// return Request.count(query, function(err, totalRowCount) {
|
1130
|
-
|
1131
|
-
// var objectToReturn = {
|
1132
|
-
// perPage: limit,
|
1133
|
-
// count: totalRowCount,
|
1134
|
-
// requests : requests
|
1135
|
-
// };
|
1136
|
-
// console.log('REQUEST ROUTE - objectToReturn ', objectToReturn);
|
1137
1209
|
return res.csv(requests, true);
|
1138
1210
|
});
|
1139
1211
|
|
package/routes/user-request.js
CHANGED
@@ -59,8 +59,9 @@ router.patch('/:requestid/rating', function (req, res) {
|
|
59
59
|
router.put('/:requestid/closeg', function (req, res) {
|
60
60
|
winston.debug(req.body);
|
61
61
|
|
62
|
-
|
63
|
-
|
62
|
+
// closeRequestByRequestId(request_id, id_project, skipStatsUpdate, notify, closed_by)
|
63
|
+
const closed_by = req.user.id;
|
64
|
+
return requestService.closeRequestByRequestId(req.params.requestid, req.projectid, false, true, closed_by).then(function(closedRequest) {
|
64
65
|
|
65
66
|
winston.verbose("request closed", closedRequest);
|
66
67
|
|
package/routes/widget.js
CHANGED
@@ -96,6 +96,7 @@ router.get('/', function(req, res, next) {
|
|
96
96
|
winston.debug("req.project:" + JSON.stringify(req.project));
|
97
97
|
|
98
98
|
if (req.project) {
|
99
|
+
//secondo me qui manca un parentesi tonda per gli or
|
99
100
|
if (req.project.profile && (req.project.profile.type === 'free' && req.project.trialExpired === true) || (req.project.profile.type === 'payment' && req.project.isActiveSubscription === false)) {
|
100
101
|
query.default = true;
|
101
102
|
}
|
@@ -129,7 +130,21 @@ router.get('/', function(req, res, next) {
|
|
129
130
|
return reject({err: "Project Not Found"});
|
130
131
|
}
|
131
132
|
|
132
|
-
|
133
|
+
|
134
|
+
winston.debug("project", project);
|
135
|
+
|
136
|
+
// ProjectSetter project not found with id: 62d8cf8b2b10b30013bb9b99
|
137
|
+
// Informazioni
|
138
|
+
// 2022-07-27 14:32:14.772 CESTerror: Error getting widget. {"err":"Project Not Found"}
|
139
|
+
// Informazioni
|
140
|
+
// 2022-07-27 14:32:14.778 CESTerror: uncaughtException: Cannot read property 'profile' of null
|
141
|
+
// Informazioni
|
142
|
+
// 2022-07-27 14:32:14.778 CESTTypeError: Cannot read property 'profile' of null at /usr/src/app/routes/widget.js:132:124 at /usr/src/app/node_modules/mongoose/lib/model.js:5074:18 at processTicksAndRejections (internal/process/task_queues.js:79:11) {"date":"Wed Jul 27 2022 12:32:14 GMT+0000 (Coordinated Universal Time)","error":{},"exception":true,"os":{"loadavg":[0.26,0.51,0.58],"uptime":1028128},"process":{"argv":["/usr/local/bin/node","/usr/src/app/bin/www"],"cwd":"/usr/src/app","execPath":"/usr/local/bin/node","gid":0,"memoryUsage":{"arrayBuffers":128833077,"external":130521753,"heapTotal":110641152,"heapUsed":85605912,"rss":310054912},"pid":26,"uid":0,"version":"v12.22.12"},"stack":"TypeError: Cannot read property 'profile' of null\n at /usr/src/app/routes/widget.js:132:124\n at /usr/src/app/node_modules/mongoose/lib/model.js:5074:18\n at processTicksAndRejections (internal/process/task_queues.js:79:11)","trace":[{"column":124,"file":"/usr/src/app/routes/widget.js","function":null,"line":132,"method":null,"native":false},{"column":18,"file":"/usr/src/app/node_modules/mongoose/lib/model.js","function":null,"line":5074,"method":null,"native":false},{"column":11,"file":"internal/process/task_queues.js","function":"processTicksAndRejections","line":79,"method":null,"native":false}]}
|
143
|
+
|
144
|
+
// console.log("project!=null",project!=null);
|
145
|
+
// console.log("project.profile",project.profile);
|
146
|
+
//secondo me qui manca un parentesi tonda per gli or
|
147
|
+
if (project && project.profile && ((project.profile.type === 'free' && project.trialExpired === true) || (project.profile.type === 'payment' && project.isActiveSubscription === false))) {
|
133
148
|
winston.debug('getProject remove poweredBy tag', project);
|
134
149
|
project.widget.poweredBy = undefined;
|
135
150
|
project.widget.baloonImage = undefined;
|
package/routes/widgetLoader.js
CHANGED
@@ -12,9 +12,40 @@ router.get('/load', function(req, res) {
|
|
12
12
|
winston.debug(query);
|
13
13
|
// TODO chech if query is null
|
14
14
|
res.redirect(widgetLocation+'?'+query);
|
15
|
+
|
15
16
|
});
|
16
17
|
|
17
18
|
|
19
|
+
router.get('/v5/:project_id', function(req, res) {
|
20
|
+
|
21
|
+
var project_id = req.params.project_id;
|
22
|
+
winston.debug("project_id: " + project_id);
|
23
|
+
|
24
|
+
res.type('.js');
|
25
|
+
|
26
|
+
var js = `
|
27
|
+
window.tiledeskSettings=
|
28
|
+
{
|
29
|
+
projectid: "${project_id}"
|
30
|
+
};
|
31
|
+
(function(d, s, id) {
|
32
|
+
var w=window; var d=document; var i=function(){i.c(arguments);};
|
33
|
+
i.q=[]; i.c=function(args){i.q.push(args);}; w.Tiledesk=i;
|
34
|
+
var js, fjs=d.getElementsByTagName(s)[0];
|
35
|
+
if (d.getElementById(id)) return;
|
36
|
+
js=d.createElement(s);
|
37
|
+
js.id=id; js.async=true; js.src="${widgetLocation}/launch.js";
|
38
|
+
fjs.parentNode.insertBefore(js, fjs);
|
39
|
+
}(document,'script','tiledesk-jssdk'));
|
40
|
+
`;
|
41
|
+
|
42
|
+
winston.debug("js: " + js);
|
43
|
+
|
44
|
+
res.send(js);
|
45
|
+
|
46
|
+
});
|
47
|
+
|
48
|
+
|
18
49
|
var widgetTestLocation = process.env.WIDGET_TEST_LOCATION || widgetConfig.testLocation;
|
19
50
|
|
20
51
|
router.get('/test/load', function(req, res) {
|