summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2005-12-26 11:14:14 +0000
committerDries Buytaert <dries@buytaert.net>2005-12-26 11:14:14 +0000
commit6c2f3e79824d4eedf6237497b0692cc6e3fb3de3 (patch)
tree7296768a59e4d94f7c7f157970567bf7d53f7104
parent2b367df8ed394d6731e52f27783517fba5df6aaa (diff)
downloadbrdo-6c2f3e79824d4eedf6237497b0692cc6e3fb3de3.tar.gz
brdo-6c2f3e79824d4eedf6237497b0692cc6e3fb3de3.tar.bz2
- Patch #39179 by chx et al: fix checkboxes #default_values.
-rw-r--r--includes/form.inc21
1 files changed, 19 insertions, 2 deletions
diff --git a/includes/form.inc b/includes/form.inc
index 0f5ce2961..f6043cb1b 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -271,7 +271,13 @@ function _form_builder($form_id, $form) {
}
}
if (!isset($form['#value'])) {
- $form['#value'] = $form['#default_value'];
+ $function = $form['#type'] . '_value';
+ if (function_exists($function)) {
+ $function($form);
+ }
+ else {
+ $form['#value'] = $form['#default_value'];
+ }
}
}
if (isset($form['#form_submitted'])) {
@@ -586,6 +592,17 @@ function map_month($month) {
}
/**
+ * Helper function to load value from default value for checkboxes
+ */
+function checkboxes_value(&$form) {
+ $value = array();
+ foreach ((array)$form['#default_value'] as $key) {
+ $value[$key] = 1;
+ }
+ $form['#value'] = $value;
+}
+
+/**
* Roll out a single radios element
* to a list of radios, using the options array as index.
*/
@@ -667,7 +684,7 @@ function expand_checkboxes($element) {
}
foreach ($element['#options'] as $key => $choice) {
if (!isset($element[$key])) {
- $element[$key] = array('#type' => 'checkbox', '#processed' => TRUE, '#title' => $choice, '#default_value' => in_array($key, $value), '#attributes' => $element['#attributes']);
+ $element[$key] = array('#type' => 'checkbox', '#processed' => TRUE, '#title' => $choice, '#default_value' => isset($value[$key]), '#attributes' => $element['#attributes']);
}
}
}