Skip to content

Commit 71c58ad

Browse files
authored
Merge pull request #147 from magento-troll/troll_p2
[Troll] bugfixes p2
2 parents c20c8e9 + 77ad0b4 commit 71c58ad

File tree

28 files changed

+454
-55
lines changed

28 files changed

+454
-55
lines changed

app/code/Magento/Catalog/Block/Adminhtml/Product/Grid.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,6 @@ protected function _getStore()
114114
*/
115115
protected function _prepareCollection()
116116
{
117-
parent::_prepareCollection();
118-
119117
$store = $this->_getStore();
120118
$collection = $this->_productFactory->create()->getCollection()->addAttributeToSelect(
121119
'sku'
@@ -184,6 +182,9 @@ protected function _prepareCollection()
184182
$this->setCollection($collection);
185183

186184
$this->getCollection()->addWebsiteNamesToResult();
185+
186+
parent::_prepareCollection();
187+
187188
return $this;
188189
}
189190

app/code/Magento/Catalog/Block/Product/View/Gallery.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,9 @@ public function getGalleryImagesJson()
121121
}
122122
if (empty($imagesItems)) {
123123
$imagesItems[] = [
124-
'thumb' => $this->_imageHelper->getDefaultPlaceholderUrl('thumbnail'),
125-
'img' => $this->_imageHelper->getDefaultPlaceholderUrl('image'),
126-
'full' => $this->_imageHelper->getDefaultPlaceholderUrl('image'),
124+
'thumb' => $this->getImage($this->getProduct(), 'product_thumbnail_image')->getImageUrl(),
125+
'img' => $this->getImage($this->getProduct(), 'product_base_image')->getImageUrl(),
126+
'full' => $this->getImage($this->getProduct(), 'product_page_image_large')->getImageUrl(),
127127
'caption' => '',
128128
'position' => '0',
129129
'isMain' => true,

app/code/Magento/Catalog/Helper/Image.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,9 @@ public function placeholder($fileName)
433433
*
434434
* @param null|string $placeholder
435435
* @return string
436+
*
437+
* @deprecated Returns only default placeholder.
438+
* Does not take into account custom placeholders set in Configuration.
436439
*/
437440
public function getPlaceholder($placeholder = null)
438441
{
@@ -544,6 +547,9 @@ public function getResizedImageInfo()
544547
/**
545548
* @param null|string $placeholder
546549
* @return string
550+
*
551+
* @deprecated Returns only default placeholder.
552+
* Does not take into account custom placeholders set in Configuration.
547553
*/
548554
public function getDefaultPlaceholderUrl($placeholder = null)
549555
{

app/code/Magento/Catalog/Model/System/Config/Backend/Catalog/Url/Rewrite/Suffix.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,27 @@ public function afterSave()
9393
{
9494
if ($this->isValueChanged()) {
9595
$this->updateSuffixForUrlRewrites();
96+
if ($this->isCategorySuffixChanged()) {
97+
$this->cacheTypeList->invalidate([
98+
\Magento\Framework\App\Cache\Type\Block::TYPE_IDENTIFIER,
99+
\Magento\Framework\App\Cache\Type\Collection::TYPE_IDENTIFIER
100+
]);
101+
}
96102
}
97103
return parent::afterSave();
98104
}
99105

106+
/**
107+
* Check is category suffix changed
108+
*
109+
* @return bool
110+
*/
111+
private function isCategorySuffixChanged()
112+
{
113+
return $this->isValueChanged()
114+
&& ($this->getPath() == CategoryUrlPathGenerator::XML_PATH_CATEGORY_URL_SUFFIX);
115+
}
116+
100117
/**
101118
* Update suffix for url rewrites
102119
*
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
<?php
2+
/**
3+
* Copyright © 2016 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Catalog\Test\Unit\Model\System\Config\Backend\Catalog\Url\Rewrite;
7+
8+
class SuffixTest extends \PHPUnit_Framework_TestCase
9+
{
10+
/**
11+
* @var \Magento\Framework\Model\Context
12+
*/
13+
protected $context;
14+
15+
/**
16+
* @var \Magento\Framework\Event\ManagerInterface
17+
*/
18+
protected $eventDispatcher;
19+
20+
/**
21+
* @var \Magento\Framework\Registry
22+
*/
23+
protected $registry;
24+
25+
/**
26+
* @var \Magento\Framework\App\Config\ScopeConfigInterface
27+
*/
28+
protected $config;
29+
30+
/**
31+
* @var \Magento\Framework\App\Cache\TypeListInterface
32+
*/
33+
protected $cacheTypeList;
34+
35+
/**
36+
* @var \Magento\UrlRewrite\Helper\UrlRewrite
37+
*/
38+
protected $urlRewriteHelper;
39+
40+
/**
41+
* @var \Magento\Store\Model\StoreManagerInterface
42+
*/
43+
protected $storeManager;
44+
45+
/**
46+
* @var \Magento\Framework\App\ResourceConnection
47+
*/
48+
protected $appResource;
49+
50+
/**
51+
* @var \Magento\UrlRewrite\Model\UrlFinderInterface
52+
*/
53+
protected $urlFinder;
54+
55+
/**
56+
* @var \Magento\Catalog\Model\System\Config\Backend\Catalog\Url\Rewrite\Suffix
57+
*/
58+
protected $suffixModel;
59+
60+
public function setUp()
61+
{
62+
$this->eventDispatcher = $this->getMockBuilder('\Magento\Framework\Event\ManagerInterface')
63+
->disableOriginalConstructor()
64+
->setMethods(['dispatch'])
65+
->getMock();
66+
$this->eventDispatcher->method('dispatch')->willReturnSelf();
67+
$this->context = $this->getMockBuilder('\Magento\Framework\Model\Context')
68+
->disableOriginalConstructor()
69+
->setMethods(['getEventDispatcher'])
70+
->getMock();
71+
$this->context->method('getEventDispatcher')->willReturn($this->eventDispatcher);
72+
73+
$this->registry = $this->getMock('\Magento\Framework\Registry');
74+
$this->config = $this->getMock('\Magento\Framework\App\Config\ScopeConfigInterface');
75+
$this->cacheTypeList = $this->getMockBuilder('\Magento\Framework\App\Cache\TypeList')
76+
->disableOriginalConstructor()
77+
->setMethods(['invalidate'])
78+
->getMock();
79+
80+
$this->urlRewriteHelper = $this->getMockBuilder('\Magento\UrlRewrite\Helper\UrlRewrite')
81+
->disableOriginalConstructor()
82+
->getMock();
83+
$this->storeManager = $this->getMockBuilder('\Magento\Store\Model\StoreManager')
84+
->disableOriginalConstructor()
85+
->setMethods(['getStores'])
86+
->getMock();
87+
$this->storeManager->method('getStores')->willReturn([]);
88+
89+
$this->appResource =$this->getMockBuilder('\Magento\Framework\App\ResourceConnection')
90+
->disableOriginalConstructor()
91+
->getMock();
92+
$this->urlFinder =$this->getMockBuilder('\Magento\UrlRewrite\Model\UrlFinderInterface')
93+
->setMethods(['findAllByData', 'findOneByData'])
94+
->getMock();
95+
$this->urlFinder->method('findAllByData')->willReturn([]);
96+
97+
$this->suffixModel = new \Magento\Catalog\Model\System\Config\Backend\Catalog\Url\Rewrite\Suffix(
98+
$this->context,
99+
$this->registry,
100+
$this->config,
101+
$this->cacheTypeList,
102+
$this->urlRewriteHelper,
103+
$this->storeManager,
104+
$this->appResource,
105+
$this->urlFinder
106+
);
107+
}
108+
109+
public function testAfterSaveCleanCache()
110+
{
111+
$this->suffixModel->setValue('new');
112+
$this->suffixModel->setPath(\Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator::XML_PATH_CATEGORY_URL_SUFFIX);
113+
$this->cacheTypeList->expects($this->exactly(2))->method('invalidate')->withConsecutive(
114+
[$this->equalTo([
115+
\Magento\Framework\App\Cache\Type\Block::TYPE_IDENTIFIER,
116+
\Magento\Framework\App\Cache\Type\Collection::TYPE_IDENTIFIER
117+
])],
118+
[$this->equalTo('config')]
119+
);
120+
$this->suffixModel->afterSave();
121+
}
122+
123+
public function testAfterSaveWithoutChanges()
124+
{
125+
$this->suffixModel->setValue('');
126+
$this->suffixModel->setPath(\Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator::XML_PATH_CATEGORY_URL_SUFFIX);
127+
$this->cacheTypeList->expects($this->never())->method('invalidate');
128+
$this->suffixModel->afterSave();
129+
}
130+
131+
public function testAfterSaveProduct()
132+
{
133+
$this->suffixModel->setValue('new');
134+
$this->suffixModel->setPath(\Magento\CatalogUrlRewrite\Model\ProductUrlPathGenerator::XML_PATH_PRODUCT_URL_SUFFIX);
135+
$this->cacheTypeList->expects($this->once())->method('invalidate')->with('config');
136+
$this->suffixModel->afterSave();
137+
}
138+
}

app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/AdvancedPricing.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,11 @@ protected function getTierPriceStructure($tierPricePath)
480480
'dataType' => Number::NAME,
481481
'label' => __('Quantity'),
482482
'dataScope' => 'price_qty',
483+
'validation' => [
484+
'required-entry' => true,
485+
'validate-greater-than-zero' => true,
486+
'validate-digits' => true,
487+
],
483488
],
484489
],
485490
],
@@ -497,6 +502,11 @@ protected function getTierPriceStructure($tierPricePath)
497502
'addbefore' => $this->locator->getStore()
498503
->getBaseCurrency()
499504
->getCurrencySymbol(),
505+
'validation' => [
506+
'required-entry' => true,
507+
'validate-greater-than-zero' => true,
508+
'validate-number' => true,
509+
],
500510
],
501511
],
502512
],

app/code/Magento/Catalog/view/adminhtml/ui_component/category_form.xml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@
185185
</item>
186186
<item name="template" xsi:type="string">ui/form/field</item>
187187
<item name="source" xsi:type="string">category</item>
188+
<item name="label" xsi:type="string" translate="true">Description</item>
188189
<item name="wysiwyg" xsi:type="boolean">true</item>
189190
<item name="dataScope" xsi:type="string">description</item>
190191
<item name="sortOrder" xsi:type="number">50</item>
@@ -217,6 +218,7 @@
217218
<item name="sortOrder" xsi:type="number">70</item>
218219
<item name="dataType" xsi:type="string">string</item>
219220
<item name="formElement" xsi:type="string">select</item>
221+
<item name="label" xsi:type="string" translate="true">Display Mode</item>
220222
</item>
221223
</argument>
222224
</field>
@@ -244,7 +246,6 @@
244246
<item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
245247
<item name="required" xsi:type="boolean">true</item>
246248
<item name="sortOrder" xsi:type="number">90</item>
247-
<item name="label" xsi:type="string" translate="true">Sort Products By</item>
248249
</item>
249250
</argument>
250251
<field name="available_sort_by">
@@ -253,6 +254,7 @@
253254
<item name="additionalClasses" xsi:type="string">admin__field-default</item>
254255
<item name="formElement" xsi:type="string">multiselect</item>
255256
<item name="source" xsi:type="string">category</item>
257+
<item name="label" xsi:type="string" translate="true">Available Product Listing Sort By</item>
256258
</item>
257259
</argument>
258260
</field>
@@ -279,7 +281,6 @@
279281
<item name="config" xsi:type="array">
280282
<item name="breakLine" xsi:type="boolean">true</item>
281283
<item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
282-
<item name="label" xsi:type="string" translate="true">Default Product Sorting</item>
283284
<item name="required" xsi:type="boolean">true</item>
284285
<item name="sortOrder" xsi:type="number">100</item>
285286
</item>
@@ -290,6 +291,7 @@
290291
<item name="additionalClasses" xsi:type="string">admin__field-default</item>
291292
<item name="formElement" xsi:type="string">select</item>
292293
<item name="source" xsi:type="string">category</item>
294+
<item name="label" xsi:type="string" translate="true">Default Product Listing Sort By</item>
293295
</item>
294296
</argument>
295297
</field>
@@ -316,7 +318,6 @@
316318
<item name="config" xsi:type="array">
317319
<item name="breakLine" xsi:type="boolean">true</item>
318320
<item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
319-
<item name="label" xsi:type="string" translate="true">Layered Navigation Price Step</item>
320321
<item name="required" xsi:type="boolean">true</item>
321322
<item name="sortOrder" xsi:type="number">110</item>
322323
</item>
@@ -327,6 +328,7 @@
327328
<item name="additionalClasses" xsi:type="string">admin__field-small</item>
328329
<item name="formElement" xsi:type="string">input</item>
329330
<item name="source" xsi:type="string">category</item>
331+
<item name="label" xsi:type="string" translate="true">Layered Navigation Price Step</item>
330332
<item name="addbefore" xsi:type="string">$</item>
331333
</item>
332334
</argument>
@@ -362,7 +364,6 @@
362364
<item name="type" xsi:type="string">group</item>
363365
<item name="config" xsi:type="array">
364366
<item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
365-
<item name="label" xsi:type="string" translate="true">URL Key</item>
366367
<item name="required" xsi:type="boolean">false</item>
367368
<item name="sortOrder" xsi:type="number">120</item>
368369
</item>
@@ -372,6 +373,7 @@
372373
<item name="config" xsi:type="array">
373374
<item name="formElement" xsi:type="string">input</item>
374375
<item name="source" xsi:type="string">category</item>
376+
<item name="label" xsi:type="string" translate="true">URL Key</item>
375377
<item name="sortOrder" xsi:type="number">10</item>
376378
<item name="imports" xsi:type="array">
377379
<item name="disabled" xsi:type="string">${ $.provider }:data.use_default.url_key</item>

app/code/Magento/Catalog/view/frontend/templates/product/list.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ $_helper = $this->helper('Magento\Catalog\Helper\Output');
8989
</button>
9090
</form>
9191
<?php else: ?>
92-
<?php if ($_product->getIsSalable()): ?>
92+
<?php if ($_product->isAvailable()): ?>
9393
<div class="stock available"><span><?php /* @escapeNotVerified */ echo __('In stock') ?></span></div>
9494
<?php else: ?>
9595
<div class="stock unavailable"><span><?php /* @escapeNotVerified */ echo __('Out of stock') ?></span></div>

app/code/Magento/CatalogInventory/Model/Stock.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class Stock extends AbstractExtensibleModel implements StockInterface
2424
*
2525
* @var string
2626
*/
27-
protected $eventPrefix = 'cataloginventory_stock';
27+
protected $_eventPrefix = 'cataloginventory_stock';
2828

2929
/**
3030
* Parameter name in event

app/code/Magento/CatalogInventory/Model/Stock/Item.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class Item extends AbstractExtensibleModel implements StockItemInterface
3232
*
3333
* @var string
3434
*/
35-
protected $eventPrefix = 'cataloginventory_stock_item';
35+
protected $_eventPrefix = 'cataloginventory_stock_item';
3636

3737
const WEBSITE_ID = 'website_id';
3838

0 commit comments

Comments
 (0)