Skip to content

Commit fa9c569

Browse files
author
Korshenko, Olexii(okorshenko)
committed
Merge pull request #714 from magento-tango/new_pr_bugs
[Tango] Bug Fixes
2 parents 4d5990a + dcb8721 commit fa9c569

File tree

25 files changed

+994
-164
lines changed

25 files changed

+994
-164
lines changed

app/code/Magento/Backend/Block/Widget/Grid/Column/Renderer/AbstractRenderer.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,11 @@ public function getColumn()
5151
public function render(DataObject $row)
5252
{
5353
if ($this->getColumn()->getEditable()) {
54-
$value = $this->_getValue($row);
55-
return '<div class="admin__grid-control">' .
56-
'<span class="admin__grid-control-value">' . $value . '</span>' .
57-
$this->_getInputValueElement($row) . '</div>' ;
54+
$result = '<div class="admin__grid-control">';
55+
$result .= $this->getColumn()->getEditOnly() ? ''
56+
: '<span class="admin__grid-control-value">' . $this->_getValue($row) . '</span>';
57+
58+
return $result . $this->_getInputValueElement($row) . '</div>' ;
5859
}
5960
return $this->_getValue($row);
6061
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Backend\Test\Unit\Block\Widget\Grid\Column\Renderer;
7+
8+
class AbstractRendererTest extends \PHPUnit_Framework_TestCase
9+
{
10+
/**
11+
* @var \Magento\Backend\Block\Widget\Grid\Column|\PHPUnit_Framework_MockObject_MockObject
12+
*/
13+
protected $columnMock;
14+
15+
/**
16+
* @var \Magento\Framework\DataObject|\PHPUnit_Framework_MockObject_MockObject
17+
*/
18+
protected $dataObjectMock;
19+
20+
/**
21+
* @var \Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer
22+
*/
23+
protected $renderer;
24+
25+
/**
26+
* @return void
27+
*/
28+
protected function setUp()
29+
{
30+
$this->dataObjectMock = $this->getMock('Magento\Framework\DataObject', ['getData'], [], '', false);
31+
$this->columnMock = $this->getMockBuilder('Magento\Backend\Block\Widget\Grid\Column')
32+
->disableOriginalConstructor()
33+
->setMethods(['getEditable', 'getIndex', 'getEditOnly', 'getId'])
34+
->getMock();
35+
$this->renderer = $this->getMockBuilder('Magento\Backend\Block\Widget\Grid\Column\Renderer\AbstractRenderer')
36+
->disableOriginalConstructor()
37+
->setMethods(null)
38+
->getMock();
39+
}
40+
41+
/**
42+
* @param bool $editable
43+
* @param bool $onlyEdit
44+
* @param string $expectedResult
45+
* @return void
46+
* @dataProvider renderDataProvider
47+
*/
48+
public function testRender($editable, $onlyEdit, $expectedResult)
49+
{
50+
$value = 'some value';
51+
$keyValue = 'key';
52+
53+
$this->columnMock->expects($this->once())
54+
->method('getEditable')
55+
->willReturn($editable);
56+
$this->columnMock->expects($this->any())
57+
->method('getEditOnly')
58+
->willReturn($onlyEdit);
59+
$this->columnMock->expects($this->any())
60+
->method('getIndex')
61+
->willReturn($keyValue);
62+
$this->columnMock->expects($this->any())
63+
->method('getId')
64+
->willReturn('test');
65+
$this->dataObjectMock->expects($this->any())
66+
->method('getData')
67+
->with($keyValue)
68+
->willReturn($value);
69+
$this->renderer->setColumn($this->columnMock);
70+
71+
$this->assertEquals($expectedResult, $this->renderer->render($this->dataObjectMock));
72+
}
73+
74+
/**
75+
* @return array
76+
*/
77+
public function renderDataProvider()
78+
{
79+
return [
80+
[
81+
'editable' => false,
82+
'onlyEdit' => false,
83+
'expectedResult' => 'some value'
84+
],
85+
[
86+
'editable' => false,
87+
'onlyEdit' => true,
88+
'expectedResult' => 'some value'
89+
],
90+
[
91+
'editable' => true,
92+
'onlyEdit' => false,
93+
'expectedResult' => '<div class="admin__grid-control">'
94+
. '<span class="admin__grid-control-value">some value</span>'
95+
. '<input type="text" class="input-text " name="test" value="some value"/>'
96+
. '</div>'
97+
],
98+
[
99+
'editable' => true,
100+
'onlyEdit' => true,
101+
'expectedResult' => '<div class="admin__grid-control">'
102+
. '<input type="text" class="input-text " name="test" value="some value"/>'
103+
. '</div>'
104+
],
105+
];
106+
}
107+
}

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

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010
use Magento\Framework\Controller\Result\JsonFactory;
1111
use Magento\Cms\Api\Data\PageInterface;
1212

13+
/**
14+
* Cms page grid inline edit controller
15+
*
16+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
17+
*/
1318
class InlineEdit extends \Magento\Backend\App\Action
1419
{
1520
/** @var PostDataProcessor */
@@ -63,7 +68,8 @@ public function execute()
6368
try {
6469
$pageData = $this->dataProcessor->filter($postItems[$pageId]);
6570
$this->validatePost($pageData, $page, $error, $messages);
66-
$page->setData(array_merge($page->getData(), $pageData));
71+
$extendedPageData = $page->getData();
72+
$this->setCmsPageData($page, $extendedPageData, $pageData);
6773
$this->pageRepository->save($page);
6874
} catch (\Magento\Framework\Exception\LocalizedException $e) {
6975
$messages[] = $this->getErrorWithPageId($page, $e->getMessage());
@@ -116,4 +122,18 @@ protected function getErrorWithPageId(PageInterface $page, $errorText)
116122
{
117123
return '[Page ID: ' . $page->getId() . '] ' . $errorText;
118124
}
125+
126+
/**
127+
* Set cms page data
128+
*
129+
* @param \Magento\Cms\Model\Page $page
130+
* @param array $extendedPageData
131+
* @param array $pageData
132+
* @return $this
133+
*/
134+
public function setCmsPageData(\Magento\Cms\Model\Page $page, array $extendedPageData, array $pageData)
135+
{
136+
$page->setData(array_merge($page->getData(), $extendedPageData, $pageData));
137+
return $this;
138+
}
119139
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ public function __construct(\Magento\Cms\Model\Page $cmsPage)
3434
*/
3535
public function toOptionArray()
3636
{
37-
$options[] = ['label' => '', 'value' => ''];
3837
$availableOptions = $this->cmsPage->getAvailableStatuses();
38+
$options = [];
3939
foreach ($availableOptions as $key => $value) {
4040
$options[] = [
4141
'label' => $value,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Cms\Model\Page\Source;
7+
8+
/**
9+
* Is active filter source
10+
*/
11+
class IsActiveFilter extends IsActive
12+
{
13+
/**
14+
* {@inheritdoc}
15+
*/
16+
public function toOptionArray()
17+
{
18+
return array_merge([['label' => '', 'value' => '']], parent::toOptionArray());
19+
}
20+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ public function toOptionArray()
4343
if ($this->options !== null) {
4444
return $this->options;
4545
}
46-
$options[] = ['label' => '', 'value' => ''];
46+
4747
$configOptions = $this->pageLayoutBuilder->getPageLayoutsConfig()->getOptions();
48+
$options = [];
4849
foreach ($configOptions as $key => $value) {
4950
$options[] = [
5051
'label' => $value,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Cms\Model\Page\Source;
7+
8+
/**
9+
* Page layout filter source
10+
*/
11+
class PageLayoutFilter extends PageLayout
12+
{
13+
/**
14+
* {@inheritdoc}
15+
*/
16+
public function toOptionArray()
17+
{
18+
return array_merge([['label' => '', 'value' => '']], parent::toOptionArray());
19+
}
20+
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ public function __construct(ListInterface $themeList)
3535
*/
3636
public function toOptionArray()
3737
{
38-
$options[] = ['label' => '', 'value' => ''];
39-
return $options + $this->themeList->getLabels();
40-
38+
return $this->themeList->getLabels();
4139
}
4240
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Cms\Model\Page\Source;
7+
8+
/**
9+
* Theme filter source
10+
*/
11+
class ThemeFilter extends Theme
12+
{
13+
/**
14+
* {@inheritdoc}
15+
*/
16+
public function toOptionArray()
17+
{
18+
return array_merge([['label' => '', 'value' => '']], parent::toOptionArray());
19+
}
20+
}

0 commit comments

Comments
 (0)