summaryrefslogtreecommitdiff
path: root/includes/form.inc
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2005-11-03 15:42:31 +0000
committerDries Buytaert <dries@buytaert.net>2005-11-03 15:42:31 +0000
commitcbcb85560ad4e8756f59d2e4a1b5329fc9398a03 (patch)
tree571ecd8c6f2a986170c8c1d2bbc77e3cc440ae37 /includes/form.inc
parent7bd728ef4ad48f95706297daa1328657e93cb288 (diff)
downloadbrdo-cbcb85560ad4e8756f59d2e4a1b5329fc9398a03.tar.gz
brdo-cbcb85560ad4e8756f59d2e4a1b5329fc9398a03.tar.bz2
- Patch #35816 by chx: fixed problem with checkbox handling in the form API.
Diffstat (limited to 'includes/form.inc')
-rw-r--r--includes/form.inc12
1 files changed, 11 insertions, 1 deletions
diff --git a/includes/form.inc b/includes/form.inc
index c481a069f..2b88389d2 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -235,7 +235,17 @@ function _form_builder($form) {
$ref =& $ref[$parent];
}
if (!isset($form['#value'])) {
- $form['#value'] = ($posted && isset($edit)) ? $edit : $form['#default_value'];
+ if ($posted) {
+ if (isset($edit)) {
+ $form['#value'] = $edit; // normal element
+ }
+ elseif (isset($form['#return_value'])) {
+ $form['#value'] = 0; // checkbox unchecked
+ }
+ }
+ if (!isset($form['#value'])) {
+ $form['#value'] = $form['#default_value'];
+ }
}
if (isset($form['#execute'])) {
if ($_POST[$form['#name']] == $form['#value']) {