From: <ral...@us...> - 2014-06-30 19:35:02
|
Author: ralfbecker Date: Mon Jun 30 21:34:53 2014 New Revision: 47450 URL: http://svn.stylite.de/viewvc/egroupware?rev=47450&view=rev Log: fixed not working custom fields of type radio Modified: trunk/etemplate/inc/class.etemplate_widget_checkbox.inc.php trunk/etemplate/inc/class.etemplate_widget_customfields.inc.php trunk/etemplate/js/et2_widget_radiobox.js Modified: trunk/etemplate/inc/class.etemplate_widget_checkbox.inc.php URL: http://svn.stylite.de/viewvc/egroupware/trunk/etemplate/inc/class.etemplate_widget_checkbox.inc.php?rev=47450&r1=47449&r2=47450&view=diff ============================================================================== --- trunk/etemplate/inc/class.etemplate_widget_checkbox.inc.php (original) +++ trunk/etemplate/inc/class.etemplate_widget_checkbox.inc.php Mon Jun 30 21:34:53 2014 @@ -58,7 +58,8 @@ { self::set_validation_error($form_name,lang('Field must not be empty !!!'),''); } - $value_attr = $this->type == 'radio' ? 'set_value' : 'selected_value'; + $type = $this->type ? $this->type : $this->attrs['type']; + $value_attr = $type == 'radio' ? 'set_value' : 'selected_value'; // defaults for set and unset values if (!$this->attrs[$value_attr] && !$this->attrs['unselected_value']) { @@ -71,7 +72,19 @@ $selected_value = self::expand_name($this->attrs[$value_attr], $expand['c'], $expand['row'], $expand['c_'], $expand['row_'],$expand['cont']); $unselected_value = self::expand_name($this->attrs['unselected_value'], $expand['c'], $expand['row'], $expand['c_'], $expand['row_'],$expand['cont']); } - if (in_array((string)$selected_value, (array)$value)) + if ($type == 'radio') + { + $options = etemplate_widget_menupopup::selOptions($form_name, true); + if (in_array($value, $options)) + { + $valid = $value; + } + elseif (!isset($valid)) + { + $valid = ''; // do not overwrite value of an other radio-button of the same group (identical name)! + } + } + elseif (in_array((string)$selected_value, (array)$value)) { if ($multiple) { @@ -82,10 +95,6 @@ { $valid = $selected_value; } - } - elseif ($this->type == 'radio') - { - if (!isset($valid)) $valid = ''; // do not overwrite value of an other radio-button of the same group (identical name)! } else // if checkbox is not checked, html returns nothing: eTemplate returns unselected_value (default false) { Modified: trunk/etemplate/inc/class.etemplate_widget_customfields.inc.php URL: http://svn.stylite.de/viewvc/egroupware/trunk/etemplate/inc/class.etemplate_widget_customfields.inc.php?rev=47450&r1=47449&r2=47450&view=diff ============================================================================== --- trunk/etemplate/inc/class.etemplate_widget_customfields.inc.php (original) +++ trunk/etemplate/inc/class.etemplate_widget_customfields.inc.php Mon Jun 30 21:34:53 2014 @@ -306,6 +306,8 @@ if (!$this->is_readonly($cname, $form_name)) { $value_in = self::get_array($content, $form_name); + // if we have no id / use self::GLOBAL_ID, we have to set $value_in in global namespace for regular widgets validation to find + if (!$this->id) $content = array_merge($content, $value_in); //error_log(__METHOD__."($cname, ...) form_name=$form_name, use-private={$this->attrs['use-private']}, value_in=".array2string($value_in)); $customfields =& $this->getElementAttribute(self::GLOBAL_VALS, 'customfields'); if(is_array($value_in)) Modified: trunk/etemplate/js/et2_widget_radiobox.js URL: http://svn.stylite.de/viewvc/egroupware/trunk/etemplate/js/et2_widget_radiobox.js?rev=47450&r1=47449&r2=47450&view=diff ============================================================================== --- trunk/etemplate/js/et2_widget_radiobox.js (original) +++ trunk/etemplate/js/et2_widget_radiobox.js Mon Jun 30 21:34:53 2014 @@ -318,6 +318,13 @@ * @param {object} _options object with value: label pairs */ set_options: function(_options) { + // Call the destructor of all children + for (var i = this._children.length - 1; i >= 0; i--) + { + this._children[i].free(); + } + this._children = []; + // create radio buttons for each option for(var key in _options) { var attrs = { |