Fixed Merge Tags #206 #236

This commit is contained in:
witzig 2017-06-02 00:24:26 +02:00
parent 6d39d497ee
commit 466bf225a3
5 changed files with 82 additions and 12 deletions

View file

@ -458,7 +458,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => {
value: Number(valueList[field.column]) || 0,
visible: !!field.visible,
mergeTag: field.key,
mergeValue: Number(valueList[field.column]) || Number(field.defaultValue) || 0,
mergeValue: (Number(valueList[field.column]) || Number(field.defaultValue) || 0).toString(),
['type' + (field.type || '').toString().trim().replace(/(?:^|\-)([a-z])/g, (m, c) => c.toUpperCase())]: true
};
row.push(item);

View file

@ -355,7 +355,7 @@ module.exports.getWithMergeTags = (listId, cid, callback) => {
TIMEZONE: subscription.tz || ''
};
fields.getRow(fieldList, subscription, true, true).forEach(field => {
fields.getRow(fieldList, subscription, false, true).forEach(field => {
if (field.mergeTag) {
subscription.mergeTags[field.mergeTag] = field.mergeValue || '';
}

View file

@ -200,17 +200,23 @@ function formatMessage(serviceUrl, campaign, list, subscription, message, filter
return links[key];
}
if (subscription.mergeTags.hasOwnProperty(key)) {
return isHTML ? he.encode((subscription.mergeTags[key] || ''), {
let value = (subscription.mergeTags[key] || '').toString();
// FIXME https://github.com/Mailtrain-org/mailtrain/issues/192
return isHTML ? he.encode(value, {
useNamedReferences: true
}) : subscription.mergeTags[key];
}) : value;
}
return false;
};
return message.replace(/\[([a-z0-9_]+)(?:\/([^\]]+))?\]/ig, (match, identifier, fallback) => {
identifier = identifier.toUpperCase();
let value = (getValue(identifier) || fallback || '').trim();
return value ? filter(value) : match;
let value = getValue(identifier);
if (value === false) {
return match;
}
value = (value || fallback || '').trim();
return filter(value);
});
}
@ -310,4 +316,3 @@ function mergeTemplateIntoLayout(template, layout, callback) {
return done(template, layout);
}
}

View file

@ -332,7 +332,7 @@ function formatMessage(message, callback) {
};
let encryptionKeys = [];
fields.getRow(fieldList, message.subscription, true, true).forEach(field => {
fields.getRow(fieldList, message.subscription, false, true).forEach(field => {
if (field.mergeTag) {
message.subscription.mergeTags[field.mergeTag] = field.mergeValue || '';
}

File diff suppressed because one or more lines are too long