diff --git a/lib/models/fields.js b/lib/models/fields.js index b2adeca3..404cdfe2 100644 --- a/lib/models/fields.js +++ b/lib/models/fields.js @@ -469,6 +469,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { case 'radio': case 'checkbox': { + let hasSelectedOption = (field.options || []).some(subField => subField.column && valueList[subField.column]); let item = { id: field.id, type: field.type, @@ -481,8 +482,15 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { groupTemplate: field.groupTemplate, options: (field.options || []).map(subField => { if (onlyExisting && subField.column && !valueList.hasOwnProperty(subField.column)) { - // ignore missing values - return false; + if (hasSelectedOption && field.type !== 'checkbox') { + // Set all radio or dropdown options if a selection for the group is present + } else if (field.type === 'checkbox' && values['originGroupG' + field.id] === 'webform') { + // Set all checkbox options if origin is webform (subscribe, manage, or admin edit) #333 + // Atomic updates via API call or CSV import still possible + } else { + // ignore missing values + return false; + } } return { type: subField.type, diff --git a/views/lists/subscription/edit.hbs b/views/lists/subscription/edit.hbs index 0f4a8b2c..b8c92c24 100644 --- a/views/lists/subscription/edit.hbs +++ b/views/lists/subscription/edit.hbs @@ -130,6 +130,7 @@ {{/if}} {{#if typeCheckbox}} + {{#each options}}