forked from extern/egroupware
reverting r52412, as it breaks not validating not send values, sending empty array for nothing selected in selectbox instead of (not submitted) null value
This commit is contained in:
parent
4ccc9b2cdb
commit
d82f65e95e
@ -520,7 +520,7 @@ class etemplate_new extends etemplate_widget_template
|
|||||||
{
|
{
|
||||||
if (!is_array($v) || !isset($old[$k]) || // no array or a new array
|
if (!is_array($v) || !isset($old[$k]) || // no array or a new array
|
||||||
isset($v[0]) && !is_array($v[0]) && isset($v[count($v)-1]) || // or no associative array, eg. selecting multiple accounts
|
isset($v[0]) && !is_array($v[0]) && isset($v[count($v)-1]) || // or no associative array, eg. selecting multiple accounts
|
||||||
is_array($v) && count($v) == 0 && is_array($old[$k])) // Empty array replacing non-empty
|
is_array($v) && count($v) == 0) // Empty array replacing non-empty
|
||||||
{
|
{
|
||||||
$old[$k] = $v;
|
$old[$k] = $v;
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ class etemplate_widget_menupopup extends etemplate_widget
|
|||||||
// typeOptions thinks # of rows is the first thing in options
|
// typeOptions thinks # of rows is the first thing in options
|
||||||
($this->attrs['rows'] && strpos($this->attrs['options'], $this->attrs['rows']) !== 0 ? $this->attrs['rows'].','.$this->attrs['options'] : $this->attrs['options']));
|
($this->attrs['rows'] && strpos($this->attrs['options'], $this->attrs['rows']) !== 0 ? $this->attrs['rows'].','.$this->attrs['options'] : $this->attrs['options']));
|
||||||
$allowed = array_merge($allowed,array_keys($type_options));
|
$allowed = array_merge($allowed,array_keys($type_options));
|
||||||
|
|
||||||
if (!$this->attrs['multiple'] || !($this->attrs['options'] > 1)) $allowed[] = '';
|
if (!$this->attrs['multiple'] || !($this->attrs['options'] > 1)) $allowed[] = '';
|
||||||
|
|
||||||
foreach((array) $value as $val)
|
foreach((array) $value as $val)
|
||||||
@ -213,9 +213,11 @@ class etemplate_widget_menupopup extends etemplate_widget
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (isset($value))
|
||||||
self::set_array($validated, $form_name, $value);
|
{
|
||||||
|
self::set_array($validated, $form_name, $value);
|
||||||
//error_log(__METHOD__."() $form_name: ".array2string($value_in).' --> '.array2string($value).', allowed='.array2string($allowed));
|
//error_log(__METHOD__."() $form_name: ".array2string($value_in).' --> '.array2string($value).', allowed='.array2string($allowed));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -478,7 +480,7 @@ class etemplate_widget_menupopup extends etemplate_widget
|
|||||||
{
|
{
|
||||||
$field = self::expand_name($field, 0, 0,'','',self::$cont);
|
$field = self::expand_name($field, 0, 0,'','',self::$cont);
|
||||||
}
|
}
|
||||||
|
|
||||||
list($rows,$type,$type2,$type3,$type4,$type5) = $legacy_options;
|
list($rows,$type,$type2,$type3,$type4,$type5) = $legacy_options;
|
||||||
$no_lang = false;
|
$no_lang = false;
|
||||||
$options = array();
|
$options = array();
|
||||||
|
@ -159,7 +159,7 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput, et2_IPrin
|
|||||||
|
|
||||||
// Directly set current col_filters from settings
|
// Directly set current col_filters from settings
|
||||||
jQuery.extend(this.activeFilters.col_filter, this.options.settings.col_filter);
|
jQuery.extend(this.activeFilters.col_filter, this.options.settings.col_filter);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Process selected custom fields here, so that the settings are correctly
|
Process selected custom fields here, so that the settings are correctly
|
||||||
set before the row template is parsed
|
set before the row template is parsed
|
||||||
@ -1879,13 +1879,13 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput, et2_IPrin
|
|||||||
beforePrint: function() {
|
beforePrint: function() {
|
||||||
// Add the class, if needed
|
// Add the class, if needed
|
||||||
this.div.addClass('print');
|
this.div.addClass('print');
|
||||||
|
|
||||||
// Trigger resize, so we can fit on a page
|
// Trigger resize, so we can fit on a page
|
||||||
this.dynheight.outerNode.css('max-width',this.div.css('max-width'));
|
this.dynheight.outerNode.css('max-width',this.div.css('max-width'));
|
||||||
this.resize();
|
this.resize();
|
||||||
// Reset height to auto (after width resize) so there's no restrictions
|
// Reset height to auto (after width resize) so there's no restrictions
|
||||||
this.dynheight.innerNode.css('height', 'auto');
|
this.dynheight.innerNode.css('height', 'auto');
|
||||||
|
|
||||||
// Check for rows that aren't loaded yet, or lots of rows
|
// Check for rows that aren't loaded yet, or lots of rows
|
||||||
var range = this.controller._grid.getIndexRange();
|
var range = this.controller._grid.getIndexRange();
|
||||||
this.old_height = this.controller._grid._scrollHeight;
|
this.old_height = this.controller._grid._scrollHeight;
|
||||||
@ -1972,11 +1972,11 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput, et2_IPrin
|
|||||||
$j('.egwGridView_scrollarea',this.div).css('overflow-y','hidden');
|
$j('.egwGridView_scrollarea',this.div).css('overflow-y','hidden');
|
||||||
// Show it all
|
// Show it all
|
||||||
$j('.egwGridView_scrollarea',this.div).css('height','auto');
|
$j('.egwGridView_scrollarea',this.div).css('height','auto');
|
||||||
|
|
||||||
// Grid needs to redraw before it can be printed, so wait
|
// Grid needs to redraw before it can be printed, so wait
|
||||||
window.setTimeout(jQuery.proxy(function() {
|
window.setTimeout(jQuery.proxy(function() {
|
||||||
dialog.destroy();
|
dialog.destroy();
|
||||||
|
|
||||||
// Should be OK to print now
|
// Should be OK to print now
|
||||||
defer.resolve();
|
defer.resolve();
|
||||||
},nm),ET2_GRID_INVALIDATE_TIMEOUT);
|
},nm),ET2_GRID_INVALIDATE_TIMEOUT);
|
||||||
@ -1991,7 +1991,7 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput, et2_IPrin
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Don't need more rows, limit to requested and finish
|
// Don't need more rows, limit to requested and finish
|
||||||
|
|
||||||
// Show it all
|
// Show it all
|
||||||
$j('.egwGridView_scrollarea',this.div).css('height','auto');
|
$j('.egwGridView_scrollarea',this.div).css('height','auto');
|
||||||
|
|
||||||
@ -2031,7 +2031,7 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput, et2_IPrin
|
|||||||
* in beforePrint()
|
* in beforePrint()
|
||||||
*/
|
*/
|
||||||
afterPrint: function() {
|
afterPrint: function() {
|
||||||
|
|
||||||
this.div.removeClass('print');
|
this.div.removeClass('print');
|
||||||
|
|
||||||
// Put scrollbar back
|
// Put scrollbar back
|
||||||
@ -2040,7 +2040,7 @@ var et2_nextmatch = et2_DOMWidget.extend([et2_IResizeable, et2_IInput, et2_IPrin
|
|||||||
// Correct size of grid, and trigger resize to fix it
|
// Correct size of grid, and trigger resize to fix it
|
||||||
this.controller._grid.setScrollHeight(this.old_height);
|
this.controller._grid.setScrollHeight(this.old_height);
|
||||||
delete this.old_height;
|
delete this.old_height;
|
||||||
|
|
||||||
// Remove CSS rule hiding extra rows
|
// Remove CSS rule hiding extra rows
|
||||||
if(this.print_row_selector)
|
if(this.print_row_selector)
|
||||||
{
|
{
|
||||||
@ -2394,7 +2394,7 @@ var et2_nextmatch_header_bar = et2_DOMWidget.extend(et2_INextmatchHeader,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Legacy: Add in 'All' option for cat_id, if not provided.
|
// Legacy: Add in 'All' option for cat_id, if not provided.
|
||||||
if(name == 'cat_id' && options != null && (typeof options[''] == 'undefined' || options[0].value != ''))
|
if(name == 'cat_id' && options != null && (typeof options[''] == 'undefined' || typeof options[0] != 'undefined' && options[0].value != ''))
|
||||||
{
|
{
|
||||||
widget_options.empty_label = this.egw().lang('All');
|
widget_options.empty_label = this.egw().lang('All');
|
||||||
}
|
}
|
||||||
|
@ -725,11 +725,12 @@ var et2_selectbox = et2_inputWidget.extend(
|
|||||||
var value = [];
|
var value = [];
|
||||||
jQuery("input:checked",this.multiOptions).each(function(){value.push(this.value);});
|
jQuery("input:checked",this.multiOptions).each(function(){value.push(this.value);});
|
||||||
// we need to return null for no value instead of empty array, which gets overwritten by preserved value on server-side
|
// we need to return null for no value instead of empty array, which gets overwritten by preserved value on server-side
|
||||||
this.value = value.length > 0 ? value : null;
|
this.value = value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.value = this._super.apply(this, arguments);
|
this.value = this._super.apply(this, arguments);
|
||||||
|
if (this.value === null) this.value = []; // do NOT return null, as it does not get transmitted to server
|
||||||
}
|
}
|
||||||
return this.value;
|
return this.value;
|
||||||
},
|
},
|
||||||
@ -876,7 +877,7 @@ jQuery.extend(et2_selectbox,
|
|||||||
}
|
}
|
||||||
return content_options;
|
return content_options;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Some static options, no need to transfer them over and over.
|
* Some static options, no need to transfer them over and over.
|
||||||
* We still need the same thing on the server side to validate, so they
|
* We still need the same thing on the server side to validate, so they
|
||||||
@ -1028,7 +1029,7 @@ jQuery.extend(et2_selectbox,
|
|||||||
* options from the server once, then keep them to use if they're needed again.
|
* options from the server once, then keep them to use if they're needed again.
|
||||||
* We use the options string to keep the different possibilites (eg. categories
|
* We use the options string to keep the different possibilites (eg. categories
|
||||||
* for different apps) seperate.
|
* for different apps) seperate.
|
||||||
*
|
*
|
||||||
* @param {et2_selectbox} widget Selectbox we're looking at
|
* @param {et2_selectbox} widget Selectbox we're looking at
|
||||||
* @param {string} options_string
|
* @param {string} options_string
|
||||||
* @param {Object} attrs Widget attributes (not yet fully set)
|
* @param {Object} attrs Widget attributes (not yet fully set)
|
||||||
|
Loading…
Reference in New Issue
Block a user