diff --git a/Controller/StudioUIController.php b/Controller/StudioUIController.php index e416c48b..454c8d25 100644 --- a/Controller/StudioUIController.php +++ b/Controller/StudioUIController.php @@ -15,6 +15,8 @@ use eZ\Publish\API\Repository\Values\Content\Location; use eZ\Publish\API\Repository\Values\Content\URLAlias; use eZ\Publish\API\Repository\Values\Content\VersionInfo; use eZ\Publish\API\Repository\Values\ContentType\ContentType; +use eZ\Publish\Core\MVC\Symfony\SiteAccess\SiteAccessRouterInterface; +use eZ\Publish\Core\MVC\Symfony\SiteAccess\URILexer; use eZ\Publish\Core\REST\Server\Values; use EzSystems\StudioUIBundle\SiteAccess\ReverseMatcher; use Symfony\Component\HttpFoundation\Request; @@ -36,6 +38,7 @@ class StudioUIController extends Controller private $userService; private $router; private $reverseMatcher; + private $siteAccessRouter; private $logger; public function __construct( @@ -46,6 +49,7 @@ class StudioUIController extends Controller UserService $userService, RouterInterface $router, ReverseMatcher $reverseMatcher, + SiteAccessRouterInterface $siteAccessRouter, Logger $logger = null) { $this->urlAliasService = $urlAliasService; @@ -55,6 +59,7 @@ class StudioUIController extends Controller $this->userService = $userService; $this->router = $router; $this->reverseMatcher = $reverseMatcher; + $this->siteAccessRouter = $siteAccessRouter; $this->logger = $logger; } @@ -239,6 +244,11 @@ class StudioUIController extends Controller $siteAccessName = $request->get('siteAccessName'); $url = $request->get('url'); + $siteAccess = $this->siteAccessRouter->matchByName($siteAccessName); + if ($siteAccess->matcher instanceof URILexer) { + $url = $siteAccess->matcher->analyseURI($url); + } + $location = $this->getSiteAccessRootLocation($siteAccessName); if ($url !== '/') { diff --git a/Resources/config/services.yml b/Resources/config/services.yml index b767b67a..399b1c30 100644 --- a/Resources/config/services.yml +++ b/Resources/config/services.yml @@ -21,6 +21,7 @@ services: - '@ezpublish.api.service.user' - '@router' - '@ezstudioui.reverse_matcher' + - '@ezpublish.siteaccess_router' - '@?logger' tags: - { name: monolog.logger, channel: studioUI } diff --git a/Resources/public/js/views/ezs-browserview.js b/Resources/public/js/views/ezs-browserview.js index ee66fba8..0ac29c15 100644 --- a/Resources/public/js/views/ezs-browserview.js +++ b/Resources/public/js/views/ezs-browserview.js @@ -137,6 +137,7 @@ YUI.add('ezs-browserview', function (Y) { var iframe = event.target, iframeWindow = iframe.getDOMNode().contentWindow, iframePath = iframeWindow.location.pathname, + iframeHref = iframeWindow.location.href, isVersionPreview = iframePath.indexOf(VERSION_PREVIEW_URL_PREFIX) > -1; this.set('loadingScreenDisabledOnIframeHeightChange', true); @@ -150,10 +151,6 @@ YUI.add('ezs-browserview', function (Y) { this.set('previewUrl', iframePath); - if (iframePath.indexOf(this.get('studioActiveSiteaccess')) !== -1) { - iframePath = iframePath.substring(this.get('studioActiveSiteaccess').length + 1, iframePath.length); - } - /** * Fired when a website is loaded into preview mode/iframe. * It's checking whether a currently viewed page has the pageFieldType @@ -161,7 +158,7 @@ YUI.add('ezs-browserview', function (Y) { * @event iframePreviewLoad * @param locationPath {String} a pathname of currently visited page (from window.location object) */ - this.fire('iframePreviewLoad', {locationPath: iframePath}); + this.fire('iframePreviewLoad', {locationPath: iframePath, previewUrl: iframeHref}); this.get('actionbar').fire('enablePreviewButtons'); }, diff --git a/Resources/public/js/views/services/ezs-browserviewservice.js b/Resources/public/js/views/services/ezs-browserviewservice.js index 74d85936..3bc543a1 100644 --- a/Resources/public/js/views/services/ezs-browserviewservice.js +++ b/Resources/public/js/views/services/ezs-browserviewservice.js @@ -207,7 +207,7 @@ YUI.add('ezs-browserviewservice', function (Y) { return; } - this._loadContentPreviewData(event.locationPath, event.target); + this._loadContentPreviewData(event.locationPath, event.target, event.previewUrl); }, /** @@ -228,12 +228,11 @@ YUI.add('ezs-browserviewservice', function (Y) { * * @method _loadContentPreviewData * @protected - * @param path {String} previewed website URL + * @param path {String} previewed website path * @param target {Y.View} target view + * @param previewUrl {String} previewed website URL */ - _loadContentPreviewData: function (path, target) { - var previewUrl = this._createPageUrl(path); - + _loadContentPreviewData: function (path, target, previewUrl) { this.set('previewUrl', previewUrl); this._showLoadingScreen();