From f8fa114a8e4acb886a24573dd08240f65a9e5fd4 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Mon, 17 May 2010 21:23:32 +0000 Subject: - Patch #67439 by sun, effulgentsia: #tree in hook_element_info() does not work. --- includes/form.inc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'includes') 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; -- cgit v1.2.3