Index: modules/field/modules/list/tests/list.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/list/tests/list.test,v
retrieving revision 1.10
diff -u -p -r1.10 list.test
--- modules/field/modules/list/tests/list.test 1 Dec 2010 07:11:38 -0000 1.10
+++ modules/field/modules/list/tests/list.test 8 Dec 2010 10:21:15 -0000
@@ -138,21 +138,21 @@ class ListFieldUITestCase extends FieldT
$admin_path = $this->createListFieldAndEdit('list');
// Check that non-integer keys are rejected.
$edit = array($element_name => "1.1|one\n");
- $this->drupalPost($admin_path, $edit, t('Save settings'));
+ $this->drupalPost($admin_path, $edit, t('Save field settings'));
$this->assertText("keys must be integers", t('Form validation failed.'));
// Test 'List (number)' field type.
$admin_path = $this->createListFieldAndEdit('list_number');
// Check that non-numeric keys are rejected.
$edit = array($element_name => "1|one\nB|two");
- $this->drupalPost($admin_path, $edit, t('Save settings'));
+ $this->drupalPost($admin_path, $edit, t('Save field settings'));
$this->assertText("each key must be a valid integer or decimal", t('Form validation failed.'));
// Test 'List (text)' field type.
$admin_path = $this->createListFieldAndEdit('list_text');
// Check that overly long keys are rejected.
$edit = array($element_name => "1|one\n" . $this->randomName(256) . "|two");
- $this->drupalPost($admin_path, $edit, t('Save settings'));
+ $this->drupalPost($admin_path, $edit, t('Save field settings'));
$this->assertText("each key must be a string at most 255 characters long", t('Form validation failed.'));
// Test 'Boolean' field type.
@@ -164,8 +164,8 @@ class ListFieldUITestCase extends FieldT
'on' => $on,
'off' => $off,
);
- $this->drupalPost($admin_path, $edit, t('Save settings'));
- $this->assertText("Saved test_list_boolean configuration.", t("The 'On' and 'Off' form fields work for boolean fields."));
+ $this->drupalPost($admin_path, $edit, t('Save field settings'));
+ $this->assertRaw(t('Updated field %label field settings.', array('%label' => 'test_list_boolean')), t("The 'On' and 'Off' form fields work for boolean fields."));
// Test the allowed_values on the field settings form.
$this->drupalGet($admin_path);
$this->assertFieldByName('on', $on, t("The 'On' value is stored correctly."));
@@ -198,7 +198,7 @@ class ListFieldUITestCase extends FieldT
);
field_create_instance($instance);
- $admin_path = 'admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $field_name;
+ $admin_path = 'admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $field_name . '/field-settings';
return $admin_path;
}
Index: modules/field/modules/text/text.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/modules/text/text.test,v
retrieving revision 1.32
diff -u -p -r1.32 text.test
--- modules/field/modules/text/text.test 25 Oct 2010 15:51:21 -0000 1.32
+++ modules/field/modules/text/text.test 8 Dec 2010 09:58:06 -0000
@@ -470,7 +470,7 @@ class TextTranslationTestCase extends Dr
function testTextFieldFormatted() {
// Make node body multiple.
$edit = array('field[cardinality]' => -1);
- $this->drupalPost('admin/structure/types/manage/article/fields/body', $edit, t('Save settings'));
+ $this->drupalPost('admin/structure/types/manage/article/fields/body/field-settings', $edit, t('Save field settings'));
$this->drupalGet('node/add/article');
$this->assertFieldByXPath("//input[@name='body_add_more']", t('Add another item'), t('Body field cardinality set to multiple.'));
Index: modules/field_ui/field_ui.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field_ui/field_ui.admin.inc,v
retrieving revision 1.87
diff -u -p -r1.87 field_ui.admin.inc
--- modules/field_ui/field_ui.admin.inc 30 Nov 2010 23:55:11 -0000 1.87
+++ modules/field_ui/field_ui.admin.inc 8 Dec 2010 13:44:13 -0000
@@ -772,6 +772,8 @@ function field_ui_field_overview_form_su
field_create_field($field);
field_create_instance($instance);
+ // Always show the field settings step, as the cardinality needs to be
+ // configured for new fields.
$destinations[] = $admin_path . '/fields/' . $field['field_name'] . '/field-settings';
$destinations[] = $admin_path . '/fields/' . $field['field_name'];
@@ -804,7 +806,7 @@ function field_ui_field_overview_form_su
try {
field_create_instance($instance);
- $destinations[] = $admin_path . '/fields/' . $instance['field_name'] . '/edit';
+ $destinations[] = $admin_path . '/fields/' . $instance['field_name'];
// Store new field information for any additional submit handlers.
$form_state['fields_added']['_add_existing_field'] = $instance['field_name'];
}
@@ -1515,9 +1517,7 @@ function field_ui_field_settings_form($f
// Create a form structure for the field values.
$form['field'] = array(
- '#type' => 'fieldset',
- '#title' => t('Field settings'),
- '#description' => $description,
+ '#prefix' => $description,
'#tree' => TRUE,
);
@@ -1525,7 +1525,21 @@ function field_ui_field_settings_form($f
// If so, prevent changes to the field settings.
$has_data = field_has_data($field);
if ($has_data) {
- $form['field']['#description'] = '
' . t('There is data for this field in the database. The field settings can no longer be changed.') . '
' . $form['field']['#description'];
+ $form['field']['#prefix'] = '' . t('There is data for this field in the database. The field settings can no longer be changed.') . '
' . $form['field']['#prefix'];
+ }
+
+ // Build the configurable field values.
+ $form['field']['cardinality'] = array(
+ '#type' => 'select',
+ '#title' => t('Maximum number of values users can enter'),
+ '#options' => drupal_map_assoc(range(1, 10)) + array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')),
+ '#default_value' => $field['cardinality'],
+ );
+ if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) {
+ $form['field']['cardinality']['#description'] = t('%unlimited will provide an %add-more button so users can add as many values as they like.', array(
+ '%unlimited' => t('Unlimited'),
+ '%add-more' => t('Add another item'),
+ ));
}
// Build the non-configurable field values.
@@ -1727,8 +1741,12 @@ function field_ui_field_edit_form($form,
$bundle = $instance['bundle'];
$entity_type = $instance['entity_type'];
$field = field_info_field($instance['field_name']);
+ $bundles = field_info_bundles();
- drupal_set_title($instance['label']);
+ drupal_set_title(t('%instance settings for %bundle', array(
+ '%instance' => $instance['label'],
+ '%bundle' => $bundles[$entity_type][$bundle]['label'],
+ )), PASS_THROUGH);
$form['#field'] = $field;
$form['#instance'] = $instance;
@@ -1740,22 +1758,11 @@ function field_ui_field_edit_form($form,
return $form;
}
- $field_type = field_info_field_types($field['type']);
$widget_type = field_info_widget_types($instance['widget']['type']);
- $bundles = field_info_bundles();
// Create a form structure for the instance values.
$form['instance'] = array(
'#tree' => TRUE,
- '#type' => 'fieldset',
- '#title' => t('%type settings', array('%type' => $bundles[$entity_type][$bundle]['label'])),
- '#description' => t('These settings apply only to the %field field when used in the %type type.', array(
- '%field' => $instance['label'],
- '%type' => $bundles[$entity_type][$bundle]['label'],
- )),
- // Ensure field_ui_field_edit_instance_pre_render() gets called in addition
- // to, not instead of, the #pre_render function(s) needed by all fieldsets.
- '#pre_render' => array_merge(array('field_ui_field_edit_instance_pre_render'), element_info_property('fieldset', '#pre_render', array())),
);
// Build the non-configurable instance values.
@@ -1782,13 +1789,11 @@ function field_ui_field_edit_form($form,
'#title' => t('Label'),
'#default_value' => !empty($instance['label']) ? $instance['label'] : $field['field_name'],
'#required' => TRUE,
- '#weight' => -20,
);
$form['instance']['required'] = array(
'#type' => 'checkbox',
'#title' => t('Required field'),
'#default_value' => !empty($instance['required']),
- '#weight' => -10,
);
$form['instance']['description'] = array(
@@ -1797,7 +1802,6 @@ function field_ui_field_edit_form($form,
'#default_value' => !empty($instance['description']) ? $instance['description'] : '',
'#rows' => 5,
'#description' => t('Instructions to present to the user below this field on the editing form.
Allowed HTML tags: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())),
- '#weight' => 0,
);
// Build the widget component of the instance.
@@ -1818,55 +1822,21 @@ function field_ui_field_edit_form($form,
$additions = module_invoke($field['module'], 'field_instance_settings_form', $field, $instance);
if (is_array($additions)) {
$form['instance']['settings'] = $additions;
+ $form['instance']['settings']['#weight'] = 10;
}
// Add additional widget settings from the widget module.
$additions = module_invoke($widget_type['module'], 'field_widget_settings_form', $field, $instance);
if (is_array($additions)) {
$form['instance']['widget']['settings'] = $additions;
+ $form['instance']['widget']['#weight'] = 20;
$form['instance']['widget']['active']['#value'] = 1;
}
// Add handling for default value if not provided by any other module.
if (field_behaviors_widget('default value', $instance) == FIELD_BEHAVIOR_DEFAULT && empty($instance['default_value_function'])) {
$form['instance']['default_value_widget'] = field_ui_default_value_widget($field, $instance, $form, $form_state);
- }
-
- $has_data = field_has_data($field);
- if ($has_data) {
- $description = '' . t('These settings apply to the %field field everywhere it is used. Because the field already has data, some settings can no longer be changed.', array('%field' => $instance['label'])) . '
';
- }
- else {
- $description = '' . t('These settings apply to the %field field everywhere it is used.', array('%field' => $instance['label'])) . '
';
- }
-
- // Create a form structure for the field values.
- $form['field'] = array(
- '#type' => 'fieldset',
- '#title' => t('%field field settings', array('%field' => $instance['label'])),
- '#description' => $description,
- '#tree' => TRUE,
- );
-
- // Build the configurable field values.
- $description = t('Maximum number of values users can enter for this field.');
- if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) {
- $description .= '
' . t("'Unlimited' will provide an 'Add more' button so the users can add as many values as they like.");
- }
- $form['field']['cardinality'] = array(
- '#type' => 'select',
- '#title' => t('Number of values'),
- '#options' => array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + drupal_map_assoc(range(1, 10)),
- '#default_value' => $field['cardinality'],
- '#description' => $description,
- );
-
- // Add additional field type settings. The field type module is
- // responsible for not returning settings that cannot be changed if
- // the field already has data.
- $additions = module_invoke($field['module'], 'field_settings_form', $field, $instance, $has_data);
- if (is_array($additions)) {
- $form['field']['settings'] = $additions;
+ $form['instance']['default_value_widget']['#weight'] = 30;
}
$form['actions'] = array('#type' => 'actions');
@@ -1875,33 +1845,6 @@ function field_ui_field_edit_form($form,
}
/**
- * Pre-render function for field instance settings.
- *
- * Combines the instance, widget, and other settings into a single fieldset so
- * that elements within each group can be shown at different weights as if they
- * all had the same parent.
- */
-function field_ui_field_edit_instance_pre_render($element) {
- // Merge the widget settings into the main form.
- if (isset($element['widget']['settings'])) {
- foreach (element_children($element['widget']['settings']) as $key) {
- $element['widget_' . $key] = $element['widget']['settings'][$key];
- }
- unset($element['widget']['settings']);
- }
-
- // Merge the instance settings into the main form.
- if (isset($element['settings'])) {
- foreach (element_children($element['settings']) as $key) {
- $element['instance_' . $key] = $element['settings'][$key];
- }
- unset($element['settings']);
- }
-
- return $element;
-}
-
-/**
* Build default value fieldset.
*/
function field_ui_default_value_widget($field, $instance, &$form, &$form_state) {
@@ -1941,7 +1884,6 @@ function field_ui_field_edit_form_valida
if (isset($form['instance']['default_value_widget'])) {
$element = $form['instance']['default_value_widget'];
-
$field_state = field_form_get_state($element['#parents'], $field_name, LANGUAGE_NONE, $form_state);
$field = $field_state['field'];
@@ -1970,16 +1912,13 @@ function field_ui_field_edit_form_valida
*/
function field_ui_field_edit_form_submit($form, &$form_state) {
$instance = $form_state['values']['instance'];
- $field = $form_state['values']['field'];
-
- // Update any field settings that have changed.
- $field_source = field_info_field($instance['field_name']);
- $field = array_merge($field_source, $field);
- field_update_field($field);
+ $field_name = $instance['field_name'];
// Handle the default value.
if (isset($form['instance']['default_value_widget'])) {
$element = $form['instance']['default_value_widget'];
+ $field_state = field_form_get_state($element['#parents'], $field_name, LANGUAGE_NONE, $form_state);
+ $field = $field_state['field'];
// Extract field values.
$items = array();
Index: modules/field_ui/field_ui.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field_ui/field_ui.test,v
retrieving revision 1.27
diff -u -p -r1.27 field_ui.test
--- modules/field_ui/field_ui.test 27 Oct 2010 18:29:17 -0000 1.27
+++ modules/field_ui/field_ui.test 8 Dec 2010 10:32:52 -0000
@@ -209,13 +209,18 @@ class FieldUIManageFieldsTestCase extend
* Test editing an existing field.
*/
function updateField() {
- // Go to the field edit page.
- $this->drupalGet('admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $this->field_name);
-
- // Populate the field settings with new settings.
$string = 'updated dummy test string';
+
+ // Go to the field settings page.
+ $this->drupalGet('admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $this->field_name . '/field-settings');
$edit = array(
'field[settings][test_field_setting]' => $string,
+ );
+ $this->drupalPost(NULL, $edit, t('Save field settings'));
+
+ // Go to the field instance edit page.
+ $this->drupalGet('admin/structure/types/manage/' . $this->hyphen_type . '/fields/' . $this->field_name);
+ $edit = array(
'instance[settings][test_instance_setting]' => $string,
'instance[widget][settings][test_widget_setting]' => $string,
);
@@ -225,7 +230,7 @@ class FieldUIManageFieldsTestCase extend
$this->assertFieldSettings($this->type, $this->field_name, $string);
// Assert redirection back to the "manage fields" page.
- $this->assertText(t('Saved @label configuration.', array('@label' => $this->field_label)), t('Redirected to "Manage fields" page.'));
+ $this->assertUrl('admin/structure/types/manage/' . $this->hyphen_type . '/fields');
}
/**
Index: modules/file/tests/file.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/file/tests/file.test,v
retrieving revision 1.28
diff -u -p -r1.28 file.test
--- modules/file/tests/file.test 13 Nov 2010 14:04:08 -0000 1.28
+++ modules/file/tests/file.test 8 Dec 2010 09:58:06 -0000
@@ -477,7 +477,7 @@ class FileFieldWidgetTestCase extends Fi
// Change the field setting to make its files private, and upload a file.
$edit = array('field[settings][uri_scheme]' => 'private');
- $this->drupalPost("admin/structure/types/manage/$type_name/fields/$field_name", $edit, t('Save settings'));
+ $this->drupalPost("admin/structure/types/manage/$type_name/fields/$field_name/field-settings", $edit, t('Save field settings'));
$nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
$node = node_load($nid, NULL, TRUE);
$node_file = (object) $node->{$field_name}[LANGUAGE_NONE][0];
@@ -489,12 +489,12 @@ class FileFieldWidgetTestCase extends Fi
// Ensure we can't change 'uri_scheme' field settings while there are some
// entities with uploaded files.
- $this->drupalGet("admin/structure/types/manage/$type_name/fields/$field_name");
+ $this->drupalGet("admin/structure/types/manage/$type_name/fields/$field_name/field-settings");
$this->assertFieldByXpath('//input[@id="edit-field-settings-uri-scheme-public" and @disabled="disabled"]', 'public', t('Upload destination setting disabled.'));
// Delete node and confirm that setting could be changed.
node_delete($nid);
- $this->drupalGet("admin/structure/types/manage/$type_name/fields/$field_name");
+ $this->drupalGet("admin/structure/types/manage/$type_name/fields/$field_name/field-settings");
$this->assertFieldByXpath('//input[@id="edit-field-settings-uri-scheme-public" and not(@disabled)]', 'public', t('Upload destination setting enabled.'));
}
Index: modules/image/image.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/image/image.test,v
retrieving revision 1.31
diff -u -p -r1.31 image.test
--- modules/image/image.test 22 Sep 2010 03:24:09 -0000 1.31
+++ modules/image/image.test 8 Dec 2010 09:58:06 -0000
@@ -785,7 +785,7 @@ class ImageFieldDisplayTestCase extends
$edit = array(
'files[field_settings_default_image]' => drupal_realpath($images[0]->uri),
);
- $this->drupalPost('admin/structure/types/manage/article/fields/' . $field_name, $edit, t('Save settings'));
+ $this->drupalPost("admin/structure/types/manage/article/fields/$field_name/field-settings", $edit, t('Save field settings'));
// Clear field info cache so the new default image is detected.
field_info_cache_clear();
$field = field_info_field($field_name);
@@ -810,7 +810,7 @@ class ImageFieldDisplayTestCase extends
$edit = array(
'field[settings][default_image][fid]' => 0,
);
- $this->drupalPost('admin/structure/types/manage/article/fields/' . $field_name, $edit, t('Save settings'));
+ $this->drupalPost("admin/structure/types/manage/article/fields/$field_name/field-settings", $edit, t('Save field settings'));
// Clear field info cache so the new default image is detected.
field_info_cache_clear();
$field = field_info_field($field_name);