Loading core/modules/contextual/js/contextual.es6.js +1 −1 Original line number Diff line number Diff line Loading @@ -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'); Loading core/modules/contextual/js/contextual.js +1 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ var $region = $contextual.closest('.contextual-region'); var contextual = Drupal.contextual; $contextual.html(html).addClass('contextual').prepend(Drupal.theme('contextualTrigger')); var destination = "destination=".concat(Drupal.encodePath(Drupal.url(drupalSettings.path.currentPath))); var destination = "destination=".concat(Drupal.encodePath(Drupal.url(drupalSettings.path.currentPath + window.location.search))); $contextual.find('.contextual-links a').each(function () { var url = this.getAttribute('href'); var glue = url.indexOf('?') === -1 ? '?' : '&'; Loading core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php +17 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\Tests\contextual\FunctionalJavascript; use Drupal\Core\Url; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; use Drupal\user\Entity\Role; Loading Loading @@ -114,4 +115,20 @@ public function testContextualLinksDestination() { $this->assertEquals("destination=$expected_destination_value", $contextual_link_url_parsed['query']); } /** * Tests the contextual links destination with query. */ public function testContextualLinksDestinationWithQuery() { $this->grantPermissions(Role::load(Role::AUTHENTICATED_ID), [ 'access contextual links', 'administer blocks', ]); $this->drupalGet('admin/structure/block', ['query' => ['foo' => 'bar']]); $this->assertSession()->waitForElement('css', '.contextual button'); $expected_destination_value = Url::fromRoute('block.admin_display')->toString(); $contextual_link_url_parsed = parse_url($this->getSession()->getPage()->findLink('Configure block')->getAttribute('href')); $this->assertEquals("destination=$expected_destination_value%3Ffoo%3Dbar", $contextual_link_url_parsed['query']); } } Loading
core/modules/contextual/js/contextual.es6.js +1 −1 Original line number Diff line number Diff line Loading @@ -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'); Loading
core/modules/contextual/js/contextual.js +1 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ var $region = $contextual.closest('.contextual-region'); var contextual = Drupal.contextual; $contextual.html(html).addClass('contextual').prepend(Drupal.theme('contextualTrigger')); var destination = "destination=".concat(Drupal.encodePath(Drupal.url(drupalSettings.path.currentPath))); var destination = "destination=".concat(Drupal.encodePath(Drupal.url(drupalSettings.path.currentPath + window.location.search))); $contextual.find('.contextual-links a').each(function () { var url = this.getAttribute('href'); var glue = url.indexOf('?') === -1 ? '?' : '&'; Loading
core/modules/contextual/tests/src/FunctionalJavascript/ContextualLinksTest.php +17 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Drupal\Tests\contextual\FunctionalJavascript; use Drupal\Core\Url; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; use Drupal\user\Entity\Role; Loading Loading @@ -114,4 +115,20 @@ public function testContextualLinksDestination() { $this->assertEquals("destination=$expected_destination_value", $contextual_link_url_parsed['query']); } /** * Tests the contextual links destination with query. */ public function testContextualLinksDestinationWithQuery() { $this->grantPermissions(Role::load(Role::AUTHENTICATED_ID), [ 'access contextual links', 'administer blocks', ]); $this->drupalGet('admin/structure/block', ['query' => ['foo' => 'bar']]); $this->assertSession()->waitForElement('css', '.contextual button'); $expected_destination_value = Url::fromRoute('block.admin_display')->toString(); $contextual_link_url_parsed = parse_url($this->getSession()->getPage()->findLink('Configure block')->getAttribute('href')); $this->assertEquals("destination=$expected_destination_value%3Ffoo%3Dbar", $contextual_link_url_parsed['query']); } }