diff --git a/core/modules/contextual/js/contextual.js b/core/modules/contextual/js/contextual.js index b5fe7d094f..90b0d9056a 100644 --- a/core/modules/contextual/js/contextual.js +++ b/core/modules/contextual/js/contextual.js @@ -99,7 +99,7 @@ // Set the destination parameter on each of the contextual links. const destination = `destination=${Drupal.encodePath( - Drupal.url(drupalSettings.path.currentPath), + Drupal.url(drupalSettings.path.currentPath + window.location.search), )}`; $contextual.find('.contextual-links a').each(function () { const url = this.getAttribute('href'); diff --git a/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php index 726df7253c..6243b6086f 100644 --- a/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php +++ b/core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php @@ -110,11 +110,11 @@ public function testContextualLinksDestination() { 'access contextual links', 'administer blocks', ]); - $this->drupalGet('user'); + $this->drupalGet('admin/structure/block', ['query' => ['foo' => 'bar']]); $this->assertSession()->waitForElement('css', '.contextual button'); - $expected_destination_value = (string) $this->loggedInUser->toUrl()->toString(); + $expected_destination_value = '/admin/structure/block'; $contextual_link_url_parsed = parse_url($this->getSession()->getPage()->findLink('Configure block')->getAttribute('href')); - $this->assertEquals("destination=$expected_destination_value", $contextual_link_url_parsed['query']); + $this->assertEquals("destination=$expected_destination_value%3Ffoo%3Dbar", $contextual_link_url_parsed['query']); } }