diff --git a/core/modules/field/tests/modules/field_test/field_test.module b/core/modules/field/tests/modules/field_test/field_test.module index 992e6ef..9ac75f2 100644 --- a/core/modules/field/tests/modules/field_test/field_test.module +++ b/core/modules/field/tests/modules/field_test/field_test.module @@ -212,11 +212,14 @@ function field_test_field_widget_settings_summary_alter(&$summary, $context) { * Implements hook_field_formatter_settings_form_alter(). */ function field_test_field_formatter_settings_form_alter(&$element, &$form_state, $context) { - $element['field_test_formatter_settings_form_alter'] = array( - '#type' => 'textfield', - '#title' => t('Formatter settings form alter'), - '#default_value' => $context['formatter']->getSetting('field_test_formatter_settings_form_alter'), - ); + $formatter = $context['formatter']; + if ($formatter->getPluginId() != 'field_empty_test') { + $element['field_test_formatter_settings_form_alter'] = array( + '#type' => 'textfield', + '#title' => t('Formatter settings form alter'), + '#default_value' => $context['formatter']->getSetting('field_test_formatter_settings_form_alter'), + ); + } } /** diff --git a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php index fcc764c..46256a6 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/DisplayOverviewBase.php @@ -356,7 +356,12 @@ protected function buildFieldRow($field_id, FieldInstanceInterface $instance, En '#cell_attributes' => array('class' => array('field-plugin-summary-cell')), ); } - if ($plugin->getSettings()) { + + // Generate the settings form and allow other modules to alter it. + $settings_form = $plugin->settingsForm($form, $form_state); + $this->alterSettingsForm($settings_form, $plugin, $instance, $form, $form_state); + + if ($settings_form) { $field_row['settings_edit'] = $base_button + array( '#type' => 'image_button', '#name' => $field_id . '_settings_edit', diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php index ca31aae..82d97df 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php @@ -104,6 +104,11 @@ function testFormatterUI() { $edit = array($fieldname => 'non empty setting'); $this->drupalPostAjaxForm(NULL, $edit, "field_test_plugin_settings_update"); $this->assertText('Default empty setting now has a value.'); + + // Test the empty settings form behavior. + $edit = array('fields[field_test][type]' => 'field_empty_test', 'refresh_rows' => 'field_test'); + $this->drupalPostAjaxForm(NULL, $edit, array('op' => t('Refresh'))); + $this->assertNoFieldByName('field_test_settings_edit'); } /**