From 11d0a351c4ad83637620c9b7ab00ef68b028b7fa Mon Sep 17 00:00:00 2001 From: janmonteros Date: Fri, 7 Aug 2020 16:26:30 +0800 Subject: [PATCH 1/4] magento/adobe-stock-integration#1711: Use product model instead of data object for catalog image helper init --- .../Ui/Component/Listing/Columns/Thumbnail.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php b/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php index efb2ad2f8dae5..7a2662b59d198 100644 --- a/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php +++ b/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php @@ -6,7 +6,7 @@ namespace Magento\MediaGalleryCatalogUi\Ui\Component\Listing\Columns; use Magento\Catalog\Helper\Image; -use Magento\Framework\DataObject; +use Magento\Catalog\Model\ProductFactory; use Magento\Framework\View\Element\UiComponent\ContextInterface; use Magento\Framework\View\Element\UiComponentFactory; use Magento\Store\Model\Store; @@ -29,11 +29,17 @@ class Thumbnail extends Column */ private $imageHelper; + /** + * @var ProductFactory + */ + private $productFactory; + /** * @param ContextInterface $context * @param UiComponentFactory $uiComponentFactory * @param StoreManagerInterface $storeManager * @param Image $image + * @param ProductFactory $productFactory * @param array $components * @param array $data */ @@ -42,12 +48,14 @@ public function __construct( UiComponentFactory $uiComponentFactory, StoreManagerInterface $storeManager, Image $image, + ProductFactory $productFactory, array $components = [], array $data = [] ) { parent::__construct($context, $uiComponentFactory, $components, $data); $this->imageHelper = $image; $this->storeManager = $storeManager; + $this->productFactory = $productFactory; } /** @@ -64,7 +72,7 @@ public function prepareDataSource(array $dataSource) if (isset($item[$fieldName])) { $item[$fieldName . '_src'] = $this->getUrl($item[$fieldName]); } else { - $category = new DataObject($item); + $category = $this->productFactory->create($item); $imageHelper = $this->imageHelper->init($category, 'product_listing_thumbnail'); $item[$fieldName . '_src'] = $imageHelper->getUrl(); } From 25133c56cf0e0390c11399b78cbe3fb426fdd1be Mon Sep 17 00:00:00 2001 From: janmonteros Date: Fri, 7 Aug 2020 18:36:39 +0800 Subject: [PATCH 2/4] magento/adobe-stock-integration#1711: Use product model instead of data object for catalog image helper init - Apply PR suggestion --- .../Ui/Component/Listing/Columns/Thumbnail.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php b/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php index 7a2662b59d198..4cacaea0d99bf 100644 --- a/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php +++ b/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php @@ -72,7 +72,7 @@ public function prepareDataSource(array $dataSource) if (isset($item[$fieldName])) { $item[$fieldName . '_src'] = $this->getUrl($item[$fieldName]); } else { - $category = $this->productFactory->create($item); + $category = $this->productFactory->create(['data' => $item]); $imageHelper = $this->imageHelper->init($category, 'product_listing_thumbnail'); $item[$fieldName . '_src'] = $imageHelper->getUrl(); } From c72447ff51cf095595bbe47b67afe0d45d5b0941 Mon Sep 17 00:00:00 2001 From: janmonteros Date: Fri, 7 Aug 2020 23:33:10 +0800 Subject: [PATCH 3/4] magento/adobe-stock-integration#1711: Use product model instead of data object for catalog image helper init - Revised approach based from pr suggestion --- .../Component/Listing/Columns/Thumbnail.php | 72 +++++++++++++----- .../etc/adminhtml/di.xml | 7 ++ .../web/images/category/placeholder/image.jpg | Bin 0 -> 820 bytes 3 files changed, 59 insertions(+), 20 deletions(-) create mode 100644 app/code/Magento/MediaGalleryCatalogUi/view/adminhtml/web/images/category/placeholder/image.jpg diff --git a/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php b/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php index 4cacaea0d99bf..dada8ee7acc19 100644 --- a/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php +++ b/app/code/Magento/MediaGalleryCatalogUi/Ui/Component/Listing/Columns/Thumbnail.php @@ -5,8 +5,9 @@ */ namespace Magento\MediaGalleryCatalogUi\Ui\Component\Listing\Columns; -use Magento\Catalog\Helper\Image; -use Magento\Catalog\Model\ProductFactory; +use Magento\Catalog\Model\Category\Image; +use Magento\Catalog\Model\CategoryRepository; +use Magento\Framework\View\Asset\Repository as AssetRepository; use Magento\Framework\View\Element\UiComponent\ContextInterface; use Magento\Framework\View\Element\UiComponentFactory; use Magento\Store\Model\Store; @@ -27,19 +28,32 @@ class Thumbnail extends Column /** * @var Image */ - private $imageHelper; + private $categoryImage; /** - * @var ProductFactory + * @var CategoryRepository */ - private $productFactory; + private $categoryRepository; /** + * @var AssetRepository + */ + private $assetRepository; + + /** + * @var string[] + */ + private $defaultPlaceholder; + + /** + * Thumbnail constructor. * @param ContextInterface $context * @param UiComponentFactory $uiComponentFactory * @param StoreManagerInterface $storeManager - * @param Image $image - * @param ProductFactory $productFactory + * @param Image $categoryImage + * @param CategoryRepository $categoryRepository + * @param AssetRepository $assetRepository + * @param array $defaultPlaceholder * @param array $components * @param array $data */ @@ -47,15 +61,19 @@ public function __construct( ContextInterface $context, UiComponentFactory $uiComponentFactory, StoreManagerInterface $storeManager, - Image $image, - ProductFactory $productFactory, + Image $categoryImage, + CategoryRepository $categoryRepository, + AssetRepository $assetRepository, + array $defaultPlaceholder = [], array $components = [], array $data = [] ) { parent::__construct($context, $uiComponentFactory, $components, $data); - $this->imageHelper = $image; $this->storeManager = $storeManager; - $this->productFactory = $productFactory; + $this->categoryImage = $categoryImage; + $this->categoryRepository = $categoryRepository; + $this->assetRepository = $assetRepository; + $this->defaultPlaceholder = $defaultPlaceholder; } /** @@ -63,20 +81,34 @@ public function __construct( * * @param array $dataSource * @return array + * @throws \Magento\Framework\Exception\LocalizedException + * @throws \Magento\Framework\Exception\NoSuchEntityException */ public function prepareDataSource(array $dataSource) { - if (isset($dataSource['data']['items'])) { - $fieldName = $this->getData('name'); - foreach ($dataSource['data']['items'] as & $item) { - if (isset($item[$fieldName])) { - $item[$fieldName . '_src'] = $this->getUrl($item[$fieldName]); - } else { - $category = $this->productFactory->create(['data' => $item]); - $imageHelper = $this->imageHelper->init($category, 'product_listing_thumbnail'); - $item[$fieldName . '_src'] = $imageHelper->getUrl(); + if (!isset($dataSource['data']['items'])) { + return $dataSource; + } + + $fieldName = $this->getData('name'); + foreach ($dataSource['data']['items'] as & $item) { + if (isset($item[$fieldName])) { + $item[$fieldName . '_src'] = $this->getUrl($item[$fieldName]); + continue; + } + + if (isset($item['entity_id'])) { + $src = $this->categoryImage->getUrl( + $this->categoryRepository->get($item['entity_id']) + ); + + if (!empty($src)) { + $item[$fieldName . '_src'] = $src; + continue; } } + + $item[$fieldName . '_src'] = $this->assetRepository->getUrl($this->defaultPlaceholder['image']); } return $dataSource; diff --git a/app/code/Magento/MediaGalleryCatalogUi/etc/adminhtml/di.xml b/app/code/Magento/MediaGalleryCatalogUi/etc/adminhtml/di.xml index 500ac10f4745a..222cfde1385f7 100644 --- a/app/code/Magento/MediaGalleryCatalogUi/etc/adminhtml/di.xml +++ b/app/code/Magento/MediaGalleryCatalogUi/etc/adminhtml/di.xml @@ -38,4 +38,11 @@ + + + + Magento_MediaGalleryCatalogUi::images/category/placeholder/image.jpg + + + diff --git a/app/code/Magento/MediaGalleryCatalogUi/view/adminhtml/web/images/category/placeholder/image.jpg b/app/code/Magento/MediaGalleryCatalogUi/view/adminhtml/web/images/category/placeholder/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0d5ef7e1bd4127242b442957d4f543d7e9e0320e GIT binary patch literal 820 zcmex=pQC5bm;@P_1sVSzVJKr@0Gh?ffCN|=S(%vGxC9uO7+6>s*?5^*A(BA2D;WhQ78Z*r8=IIqIu(^PHgDXVyy;NW#7PG~Frt_R(kX}`^8XeC5715~L1sY) zdxr0g3=X=%;Yw4BeG99LQrGqzdlMh<+Dw2u=+Ts~DvEn%w%iO$l#E`i{lYlvxEG{;H!l`?)%OPo6%iU8eH#(dF3ujaFYBlKorG&bgCyJt3kg z^}fmV_wq5#tLsj%Wo@W5X3Q!+SYYB@towGmr<<)+2g}m1Yl-g;uam`m97&*YcxJH|Zkz=200rfsQ_l~IRY z7hT_YC+-5vsh^)$KlRwp7qV;V^oe>FGt-{#IkxxKx7!)KHDx#DQme%b zkKKY7-eWF}InQ~h=b07haGL$I{i^>A$C$1$i$62pbw8Q${DYcb z^ULDzJ`nWx;_tJcbHKc>va0Uoe}<|9M)z7|Z`GAH+;9Fl|7!hX#%xBG7=bdS`}dgk zbu}M&c3#`SW@V!h6G!Q(sE2ze?|a15Xscmo@voTSp5@b*znA}g&G2WXZeYvlNlUb? zG=H|KDmacaz&u*0r8XVY@oZkHX1ZV+Kupuuzim;|aCq&PSm6ja{T aU%Rit(V)P=#L#g1Pv!paUmfcI-vj^#YZ+<) literal 0 HcmV?d00001 From 36427dc5802f140edc0d6bdbaa1d78534ff3d7ad Mon Sep 17 00:00:00 2001 From: janmonteros Date: Tue, 11 Aug 2020 10:15:06 +0800 Subject: [PATCH 4/4] magento/adobe-stock-integration#1711: Use product model instead of data object for catalog image helper init - Update MFTF for image placeholder verification, update branch --- .../AdminAssertCategoryGridPageDetailsActionGroup.xml | 1 + .../Section/AdminMediaGalleryCatalogUiCategoryGridSection.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/ActionGroup/AdminAssertCategoryGridPageDetailsActionGroup.xml b/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/ActionGroup/AdminAssertCategoryGridPageDetailsActionGroup.xml index 0788bbd60291a..7507b96cde407 100644 --- a/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/ActionGroup/AdminAssertCategoryGridPageDetailsActionGroup.xml +++ b/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/ActionGroup/AdminAssertCategoryGridPageDetailsActionGroup.xml @@ -12,6 +12,7 @@ Assert category grid page basic columns values for default category + diff --git a/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/Section/AdminMediaGalleryCatalogUiCategoryGridSection.xml b/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/Section/AdminMediaGalleryCatalogUiCategoryGridSection.xml index 5267a215c8edd..88e44b1cbd556 100644 --- a/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/Section/AdminMediaGalleryCatalogUiCategoryGridSection.xml +++ b/app/code/Magento/MediaGalleryCatalogUi/Test/Mftf/Section/AdminMediaGalleryCatalogUiCategoryGridSection.xml @@ -9,6 +9,7 @@
+