aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-02-12 14:02:11 +0000
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>2011-02-12 14:02:11 +0000
commit3d95a51f3f8771d9c52c888bcc4eddf88f18a8ca (patch)
treec4a12860b47220b4c0cac22a5ca794cb12042f0e
parent67ee3bc241e70aaffd451452e9761ed512dc52aa (diff)
downloadelgg-3d95a51f3f8771d9c52c888bcc4eddf88f18a8ca.tar.gz
elgg-3d95a51f3f8771d9c52c888bcc4eddf88f18a8ca.tar.bz2
Fixes #972 checkboxes and radio input fields support horizontal and vertical alignments
git-svn-id: http://code.elgg.org/elgg/trunk@8154 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r--views/default/css/elements/forms.php5
-rw-r--r--views/default/input/checkboxes.php35
-rw-r--r--views/default/input/radio.php56
3 files changed, 57 insertions, 39 deletions
diff --git a/views/default/css/elements/forms.php b/views/default/css/elements/forms.php
index 468c524a8..9d5ca6ffd 100644
--- a/views/default/css/elements/forms.php
+++ b/views/default/css/elements/forms.php
@@ -58,6 +58,11 @@ input[type="radio"] {
padding:0;
border:none;
}
+.elgg-input-checkboxes.elgg-horizontal li,
+.elgg-input-radio.elgg-horizontal li {
+ display: inline;
+ padding-left: 10px;
+}
input[type="submit"],
input[type="button"],
diff --git a/views/default/input/checkboxes.php b/views/default/input/checkboxes.php
index 2ca48459d..85c44de54 100644
--- a/views/default/input/checkboxes.php
+++ b/views/default/input/checkboxes.php
@@ -14,20 +14,21 @@
* (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['internalid'] The id for each input field. Optional
+ * @uses string $vars['internalid'] The id for each input field. Optional.
* (Only use this with a single value.)
* @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. Optional.
- * @uses string $vars['class'] The class of each input element. Optional.
- * @uses string $vars['js'] Any Javascript to enter into the input tag. Optional.
+ * @uses string $vars['class'] Additional class of the list. Optional.
+ * @uses string $vars['align'] 'horizontal' or 'vertical' Default: 'vertical'
*
*/
-$class = (isset($vars['class'])) ? $vars['class'] : 'elgg-input-checkboxes';
+$additional_class = elgg_get_array_value('class', $vars);
+$align = elgg_get_array_value('align', $vars, 'vertical');
$value = (isset($vars['value'])) ? $vars['value'] : NULL;
-$value_array = (is_array($value)) ? array_map('strtolower', $value) : array(strtolower($value));
+$value_array = (is_array($value)) ? array_map('elgg_strtolower', $value) : array(elgg_strtolower($value));
$internalname = (isset($vars['internalname'])) ? $vars['internalname'] : '';
$options = (isset($vars['options']) && is_array($vars['options'])) ? $vars['options'] : array();
$default = (isset($vars['default'])) ? $vars['default'] : 0;
@@ -36,34 +37,33 @@ $id = (isset($vars['internalid'])) ? $vars['internalid'] : '';
$disabled = (isset($vars['disabled'])) ? $vars['disabled'] : FALSE;
$js = (isset($vars['js'])) ? $vars['js'] : '';
-if ($options) {
+$class = "elgg-input-checkboxes elgg-$align";
+if ($additional_class) {
+ $class = " $additional_class";
+}
+
+if ($options && count($options) > 0) {
// include a default value so if nothing is checked 0 will be passed.
if ($internalname && $default !== FALSE) {
echo "<input type=\"hidden\" name=\"$internalname\" value=\"$default\" />";
}
+ echo "<ul class=\"$class\">";
foreach ($options as $label => $option) {
- // @hack - This sorta checks if options is not an assoc array and then
- // ignores the label (because it's just the index) and sets the value ($option)
- // as the label.
- // Wow.
- // @todo deprecate in Elgg 1.8
+ // @deprecated 1.8
if (is_integer($label)) {
+ elgg_deprecated_notice('$vars[\'options\'] must be an associative array in input/checkboxes', 1.8);
$label = $option;
}
$input_vars = array(
- 'checked' => in_array(strtolower($option), $value_array),
+ 'checked' => in_array(elgg_strtolower($option), $value_array),
'value' => $option,
'disabled' => $disabled,
'id' => $id,
'js' => $js,
'default' => false,
);
-
- if ($class) {
- $input_vars['class'] = $class;
- }
if ($internalname) {
$input_vars['name'] = "{$internalname}[]";
@@ -71,6 +71,7 @@ if ($options) {
$input = elgg_view('input/checkbox', $input_vars);
- echo "{$input}<label>{$label}</label><br />";
+ echo "<li>{$input}<label>{$label}</label></li>";
}
+ echo '</ul>';
} \ No newline at end of file
diff --git a/views/default/input/radio.php b/views/default/input/radio.php
index c897b48f1..924411aa8 100644
--- a/views/default/input/radio.php
+++ b/views/default/input/radio.php
@@ -6,18 +6,25 @@
* @package Elgg
* @subpackage Core
*
- * @uses $vars['value'] The current value, if any
- * @uses $vars['js'] Any Javascript to enter into the input tag
+ * @uses $vars['value'] The current value, if any
* @uses $vars['internalname'] The name of the input field
- * @uses $vars['options'] An array of strings representing the options for the radio field as "label" => option
- *
+ * @uses $vars['options'] An array of strings representing the options for the
+ * radio field as "label" => option
+ * @uses $vars['class'] Additional class of the list. Optional.
+ * @uses $vars['align'] 'horizontal' or 'vertical' Default: 'vertical'
*/
-$defaults = array(
- 'class' => 'elgg-input-radio',
-);
+$additional_class = elgg_get_array_value('class', $vars);
+$align = elgg_get_array_value('align', $vars, 'vertical');
+$class = "elgg-input-radio elgg-$align";
+if ($additional_class) {
+ $class = " $additional_class";
+ unset($vars['class']);
+}
-$vars = array_merge($defaults, $vars);
+if (isset($vars['align'])) {
+ unset($vars['align']);
+}
$options = $vars['options'];
unset($vars['options']);
@@ -25,18 +32,23 @@ unset($vars['options']);
$value = $vars['value'];
unset($vars['value']);
-foreach ($options as $label => $option) {
-
- $vars['checked'] = strtolower($option) != strtolower($vars['value']);
- $vars['value'] = $option;
-
- $attributes = elgg_format_attributes($vars);
-
- // handle indexed array where label is not specified
- // @todo deprecate in Elgg 1.8
- if (is_integer($label)) {
- $label = $option;
+if ($options && count($options) > 0) {
+ echo "<ul class=\"$class\">";
+ foreach ($options as $label => $option) {
+
+ $vars['checked'] = elgg_strtolower($option) != elgg_strtolower($vars['value']);
+ $vars['value'] = $option;
+
+ $attributes = elgg_format_attributes($vars);
+
+ // handle indexed array where label is not specified
+ // @deprecated 1.8
+ if (is_integer($label)) {
+ elgg_deprecated_notice('$vars[\'options\'] must be an associative array in input/radio', 1.8);
+ $label = $option;
+ }
+
+ echo "<li><label><input type=\"radio\" $attributes />$label</label></li>";
}
-
- echo "<label><input type=\"radio\" $attributes />$label</label><br />";
-} \ No newline at end of file
+ echo '</ul>';
+}