summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-05-17 21:23:32 +0000
committerDries Buytaert <dries@buytaert.net>2010-05-17 21:23:32 +0000
commitf8fa114a8e4acb886a24573dd08240f65a9e5fd4 (patch)
tree8be99a7922037c916021f219b876153ba0955718 /includes
parent9bab7f62f09da29fdf655a1bf46c99729bab57cf (diff)
downloadbrdo-f8fa114a8e4acb886a24573dd08240f65a9e5fd4.tar.gz
brdo-f8fa114a8e4acb886a24573dd08240f65a9e5fd4.tar.bz2
- Patch #67439 by sun, effulgentsia: #tree in hook_element_info() does not work.
Diffstat (limited to 'includes')
-rw-r--r--includes/form.inc13
1 files changed, 7 insertions, 6 deletions
diff --git a/includes/form.inc b/includes/form.inc
index 757228743..affd82b0e 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -1291,6 +1291,13 @@ function form_builder($form_id, $element, &$form_state) {
// Recurse through all child elements.
$count = 0;
foreach (element_children($element) as $key) {
+ // Prior to checking properties of child elements, their default properties
+ // need to be loaded.
+ if (isset($element[$key]['#type']) && empty($element[$key]['#defaults_loaded']) && ($info = element_info($element[$key]['#type']))) {
+ $element[$key] += $info;
+ $element[$key]['#defaults_loaded'] = TRUE;
+ }
+
// Don't squash an existing tree value.
if (!isset($element[$key]['#tree'])) {
$element[$key]['#tree'] = $element['#tree'];
@@ -1312,12 +1319,6 @@ function form_builder($form_id, $element, &$form_state) {
$array_parents[] = $key;
$element[$key]['#array_parents'] = $array_parents;
- // Prior to handling #weight, default element properties need to be applied.
- if (isset($element[$key]['#type']) && empty($element[$key]['#defaults_loaded']) && ($info = element_info($element[$key]['#type']))) {
- $element[$key] += $info;
- $element[$key]['#defaults_loaded'] = TRUE;
- }
-
// Assign a decimal placeholder weight to preserve original array order.
if (!isset($element[$key]['#weight'])) {
$element[$key]['#weight'] = $count/1000;