diff --git a/core/modules/field/modules/text/lib/Drupal/text/Tests/TextTranslationTest.php b/core/modules/field/modules/text/lib/Drupal/text/Tests/TextTranslationTest.php index 1e2a13d..0ac151f 100644 --- a/core/modules/field/modules/text/lib/Drupal/text/Tests/TextTranslationTest.php +++ b/core/modules/field/modules/text/lib/Drupal/text/Tests/TextTranslationTest.php @@ -90,7 +90,7 @@ function testTextField() { */ function testTextFieldFormatted() { // Make node body multiple. - $edit = array('field[container][cardinality]' => -1); + $edit = array('field[cardinality]' => -1); $this->drupalPost('admin/structure/types/manage/article/fields/body', $edit, t('Save settings')); $this->drupalGet('node/add/article'); $this->assertFieldByXPath("//input[@name='body_add_more']", t('Add another item'), 'Body field cardinality set to multiple.'); diff --git a/core/modules/field_ui/field_ui.admin.inc b/core/modules/field_ui/field_ui.admin.inc index d919eed..c4b80c1 100644 --- a/core/modules/field_ui/field_ui.admin.inc +++ b/core/modules/field_ui/field_ui.admin.inc @@ -923,22 +923,24 @@ function field_ui_field_edit_form($form, &$form_state, $instance) { } $cardinality = $field['cardinality']; - $form['field']['container'] = array( + $form['field']['cardinality'] = array( // We can't use the container element because it doesn't support the title // or description properties. '#type' => 'item', + // Reset #parents to 'field', so the additional container does not appear. + '#parents' => array('field'), '#field_prefix' => '
', '#field_suffix' => '
', '#title' => t('Number of values'), '#description' => $description, ); - $form['field']['container']['cardinality'] = array( + $form['field']['cardinality']['cardinality'] = array( '#type' => 'select', '#options' => array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + drupal_map_assoc(range(1, 5)) + array('other' => t('More')), '#default_value' => ($cardinality < 6) ? $cardinality : 'other', ); // @todo Convert when http://drupal.org/node/1207060 gets in. - $form['field']['container']['cardinality_other'] = array( + $form['field']['cardinality']['cardinality_other'] = array( '#type' => 'number', '#default_value' => $cardinality > 5 ? $cardinality : 6, '#min' => 1, @@ -946,7 +948,7 @@ function field_ui_field_edit_form($form, &$form_state, $instance) { '#title_display' => 'invisible', '#states' => array( 'visible' => array( - ':input[name="field[container][cardinality]"]' => array('value' => 'other'), + ':input[name="field[cardinality]"]' => array('value' => 'other'), ), ), ); @@ -1060,10 +1062,15 @@ function field_ui_field_edit_form_validate($form, &$form_state) { $entity = $form['#entity']; // Validate field cardinality. - $cardinality = $form_state['values']['field']['container']['cardinality']; - $cardinality_other = $form_state['values']['field']['container']['cardinality_other']; - if ($cardinality == 'other' && empty($cardinality_other)) { - form_error($form['field']['container']['cardinality_other'], t('Number of values is required.')); + $cardinality = &$form_state['values']['field']['cardinality']; + $cardinality_other = &$form_state['values']['field']['cardinality_other']; + if ($cardinality == 'other') { + if (empty($cardinality_other)) { + form_error($form['field']['cardinality']['cardinality_other'], t('Number of values is required.')); + } + else { + $cardinality = $cardinality_other; + } } if (isset($form['instance']['default_value_widget'])) { @@ -1106,15 +1113,6 @@ function field_ui_field_edit_form_submit($form, &$form_state) { $field = $form['#field']; $entity = $form['#entity']; - // Save field cardinality. - $cardinality = $form_state['values']['field']['container']['cardinality']; - $cardinality_other = $form_state['values']['field']['container']['cardinality_other']; - if ($cardinality == 'other') { - $cardinality = $cardinality_other; - } - $form_state['values']['field']['cardinality'] = $cardinality; - unset($form_state['values']['field']['container']); - // Merge incoming values into the field. $field = array_merge($field, $form_state['values']['field']); try { diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php index e9c4be2..bdac792 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php @@ -175,8 +175,8 @@ function cardinalitySettings() { // Assert the cardinality other field cannot be empty when cardinality is // set to other. $edit = array( - 'field[container][cardinality]' => 'other', - 'field[container][cardinality_other]' => '', + 'field[cardinality]' => 'other', + 'field[cardinality_other]' => '', ); $this->drupalPost($field_edit_path, $edit, t('Save settings')); $this->assertText('Number of values is required.'); @@ -184,26 +184,26 @@ function cardinalitySettings() { // Assert the cardinality field is set to 'Other' when the value is greater // than 5. $edit = array( - 'field[container][cardinality]' => 'other', - 'field[container][cardinality_other]' => 16, + 'field[cardinality]' => 'other', + 'field[cardinality_other]' => 16, ); $this->drupalPost($field_edit_path, $edit, t('Save settings')); $this->assertText('Saved Body configuration.'); $this->drupalGet($field_edit_path); - $this->assertFieldByXPath("//select[@name='field[container][cardinality]']", 'other'); - $this->assertFieldByXPath("//input[@name='field[container][cardinality_other]']", 16); + $this->assertFieldByXPath("//select[@name='field[cardinality]']", 'other'); + $this->assertFieldByXPath("//input[@name='field[cardinality_other]']", 16); // Assert the cardinality other field is set back to 6 after changing the // cardinality to less than 6. $edit = array( - 'field[container][cardinality]' => 3, - 'field[container][cardinality_other]' => 16, + 'field[cardinality]' => 3, + 'field[cardinality_other]' => 16, ); $this->drupalPost($field_edit_path, $edit, t('Save settings')); $this->assertText('Saved Body configuration.'); $this->drupalGet($field_edit_path); - $this->assertFieldByXPath("//select[@name='field[container][cardinality]']", 3); - $this->assertFieldByXPath("//input[@name='field[container][cardinality_other]']", 6); + $this->assertFieldByXPath("//select[@name='field[cardinality]']", 3); + $this->assertFieldByXPath("//input[@name='field[cardinality_other]']", 6); } /**