diff options
Diffstat (limited to 'views/default/input/dropdown.php')
| -rw-r--r-- | views/default/input/dropdown.php | 62 |
1 files changed, 39 insertions, 23 deletions
diff --git a/views/default/input/dropdown.php b/views/default/input/dropdown.php index 99657d983..9f07874f1 100644 --- a/views/default/input/dropdown.php +++ b/views/default/input/dropdown.php @@ -3,51 +3,67 @@ * Elgg dropdown input * Displays a dropdown (select) input field * - * NB: Default values of FALSE or NULL will match '' (empty string) and not 0. + * @warning Default values of FALSE or NULL will match '' (empty string) but not 0. * * @package Elgg * @subpackage Core * * @uses $vars['value'] The current value, if any - * @uses $vars['js'] Any Javascript to enter into the select tag - * @uses $vars['internalname'] The name of the select field * @uses $vars['options'] An array of strings representing the options for the dropdown field * @uses $vars['options_values'] An associative array of "value" => "option" - * where "value" is an internal name and "option" is + * where "value" is the name and "option" is * the value displayed on the button. Replaces * $vars['options'] when defined. + * @uses $vars['class'] Additional CSS class */ -$class = $vars['class']; -if (!$class) { - $class = "elgg-input-dropdown"; +if (isset($vars['class'])) { + $vars['class'] = "elgg-input-dropdown {$vars['class']}"; +} else { + $vars['class'] = "elgg-input-dropdown"; } +$defaults = array( + 'disabled' => false, + 'value' => '', + 'options_values' => array(), + 'options' => array(), +); + +$vars = array_merge($defaults, $vars); + +$options_values = $vars['options_values']; +unset($vars['options_values']); + +$options = $vars['options']; +unset($vars['options']); + +$value = $vars['value']; +unset($vars['value']); ?> -<select name="<?php echo $vars['internalname']; ?>" <?php if (isset($vars['internalid'])) echo "id=\"{$vars['internalid']}\""; ?> <?php echo $vars['js']; ?> <?php if ($vars['disabled']) echo ' disabled="yes" '; ?> class="<?php echo $class; ?>"> +<select <?php echo elgg_format_attributes($vars); ?>> <?php -if ($vars['options_values']) { - foreach($vars['options_values'] as $value => $option) { +if ($options_values) { + foreach ($options_values as $opt_value => $option) { - $encoded_value = htmlentities($value, ENT_QUOTES, 'UTF-8'); - $encoded_option = htmlentities($option, ENT_QUOTES, 'UTF-8'); + $option_attrs = elgg_format_attributes(array( + 'value' => $opt_value, + 'selected' => (string)$opt_value == (string)$value, + )); - if ((string)$value == (string)$vars['value']) { - echo "<option value=\"$encoded_value\" selected=\"selected\">$encoded_option</option>"; - } else { - echo "<option value=\"$encoded_value\">$encoded_option</option>"; - } + echo "<option $option_attrs>$option</option>"; } } else { - foreach($vars['options'] as $option) { - $encoded_option = htmlentities($option, ENT_QUOTES, 'UTF-8'); + if (is_array($options)) { + foreach ($options as $option) { + + $option_attrs = elgg_format_attributes(array( + 'selected' => (string)$option == (string)$value + )); - if ((string)$option == (string)$vars['value']) { - echo "<option selected=\"selected\">$encoded_option</option>"; - } else { - echo "<option>$encoded_option</option>"; + echo "<option $option_attrs>$option</option>"; } } } |
