Skip to content
Snippets Groups Projects
Verified Commit 710ae1c8 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
parent 5ed165d5
Branches
Tags
38 merge requests!12227Issue #3181946 by jonmcl, mglaman,!8528Issue #3456871 by Tim Bozeman: Support NULL services,!8323Fix source code editing and in place front page site studio editing.,!6278Issue #3187770 by godotislate, smustgrave, catch, quietone: Views Rendered...,!3878Removed unused condition head title for views,!38582585169-10.1.x,!3818Issue #2140179: $entity->original gets stale between updates,!3742Issue #3328429: Create item list field formatter for displaying ordered and unordered lists,!3731Claro: role=button on status report items,!3668Resolve #3347842 "Deprecate the trusted",!3651Issue #3347736: Create new SDC component for Olivero (header-search),!3546refactored dialog.pcss file,!3531Issue #3336994: StringFormatter always displays links to entity even if the user in context does not have access,!3502Issue #3335308: Confusing behavior with FormState::setFormState and FormState::setMethod,!3478Issue #3337882: Deleted menus are not removed from content type config,!3452Issue #3332701: Refactor Claro's tablesort-indicator stylesheet,!3355Issue #3209129: Scrolling problems when adding a block via layout builder,!3226Issue #2987537: Custom menu link entity type should not declare "bundle" entity key,!3154Fixes #2987987 - CSRF token validation broken on routes with optional parameters.,!3147Issue #3328457: Replace most substr($a, $i) where $i is negative with str_ends_with(),!3146Issue #3328456: Replace substr($a, 0, $i) with str_starts_with(),!3133core/modules/system/css/components/hidden.module.css,!2964Issue #2865710 : Dependencies from only one instance of a widget are used in display modes,!2812Issue #3312049: [Followup] Fix Drupal.Commenting.FunctionComment.MissingReturnType returns for NULL,!2614Issue #2981326: Replace non-test usages of \Drupal::logger() with IoC injection,!2378Issue #2875033: Optimize joins and table selection in SQL entity query implementation,!2334Issue #3228209: Add hasRole() method to AccountInterface,!2062Issue #3246454: Add weekly granularity to views date sort,!1105Issue #3025039: New non translatable field on translatable content throws error,!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!877Issue #2708101: Default value for link text is not saved,!844Resolve #3036010 "Updaters",!673Issue #3214208: FinishResponseSubscriber could create duplicate headers,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!213Issue #2906496: Give Media a menu item under Content
Pipeline #57809 passed with warnings
Pipeline: drupal

#57814

    Pipeline: drupal

    #57812

      ......@@ -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 to comment