diff options
Diffstat (limited to 'views/default/input/checkboxes.php')
| -rw-r--r-- | views/default/input/checkboxes.php | 90 | 
1 files changed, 90 insertions, 0 deletions
diff --git a/views/default/input/checkboxes.php b/views/default/input/checkboxes.php new file mode 100644 index 000000000..db4b06949 --- /dev/null +++ b/views/default/input/checkboxes.php @@ -0,0 +1,90 @@ +<?php +/** + * Elgg checkbox input + * Displays a checkbox input field + * + * @note This also includes a hidden input with the same name as the checkboxes + * to make sure something is sent to the server.  The default value is 0. + * If using JS, be specific to avoid selecting the hidden default value: + * 	$('input[type=checkbox][name=name]') + *  + * @warning Passing integers as labels does not currently work due to a + * deprecated hack that will be removed in Elgg 1.9. To use integer labels, + * the labels must be character codes: 1 would be 1 + * + * @package Elgg + * @subpackage Core + * + * @uses string $vars['name']     The name of the input fields + *                                (Forced to an array by appending []) + * @uses array  $vars['options']  An array of strings representing the + *                                label => option for the each checkbox field + * @uses string $vars['default']  The default value to send if nothing is checked. + *                                Optional, defaults to 0. Set to FALSE for no default. + * @uses bool   $vars['disabled'] Make all input elements disabled. Optional. + * @uses string $vars['value']    The current value. Single value or array. Optional. + * @uses string $vars['class']    Additional class of the list. Optional. + * @uses string $vars['align']    'horizontal' or 'vertical' Default: 'vertical' + * + */ + +$defaults = array( +	'align' => 'vertical', +	'value' => array(), +	'default' => 0, +	'disabled' => false, +	'options' => array(), +	'name' => '', +); + +$vars = array_merge($defaults, $vars); + +$class = "elgg-input-checkboxes elgg-{$vars['align']}"; +if (isset($vars['class'])) { +	$class .= " {$vars['class']}"; +	unset($vars['class']); +} + +$id = ''; +if (isset($vars['id'])) { +	$id = "id=\"{$vars['id']}\""; +	unset($vars['id']); +} + +if (is_array($vars['value'])) { +	$values = array_map('elgg_strtolower', $vars['value']); +} else { +	$values = array(elgg_strtolower($vars['value'])); +} + +$input_vars = $vars; +$input_vars['default'] = false; +if ($vars['name']) { +	$input_vars['name'] = "{$vars['name']}[]"; +} +unset($input_vars['align']); +unset($input_vars['options']); + +if (count($vars['options']) > 0) { +	// include a default value so if nothing is checked 0 will be passed. +	if ($vars['name'] && $vars['default'] !== false) { +		echo "<input type=\"hidden\" name=\"{$vars['name']}\" value=\"{$vars['default']}\" />"; +	} + +	echo "<ul class=\"$class\" $id>"; +	foreach ($vars['options'] as $label => $value) { +		// @deprecated 1.8 Remove in 1.9 +		if (is_integer($label)) { +			elgg_deprecated_notice('$vars[\'options\'] must be an associative array in input/checkboxes', 1.8); +			$label = $value; +		} + +		$input_vars['checked'] = in_array(elgg_strtolower($value), $values); +		$input_vars['value']   = $value; +		 +		$input = elgg_view('input/checkbox', $input_vars); + +		echo "<li><label>$input$label</label></li>"; +	} +	echo '</ul>'; +}  | 
