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, value: Number(valueList[field.column]) || 0,
visible: !!field.visible, visible: !!field.visible,
mergeTag: field.key, 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 ['type' + (field.type || '').toString().trim().replace(/(?:^|\-)([a-z])/g, (m, c) => c.toUpperCase())]: true
}; };
row.push(item); row.push(item);

View file

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

View file

@ -200,17 +200,23 @@ function formatMessage(serviceUrl, campaign, list, subscription, message, filter
return links[key]; return links[key];
} }
if (subscription.mergeTags.hasOwnProperty(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 useNamedReferences: true
}) : subscription.mergeTags[key]; }) : value;
} }
return false; return false;
}; };
return message.replace(/\[([a-z0-9_]+)(?:\/([^\]]+))?\]/ig, (match, identifier, fallback) => { return message.replace(/\[([a-z0-9_]+)(?:\/([^\]]+))?\]/ig, (match, identifier, fallback) => {
identifier = identifier.toUpperCase(); identifier = identifier.toUpperCase();
let value = (getValue(identifier) || fallback || '').trim(); let value = getValue(identifier);
return value ? filter(value) : match; 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); return done(template, layout);
} }
} }

View file

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

File diff suppressed because one or more lines are too long