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 02:08:48 -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: 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 02:08:48 -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 02:08:48 -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(