Skip to content

Instantly share code, notes, and snippets.

@chx
Created December 18, 2018 07:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chx/6a5319bf1478830aa959ef12329e2089 to your computer and use it in GitHub Desktop.
Save chx/6a5319bf1478830aa959ef12329e2089 to your computer and use it in GitHub Desktop.
diff --git a/docroot/core/modules/block/src/BlockListBuilder.php b/docroot/core/modules/block/src/BlockListBuilder.php
index d2286fcdd..d54c212a2 100644
--- a/docroot/core/modules/block/src/BlockListBuilder.php
+++ b/docroot/core/modules/block/src/BlockListBuilder.php
@@ -4,6 +4,7 @@
use Drupal\Component\Utility\Html;
use Drupal\Component\Serialization\Json;
+use Drupal\Component\Utility\UrlHelper;
use Drupal\Core\Config\Entity\ConfigEntityListBuilder;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityStorageInterface;
@@ -363,13 +364,19 @@ public function getDefaultOperations(EntityInterface $entity) {
$query = $url->getOption('query');
$destination = $query['destination'];
- $destinationUrl = Url::fromUserInput($destination);
- $destinationQuery = $destinationUrl->getOption('query');
- unset($destinationQuery['block-placement']);
+ if (UrlHelper::isExternal($destination)) {
+ $destinationUrl = Url::fromUri($destination);
+ }
+ else {
+ $destinationUrl = Url::fromUserInput($destination);
+ }
+ if ($destinationQuery = $destinationUrl->getOption('query')) {
+ unset($destinationQuery['block-placement']);
- $destinationUrl->setOption('query', $destinationQuery);
- $query['destination'] = $destinationUrl->toString();
- $url->setOption('query', $query);
+ $destinationUrl->setOption('query', $destinationQuery);
+ $query['destination'] = $destinationUrl->toString();
+ $url->setOption('query', $query);
+ }
}
}
return $operations;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment