mailtrain/lib/editor-helpers.js

80 lines
2.3 KiB
JavaScript
Raw Normal View History

2017-03-10 08:59:25 +00:00
'use strict';
let _ = require('../lib/translate')._;
let helpers = require('../lib/helpers');
let templates = require('../lib/models/templates');
let campaigns = require('../lib/models/campaigns');
module.exports = {
2017-05-03 21:13:05 +00:00
getResource,
getMergeTagsForResource
2017-03-10 08:59:25 +00:00
};
function getResource(type, id, callback) {
if (type === 'template') {
templates.get(id, (err, template) => {
if (err || !template) {
return callback(err && err.message || err || _('Could not find template with specified ID'));
}
getMergeTagsForResource(template, (err, mergeTags) => {
if (err) {
return callback(err.message || err);
}
template.mergeTags = mergeTags;
return callback(null, template);
});
});
} else if (type === 'campaign') {
campaigns.get(id, false, (err, campaign) => {
if (err || !campaign) {
return callback(err && err.message || err || _('Could not find campaign with specified ID'));
}
getMergeTagsForResource(campaign, (err, mergeTags) => {
if (err) {
return callback(err.message || err);
}
campaign.mergeTags = mergeTags;
return callback(null, campaign);
});
});
} else {
return callback(_('Invalid resource type'));
}
}
function getMergeTagsForResource(resource, callback) {
helpers.getDefaultMergeTags((err, defaultMergeTags) => {
if (err) {
return callback(err.message || err);
}
2017-05-03 21:13:05 +00:00
if (!Number(resource.list)) {
2017-03-10 08:59:25 +00:00
return callback(null, defaultMergeTags);
}
helpers.getListMergeTags(resource.list, (err, listMergeTags) => {
if (err) {
return callback(err.message || err);
}
2017-05-03 21:13:05 +00:00
if (resource.type !== 2) {
return callback(null, defaultMergeTags.concat(listMergeTags));
}
helpers.getRSSMergeTags((err, rssMergeTags) => {
if (err) {
return callback(err.message || err);
}
callback(null, defaultMergeTags.concat(listMergeTags, rssMergeTags));
});
2017-03-10 08:59:25 +00:00
});
});
}