From a75c1cacc1b61a1e1450ddcde163fc95b6914a30 Mon Sep 17 00:00:00 2001
From: catch <catch@35733.no-reply.drupal.org>
Date: Mon, 1 Aug 2022 09:42:17 +0900
Subject: [PATCH] Revert "Issue #3056652 by yogeshmpawar, mashermike, aalin,
 ranjith_kumar_k_u: Link options attributes removed on save"

This reverts commit b9942ab28175908dce2a96a615bb2b756f016f8d.
---
 .../Plugin/Field/FieldWidget/LinkWidget.php   |  2 +-
 .../tests/src/Functional/LinkFieldTest.php    | 72 -------------------
 2 files changed, 1 insertion(+), 73 deletions(-)

diff --git a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php
index 28e6fa09126c..3d6d80f622b2 100644
--- a/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php
+++ b/core/modules/link/src/Plugin/Field/FieldWidget/LinkWidget.php
@@ -286,7 +286,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
 
     // Exposing the attributes array in the widget is left for alternate and more
     // advanced field widgets.
-    $element['options']['attributes'] = [
+    $element['attributes'] = [
       '#type' => 'value',
       '#tree' => TRUE,
       '#value' => !empty($items[$delta]->options['attributes']) ? $items[$delta]->options['attributes'] : [],
diff --git a/core/modules/link/tests/src/Functional/LinkFieldTest.php b/core/modules/link/tests/src/Functional/LinkFieldTest.php
index a23ad80e6f73..be98be91f3be 100644
--- a/core/modules/link/tests/src/Functional/LinkFieldTest.php
+++ b/core/modules/link/tests/src/Functional/LinkFieldTest.php
@@ -841,78 +841,6 @@ public function testNoLinkUri() {
     $this->assertStringContainsString($expected_link, $output);
   }
 
-  /**
-   * Test attributes preserved on save.
-   *
-   * Make sure that attributes are retained when the link is saved via the UI.
-   */
-  public function testAttributesOnLink() {
-
-    $field_name = mb_strtolower($this->randomMachineName());
-    $this->fieldStorage = FieldStorageConfig::create([
-      'field_name' => $field_name,
-      'entity_type' => 'entity_test',
-      'type' => 'link',
-      'cardinality' => 1,
-    ]);
-    $this->fieldStorage->save();
-    FieldConfig::create([
-      'field_storage' => $this->fieldStorage,
-      'label' => 'Read more about this entity',
-      'bundle' => 'entity_test',
-      'settings' => [
-        'title' => DRUPAL_OPTIONAL,
-        'link_type' => LinkItemInterface::LINK_INTERNAL,
-      ],
-    ])->save();
-
-    $this->container->get('entity_type.manager')
-      ->getStorage('entity_form_display')
-      ->load('entity_test.entity_test.default')
-      ->setComponent($field_name, [
-        'type' => 'link_default',
-      ])
-      ->save();
-
-    EntityViewDisplay::create([
-      'targetEntityType' => 'entity_test',
-      'bundle' => 'entity_test',
-      'mode' => 'full',
-      'status' => TRUE,
-    ])->setComponent($field_name, [
-      'type' => 'link',
-    ])
-      ->save();
-
-    // Test a link with attributes.
-    $edit = [
-      "{$field_name}[0][title]" => 'Link with attributes.',
-      "{$field_name}[0][uri]" => '<front>',
-    ];
-
-    $this->drupalGet('entity_test/add');
-    $this->submitForm($edit, t('Save'));
-    preg_match('|entity_test/manage/(\d+)|', $this->getUrl(), $match);
-    $id = $match[1];
-
-    $entity = EntityTest::load($id);
-    $field = $entity->get($field_name)->first();
-
-    $attribute_value = mb_strtolower($this->randomMachineName());
-
-    $field->set('options', ['attributes' => ['custom-attribute' => $attribute_value]]);
-    $entity->save();
-
-    $output = $this->renderTestEntity($id);
-    $this->assertStringContainsString($attribute_value, $output);
-
-    $this->drupalGet($entity->toUrl('edit-form'));
-    $this->submitForm([], 'Save');
-
-    $output = $this->renderTestEntity($id);
-    $this->assertStringContainsString($attribute_value, $output);
-  }
-
   /**
    * Renders a test_entity and returns the output.
    *
-- 
GitLab