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 @@
+
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..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\Framework\DataObject;
+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,13 +28,32 @@ class Thumbnail extends Column
/**
* @var Image
*/
- private $imageHelper;
+ private $categoryImage;
/**
+ * @var CategoryRepository
+ */
+ 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 Image $categoryImage
+ * @param CategoryRepository $categoryRepository
+ * @param AssetRepository $assetRepository
+ * @param array $defaultPlaceholder
* @param array $components
* @param array $data
*/
@@ -41,13 +61,19 @@ public function __construct(
ContextInterface $context,
UiComponentFactory $uiComponentFactory,
StoreManagerInterface $storeManager,
- Image $image,
+ 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->categoryImage = $categoryImage;
+ $this->categoryRepository = $categoryRepository;
+ $this->assetRepository = $assetRepository;
+ $this->defaultPlaceholder = $defaultPlaceholder;
}
/**
@@ -55,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 = new DataObject($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 0000000000000..0d5ef7e1bd412
Binary files /dev/null and b/app/code/Magento/MediaGalleryCatalogUi/view/adminhtml/web/images/category/placeholder/image.jpg differ