1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-01 04:10:38 +02:00

Form handler - select() - support for disabled items.

This commit is contained in:
Cameron
2018-06-08 18:55:04 -07:00
parent a1469aad5e
commit 2b24346a8a

View File

@@ -2714,6 +2714,7 @@ class e_form
* @param boolean $selected [optional] * @param boolean $selected [optional]
* @param string|array $options [optional] * @param string|array $options [optional]
* @param bool $options['useValues'] when true uses array values as the key. * @param bool $options['useValues'] when true uses array values as the key.
* @param array $options['disabled'] list of $option_array keys which should be disabled. eg. array('key_1', 'key_2');
* @param bool|string $defaultBlank [optional] set to TRUE if the first entry should be blank, or to a string to use it for the blank description. * @param bool|string $defaultBlank [optional] set to TRUE if the first entry should be blank, or to a string to use it for the blank description.
* @return string HTML text for display * @return string HTML text for display
*/ */
@@ -2758,7 +2759,7 @@ class e_form
$option_array = $new; $option_array = $new;
} }
$text .= $this->option_multi($option_array, $selected)."\n".$this->select_close(); $text .= $this->option_multi($option_array, $selected, $options)."\n".$this->select_close();
return $text; return $text;
} }
@@ -2940,11 +2941,13 @@ class e_form
function option($option_title, $value, $selected = false, $options = '') function option($option_title, $value, $selected = false, $options = '')
{ {
if(is_string($options)) parse_str($options, $options); if(is_string($options)) parse_str($options, $options);
if(false === $value) $value = ''; if(false === $value) $value = '';
$options = $this->format_options('option', '', $options); $options = $this->format_options('option', '', $options);
$options['selected'] = $selected; //comes as separate argument just for convenience $options['selected'] = $selected; //comes as separate argument just for convenience
return "<option value='{$value}'".$this->get_attributes($options).">".defset($option_title, $option_title)."</option>"; return "<option value='{$value}'".$this->get_attributes($options).">".defset($option_title, $option_title)."</option>";
} }
@@ -2966,18 +2969,24 @@ class e_form
return $this->option('',''); return $this->option('','');
} }
$opts = $options;
foreach ($option_array as $value => $label) foreach ((array) $option_array as $value => $label)
{ {
if(is_array($label)) if(is_array($label))
{ {
$text .= $this->optgroup($value,$label,$selected,$options, 0); $text .= $this->optgroup($value, $label, $selected, $options, 0);
} }
else else
{ {
$sel = is_array($selected) ? in_array($value, $selected) : ($value == $selected);
$text .= $this->option($label, $value, (is_array($selected) ? in_array($value, $selected) : $selected == $value), $options)."\n"; if(!empty($options['disabled']))
{
$opts['disabled'] = in_array($value, $options['disabled']);
}
$text .= $this->option($label, $value, $sel, $opts)."\n";
} }
} }
@@ -2999,6 +3008,8 @@ class e_form
$level++; $level++;
$text = $this->optgroup_open($value, null, array('class'=>'level-'.$level)); $text = $this->optgroup_open($value, null, array('class'=>'level-'.$level));
$opts = $options;
foreach($label as $val => $lab) foreach($label as $val => $lab)
{ {
if(is_array($lab)) if(is_array($lab))
@@ -3007,7 +3018,12 @@ class e_form
} }
else else
{ {
$text .= $this->option($lab, $val, (is_array($selected) ? in_array($val, $selected) : $selected == $val), $options)."\n"; if(!empty($options['disabled']))
{
$opts['disabled'] = in_array($val, $options['disabled']);
}
$text .= $this->option($lab, $val, (is_array($selected) ? in_array($val, $selected) : $selected == $val), $opts)."\n";
} }
} }