Include campaign links in form fields

This commit is contained in:
Andris Reinman 2016-04-26 20:29:57 +03:00
parent e4c71f4026
commit 43b1f1e319
2 changed files with 20 additions and 9 deletions

View file

@ -15,7 +15,8 @@ module.exports = {
createSlug, createSlug,
updateMenu, updateMenu,
validateEmail, validateEmail,
formatMessage formatMessage,
getMessageLinks
}; };
function toDbKey(key) { function toDbKey(key) {
@ -147,17 +148,23 @@ function validateEmail(address, checkBlocked, callback) {
}); });
} }
function getMessageLinks(serviceUrl, campaign, list, subscription) {
return {
LINK_UNSUBSCRIBE: urllib.resolve(serviceUrl, '/subscription/' + list.cid + '/unsubscribe/' + subscription.cid + '?auto=yes&c=' + campaign.cid),
LINK_PREFERENCES: urllib.resolve(serviceUrl, '/subscription/' + list.cid + '/manage/' + subscription.cid),
LINK_BROWSER: urllib.resolve(serviceUrl, '/archive/' + campaign.cid + '/' + list.cid + '/' + subscription.cid)
};
}
function formatMessage(serviceUrl, campaign, list, subscription, message, filter) { function formatMessage(serviceUrl, campaign, list, subscription, message, filter) {
filter = typeof filter === 'function' ? filter : (str => str); filter = typeof filter === 'function' ? filter : (str => str);
let links = getMessageLinks(serviceUrl, campaign, list, subscription);
let getValue = key => { let getValue = key => {
switch ((key || '').toString().toUpperCase().trim()) { key = (key || '').toString().toUpperCase().trim();
case 'LINK_UNSUBSCRIBE': if (links.hasOwnProperty(key)) {
return urllib.resolve(serviceUrl, '/subscription/' + list.cid + '/unsubscribe/' + subscription.cid + '?auto=yes&c=' + campaign.cid); return links[key];
case 'LINK_PREFERENCES':
return urllib.resolve(serviceUrl, '/subscription/' + list.cid + '/manage/' + subscription.cid);
case 'LINK_BROWSER':
return urllib.resolve(serviceUrl, '/archive/' + campaign.cid + '/' + list.cid + '/' + subscription.cid);
} }
if (subscription.mergeTags.hasOwnProperty(key)) { if (subscription.mergeTags.hasOwnProperty(key)) {
return subscription.mergeTags[key]; return subscription.mergeTags[key];

View file

@ -228,9 +228,13 @@ function formatMessage(message, callback) {
}; };
if (!campaign.template && campaign.templateUrl) { if (!campaign.template && campaign.templateUrl) {
let form = tools.getMessageLinks(configItems.serviceUrl, campaign, list, message.subscription);
Object.keys(message.subscription.mergeTags).forEach(key => {
form[key] = message.subscription.mergeTags[key];
});
request.post({ request.post({
url: campaign.templateUrl, url: campaign.templateUrl,
form: message.subscription.mergeTags form
}, (err, httpResponse, body) => { }, (err, httpResponse, body) => {
if (err) { if (err) {
return callback(err); return callback(err);