Skip to content

Commit f949b30

Browse files
author
Yushkin, Dmytro
committed
Merge branch 'develop' of github.corp.magento.com:magento2/magento2ce into MAGETWO-45061
2 parents 9052635 + 9b314ba commit f949b30

File tree

18 files changed

+161
-63
lines changed

18 files changed

+161
-63
lines changed

app/code/Magento/Cms/Block/Adminhtml/Page/Edit/Tab/Design.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,10 @@ protected function _prepareForm()
156156
);
157157

158158
$designFieldset->addField(
159-
'custom_page_layout',
159+
'custom_root_template',
160160
'select',
161161
[
162-
'name' => 'custom_page_layout',
162+
'name' => 'custom_root_template',
163163
'label' => __('Custom Layout'),
164164
'values' => $this->pageLayoutBuilder->getPageLayoutsConfig()->toOptionArray(true),
165165
'disabled' => $isElementDisabled

app/code/Magento/Cms/Controller/Adminhtml/Page/InlineEdit.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public function execute()
6666
/** @var \Magento\Cms\Model\Page $page */
6767
$page = $this->pageRepository->getById($pageId);
6868
try {
69-
$pageData = $this->dataProcessor->filter($postItems[$pageId]);
69+
$pageData = $this->filterPost($postItems[$pageId]);
7070
$this->validatePost($pageData, $page, $error, $messages);
7171
$extendedPageData = $page->getData();
7272
$this->setCmsPageData($page, $extendedPageData, $pageData);
@@ -92,6 +92,22 @@ public function execute()
9292
]);
9393
}
9494

95+
/**
96+
* Filtering posted data.
97+
*
98+
* @param array $postData
99+
* @return array
100+
*/
101+
protected function filterPost($postData = [])
102+
{
103+
$pageData = $this->dataProcessor->filter($postData);
104+
$pageData['custom_theme'] = isset($pageData['custom_theme']) ? $pageData['custom_theme'] : null;
105+
$pageData['custom_root_template'] = isset($pageData['custom_root_template'])
106+
? $pageData['custom_root_template']
107+
: null;
108+
return $pageData;
109+
}
110+
95111
/**
96112
* Validate post data
97113
*

app/code/Magento/Cms/Model/Block.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,4 +214,14 @@ public function setIsActive($isActive)
214214
{
215215
return $this->setData(self::IS_ACTIVE, $isActive);
216216
}
217+
218+
/**
219+
* Receive page store ids
220+
*
221+
* @return int[]
222+
*/
223+
public function getStores()
224+
{
225+
return $this->hasData('stores') ? $this->getData('stores') : $this->getData('store_id');
226+
}
217227
}

app/code/Magento/Cms/Model/BlockRepository.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Magento\Framework\Reflection\DataObjectProcessor;
1616
use Magento\Cms\Model\ResourceModel\Block as ResourceBlock;
1717
use Magento\Cms\Model\ResourceModel\Block\CollectionFactory as BlockCollectionFactory;
18+
use Magento\Store\Model\StoreManagerInterface;
1819

1920
/**
2021
* Class BlockRepository
@@ -57,6 +58,11 @@ class BlockRepository implements BlockRepositoryInterface
5758
*/
5859
protected $dataBlockFactory;
5960

61+
/**
62+
* @var \Magento\Store\Model\StoreManagerInterface
63+
*/
64+
private $storeManager;
65+
6066
/**
6167
* @param ResourceBlock $resource
6268
* @param BlockFactory $blockFactory
@@ -65,6 +71,7 @@ class BlockRepository implements BlockRepositoryInterface
6571
* @param Data\BlockSearchResultsInterfaceFactory $searchResultsFactory
6672
* @param DataObjectHelper $dataObjectHelper
6773
* @param DataObjectProcessor $dataObjectProcessor
74+
* @param StoreManagerInterface $storeManager
6875
*/
6976
public function __construct(
7077
ResourceBlock $resource,
@@ -73,7 +80,8 @@ public function __construct(
7380
BlockCollectionFactory $blockCollectionFactory,
7481
Data\BlockSearchResultsInterfaceFactory $searchResultsFactory,
7582
DataObjectHelper $dataObjectHelper,
76-
DataObjectProcessor $dataObjectProcessor
83+
DataObjectProcessor $dataObjectProcessor,
84+
StoreManagerInterface $storeManager
7785
) {
7886
$this->resource = $resource;
7987
$this->blockFactory = $blockFactory;
@@ -82,6 +90,7 @@ public function __construct(
8290
$this->dataObjectHelper = $dataObjectHelper;
8391
$this->dataBlockFactory = $dataBlockFactory;
8492
$this->dataObjectProcessor = $dataObjectProcessor;
93+
$this->storeManager = $storeManager;
8594
}
8695

8796
/**
@@ -93,6 +102,8 @@ public function __construct(
93102
*/
94103
public function save(Data\BlockInterface $block)
95104
{
105+
$storeId = $this->storeManager->getStore()->getId();
106+
$block->setStoreId($storeId);
96107
try {
97108
$this->resource->save($block);
98109
} catch (\Exception $exception) {

app/code/Magento/Cms/Model/Page/Source/ThemeFilter.php renamed to app/code/Magento/Cms/Model/Page/Source/CustomLayout.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
namespace Magento\Cms\Model\Page\Source;
77

88
/**
9-
* Theme filter source
9+
* Custom layout source
1010
*/
11-
class ThemeFilter extends Theme
11+
class CustomLayout extends PageLayout
1212
{
1313
/**
1414
* {@inheritdoc}
1515
*/
1616
public function toOptionArray()
1717
{
18-
return array_merge([['label' => '', 'value' => '']], parent::toOptionArray());
18+
return array_merge([['label' => 'Default', 'value' => '']], parent::toOptionArray());
1919
}
2020
}

app/code/Magento/Cms/Model/Page/Source/Theme.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public function __construct(ListInterface $themeList)
3535
*/
3636
public function toOptionArray()
3737
{
38-
return $this->themeList->getLabels();
38+
$options[] = ['label' => 'Default', 'value' => ''];
39+
return array_merge($options, $this->themeList->getLabels());
3940
}
4041
}

app/code/Magento/Cms/Model/PageRepository.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Magento\Framework\Reflection\DataObjectProcessor;
1616
use Magento\Cms\Model\ResourceModel\Page as ResourcePage;
1717
use Magento\Cms\Model\ResourceModel\Page\CollectionFactory as PageCollectionFactory;
18+
use Magento\Store\Model\StoreManagerInterface;
1819

1920
/**
2021
* Class PageRepository
@@ -57,6 +58,11 @@ class PageRepository implements PageRepositoryInterface
5758
*/
5859
protected $dataPageFactory;
5960

61+
/**
62+
* @var \Magento\Store\Model\StoreManagerInterface
63+
*/
64+
private $storeManager;
65+
6066
/**
6167
* @param ResourcePage $resource
6268
* @param PageFactory $pageFactory
@@ -65,6 +71,7 @@ class PageRepository implements PageRepositoryInterface
6571
* @param Data\PageSearchResultsInterfaceFactory $searchResultsFactory
6672
* @param DataObjectHelper $dataObjectHelper
6773
* @param DataObjectProcessor $dataObjectProcessor
74+
* @param StoreManagerInterface $storeManager
6875
*/
6976
public function __construct(
7077
ResourcePage $resource,
@@ -73,7 +80,8 @@ public function __construct(
7380
PageCollectionFactory $pageCollectionFactory,
7481
Data\PageSearchResultsInterfaceFactory $searchResultsFactory,
7582
DataObjectHelper $dataObjectHelper,
76-
DataObjectProcessor $dataObjectProcessor
83+
DataObjectProcessor $dataObjectProcessor,
84+
StoreManagerInterface $storeManager
7785
) {
7886
$this->resource = $resource;
7987
$this->pageFactory = $pageFactory;
@@ -82,6 +90,7 @@ public function __construct(
8290
$this->dataObjectHelper = $dataObjectHelper;
8391
$this->dataPageFactory = $dataPageFactory;
8492
$this->dataObjectProcessor = $dataObjectProcessor;
93+
$this->storeManager = $storeManager;
8594
}
8695

8796
/**
@@ -93,6 +102,8 @@ public function __construct(
93102
*/
94103
public function save(\Magento\Cms\Api\Data\PageInterface $page)
95104
{
105+
$storeId = $this->storeManager->getStore()->getId();
106+
$page->setStoreId($storeId);
96107
try {
97108
$this->resource->save($page);
98109
} catch (\Exception $exception) {

app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Page/InlineEditTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ public function prepareMocksForTestExecute()
9090
$postData = [
9191
1 => [
9292
'title' => '404 Not Found',
93-
'identifier' => 'no-route'
93+
'identifier' => 'no-route',
94+
'custom_theme' => '1',
95+
'custom_root_template' => '2'
9496
]
9597
];
9698
$this->request->expects($this->any())
@@ -138,7 +140,9 @@ public function prepareMocksForTestExecute()
138140
->with([
139141
'layout' => '1column',
140142
'title' => '404 Not Found',
141-
'identifier' => 'no-route'
143+
'identifier' => 'no-route',
144+
'custom_theme' => '1',
145+
'custom_root_template' => '2'
142146
]);
143147
$this->jsonFactory->expects($this->once())
144148
->method('create')

app/code/Magento/Cms/Test/Unit/Model/BlockRepositoryTest.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ class BlockRepositoryTest extends \PHPUnit_Framework_TestCase
5353
*/
5454
protected $collection;
5555

56+
/**
57+
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Store\Model\StoreManagerInterface
58+
*/
59+
private $storeManager;
60+
5661
/**
5762
* Initialize repository
5863
*/
@@ -80,6 +85,14 @@ public function setUp()
8085
->disableOriginalConstructor()
8186
->setMethods(['create'])
8287
->getMock();
88+
$this->storeManager = $this->getMockBuilder('Magento\Store\Model\StoreManagerInterface')
89+
->disableOriginalConstructor()
90+
->getMock();
91+
$store = $this->getMockBuilder('\Magento\Store\Api\Data\StoreInterface')
92+
->disableOriginalConstructor()
93+
->getMock();
94+
$store->expects($this->any())->method('getId')->willReturn(0);
95+
$this->storeManager->expects($this->any())->method('getStore')->willReturn($store);
8396

8497
$this->block = $this->getMockBuilder('Magento\Cms\Model\Block')->disableOriginalConstructor()->getMock();
8598
$this->blockData = $this->getMockBuilder('Magento\Cms\Api\Data\BlockInterface')
@@ -121,7 +134,8 @@ public function setUp()
121134
$collectionFactory,
122135
$blockSearchResultFactory,
123136
$this->dataHelper,
124-
$this->dataObjectProcessor
137+
$this->dataObjectProcessor,
138+
$this->storeManager
125139
);
126140
}
127141

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Cms\Test\Unit\Model\Page\Source;
7+
8+
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
9+
10+
class CustomLayoutTest extends PageLayoutTest
11+
{
12+
/**
13+
* @return string
14+
*/
15+
protected function getSourceClassName()
16+
{
17+
return 'Magento\Cms\Model\Page\Source\CustomLayout';
18+
}
19+
20+
/**
21+
* {@inheritdoc}
22+
*/
23+
public function getOptionsDataProvider()
24+
{
25+
return [
26+
[
27+
[],
28+
[['label' => 'Default', 'value' => '']],
29+
],
30+
[
31+
['testStatus' => 'testValue'],
32+
[['label' => 'Default', 'value' => ''], ['label' => 'testValue', 'value' => 'testStatus']],
33+
],
34+
];
35+
}
36+
}

0 commit comments

Comments
 (0)