Skip to content
Snippets Groups Projects
Verified Commit e2872efa authored by Lauri Timmanee's avatar Lauri Timmanee
Browse files

Issue #3384583 by srishtiiee, viren18febS, smustgrave: Default value widget is...

Issue #3384583 by srishtiiee, viren18febS, smustgrave: Default value widget is not updated on field config change

(cherry picked from commit 710ae1c8)
parent b52f3a06
No related branches found
No related tags found
20 merge requests!8376Drupal views: adding more granularity to the ‘use ajax’ functionality,!8300Issue #3443586 View area displays even when parent view has no results.,!7567Issue #3153723 by quietone, Hardik_Patel_12: Change the scaffolding...,!7565Issue #3153723 by quietone, Hardik_Patel_12: Change the scaffolding...,!7509Change label "Block description" to "Block type",!7344Issue #3292350 by O'Briat, KlemenDEV, hswong3i, smustgrave, quietone: Update...,!6922Issue #3412959 by quietone, smustgrave, longwave: Fix 12 'un' words,!6848Issue #3417553 by longwave: Remove withConsecutive() in CacheCollectorTest,!6720Revert "Issue #3358581 by pfrenssen, _tarik_, a.dmitriiev, smustgrave:...,!6560Update ClaroPreRender.php, confirming classes provided are in array format,!6528Issue #3414261 by catch: Add authenticated user umami performance tests,!6501Issue #3263668 by omkar-pd, Wim Leers, hooroomoo: Re-enable inline form errors...,!6354Draft: Issue #3380392 by phma: Updating language weight from the overview reverts label if translated,!6324Issue #3416723 by Ludo.R: Provide a "node type" views default argument,!6119Issue #3405704 by Spokje, longwave: symfony/psr-http-message-bridge major version bump,!5950Issue #3403653 by alexpott, longwave: Incorporate improvements to how contrib runs PHPStan to core,!5858Issue #3401971 by fjgarlin: Test-only job shouldn't require constant rebases...,!5716Draft: Issue #3401102 by Spokje, longwave, smustgrave: Nightwatch artifacts on GitLab not retained,!5674Transaction autocommit during shutdown relies on unreliable object destruction order,!5644Issue #3395563 by nireneko, marvil07, lauriii, borisson_, smustgrave, Wim...
Pipeline #57810 passed with warnings
Pipeline: drupal

#57815

    Pipeline: drupal

    #57813

      ......@@ -4,7 +4,6 @@
      use Drupal\Component\Render\FormattableMarkup;
      use Drupal\Component\Utility\Html;
      use Drupal\Component\Utility\NestedArray;
      use Drupal\Core\Entity\ContentEntityStorageInterface;
      use Drupal\Core\Entity\EntityInterface;
      use Drupal\Component\Plugin\Exception\PluginNotFoundException;
      ......@@ -483,6 +482,7 @@ public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
      ];
      $form['handler']['handler_submit'] = [
      '#type' => 'submit',
      '#name' => 'handler_settings_submit',
      '#value' => $this->t('Change handler'),
      '#limit_validation_errors' => [],
      '#attributes' => [
      ......@@ -705,8 +705,8 @@ public static function fieldSettingsAjaxProcess($form, FormStateInterface $form_
      public static function fieldSettingsAjaxProcessElement(&$element, $main_form) {
      if (!empty($element['#ajax'])) {
      $element['#ajax'] = [
      'callback' => [static::class, 'settingsAjax'],
      'wrapper' => $main_form['#id'],
      'trigger_as' => ['name' => 'handler_settings_submit'],
      'wrapper' => 'field-combined',
      'element' => $main_form['#array_parents'],
      ];
      }
      ......@@ -731,21 +731,14 @@ public static function formProcessMergeParent($element) {
      return $element;
      }
      /**
      * Ajax callback for the handler settings form.
      *
      * @see static::fieldSettingsForm()
      */
      public static function settingsAjax($form, FormStateInterface $form_state) {
      return NestedArray::getValue($form, $form_state->getTriggeringElement()['#ajax']['element']);
      }
      /**
      * Submit handler for the non-JS case.
      *
      * @see static::fieldSettingsForm()
      */
      public static function settingsAjaxSubmit($form, FormStateInterface $form_state) {
      $form_storage = &$form_state->getStorage();
      unset($form_storage['default_value_widget']);
      $form_state->setRebuild();
      }
      ......
      ......@@ -97,8 +97,12 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
      $entity = $items->getEntity();
      $referenced_entities = $items->referencedEntities();
      $selection_settings = [];
      // Append the match operation to the selection settings.
      $selection_settings = $this->getFieldSetting('handler_settings') + [
      if ($this->getFieldSetting('handler_settings') !== NULL) {
      $selection_settings = $this->getFieldSetting('handler_settings');
      }
      $selection_settings += [
      'match_operator' => $this->getSetting('match_operator'),
      'match_limit' => $this->getSetting('match_limit'),
      ];
      ......
      ......@@ -209,6 +209,21 @@ public function testFieldAdminHandler() {
      'field_storage[subform][cardinality]' => -1,
      ];
      $this->submitForm($edit, 'Update settings');
      // Assert that the target bundle handler setting is initially set.
      $this->assertSession()->checkboxChecked('settings[handler_settings][target_bundles][tags]');
      // Change the handler to 'views'.
      $this->submitForm([
      'settings[handler]' => 'views',
      ], 'Change handler');
      $this->assertSession()->fieldValueEquals('settings[handler]', 'views');
      // Change handler back to 'default'.
      $this->submitForm([
      'settings[handler]' => 'default:taxonomy_term',
      ], 'Change handler');
      // Assert that changing the handler resets the handler settings.
      $this->assertSession()->checkboxNotChecked('settings[handler_settings][target_bundles][tags]');
      $term_name = $this->randomString();
      $result = \Drupal::entityQuery('taxonomy_term')
      ->condition('name', $term_name)
      ......@@ -217,6 +232,7 @@ public function testFieldAdminHandler() {
      ->execute();
      $this->assertCount(0, $result, "No taxonomy terms exist with the name '$term_name'.");
      $edit = [
      'settings[handler_settings][target_bundles][tags]' => TRUE,
      // This must be set before new entities will be auto-created.
      'settings[handler_settings][auto_create]' => 1,
      ];
      ......
      <?php
      namespace Drupal\Tests\field_ui\FunctionalJavascript;
      use Drupal\FunctionalJavascriptTests\WebDriverTestBase;
      use Drupal\Tests\field_ui\Traits\FieldUiJSTestTrait;
      use Drupal\Tests\taxonomy\Traits\TaxonomyTestTrait;
      /**
      * Tests the default value widget in Field UI.
      *
      * @group field_ui
      */
      class DefaultValueWidgetTest extends WebDriverTestBase {
      use TaxonomyTestTrait;
      use FieldUiJSTestTrait;
      /**
      * {@inheritdoc}
      */
      protected static $modules = [
      'node',
      'field_ui',
      'taxonomy',
      ];
      /**
      * {@inheritdoc}
      */
      protected $defaultTheme = 'stark';
      /**
      * {@inheritdoc}
      */
      protected function setUp(): void {
      parent::setUp();
      // Create a Content type and two test nodes.
      $this->createContentType(['type' => 'test_content']);
      $user = $this->drupalCreateUser([
      'access content',
      'administer content types',
      'administer node fields',
      ]);
      $this->drupalLogin($user);
      }
      /**
      * Tests default value options on field config change.
      */
      public function testDefaultValueOptionsForChangingBundles() {
      $vocab_1 = $this->createVocabulary(['name' => 'Colors']);
      $this->createTerm($vocab_1, ['name' => 'red']);
      $this->createTerm($vocab_1, ['name' => 'green']);
      $vocab_2 = $this->createVocabulary(['name' => 'Tags']);
      $this->createTerm($vocab_2, ['name' => 'random tag 1']);
      $this->createTerm($vocab_2, ['name' => 'random tag 2']);
      $field_name = 'test_field';
      $this->fieldUIAddNewFieldJS('admin/structure/types/manage/test_content', $field_name, $field_name, 'entity_reference', FALSE);
      $page = $this->getSession()->getPage();
      $page->findField('field_storage[subform][settings][target_type]')->selectOption('taxonomy_term');
      $this->assertSession()->assertWaitOnAjaxRequest();
      $page->findField('settings[handler_settings][target_bundles][' . $vocab_1->id() . ']')->check();
      $this->assertSession()->assertWaitOnAjaxRequest();
      $page->findField('set_default_value')->check();
      $default_value_field = $page->findField('default_value_input[field_' . $field_name . '][0][target_id]');
      $default_value_field->setValue('r');
      $this->getSession()->getDriver()->keyDown($default_value_field->getXpath(), ' ');
      $this->assertSession()->waitOnAutocomplete();
      // Check the autocomplete results.
      $results = $page->findAll('css', '.ui-autocomplete li');
      $this->assertCount(2, $results);
      $this->assertSession()->elementTextNotContains('css', '.ui-autocomplete li', 'random tag 1');
      $this->assertSession()->elementTextContains('css', '.ui-autocomplete li', 'green');
      }
      }
      0% Loading or .
      You are about to add 0 people to the discussion. Proceed with caution.
      Please register or to comment