From ee229278e63db5466abd1866167db093b4b0187f Mon Sep 17 00:00:00 2001 From: Igor Melnikov <imelnikov@ebay.com> Date: Wed, 13 Jul 2016 22:55:58 -0500 Subject: [PATCH] MAGETWO-54849: Refactor \Magento\Framework\Url::escape to use \Magento\Framework\Escaper::escapeUrl Refactoring Url class --- .../Widget/Instance/Edit/Tab/Settings.php | 7 ++++++- lib/internal/Magento/Framework/Url.php | 8 ++++++++ .../Framework/Url/RouteParamsResolver.php | 17 ++++++++++++++--- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Settings.php b/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Settings.php index 4a01f5e12a7..2e7b376fe7d 100644 --- a/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Settings.php +++ b/app/code/Magento/Widget/Block/Adminhtml/Widget/Instance/Edit/Tab/Settings.php @@ -170,7 +170,12 @@ class Settings extends \Magento\Backend\Block\Widget\Form\Generic implements { return $this->getUrl( 'adminhtml/*/*', - ['_current' => true, 'code' => '<%- data.code %>', 'theme_id' => '<%- data.theme_id %>'] + [ + '_current' => true, + 'code' => '<%- data.code %>', + 'theme_id' => '<%- data.theme_id %>', + '_escape_params' => false + ] ); } diff --git a/lib/internal/Magento/Framework/Url.php b/lib/internal/Magento/Framework/Url.php index a4bd3dd2ecc..1e5de34ad27 100644 --- a/lib/internal/Magento/Framework/Url.php +++ b/lib/internal/Magento/Framework/Url.php @@ -867,6 +867,7 @@ class Url extends \Magento\Framework\DataObject implements \Magento\Framework\Ur private function createUrl($routePath = null, array $routeParams = null) { $escapeQuery = false; + $escapeParams = true; /** * All system params should be unset before we call getRouteUrl @@ -885,6 +886,12 @@ class Url extends \Magento\Framework\DataObject implements \Magento\Framework\Ur unset($routeParams['_escape']); } + if (isset($routeParams['_escape_params'])) { + $escapeParams = $routeParams['_escape_params']; + unset($routeParams['_escape_params']); + } + $this->getRouteParamsResolver()->setData('escape_params', $escapeParams); + $query = null; if (isset($routeParams['_query'])) { $this->_queryParamsResolver->setQueryParams([]); @@ -929,6 +936,7 @@ class Url extends \Magento\Framework\DataObject implements \Magento\Framework\Ur $url .= '#' . $this->getEscaper()->escapeUrl($fragment); } $this->getRouteParamsResolver()->unsetData('secure'); + $this->getRouteParamsResolver()->unsetData('escape_params'); return $url; } diff --git a/lib/internal/Magento/Framework/Url/RouteParamsResolver.php b/lib/internal/Magento/Framework/Url/RouteParamsResolver.php index 9d84307d281..3c37ef27a7a 100644 --- a/lib/internal/Magento/Framework/Url/RouteParamsResolver.php +++ b/lib/internal/Magento/Framework/Url/RouteParamsResolver.php @@ -93,7 +93,7 @@ class RouteParamsResolver extends \Magento\Framework\DataObject implements Route if (array_key_exists($key, $data) || $this->getRouteParam($key)) { continue; } - $data[$this->getEscaper()->escapeUrl($key)] = $this->getEscaper()->escapeUrl($value); + $data[$key] = $value; } foreach ($this->request->getQuery() as $key => $value) { $this->queryParamsResolver->setQueryParam($key, $value); @@ -111,9 +111,20 @@ class RouteParamsResolver extends \Magento\Framework\DataObject implements Route $this->setRouteParam($key, $value); } else { if (is_object($value)) { - $this->setRouteParam($this->getEscaper()->escapeUrl($key), $value); + if ($this->getData('escape_params')) { + $this->setRouteParam($this->getEscaper()->escapeUrl($key), $value); + } else { + $this->setRouteParam($key, $value); + } } else { - $this->setRouteParam($this->getEscaper()->escapeUrl($key), $this->getEscaper()->escapeUrl($value)); + if ($this->getData('escape_params')) { + $this->setRouteParam( + $this->getEscaper()->escapeUrl($key), + $this->getEscaper()->escapeUrl($value) + ); + } else { + $this->setRouteParam($key, $value); + } } } } -- GitLab