Index: modules/system/system.css =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.css,v retrieving revision 1.61 diff -u -p -r1.61 system.css --- modules/system/system.css 24 Aug 2009 03:11:34 -0000 1.61 +++ modules/system/system.css 30 Aug 2009 08:58:20 -0000 @@ -136,7 +136,6 @@ tr.merge-up, tr.merge-up td, tr.merge-up font-size: 0.85em; } .form-item label { - display: block; font-weight: bold; } .form-item label.option { Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.780 diff -u -p -r1.780 system.module --- modules/system/system.module 29 Aug 2009 05:46:04 -0000 1.780 +++ modules/system/system.module 30 Aug 2009 08:58:25 -0000 @@ -88,6 +88,25 @@ define('REGIONS_ALL', 'all'); /** + * + * Output form element titles as labels before form elements. @see system_elements(). + */ +define('FORM_ELEMENT_SHOW_TITLE_BEFORE', 'before'); + +/** + * + * Output form element titles as labels after form elements. @see system_elements(). + */ +define('FORM_ELEMENT_SHOW_TITLE_AFTER', 'after'); + +/** + * + * Output form element titles as the title attribute of form elements. @see system_elements(). + */ +define('FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE', 'attribute'); + + +/** * Implement hook_help(). */ function system_help($path, $arg) { @@ -341,6 +360,7 @@ function system_elements() { '#process' => array('form_process_text_format', 'ajax_process_form'), '#theme' => 'textfield', '#theme_wrappers' => array('form_element'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $type['password'] = array( @@ -350,12 +370,14 @@ function system_elements() { '#process' => array('ajax_process_form'), '#theme' => 'password', '#theme_wrappers' => array('form_element'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $type['password_confirm'] = array( '#input' => TRUE, '#process' => array('form_process_password_confirm'), '#theme_wrappers' => array('form_element'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $type['textarea'] = array( @@ -366,6 +388,7 @@ function system_elements() { '#process' => array('form_process_text_format', 'ajax_process_form'), '#theme' => 'textarea', '#theme_wrappers' => array('form_element'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $type['radios'] = array( @@ -381,7 +404,7 @@ function system_elements() { '#process' => array('ajax_process_form'), '#theme' => 'radio', '#theme_wrappers' => array('form_element'), - '#form_element_skip_title' => TRUE, + '#show_title' => FORM_ELEMENT_SHOW_TITLE_AFTER, ); $type['checkboxes'] = array( @@ -398,7 +421,7 @@ function system_elements() { '#process' => array('ajax_process_form'), '#theme' => 'checkbox', '#theme_wrappers' => array('form_element'), - '#form_element_skip_title' => TRUE, + '#show_title' => FORM_ELEMENT_SHOW_TITLE_AFTER, ); $type['select'] = array( @@ -408,6 +431,7 @@ function system_elements() { '#process' => array('ajax_process_form'), '#theme' => 'select', '#theme_wrappers' => array('form_element'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $type['weight'] = array( @@ -430,6 +454,7 @@ function system_elements() { '#size' => 60, '#theme' => 'file', '#theme_wrappers' => array('form_element'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $type['tableselect'] = array( Index: includes/form.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/form.inc,v retrieving revision 1.368 diff -u -p -r1.368 form.inc --- includes/form.inc 29 Aug 2009 16:30:14 -0000 1.368 +++ includes/form.inc 30 Aug 2009 08:58:26 -0000 @@ -1514,7 +1514,13 @@ function theme_select($element) { $size = $element['#size'] ? ' size="' . $element['#size'] . '"' : ''; _form_set_class($element, array('form-select')); $multiple = $element['#multiple']; - return ''; + $title = ''; + + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE && !empty($element['#title'])) { + $title = ' title="' . $element['#title'] . '"'; +} + + return ''; } /** @@ -1654,15 +1660,19 @@ function theme_fieldset($element) { */ function theme_radio($element) { _form_set_class($element, array('form-radio')); + $title = ''; + + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE && !empty($element['#title'])) { + $title = ' title="' . $element['#title'] . '"'; +} + $output = ''; - if (!is_null($element['#title'])) { - $output = ''; - } return $output; } @@ -1990,18 +2000,21 @@ function theme_text_format_wrapper($elem */ function theme_checkbox($element) { _form_set_class($element, array('form-checkbox')); + $title = ''; + + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE && !empty($element['#title'])) { + $title = ' title="' . $element['#title'] . '"'; +} + $checkbox = ''; - if (!is_null($element['#title'])) { - $checkbox = ''; - } - return $checkbox; } @@ -2424,6 +2437,12 @@ function theme_textfield($element) { $maxlength = empty($element['#maxlength']) ? '' : ' maxlength="' . $element['#maxlength'] . '"'; $class = array('form-text'); $extra = ''; + $title = ''; + + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE && !empty($element['#title'])) { + $title = ' title="' . $element['#title'] . '"'; +} + $output = ''; if ($element['#autocomplete_path'] && menu_valid_path(array('link_path' => $element['#autocomplete_path']))) { @@ -2437,7 +2456,7 @@ function theme_textfield($element) { $output .= '' . $element['#field_prefix'] . ' '; } - $output .= ''; + $output .= ''; if (isset($element['#field_suffix'])) { $output .= ' ' . $element['#field_suffix'] . ''; @@ -2476,6 +2495,11 @@ function theme_form($element) { */ function theme_textarea($element) { $class = array('form-textarea'); + $title = ''; + + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE && !empty($element['#title'])) { + $title = ' title="' . $element['#title'] . '"'; +} // Add resizable behavior if ($element['#resizable'] !== FALSE) { @@ -2484,7 +2508,7 @@ function theme_textarea($element) { } _form_set_class($element, $class); - return ''; + return ''; } /** @@ -2518,9 +2542,14 @@ function theme_markup($element) { function theme_password($element) { $size = $element['#size'] ? ' size="' . $element['#size'] . '" ' : ''; $maxlength = $element['#maxlength'] ? ' maxlength="' . $element['#maxlength'] . '" ' : ''; + $title = ''; + + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE && !empty($element['#title'])) { + $title = ' title="' . $element['#title'] . '"'; +} _form_set_class($element, array('form-text')); - $output = ''; + $output = ''; return $output; } @@ -2554,7 +2583,13 @@ function form_process_weight($element) { */ function theme_file($element) { _form_set_class($element, array('form-file')); - return '\n"; + $title = ''; + + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_ATTRIBUTE && !empty($element['#title'])) { + $title = ' title="' . $element['#title'] . '"'; +} + + return '\n"; } /** @@ -2584,17 +2619,27 @@ function theme_form_element($element) { $output = '
' . "\n"; $required = !empty($element['#required']) ? '*' : ''; - if (!empty($element['#title']) && empty($element['#form_element_skip_title'])) { + $label = ''; + + if (!empty($element['#title'])) { $title = $element['#title']; if (!empty($element['#id'])) { - $output .= ' \n"; + $label = ' \n"; } else { - $output .= ' \n"; + $label= ' \n"; } } - $output .= " " . $element['#children'] . "\n"; + if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_BEFORE) { + $output .= $label . " " . $element['#children'] . "\n"; + } + else if (isset($element['#show_title']) && $element['#show_title'] == FORM_ELEMENT_SHOW_TITLE_AFTER) { + $output .= $element['#children'] . " " . $label . "\n"; + } + else { + $output .= " " . $element['#children'] . "\n"; + } if (!empty($element['#description'])) { $output .= '
' . $element['#description'] . "
\n"; Index: themes/seven/style.css =================================================================== RCS file: /cvs/drupal/drupal/themes/seven/style.css,v retrieving revision 1.15 diff -u -p -r1.15 style.css --- themes/seven/style.css 27 Aug 2009 20:33:05 -0000 1.15 +++ themes/seven/style.css 30 Aug 2009 08:58:27 -0000 @@ -496,6 +496,8 @@ fieldset div.form-item { div.form-item label { margin: 0; padding: 0; + font-weight:normal; + font-size:12px; } fieldset legend {