summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-10-04 18:00:46 +0000
committerDries Buytaert <dries@buytaert.net>2010-10-04 18:00:46 +0000
commitf85a37c3076a3145aa291439b713e33825adfd83 (patch)
tree2b6b7890dab3817e20c99860d634979640a91696 /modules
parent5a23b3fdb970bb0c3e79f47ba9296455d237d9f0 (diff)
downloadbrdo-f85a37c3076a3145aa291439b713e33825adfd83.tar.gz
brdo-f85a37c3076a3145aa291439b713e33825adfd83.tar.bz2
- Patch #140783 by sun, chx, effulgentsia, David_Rothstein, webchick: a select list without #default_value() always passes form validation.
Diffstat (limited to 'modules')
-rw-r--r--modules/aggregator/aggregator.processor.inc1
-rw-r--r--modules/block/block.admin.inc2
-rw-r--r--modules/field_ui/field_ui.admin.inc11
-rw-r--r--modules/filter/filter.module1
-rw-r--r--modules/image/image.admin.inc2
-rw-r--r--modules/image/image.field.inc3
-rw-r--r--modules/locale/locale.admin.inc1
-rw-r--r--modules/menu/menu.admin.inc2
-rw-r--r--modules/simpletest/tests/form.test5
-rw-r--r--modules/simpletest/tests/form_test.module37
-rw-r--r--modules/system/system.module5
11 files changed, 34 insertions, 36 deletions
diff --git a/modules/aggregator/aggregator.processor.inc b/modules/aggregator/aggregator.processor.inc
index a7a87dd15..cd74c0337 100644
--- a/modules/aggregator/aggregator.processor.inc
+++ b/modules/aggregator/aggregator.processor.inc
@@ -91,7 +91,6 @@ function aggregator_form_aggregator_admin_form_alter(&$form, $form_state) {
$form['modules']['aggregator']['aggregator_summary_items'] = array(
'#type' => 'select',
'#title' => t('Number of items shown in listing pages'),
- '#required' => FALSE,
'#default_value' => variable_get('aggregator_summary_items', 3),
'#empty_value' => 0,
'#options' => $items,
diff --git a/modules/block/block.admin.inc b/modules/block/block.admin.inc
index db5b72100..b6a8919c5 100644
--- a/modules/block/block.admin.inc
+++ b/modules/block/block.admin.inc
@@ -129,7 +129,6 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r
);
$form['blocks'][$key]['region'] = array(
'#type' => 'select',
- '#required' => FALSE,
'#default_value' => $block['region'] != BLOCK_REGION_NONE ? $block['region'] : NULL,
'#empty_value' => BLOCK_REGION_NONE,
'#title_display' => 'invisible',
@@ -302,7 +301,6 @@ function block_admin_configure($form, &$form_state, $module, $delta) {
$form['regions'][$key] = array(
'#type' => 'select',
'#title' => $theme->info['name'],
- '#required' => FALSE,
'#default_value' => !empty($region) && $region != -1 ? $region : NULL,
'#empty_value' => BLOCK_REGION_NONE,
'#options' => system_region_list($key, REGIONS_VISIBLE),
diff --git a/modules/field_ui/field_ui.admin.inc b/modules/field_ui/field_ui.admin.inc
index 8a7f04340..3ba38d81b 100644
--- a/modules/field_ui/field_ui.admin.inc
+++ b/modules/field_ui/field_ui.admin.inc
@@ -335,7 +335,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
'parent_wrapper' => array(
'parent' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $table['#parent_options'],
'#attributes' => array('class' => array('field-parent')),
'#parents' => array('fields', $name, 'parent'),
@@ -402,7 +401,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
'parent_wrapper' => array(
'parent' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $table['#parent_options'],
'#attributes' => array('class' => array('field-parent')),
'#parents' => array('fields', $name, 'parent'),
@@ -458,7 +456,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
'parent_wrapper' => array(
'parent' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $table['#parent_options'],
'#attributes' => array('class' => array('field-parent')),
'#prefix' => '<div class="add-new-placeholder">&nbsp;</div>',
@@ -482,7 +479,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
),
'type' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $field_type_options,
'#empty_option' => t('- Select a field type -'),
'#description' => t('Type of data to store.'),
@@ -491,7 +487,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
),
'widget_type' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $widget_type_options,
'#empty_option' => t('- Select a widget -'),
'#description' => t('Form element to edit the data.'),
@@ -530,7 +525,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
'parent_wrapper' => array(
'parent' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $table['#parent_options'],
'#attributes' => array('class' => array('field-parent')),
'#prefix' => '<div class="add-new-placeholder">&nbsp;</div>',
@@ -544,7 +538,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
),
'field_name' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $existing_field_options,
'#empty_option' => t('- Select an existing field -'),
'#description' => t('Field to share'),
@@ -554,7 +547,6 @@ function field_ui_field_overview_form($form, &$form_state, $entity_type, $bundle
),
'widget_type' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $widget_type_options,
'#empty_option' => t('- Select a widget -'),
'#description' => t('Form element to edit the data.'),
@@ -897,7 +889,6 @@ function field_ui_display_overview_form($form, &$form_state, $entity_type, $bund
'parent_wrapper' => array(
'parent' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $table['#parent_options'],
'#attributes' => array('class' => array('field-parent')),
'#parents' => array('fields', $name, 'parent'),
@@ -1051,7 +1042,6 @@ function field_ui_display_overview_form($form, &$form_state, $entity_type, $bund
'parent_wrapper' => array(
'parent' => array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $table['#parent_options'],
'#attributes' => array('class' => array('field-parent')),
'#parents' => array('fields', $name, 'parent'),
@@ -1713,7 +1703,6 @@ function field_ui_field_edit_form($form, &$form_state, $instance) {
'#default_value' => !empty($instance['description']) ? $instance['description'] : '',
'#rows' => 5,
'#description' => t('Instructions to present to the user below this field on the editing form.<br />Allowed HTML tags: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())),
- '#required' => FALSE,
'#weight' => 0,
);
diff --git a/modules/filter/filter.module b/modules/filter/filter.module
index f31a5d32c..aaba2b11f 100644
--- a/modules/filter/filter.module
+++ b/modules/filter/filter.module
@@ -850,6 +850,7 @@ function filter_process_format($element) {
// If the stored format does not exist, administrators have to assign a new
// format.
if (!$format_exists && $user_is_admin) {
+ $element['format']['format']['#required'] = TRUE;
$element['format']['format']['#default_value'] = NULL;
// Force access to the format selector (it may have been denied above if
// the user only has access to a single format).
diff --git a/modules/image/image.admin.inc b/modules/image/image.admin.inc
index 43cb479d1..5a40e6782 100644
--- a/modules/image/image.admin.inc
+++ b/modules/image/image.admin.inc
@@ -127,7 +127,6 @@ function image_style_form($form, &$form_state, $style) {
);
$form['effects']['new']['new'] = array(
'#type' => 'select',
- '#required' => FALSE,
'#options' => $new_effect_options,
'#empty_option' => t('Select a new effect'),
);
@@ -295,7 +294,6 @@ function image_style_delete_form($form, $form_state, $style) {
$form['replacement'] = array(
'#title' => t('Replacement style'),
'#type' => 'select',
- '#required' => FALSE,
'#options' => $replacement_styles,
'#empty_option' => t('No replacement, just delete'),
);
diff --git a/modules/image/image.field.inc b/modules/image/image.field.inc
index 221c5959d..11b49aa63 100644
--- a/modules/image/image.field.inc
+++ b/modules/image/image.field.inc
@@ -269,7 +269,6 @@ function image_field_widget_settings_form($field, $instance) {
$form['preview_image_style'] = array(
'#title' => t('Preview image style'),
'#type' => 'select',
- '#required' => FALSE,
'#options' => image_style_options(FALSE),
'#default_value' => $settings['preview_image_style'],
'#description' => t('The preview image will be shown while editing the content.'),
@@ -423,7 +422,6 @@ function image_field_formatter_settings_form($field, $instance, $view_mode, $for
$form['image_style'] = array(
'#title' => t('Image style'),
'#type' => 'select',
- '#required' => FALSE,
'#default_value' => $settings['image_style'],
'#empty_option' => t('None (original image)'),
'#options' => $image_styles,
@@ -436,7 +434,6 @@ function image_field_formatter_settings_form($field, $instance, $view_mode, $for
$form['image_link'] = array(
'#title' => t('Link image to'),
'#type' => 'select',
- '#required' => FALSE,
'#default_value' => $settings['image_link'],
'#options' => $link_types,
);
diff --git a/modules/locale/locale.admin.inc b/modules/locale/locale.admin.inc
index 9d71ed629..c748164a0 100644
--- a/modules/locale/locale.admin.inc
+++ b/modules/locale/locale.admin.inc
@@ -854,7 +854,6 @@ function locale_translation_filter_form() {
$form['filters']['status'][$key] = array(
'#title' => $filter['title'],
'#type' => 'select',
- '#required' => FALSE,
'#empty_value' => 'all',
'#empty_option' => $filter['options']['all'],
'#size' => 0,
diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc
index e18162c97..622df38ab 100644
--- a/modules/menu/menu.admin.inc
+++ b/modules/menu/menu.admin.inc
@@ -683,7 +683,6 @@ function menu_configure() {
$form['menu_main_links_source'] = array(
'#type' => 'select',
'#title' => t('Source for the Main links'),
- '#required' => FALSE,
'#default_value' => variable_get('menu_main_links_source', 'main-menu'),
'#empty_option' => t('No Main links'),
'#options' => $menu_options,
@@ -694,7 +693,6 @@ function menu_configure() {
$form['menu_secondary_links_source'] = array(
'#type' => 'select',
'#title' => t('Source for the Secondary links'),
- '#required' => FALSE,
'#default_value' => variable_get('menu_secondary_links_source', 'user-menu'),
'#empty_option' => t('No Secondary links'),
'#options' => $menu_options,
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test
index 70cf19b86..4661ad25f 100644
--- a/modules/simpletest/tests/form.test
+++ b/modules/simpletest/tests/form.test
@@ -164,6 +164,8 @@ class FormsTestCase extends DrupalWebTestCase {
// Posting without any values should throw validation errors.
$this->drupalPost(NULL, array(), 'Submit');
$this->assertNoText(t($error, array('!name' => $form['select']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['select_required']['#title'])));
+ $this->assertNoText(t($error, array('!name' => $form['select_optional']['#title'])));
$this->assertNoText(t($error, array('!name' => $form['empty_value']['#title'])));
$this->assertNoText(t($error, array('!name' => $form['empty_value_one']['#title'])));
$this->assertText(t($error, array('!name' => $form['no_default']['#title'])));
@@ -194,7 +196,8 @@ class FormsTestCase extends DrupalWebTestCase {
'empty_value' => 'one',
'empty_value_one' => 'one',
'no_default' => 'three',
- 'no_default_optional' => '',
+ 'no_default_optional' => 'one',
+ 'no_default_optional_empty_value' => '',
'no_default_empty_option' => 'three',
'no_default_empty_option_optional' => '',
'no_default_empty_value' => 'three',
diff --git a/modules/simpletest/tests/form_test.module b/modules/simpletest/tests/form_test.module
index 57a96863c..0e704d25c 100644
--- a/modules/simpletest/tests/form_test.module
+++ b/modules/simpletest/tests/form_test.module
@@ -789,44 +789,65 @@ function form_test_select($form, &$form_state) {
'#title' => '#default_value one',
'#default_value' => 'one',
);
+ $form['select_required'] = $base + array(
+ '#title' => '#default_value one, #required',
+ '#required' => TRUE,
+ '#default_value' => 'one',
+ );
+ $form['select_optional'] = $base + array(
+ '#title' => '#default_value one, not #required',
+ '#required' => FALSE,
+ '#default_value' => 'one',
+ );
$form['empty_value'] = $base + array(
- '#title' => '#default_value one, #empty_value 0',
+ '#title' => '#default_value one, #required, #empty_value 0',
+ '#required' => TRUE,
'#default_value' => 'one',
'#empty_value' => 0,
);
$form['empty_value_one'] = $base + array(
- '#title' => '#default_value = #empty_value',
+ '#title' => '#default_value = #empty_value, #required',
+ '#required' => TRUE,
'#default_value' => 'one',
'#empty_value' => 'one',
);
$form['no_default'] = $base + array(
- '#title' => 'No #default_value',
+ '#title' => 'No #default_value, #required',
+ '#required' => TRUE,
);
$form['no_default_optional'] = $base + array(
'#title' => 'No #default_value, not #required',
'#required' => FALSE,
- '#description' => 'Should result in an empty string (default of #empty_value), because it is optional.',
+ '#description' => 'Should result in "one", because it is not required and there is no #empty_value requested, so default browser behavior of preselecting first option is in effect.',
+ );
+ $form['no_default_optional_empty_value'] = $base + array(
+ '#title' => 'No #default_value, not #required, #empty_value empty string',
+ '#empty_value' => '',
+ '#required' => FALSE,
+ '#description' => 'Should result in an empty string (due to #empty_value), because it is optional.',
);
$form['no_default_empty_option'] = $base + array(
- '#title' => 'No #default_value, #empty_option',
+ '#title' => 'No #default_value, #required, #empty_option',
+ '#required' => TRUE,
'#empty_option' => '- Choose -',
);
$form['no_default_empty_option_optional'] = $base + array(
'#title' => 'No #default_value, not #required, #empty_option',
- '#required' => FALSE,
'#empty_option' => '- Dismiss -',
'#description' => 'Should result in an empty string (default of #empty_value), because it is optional.',
);
$form['no_default_empty_value'] = $base + array(
- '#title' => 'No #default_value, #empty_value 0',
+ '#title' => 'No #default_value, #required, #empty_value 0',
+ '#required' => TRUE,
'#empty_value' => 0,
'#description' => 'Should never result in 0.',
);
$form['no_default_empty_value_one'] = $base + array(
- '#title' => 'No #default_value, #empty_value one',
+ '#title' => 'No #default_value, #required, #empty_value one',
+ '#required' => TRUE,
'#empty_value' => 'one',
'#description' => 'A mistakenly assigned #empty_value contained in #options should not be valid.',
);
diff --git a/modules/system/system.module b/modules/system/system.module
index d83bd4c84..096442067 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -399,11 +399,6 @@ function system_element_info() {
);
$types['select'] = array(
'#input' => TRUE,
- // In order to be able to determine whether a select list needs an empty
- // default option, #required has to be NULL by default, as form_builder()
- // preemptively sets #required to FALSE for all elements.
- // @see form_process_select()
- '#required' => NULL,
'#multiple' => FALSE,
'#process' => array('form_process_select', 'ajax_process_form'),
'#theme' => 'select',