forked from extern/egroupware
Fix some more select attribute / legacy options issues
This commit is contained in:
parent
bc4423498a
commit
4f7b54c6bb
@ -43,7 +43,7 @@ export class Et2SelectCategory extends Et2StaticSelectMixin(Et2Select)
|
|||||||
/**
|
/**
|
||||||
* Include global categories
|
* Include global categories
|
||||||
*/
|
*/
|
||||||
global_categories: {type: Boolean},
|
globalCategories: {type: Boolean},
|
||||||
/**
|
/**
|
||||||
* Show categories from this application. If not set, will be the current application
|
* Show categories from this application. If not set, will be the current application
|
||||||
*/
|
*/
|
||||||
|
@ -311,7 +311,7 @@ export class StaticOptions
|
|||||||
return options;
|
return options;
|
||||||
}
|
}
|
||||||
|
|
||||||
app(widget : Et2SelectWidgets | Et2Select, attrs) : SelectOption[]
|
app(widget : Et2SelectWidgets | Et2Select, attrs) : SelectOption[] | Promise<SelectOption[]>
|
||||||
{
|
{
|
||||||
var options = ',' + (attrs.other || []).join(',');
|
var options = ',' + (attrs.other || []).join(',');
|
||||||
return this.cached_server_side(widget, 'select-app', options);
|
return this.cached_server_side(widget, 'select-app', options);
|
||||||
@ -319,7 +319,7 @@ export class StaticOptions
|
|||||||
|
|
||||||
cat(widget : Et2SelectWidgets) : Promise<SelectOption[]>
|
cat(widget : Et2SelectWidgets) : Promise<SelectOption[]>
|
||||||
{
|
{
|
||||||
var options = [widget.global_categories, /*?*/, widget.application, widget.parent_cat];
|
var options = [widget.globalCategories, /*?*/, widget.application, widget.parentCat];
|
||||||
|
|
||||||
if(typeof options[3] == 'undefined')
|
if(typeof options[3] == 'undefined')
|
||||||
{
|
{
|
||||||
@ -337,25 +337,25 @@ export class StaticOptions
|
|||||||
return this.cached_server_side(widget, 'select-country', options, return_promise);
|
return this.cached_server_side(widget, 'select-country', options, return_promise);
|
||||||
}
|
}
|
||||||
|
|
||||||
state(widget : Et2SelectWidgets, attrs) : SelectOption[]
|
state(widget : Et2SelectWidgets, attrs) : SelectOption[] | Promise<SelectOption[]>
|
||||||
{
|
{
|
||||||
var options = attrs.country_code ? attrs.country_code : 'de';
|
var options = attrs.country_code ? attrs.country_code : 'de';
|
||||||
return this.cached_server_side(widget, 'select-state', options);
|
return this.cached_server_side(widget, 'select-state', options);
|
||||||
}
|
}
|
||||||
|
|
||||||
dow(widget : Et2SelectWidgets, attrs) : SelectOption[]
|
dow(widget : Et2SelectWidgets, attrs) : SelectOption[] | Promise<SelectOption[]>
|
||||||
{
|
{
|
||||||
var options = ',' + (attrs.other || []).join(',');
|
var options = ',' + (attrs.other || []).join(',');
|
||||||
return this.cached_server_side(widget, 'select-dow', options);
|
return this.cached_server_side(widget, 'select-dow', options);
|
||||||
}
|
}
|
||||||
|
|
||||||
lang(widget : Et2SelectWidgets, attrs) : SelectOption[]
|
lang(widget : Et2SelectWidgets, attrs) : SelectOption[] | Promise<SelectOption[]>
|
||||||
{
|
{
|
||||||
var options = ',' + (attrs.other || []).join(',');
|
var options = ',' + (attrs.other || []).join(',');
|
||||||
return this.cached_server_side(widget, 'select-lang', options);
|
return this.cached_server_side(widget, 'select-lang', options);
|
||||||
}
|
}
|
||||||
|
|
||||||
timezone(widget : Et2SelectWidgets, attrs) : SelectOption[]
|
timezone(widget : Et2SelectWidgets, attrs) : SelectOption[] | Promise<SelectOption[]>
|
||||||
{
|
{
|
||||||
var options = ',' + (attrs.other || []).join(',');
|
var options = ',' + (attrs.other || []).join(',');
|
||||||
return this.cached_server_side(widget, 'select-timezone', options);
|
return this.cached_server_side(widget, 'select-timezone', options);
|
||||||
|
@ -158,11 +158,15 @@ class Select extends Etemplate\Widget
|
|||||||
{
|
{
|
||||||
$value = $value_in = self::get_array($content, $form_name);
|
$value = $value_in = self::get_array($content, $form_name);
|
||||||
|
|
||||||
$allowed2 = self::selOptions($form_name, true); // true = return array of option-values
|
$allowed2 = self::selOptions($form_name, true); // true = return array of option-values
|
||||||
$type_options = self::typeOptions($this,
|
$false = false;
|
||||||
|
$type_options = self::typeOptions(
|
||||||
|
$this,
|
||||||
// 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($allowed2,array_keys($type_options));
|
$false, $false, $value_in
|
||||||
|
);
|
||||||
|
$allowed = array_merge($allowed2, array_keys($type_options));
|
||||||
|
|
||||||
// add option children's values too, "" is not read, therefore we cast to string
|
// add option children's values too, "" is not read, therefore we cast to string
|
||||||
foreach($this->children as $child)
|
foreach($this->children as $child)
|
||||||
@ -618,16 +622,16 @@ class Select extends Etemplate\Widget
|
|||||||
$options = array();
|
$options = array();
|
||||||
switch ($widget_type)
|
switch ($widget_type)
|
||||||
{
|
{
|
||||||
case 'select-percent': // options: #row,decrement(default=10)
|
case 'select-percent':
|
||||||
$decr = $type > 0 ? $type : 10;
|
$decr = self::expand_name($widget->attrs['interval'], 0, 0, '', '', self::$cont) ?? 10;
|
||||||
for ($i=0; $i <= 100; $i += $decr)
|
for($i = 0; $i <= 100; $i += $decr)
|
||||||
{
|
{
|
||||||
$options[(int)$i] = (int)$i.'%';
|
$options[(int)$i] = (int)$i . '%';
|
||||||
}
|
}
|
||||||
$options[100] = '100%';
|
$options[100] = '100%';
|
||||||
if (!$rows || !empty($value))
|
if(!empty($value))
|
||||||
{
|
{
|
||||||
$value = intval(($value+($decr/2)) / $decr) * $decr;
|
$value = intval(($value + ($decr / 2)) / $decr) * $decr;
|
||||||
}
|
}
|
||||||
$no_lang = True;
|
$no_lang = True;
|
||||||
break;
|
break;
|
||||||
@ -673,6 +677,7 @@ class Select extends Etemplate\Widget
|
|||||||
// !$type == globals cats too, $type2: extraStyleMultiselect, $type3: application, if not current-app, $type4: parent-id, $type5=owner (-1=global),$type6=show missing
|
// !$type == globals cats too, $type2: extraStyleMultiselect, $type3: application, if not current-app, $type4: parent-id, $type5=owner (-1=global),$type6=show missing
|
||||||
$application = self::expand_name($widget->attrs['application'], 0, 0, '', '', self::$cont) ?? $type3;
|
$application = self::expand_name($widget->attrs['application'], 0, 0, '', '', self::$cont) ?? $type3;
|
||||||
$globalCategories = self::expand_name($widget->attrs['globalCategories'], 0, 0, '', '', self::$cont) ?? $type;
|
$globalCategories = self::expand_name($widget->attrs['globalCategories'], 0, 0, '', '', self::$cont) ?? $type;
|
||||||
|
$parentCat = self::expand_name($widget->attrs['parentCat'], 0, 0, '', '', self::$cont) ?? $type4;
|
||||||
|
|
||||||
if((!$application || $application === $GLOBALS['egw']->categories->app_name) &&
|
if((!$application || $application === $GLOBALS['egw']->categories->app_name) &&
|
||||||
(!$type5 || $type5 == $GLOBALS['egw']->categories->account_id))
|
(!$type5 || $type5 == $GLOBALS['egw']->categories->account_id))
|
||||||
@ -686,7 +691,7 @@ class Select extends Etemplate\Widget
|
|||||||
// Allow text for global
|
// Allow text for global
|
||||||
$globalCategories = ($globalCategories && strlen($globalCategories) > 1 ? $globalCategories : !$globalCategories);
|
$globalCategories = ($globalCategories && strlen($globalCategories) > 1 ? $globalCategories : !$globalCategories);
|
||||||
// we cast $type4 (parent) to int, to get default of 0 if omitted
|
// we cast $type4 (parent) to int, to get default of 0 if omitted
|
||||||
foreach((array)$categories->return_sorted_array(0, False, '', '', '', $globalCategories, (int)$type4, true) as $cat)
|
foreach((array)$categories->return_sorted_array(0, False, '', '', '', $globalCategories, (int)$parentCat, true) as $cat)
|
||||||
{
|
{
|
||||||
$s = str_repeat(' ', $cat['level']) . stripslashes($cat['name']);
|
$s = str_repeat(' ', $cat['level']) . stripslashes($cat['name']);
|
||||||
|
|
||||||
@ -718,28 +723,45 @@ class Select extends Etemplate\Widget
|
|||||||
if (isset(self::$request) && $value && ($unavailable = array_diff(is_array($value) ? $value : explode(',',$value),array_keys((array)$options))))
|
if (isset(self::$request) && $value && ($unavailable = array_diff(is_array($value) ? $value : explode(',',$value),array_keys((array)$options))))
|
||||||
{
|
{
|
||||||
// unavailable cats need to be merged in again
|
// unavailable cats need to be merged in again
|
||||||
$unavailable_name = $form_name.self::UNAVAILABLE_CAT_POSTFIX;
|
$unavailable_name = $form_name . self::UNAVAILABLE_CAT_POSTFIX;
|
||||||
self::$request->preserv[$unavailable_name] = $unavailable;
|
self::$request->preserv[$unavailable_name] = $unavailable;
|
||||||
}
|
}
|
||||||
$no_lang = True;
|
$no_lang = True;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'select-year': // options: #rows,#before(default=3),#after(default=2)
|
case 'select-year': // options: #rows,#before(default=3),#after(default=2)
|
||||||
|
$before = self::expand_name($widget->attrs['min'], 0, 0, '', '', self::$cont) ?? 3;
|
||||||
|
$after = self::expand_name($widget->attrs['max'], 0, 0, '', '', self::$cont) ?? 2;
|
||||||
|
|
||||||
$options[''] = '';
|
$options[''] = '';
|
||||||
if ($type <= 0) $type = 3;
|
if($before <= 0)
|
||||||
if ($type2 <= 0) $type2 = 2;
|
|
||||||
if ($type > 100 && $type2 > 100 && $type > $type) { $y = $type; $type=$type2; $type2=$y; }
|
|
||||||
if ($value && $value-$type < $y || $type > 100)
|
|
||||||
{
|
{
|
||||||
$y = $type > 100 ? $type : $value-$type;
|
$before = 3;
|
||||||
|
}
|
||||||
|
if($after <= 0)
|
||||||
|
{
|
||||||
|
$after = 2;
|
||||||
|
}
|
||||||
|
if($before > 100 && $after > 100 && $before > $after)
|
||||||
|
{
|
||||||
|
$y = $before;
|
||||||
|
$before = $after;
|
||||||
|
$after = $y;
|
||||||
|
}
|
||||||
|
if($value && $value - $before < $y || $before > 100)
|
||||||
|
{
|
||||||
|
$y = $before > 100 ? $before : $value - $before;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$y = (int)date('Y')-$type;
|
$y = (int)date('Y') - $before;
|
||||||
}
|
}
|
||||||
$to = date('Y')+$type2;
|
$to = date('Y') + $after;
|
||||||
if ($value && $value+$type2 > $to || $type2 > 100) $to = $type2 > 100 ? $type2 : $value+$type2;
|
if($value && $value + $after > $to || $after > 100)
|
||||||
for ($n = 0; $y <= $to && $n < 200; ++$n)
|
{
|
||||||
|
$to = $after > 100 ? $after : $value + $after;
|
||||||
|
}
|
||||||
|
for($n = 0; $y <= $to && $n < 200; ++$n)
|
||||||
{
|
{
|
||||||
$options[$y] = $y++;
|
$options[$y] = $y++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user