diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-10-04 18:00:46 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-10-04 18:00:46 +0000 |
commit | f85a37c3076a3145aa291439b713e33825adfd83 (patch) | |
tree | 2b6b7890dab3817e20c99860d634979640a91696 /modules | |
parent | 5a23b3fdb970bb0c3e79f47ba9296455d237d9f0 (diff) | |
download | brdo-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.inc | 1 | ||||
-rw-r--r-- | modules/block/block.admin.inc | 2 | ||||
-rw-r--r-- | modules/field_ui/field_ui.admin.inc | 11 | ||||
-rw-r--r-- | modules/filter/filter.module | 1 | ||||
-rw-r--r-- | modules/image/image.admin.inc | 2 | ||||
-rw-r--r-- | modules/image/image.field.inc | 3 | ||||
-rw-r--r-- | modules/locale/locale.admin.inc | 1 | ||||
-rw-r--r-- | modules/menu/menu.admin.inc | 2 | ||||
-rw-r--r-- | modules/simpletest/tests/form.test | 5 | ||||
-rw-r--r-- | modules/simpletest/tests/form_test.module | 37 | ||||
-rw-r--r-- | modules/system/system.module | 5 |
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"> </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"> </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', |