forked from extern/egroupware
Get unavailable cats working again
This commit is contained in:
parent
f404926e0e
commit
b1c4c54adc
@ -184,10 +184,34 @@ class Select extends Etemplate\Widget
|
|||||||
// Add empty as an option, we check for required value later
|
// Add empty as an option, we check for required value later
|
||||||
$allowed[] = '';
|
$allowed[] = '';
|
||||||
|
|
||||||
foreach((array) $value as $val)
|
switch($widget_type)
|
||||||
|
{
|
||||||
|
case 'select-cat':
|
||||||
|
// unavailable cats need to be merged in again
|
||||||
|
// Needs to be done before validation or it will fail as unavailable
|
||||||
|
$unavailable_name = $form_name . self::UNAVAILABLE_CAT_POSTFIX;
|
||||||
|
if(isset(self::$request->preserv[$unavailable_name]))
|
||||||
|
{
|
||||||
|
$allowed = array_merge($allowed, self::$request->preserv[$unavailable_name]);
|
||||||
|
if($this->attrs['multiple'])
|
||||||
|
{
|
||||||
|
$value = array_unique(array_merge((array)$value, (array)self::$request->preserv[$unavailable_name]));
|
||||||
|
}
|
||||||
|
elseif(!$value) // for single cat, we only restore unavailable one, if no other was selected
|
||||||
|
{
|
||||||
|
$value = self::$request->preserv[$unavailable_name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach((array)$value as $val)
|
||||||
{
|
{
|
||||||
// handle empty-label for all widget types
|
// handle empty-label for all widget types
|
||||||
if ((string)$val === '' && in_array('', $allowed)) continue;
|
if((string)$val === '' && in_array('', $allowed))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// no validation, for allowFreeEntries="true"
|
// no validation, for allowFreeEntries="true"
|
||||||
if ($allowFreeEntries)
|
if ($allowFreeEntries)
|
||||||
@ -277,21 +301,7 @@ class Select extends Etemplate\Widget
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'select-cat':
|
|
||||||
// unavailable cats need to be merged in again
|
|
||||||
$unavailable_name = $form_name.self::UNAVAILABLE_CAT_POSTFIX;
|
|
||||||
if (isset(self::$request->preserv[$unavailable_name]))
|
|
||||||
{
|
|
||||||
if ($this->attrs['multiple'])
|
|
||||||
{
|
|
||||||
$value = array_merge($value, (array)self::$request->preserv[$unavailable_name]);
|
|
||||||
}
|
|
||||||
elseif(!$value) // for single cat, we only restore unavailable one, if no other was selected
|
|
||||||
{
|
|
||||||
$value = self::$request->preserv[$unavailable_name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'select-bitwise':
|
case 'select-bitwise':
|
||||||
// Sum up into a single value
|
// Sum up into a single value
|
||||||
$sum = 0;
|
$sum = 0;
|
||||||
@ -412,6 +422,18 @@ class Select extends Etemplate\Widget
|
|||||||
unset(self::$request->sel_options[$options]);
|
unset(self::$request->sel_options[$options]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
switch($type)
|
||||||
|
{
|
||||||
|
case 'et2-select-cat':
|
||||||
|
case 'select-cat':
|
||||||
|
// preserve unavailable cats (eg. private user-cats)
|
||||||
|
$type_options = self::typeOptions(
|
||||||
|
$this,
|
||||||
|
'',
|
||||||
|
$no_lang, $this->attrs['readonly'] ?? false, self::get_array(self::$request->content, $form_name), $form_name
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user