Skip to content

Commit 584f92b

Browse files
author
Yaroslav Onischenko
committed
Merge remote-tracking branch 'origin/MAGETWO-51089' into develop
2 parents e60afa2 + 5ebf0cf commit 584f92b

File tree

16 files changed

+187
-11
lines changed

16 files changed

+187
-11
lines changed

app/code/Magento/Newsletter/Block/Adminhtml/Queue/Edit.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,12 @@ protected function _prepareLayout()
161161
*/
162162
public function getPreviewUrl()
163163
{
164-
return $this->getUrl('*/*/preview');
164+
if ($this->getTemplateId()) {
165+
$params = ['template_id' => $this->getTemplateId()];
166+
} else {
167+
$params = ['id' => $this->getRequest()->getParam('id')];
168+
}
169+
return $this->getUrl('*/*/preview', $params);
165170
}
166171

167172
/**

app/code/Magento/Newsletter/Block/Adminhtml/Queue/Preview/Form.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ protected function _prepareForm()
3535
if ($data = $this->getFormData()) {
3636
$mapper = ['preview_store_id' => 'store_id'];
3737

38+
if (empty($data['id']) && !empty($data['text'])) {
39+
$this->_backendSession->setPreviewData($data);
40+
}
41+
3842
foreach ($data as $key => $value) {
3943
if (array_key_exists($key, $mapper)) {
4044
$name = $mapper[$key];

app/code/Magento/Newsletter/Block/Adminhtml/Template/Edit.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ public function getSaveUrl()
238238
*/
239239
public function getPreviewUrl()
240240
{
241-
return $this->getUrl('*/*/preview');
241+
return $this->getUrl('*/*/preview', ['id' => $this->getRequest()->getParam('id')]);
242242
}
243243

244244
/**

app/code/Magento/Newsletter/Block/Adminhtml/Template/Preview.php

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,11 @@ protected function _toHtml()
5858
if ($id = (int)$this->getRequest()->getParam('id')) {
5959
$this->loadTemplate($template, $id);
6060
} else {
61-
$template->setTemplateType($this->getRequest()->getParam('type'));
62-
$template->setTemplateText($this->getRequest()->getParam('text'));
63-
$template->setTemplateStyles($this->getRequest()->getParam('styles'));
61+
$previewData = $this->getPreviewData();
62+
63+
$template->setTemplateType($previewData['type']);
64+
$template->setTemplateText($previewData['text']);
65+
$template->setTemplateStyles($previewData['styles']);
6466
}
6567

6668
\Magento\Framework\Profiler::start($this->profilerName);
@@ -88,6 +90,32 @@ protected function _toHtml()
8890
return $templateProcessed;
8991
}
9092

93+
/**
94+
* Return template preview data
95+
*
96+
* @return array
97+
*/
98+
private function getPreviewData()
99+
{
100+
$previewData = [];
101+
$previewParams = ['type', 'text', 'styles'];
102+
103+
$sessionData = [];
104+
if ($this->_backendSession->hasPreviewData()) {
105+
$sessionData = $this->_backendSession->getPreviewData();
106+
}
107+
108+
foreach ($previewParams as $param) {
109+
if (isset($sessionData[$param])) {
110+
$previewData[$param] = $sessionData[$param];
111+
} else {
112+
$previewData[$param] = $this->getRequest()->getParam($param);
113+
}
114+
}
115+
116+
return $previewData;
117+
}
118+
91119
/**
92120
* Get Store Id from request or default
93121
*

app/code/Magento/Newsletter/Block/Adminhtml/Template/Preview/Form.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ protected function _prepareForm()
3535
if ($data = $this->getFormData()) {
3636
$mapper = ['preview_store_id' => 'store_id'];
3737

38+
if (empty($data['id']) && !empty($data['text'])) {
39+
$this->_backendSession->setPreviewData($data);
40+
}
41+
3842
foreach ($data as $key => $value) {
3943
if (array_key_exists($key, $mapper)) {
4044
$name = $mapper[$key];

app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Preview.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,11 @@ public function execute()
1717
{
1818
$this->_view->loadLayout();
1919
$data = $this->getRequest()->getParams();
20-
if (empty($data) || !isset($data['id'])) {
20+
21+
$isEmptyRequestData = empty($data) || !isset($data['id']);
22+
$isEmptyPreviewData = !$this->_getSession()->hasPreviewData() || empty($this->_getSession()->getPreviewData());
23+
24+
if ($isEmptyRequestData && $isEmptyPreviewData) {
2125
$this->_forward('noroute');
2226
return;
2327
}

app/code/Magento/Newsletter/Controller/Adminhtml/Queue/Save.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public function execute()
8282

8383
$this->messageManager->addSuccess(__('You saved the newsletter queue.'));
8484
$this->_getSession()->setFormData(false);
85+
$this->_getSession()->unsPreviewData();
8586

8687
$this->_redirect('*/*');
8788
} catch (\Magento\Framework\Exception\LocalizedException $e) {

app/code/Magento/Newsletter/Controller/Adminhtml/Template/Preview.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ public function execute()
1818
$this->_view->loadLayout();
1919

2020
$data = $this->getRequest()->getParams();
21-
if (empty($data) || !isset($data['id'])) {
21+
$isEmptyRequestData = empty($data) || !isset($data['id']);
22+
$isEmptyPreviewData = !$this->_getSession()->hasPreviewData() || empty($this->_getSession()->getPreviewData());
23+
24+
if ($isEmptyRequestData && $isEmptyPreviewData) {
2225
$this->_forward('noroute');
2326
return $this;
2427
}

app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public function execute()
6363

6464
$this->messageManager->addSuccess(__('The newsletter template has been saved.'));
6565
$this->_getSession()->setFormData(false);
66-
66+
$this->_getSession()->unsPreviewData();
6767
$this->_redirect('*/template');
6868
return;
6969
} catch (LocalizedException $e) {

app/code/Magento/Newsletter/Test/Unit/Block/Adminhtml/Queue/PreviewTest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ protected function setUp()
6262
$appState = $this->getMock('Magento\Framework\App\State', [], [], '', false);
6363
$context->expects($this->once())->method('getAppState')->will($this->returnValue($appState));
6464

65+
$backendSession = $this->getMockBuilder('Magento\Backend\Model\Session')
66+
->disableOriginalConstructor()
67+
->getMock();
68+
69+
$context->expects($this->once())->method('getBackendSession')->willReturn($backendSession);
70+
6571
$templateFactory = $this->getMock('Magento\Newsletter\Model\TemplateFactory', ['create'], [], '', false);
6672
$this->template = $this->getMock('Magento\Newsletter\Model\Template', [], [], '', false);
6773
$templateFactory->expects($this->once())->method('create')->will($this->returnValue($this->template));

0 commit comments

Comments
 (0)