? .DS_Store ? 535440-shorten-random_1.patch ? issue-558928-form-labeling-3.patch ? sites/all/README.txt ? sites/all/modules ? sites/all/profiles ? sites/all/themes ? sites/default/files ? sites/default/private ? sites/default/settings.php ? sites/default/settings.php.actual 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 31 Aug 2009 05:25:24 -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,31 @@ 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 ($element['#type'] == 'item') { + $output .= '

' . $element['#title'] . '

'; + } + + 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: modules/locale/locale.module =================================================================== RCS file: /cvs/drupal/drupal/modules/locale/locale.module,v retrieving revision 1.257 diff -u -p -r1.257 locale.module --- modules/locale/locale.module 29 Aug 2009 05:46:03 -0000 1.257 +++ modules/locale/locale.module 31 Aug 2009 05:25:25 -0000 @@ -272,6 +272,7 @@ function locale_language_selector_form($ '#default_value' => $user_preferred_language->language, '#options' => $names, '#description' => ($mode == LANGUAGE_NEGOTIATION_PATH) ? t("This account's default language for e-mails, and preferred language for site presentation.") : t("This account's default language for e-mails."), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); return $form; } @@ -301,6 +302,7 @@ function locale_form_node_type_form_alte '#default_value' => variable_get('language_content_type_' . $form['#node_type']->type, 0), '#options' => array(t('Disabled'), t('Enabled')), '#description' => t('Enable multilingual support for this content type. If enabled, a language selection field will be added to the editing form, allowing you to select from one of the enabled languages. If disabled, new posts are saved with the default language. Existing content will not be affected by changing this option.', array('!languages' => url('admin/config/regional/language'))), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); } } Index: modules/node/content_types.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/content_types.inc,v retrieving revision 1.91 diff -u -p -r1.91 content_types.inc --- modules/node/content_types.inc 24 Aug 2009 19:26:46 -0000 1.91 +++ modules/node/content_types.inc 31 Aug 2009 05:25:26 -0000 @@ -155,7 +155,8 @@ function node_type_form(&$form_state, $t DRUPAL_OPTIONAL => t('Optional'), DRUPAL_REQUIRED => t('Required'), ), - ); + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, + ); $form['submission']['help'] = array( '#type' => 'textarea', '#title' => t('Explanation or submission guidelines'), @@ -179,6 +180,7 @@ function node_type_form(&$form_state, $t 'revision' => t('Create new revision'), ), '#description' => t('Users with the administer nodes permission will be able to override these options.'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $form['display'] = array( '#type' => 'fieldset', Index: modules/profile/profile.module =================================================================== RCS file: /cvs/drupal/drupal/modules/profile/profile.module,v retrieving revision 1.272 diff -u -p -r1.272 profile.module --- modules/profile/profile.module 29 Aug 2009 05:46:03 -0000 1.272 +++ modules/profile/profile.module 31 Aug 2009 05:25:26 -0000 @@ -158,6 +158,7 @@ function profile_block_configure($delta '#default_value' => variable_get('profile_block_author_fields', array()), '#options' => $fields, '#description' => t('Select which profile fields you wish to display in the block. Only fields designated as public in the profile field configuration are available.', array('@profile-admin' => url('admin/config/people/profile'))), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); return $form; } Index: modules/simpletest/tests/form_test.module =================================================================== RCS file: /cvs/drupal/drupal/modules/simpletest/tests/form_test.module,v retrieving revision 1.8 diff -u -p -r1.8 form_test.module --- modules/simpletest/tests/form_test.module 17 Aug 2009 07:12:16 -0000 1.8 +++ modules/simpletest/tests/form_test.module 31 Aug 2009 05:25:27 -0000 @@ -87,6 +87,7 @@ function form_test_test_form(&$form_stat '#type' => 'item', '#title' => 'Test Textfield', '#markup' => form_clean_id('form_test_form_clean_id_presence'), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); return $form; } 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 31 Aug 2009 05:25:27 -0000 @@ -139,7 +139,9 @@ tr.merge-up, tr.merge-up td, tr.merge-up display: block; font-weight: bold; } -.form-item label.option { +.form-item label.option, +.form-type-checkbox label, +.form-type-radio label { display: inline; font-weight: normal; } 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 31 Aug 2009 05:25:30 -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: modules/taxonomy/taxonomy.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.admin.inc,v retrieving revision 1.66 diff -u -p -r1.66 taxonomy.admin.inc --- modules/taxonomy/taxonomy.admin.inc 23 Aug 2009 01:05:12 -0000 1.66 +++ modules/taxonomy/taxonomy.admin.inc 31 Aug 2009 05:25:31 -0000 @@ -157,6 +157,7 @@ function taxonomy_form_vocabulary(&$form '#title' => t('Apply to content types'), '#default_value' => $edit['nodes'], '#options' => array_map('check_plain', node_type_get_names()), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); $form['settings'] = array( '#type' => 'fieldset', Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.1036 diff -u -p -r1.1036 user.module --- modules/user/user.module 29 Aug 2009 21:05:16 -0000 1.1036 +++ modules/user/user.module 31 Aug 2009 05:25:34 -0000 @@ -1878,7 +1878,8 @@ function user_edit_form(&$form_state, $u '#type' => 'radios', '#title' => t('Status'), '#default_value' => isset($edit['status']) ? $edit['status'] : 1, - '#options' => array(t('Blocked'), t('Active')) + '#options' => array(t('Blocked'), t('Active')), + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); } if (user_access('administer permissions')) { @@ -1905,6 +1906,7 @@ function user_edit_form(&$form_state, $u '#default_value' => $default, '#options' => $roles, DRUPAL_AUTHENTICATED_RID => $checkbox_authenticated, + '#show_title' => FORM_ELEMENT_SHOW_TITLE_BEFORE, ); } }