Fix single-field customfields widgets not setting value properly

This commit is contained in:
Nathan Gray 2015-03-31 19:48:46 +00:00
parent 9fc67020cc
commit 1f88ddf303
3 changed files with 14 additions and 7 deletions

View File

@ -63,7 +63,7 @@
<menulist> <menulist>
<menupopup id="${row}[cf_type2]" no_lang="1" multiple="true" empty_label="All"/> <menupopup id="${row}[cf_type2]" no_lang="1" multiple="true" empty_label="All"/>
</menulist> </menulist>
<description id="${row}[cf_name]" /> <description id="${row}[cf_name]" no_lang="1" />
<vbox> <vbox>
<description id="${row}[cf_label]" no_lang="1"/> <description id="${row}[cf_label]" no_lang="1"/>
<description id="${row}[cf_label]"/> <description id="${row}[cf_label]"/>

View File

@ -371,7 +371,7 @@ class etemplate_widget_customfields extends etemplate_widget_transformer
{ {
self::set_validation_error($field,lang('Field must not be empty !!!'),''); self::set_validation_error($field,lang('Field must not be empty !!!'),'');
} }
$field_name = self::form_name($form_name != self::GLOBAL_ID ? $form_name : $cname, $field); $field_name = $this->id[0] == self::$prefix && $customfields[substr($this->id,1)] ? $this->id : self::form_name($form_name != self::GLOBAL_ID ? $form_name : $cname, $field);
$valid =& self::get_array($validated, $field_name, true); $valid =& self::get_array($validated, $field_name, true);
if (is_array($valid)) $valid = implode(',', $valid); if (is_array($valid)) $valid = implode(',', $valid);

View File

@ -287,15 +287,22 @@ var et2_customfields_list = et2_valueWidget.extend([et2_IDetachedDOM, et2_IInput
// Set the value for this element // Set the value for this element
var contentMgr = this.getArrayMgr("content"); var contentMgr = this.getArrayMgr("content");
if (contentMgr != null) { if (contentMgr != null) {
var val = contentMgr.getEntry(this.id); var val = contentMgr.getEntry(this.id);
_attrs["value"] = {}; _attrs["value"] = {};
if (val !== null) if (val !== null)
{ {
// Only set the values that match desired custom fields if(this.id.indexOf(this.prefix) === 0 && data.fields[this.id.replace(this.prefix,'')] === true)
for(var key in val)
{ {
if(key.indexOf(this.prefix) == 0) { _attrs['value'][this.id] = val;
_attrs["value"][key] = val[key]; }
else
{
// Only set the values that match desired custom fields
for(var key in val)
{
if(key.indexOf(this.prefix) == 0) {
_attrs["value"][key] = val[key];
}
} }
} }
//_attrs["value"] = val; //_attrs["value"] = val;