diff --git a/core/modules/contextual/src/Element/ContextualLinks.php b/core/modules/contextual/src/Element/ContextualLinks.php index 62e8966afae..e5b58fb35bb 100644 --- a/core/modules/contextual/src/Element/ContextualLinks.php +++ b/core/modules/contextual/src/Element/ContextualLinks.php @@ -78,7 +78,7 @@ class ContextualLinks extends RenderElement { $class = Html::getClass($class); $links[$class] = [ 'title' => $item['title'], - 'url' => Url::fromRoute(isset($item['route_name']) ? $item['route_name'] : '', isset($item['route_parameters']) ? $item['route_parameters'] : []), + 'url' => Url::fromRoute(isset($item['route_name']) ? $item['route_name'] : '', isset($item['route_parameters']) ? $item['route_parameters'] : [], $item['localized_options']), ]; } $element['#links'] = $links; diff --git a/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php b/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php index 90b73d7006d..00ade5a5ac9 100644 --- a/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php +++ b/core/modules/contextual/src/Tests/ContextualDynamicContextTest.php @@ -137,7 +137,7 @@ class ContextualDynamicContextTest extends WebTestBase { // Get a page where contextual links are directly rendered. $this->drupalGet(Url::fromRoute('menu_test.contextual_test')); $this->assertEscaped(""); - $this->assertLink('Edit menu - contextual'); + $this->assertRaw(''); } /** diff --git a/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml b/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml index 9a8d8adca84..2849592433d 100644 --- a/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml +++ b/core/modules/system/tests/modules/menu_test/menu_test.links.contextual.yml @@ -8,6 +8,11 @@ menu_test.contextual_hidden_manage_edit: title: 'Edit menu - contextual' group: menu_test_menu route_name: menu_test.contextual_hidden_manage_edit + options: + attributes: + class: ['use-ajax'] + data-dialog-type: 'modal' + data-is-something: TRUE menu_test.hidden_block_configure: title: 'Configure block' diff --git a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php index bebc935bb57..ddc0fbd4154 100644 --- a/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php +++ b/core/tests/Drupal/Tests/Core/Menu/ContextualLinkManagerTest.php @@ -278,20 +278,7 @@ class ContextualLinkManagerTest extends UnitTestCase { // Set up mocking of the plugin factory. $map = []; foreach ($definitions as $plugin_id => $definition) { - $plugin = $this->getMock('Drupal\Core\Menu\ContextualLinkInterface'); - $plugin->expects($this->any()) - ->method('getRouteName') - ->will($this->returnValue($definition['route_name'])); - $plugin->expects($this->any()) - ->method('getTitle') - ->will($this->returnValue($definition['title'])); - $plugin->expects($this->any()) - ->method('getWeight') - ->will($this->returnValue($definition['weight'])); - $plugin->expects($this->any()) - ->method('getOptions') - ->will($this->returnValue($definition['options'])); - $map[] = [$plugin_id, [], $plugin]; + $map[] = [$plugin_id, [], new ContextualLinkDefault([], $plugin_id, $definition)]; } $this->factory->expects($this->any()) ->method('createInstance') @@ -308,6 +295,7 @@ class ContextualLinkManagerTest extends UnitTestCase { $this->assertEquals($definition['weight'], $result[$plugin_id]['weight']); $this->assertEquals($definition['title'], $result[$plugin_id]['title']); $this->assertEquals($definition['route_name'], $result[$plugin_id]['route_name']); + $this->assertEquals($definition['options'], $result[$plugin_id]['localized_options']); } }