From 5437b2000b52a3e1833768e0df1b9faa8a934ce4 Mon Sep 17 00:00:00 2001 From: gregorybesson Date: Wed, 11 Jan 2017 05:06:52 -0500 Subject: [PATCH] fix: When a select input with max-length = 1 was created in precontrib, the result was improperly saved as an array --- src/cli/cms/editor/handlebars/sourceAttr.js | 5 ----- .../abejs/scripts/modules/EditorSave.js | 2 +- .../abejs/scripts/modules/FormCreate.js | 20 ++++++++++++++++--- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/cli/cms/editor/handlebars/sourceAttr.js b/src/cli/cms/editor/handlebars/sourceAttr.js index e272145a..d3df3769 100755 --- a/src/cli/cms/editor/handlebars/sourceAttr.js +++ b/src/cli/cms/editor/handlebars/sourceAttr.js @@ -18,11 +18,6 @@ export default function sourceAttr(obj, params) { values = [params.value] } - // if (params.key == "colors.single") { - // console.log('* * * * * * * * * * * * * * * * * * * * * * * * * * * * *') - // console.log('params', params) - // } - Array.prototype.forEach.call(values, (pValue) => { if (isSelected(pValue, displayName, str)) { selected = 'selected' diff --git a/src/server/public/abejs/scripts/modules/EditorSave.js b/src/server/public/abejs/scripts/modules/EditorSave.js index 4226ead7..80804d08 100755 --- a/src/server/public/abejs/scripts/modules/EditorSave.js +++ b/src/server/public/abejs/scripts/modules/EditorSave.js @@ -120,7 +120,7 @@ export default class EditorSave { } else if (input.value.indexOf('{') > -1) { value = JSON.parse(input.value) } else { - value = input.value //.replace(/\"/g, '\"') + '' + value = input.value } setObjByString(this._json.data, dataId, value) } diff --git a/src/server/public/abejs/scripts/modules/FormCreate.js b/src/server/public/abejs/scripts/modules/FormCreate.js index d9196c57..7a5ba34c 100755 --- a/src/server/public/abejs/scripts/modules/FormCreate.js +++ b/src/server/public/abejs/scripts/modules/FormCreate.js @@ -117,8 +117,22 @@ export default class FormCreate { var autocomplete = input.getAttribute('data-autocomplete') == 'true' ? true : false var required = input.getAttribute('data-required') == 'true' ? true : false var value = input.value - - if (autocomplete) { + var maxlength = input.getAttribute('data-maxlength') + + if (input.nodeName === 'SELECT' && maxlength != "1") { + var checked = input.querySelectorAll('option:checked') + value = [] + Array.prototype.forEach.call(checked, (check) => { + if(check.value !== '') { + if(check.value.indexOf('{') > -1 || check.value.indexOf('[') > -1) { + value.push(JSON.parse(check.value)) + }else { + value.push(check.value) + } + } + }) + setObjByString(values, id, value); + } else if (autocomplete) { var results = input.parentNode.querySelectorAll('.autocomplete-result') values[id] = [] var mergedValues = [] @@ -142,7 +156,7 @@ export default class FormCreate { if (value.indexOf('{') > -1) { try { var jsonValue = JSON.parse(value) - setObjByString(values, id, [jsonValue]) + setObjByString(values, id, jsonValue) if (required && values[id].length == 0) { isValid = false