Skip to content

Commit f998a44

Browse files
authored
Merge pull request #252 from magento-obsessive-owls/MC-15977
[Owls] MC-15977: PageBuilder preview
2 parents 52aa959 + f7f9705 commit f998a44

File tree

4 files changed

+76
-9
lines changed

4 files changed

+76
-9
lines changed

app/code/Magento/PageBuilder/Controller/ContentType/Preview.php

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,28 @@ class Preview extends \Magento\Framework\App\Action\Action implements HttpPostAc
2626
*/
2727
private $rendererPool;
2828

29+
/**
30+
* @var \Magento\Backend\Model\Auth
31+
*/
32+
private $auth;
33+
2934
/**
3035
* Constructor
3136
*
3237
* @param \Magento\Backend\App\Action\Context $context
3338
* @param \Magento\PageBuilder\Model\Stage\RendererPool $rendererPool
39+
* @param \Magento\Backend\Model\Auth $auth
3440
*/
3541
public function __construct(
3642
\Magento\Backend\App\Action\Context $context,
37-
\Magento\PageBuilder\Model\Stage\RendererPool $rendererPool
43+
\Magento\PageBuilder\Model\Stage\RendererPool $rendererPool,
44+
\Magento\Backend\Model\Auth $auth = null
3845
) {
3946
parent::__construct($context);
4047

4148
$this->rendererPool = $rendererPool;
49+
$this->auth = $auth ?? \Magento\Framework\App\ObjectManager::getInstance()
50+
->get(\Magento\Backend\Model\Auth::class);
4251
}
4352

4453
/**
@@ -48,14 +57,18 @@ public function __construct(
4857
*/
4958
public function execute()
5059
{
51-
$pageResult = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
52-
// Some template filters and directive processors expect this to be called in order to function.
53-
$pageResult->initLayout();
60+
if ($this->auth->isLoggedIn()) {
61+
$pageResult = $this->resultFactory->create(ResultFactory::TYPE_PAGE);
62+
// Some template filters and directive processors expect this to be called in order to function.
63+
$pageResult->initLayout();
64+
65+
$params = $this->getRequest()->getParams();
66+
$renderer = $this->rendererPool->getRenderer($params['role']);
67+
$result = ['data' => $renderer->render($params)];
5468

55-
$params = $this->getRequest()->getParams();
56-
$renderer = $this->rendererPool->getRenderer($params['role']);
57-
$result = ['data' => $renderer->render($params)];
69+
return $this->resultFactory->create(ResultFactory::TYPE_JSON)->setData($result);
70+
}
5871

59-
return $this->resultFactory->create(ResultFactory::TYPE_JSON)->setData($result);
72+
$this->_forward('noroute');
6073
}
6174
}

app/code/Magento/PageBuilder/Model/Stage/Config.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ public function getConfig()
135135
'content_types' => $this->getContentTypes(),
136136
'stage_config' => $this->data,
137137
'media_url' => $this->urlBuilder->getBaseUrl(['_type' => UrlInterface::URL_TYPE_MEDIA]),
138-
'preview_url' => $this->frontendUrlBuilder->getUrl('pagebuilder/contenttype/preview'),
138+
'preview_url' => $this->frontendUrlBuilder
139+
->addSessionParam()
140+
->getUrl('pagebuilder/contenttype/preview'),
139141
'column_grid_default' => $this->scopeConfig->getValue(self::XML_PATH_COLUMN_GRID_DEFAULT),
140142
'column_grid_max' => $this->scopeConfig->getValue(self::XML_PATH_COLUMN_GRID_MAX),
141143
'can_use_inline_editing_on_stage' => $this->isWysiwygProvisionedForEditingOnStage(),
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\PageBuilder\Plugin\Framework\Session;
7+
8+
/**
9+
* Plugin for SID resolver.
10+
*/
11+
class SidResolver
12+
{
13+
/**
14+
* @var \Magento\Framework\App\RequestInterface
15+
*/
16+
private $request;
17+
18+
/**
19+
* @param \Magento\Framework\App\RequestInterface $request
20+
*/
21+
public function __construct(
22+
\Magento\Framework\App\RequestInterface $request
23+
) {
24+
$this->request = $request;
25+
}
26+
27+
/**
28+
* Get Sid for pagebuilder preview
29+
*
30+
* @param \Magento\Framework\Session\SidResolver $subject
31+
* @param string|null $result
32+
* @param \Magento\Framework\Session\SessionManagerInterface $session
33+
*
34+
* @return string|null
35+
*/
36+
public function afterGetSid(
37+
\Magento\Framework\Session\SidResolver $subject,
38+
$result,
39+
\Magento\Framework\Session\SessionManagerInterface $session
40+
) {
41+
if (strpos($this->request->getPathInfo(), '/pagebuilder/contenttype/preview') === 0) {
42+
return $this->request->getQuery(
43+
$subject->getSessionIdQueryParam($session)
44+
);
45+
}
46+
47+
return $result;
48+
}
49+
}

app/code/Magento/PageBuilder/etc/di.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,7 @@
140140
</argument>
141141
</arguments>
142142
</type>
143+
<type name="Magento\Framework\Session\SidResolver">
144+
<plugin name="pagebuilder_preview_sid_resolving" type="Magento\PageBuilder\Plugin\Framework\Session\SidResolver" />
145+
</type>
143146
</config>

0 commit comments

Comments
 (0)