diff --git a/src/Form/FieldsSettingsForm.php b/src/Form/FieldsSettingsForm.php index 20adb2e..b75318a 100644 --- a/src/Form/FieldsSettingsForm.php +++ b/src/Form/FieldsSettingsForm.php @@ -170,7 +170,7 @@ class FieldsSettingsForm extends ConfigFormBase { // Base button element for the various plugin settings actions. $base_button = [ - '#submit' => [[$this, 'multistepSubmit']], + '#submit' => [[$this, 'multiStepSubmit']], '#ajax' => [ 'callback' => [$this, 'multiStepAjax'], 'wrapper' => 'field-display-overview-wrapper', @@ -221,6 +221,14 @@ class FieldsSettingsForm extends ConfigFormBase { $display_options['settings'] = $plugin_settings[$field_key]['settings']; } + $default_plugin = NULL; + if ($display_options) { + $default_plugin = $display_options['type']; + } + elseif ($plugin_options) { + $default_plugin = array_keys($plugin_options)[0]; + } + $field_row['plugin'] = array( 'type' => array( '#type' => 'select', @@ -231,7 +239,7 @@ class FieldsSettingsForm extends ConfigFormBase { '#attributes' => array( 'class' => array('field-plugin-type'), ), - '#default_value' => $display_options ? $display_options['type'] : 'hidden', + '#default_value' => $default_plugin, '#ajax' => array( 'callback' => array($this, 'multiStepAjax'), 'method' => 'replace', @@ -285,7 +293,7 @@ class FieldsSettingsForm extends ConfigFormBase { else { $field_row['settings_edit'] = []; // Display the configure settings button only if a plugin is selected. - if ($plugin) { + if ($default_plugin != 'hidden') { $field_row['settings_edit'] = $base_button + array( '#type' => 'image_button', '#name' => $field_key . '_settings_edit', @@ -308,7 +316,7 @@ class FieldsSettingsForm extends ConfigFormBase { * @param $form * @param \Drupal\Core\Form\FormStateInterface $form_state */ - public function multistepSubmit($form, FormStateInterface $form_state) { + public function multiStepSubmit($form, FormStateInterface $form_state) { $trigger = $form_state->getTriggeringElement(); $op = $trigger['#op']; @@ -425,7 +433,7 @@ class FieldsSettingsForm extends ConfigFormBase { foreach ($fields as $field_key => $field_values) { // If there is no plugin selected remove the key from config file. if ($field_values['plugin']['type'] == 'hidden') { - $this->config->clear('fields.' . $field_key); + $this->config->set('fields.' . $field_key, ['type' => 'hidden']); } } $this->config->save(); @@ -453,7 +461,6 @@ class FieldsSettingsForm extends ConfigFormBase { $state = new FormState(); $state->setValues($settings); $state->set('fields', $field_key); - //$state->set('field_type', $field_type); $plugin->submitConfigurationForm($form, $state); }