diff --git a/lib/models/fields.js b/lib/models/fields.js index a35c1c16..1b3dbe2b 100644 --- a/lib/models/fields.js +++ b/lib/models/fields.js @@ -9,7 +9,7 @@ let Handlebars = require('handlebars'); let _ = require('../translate')._; let util = require('util'); -let allowedKeys = ['name', 'key', 'default_value', 'group', 'group_template', 'visible']; +let allowedKeys = ['name', 'description', 'key', 'default_value', 'group', 'group_template', 'visible']; let allowedTypes; module.exports.grouped = ['radio', 'checkbox', 'dropdown']; @@ -133,10 +133,11 @@ module.exports.create = (listId, field, callback) => { field.group = null; } + field.description = (field.description || '').toString().trim() || null; field.defaultValue = (field.defaultValue || '').toString().trim() || null; field.groupTemplate = (field.groupTemplate || '').toString().trim() || null; - addCustomField(listId, field.name, field.defaultValue, field.type, field.group, field.groupTemplate, field.visible, callback); + addCustomField(listId, field.name, field.description, field.defaultValue, field.type, field.group, field.groupTemplate, field.visible, callback); }; module.exports.update = (id, updates, callback) => { @@ -157,6 +158,7 @@ module.exports.update = (id, updates, callback) => { updates.key = slugify(updates.key, '_').toUpperCase(); } + updates.description = (updates.description || '').toString().trim() || null; updates.defaultValue = (updates.defaultValue || '').toString().trim() || null; updates.groupTemplate = (updates.groupTemplate || '').toString().trim() || null; @@ -277,7 +279,7 @@ module.exports.delete = (fieldId, callback) => { }); }; -function addCustomField(listId, name, defaultValue, type, group, groupTemplate, visible, callback) { +function addCustomField(listId, name, description, defaultValue, type, group, groupTemplate, visible, callback) { type = (type || '').toString().trim().toLowerCase(); group = Number(group) || null; listId = Number(listId) || 0; @@ -314,8 +316,8 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate, column = ('custom_' + slugify(name, '_') + '_' + shortid.generate()).toLowerCase().replace(/[^a-z0-9_]/g, ''); } - let query = 'INSERT INTO custom_fields (`list`, `name`, `key`,`default_value`, `type`, `group`, `group_template`, `column`, `visible`) VALUES(?,?,?,?,?,?,?,?,?)'; - connection.query(query, [listId, name, key, defaultValue, type, group, groupTemplate, column, visible ? 1 : 0], (err, result) => { + let query = 'INSERT INTO custom_fields (`list`, `name`, `description`, `key`,`default_value`, `type`, `group`, `group_template`, `column`, `visible`) VALUES(?,?,?,?,?,?,?,?,?,?)'; + connection.query(query, [listId, name, description, key, defaultValue, type, group, groupTemplate, column, visible ? 1 : 0], (err, result) => { if (err) { connection.release(); @@ -409,6 +411,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { id: field.id, type: field.type, name: field.name, + description: field.description, column: field.column, value: (valueList[field.column] || '').toString().trim(), visible: !!field.visible, @@ -439,6 +442,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { id: field.id, type: field.type, name: field.name, + description: field.description, column: field.column, value: (valueList[field.column] || '').toString().trim(), visible: !!field.visible, @@ -455,6 +459,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { id: field.id, type: field.type, name: field.name, + description: field.description, column: field.column, value: Number(valueList[field.column]) || 0, visible: !!field.visible, @@ -474,6 +479,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { id: field.id, type: field.type, name: field.name, + description: field.description, visible: !!field.visible, key: 'group-g' + field.id, mergeTag: field.key, @@ -495,6 +501,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { return { type: subField.type, name: subField.name, + description: subField.description, column: subField.column, value: valueList[subField.column] ? 1 : 0, visible: !!subField.visible, @@ -572,6 +579,7 @@ module.exports.getRow = (fieldList, values, useDate, showAll, onlyExisting) => { id: field.id, type: field.type, name: field.name, + description: field.description, column: field.column, value: useDate ? value : formatted, visible: !!field.visible, diff --git a/meta.json b/meta.json index 5d18c61b..f48d12cd 100644 --- a/meta.json +++ b/meta.json @@ -1,3 +1,3 @@ { - "schemaVersion": 33 + "schemaVersion": 34 } diff --git a/routes/api.js b/routes/api.js index 1e4fb70d..431f7636 100644 --- a/routes/api.js +++ b/routes/api.js @@ -419,6 +419,7 @@ router.post('/field/:listId', (req, res) => { let field = { name: (input.NAME || '').toString().trim(), + description: (input.DESCRIPTION || '').toString().trim(), defaultValue: (input.DEFAULT || '').toString().trim() || null, type: (input.TYPE || '').toString().toLowerCase().trim(), group: Number(input.GROUP) || null, diff --git a/setup/sql/upgrade-00034.sql b/setup/sql/upgrade-00034.sql new file mode 100644 index 00000000..64941105 --- /dev/null +++ b/setup/sql/upgrade-00034.sql @@ -0,0 +1,11 @@ +# Header section +# Define incrementing schema version number +SET @schema_version = '34'; + +# Add template field for group elements +ALTER TABLE `custom_fields` ADD COLUMN `description` text AFTER `name`; + +# Footer section +LOCK TABLES `settings` WRITE; +INSERT INTO `settings` (`key`, `value`) VALUES('db_schema_version', @schema_version) ON DUPLICATE KEY UPDATE `value`=@schema_version; +UNLOCK TABLES; diff --git a/views/lists/fields/create.hbs b/views/lists/fields/create.hbs index dddeab85..8ebadd69 100644 --- a/views/lists/fields/create.hbs +++ b/views/lists/fields/create.hbs @@ -19,6 +19,13 @@ +
+ +
+ +
+
+
diff --git a/views/lists/fields/edit.hbs b/views/lists/fields/edit.hbs index c59b3484..f9135111 100644 --- a/views/lists/fields/edit.hbs +++ b/views/lists/fields/edit.hbs @@ -26,6 +26,13 @@
+
+ +
+ +
+
+
diff --git a/views/subscription/partials/subscription-custom-fields.hbs b/views/subscription/partials/subscription-custom-fields.hbs index 99ac99c4..f63a1b80 100644 --- a/views/subscription/partials/subscription-custom-fields.hbs +++ b/views/subscription/partials/subscription-custom-fields.hbs @@ -134,9 +134,12 @@ {{#each options}} +

+ {{description}} +

{{/each}}
{{/if}}