From 2d1ef531dcca714d60bd2f61927d85a9b77d4957 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Mon, 16 Nov 2009 05:11:01 +0000 Subject: #601806 by sun, effulgentsia, and Damien Tournoud: drupal_render() should not set default element properties that make no sense. --- includes/form.inc | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'includes/form.inc') diff --git a/includes/form.inc b/includes/form.inc index 6f7636c95..f5ce76b5f 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -1017,11 +1017,16 @@ function form_builder($form_id, $element, &$form_state) { $element['#processed'] = FALSE; // Use element defaults. - if ((!empty($element['#type'])) && ($info = element_info($element['#type']))) { + if (isset($element['#type']) && ($info = element_info($element['#type']))) { // Overlay $info onto $element, retaining preexisting keys in $element. $element += $info; $element['#defaults_loaded'] = TRUE; } + // Assign basic defaults common for all form elements. + $element += array( + '#required' => FALSE, + '#attributes' => array(), + ); // Special handling if we're on the top level form element. if (isset($element['#type']) && $element['#type'] == 'form') { @@ -1739,7 +1744,20 @@ function form_get_options($element, $key) { */ function theme_fieldset($variables) { $element = $variables['element']; - return '' . ($element['#title'] ? '' . $element['#title'] . '' : '') . (isset($element['#description']) && $element['#description'] ? '
' . $element['#description'] . '
' : '') . (!empty($element['#children']) ? $element['#children'] : '') . (isset($element['#value']) ? $element['#value'] : '') . "\n"; + + $output = ''; + if (!empty($element['#title'])) { + $output .= '' . $element['#title'] . ''; + } + if (!empty($element['#description'])) { + $output .= '
' . $element['#description'] . '
'; + } + $output .= $element['#children']; + if (isset($element['#value'])) { + $output .= $element['#value']; + } + $output .= "\n"; + return $output; } /** @@ -1765,7 +1783,8 @@ function theme_radio($variables) { $output .= 'value="' . $element['#return_value'] . '" '; $output .= (check_plain($element['#value']) == $element['#return_value']) ? ' checked="checked" ' : ' '; $output .= drupal_attributes($element['#attributes']) . ' />'; - if (!is_null($element['#title'])) { + + if (isset($element['#title'])) { $output = ''; } @@ -2119,7 +2138,7 @@ function theme_checkbox($variables) { } $checkbox .= drupal_attributes($element['#attributes']) . ' />'; - if (!is_null($element['#title'])) { + if (isset($element['#title'])) { $required = !empty($element['#required']) ? ' *' : ''; $checkbox = ''; } @@ -2157,7 +2176,7 @@ function theme_checkboxes($variables) { * This is used as a pre render function for checkboxes and radios. */ function form_pre_render_conditional_form_element($element) { - if ($element['#title'] || $element['#description']) { + if (isset($element['#title']) || isset($element['#description'])) { unset($element['#id']); $element['#theme_wrappers'][] = 'form_element'; } -- cgit v1.2.3