Skip to content

Commit

Permalink
Merge pull request #1601 from Nazar65/ASI-1489
Browse files Browse the repository at this point in the history
Add "Not used anywhere" option to the Used In filter
  • Loading branch information
lenaorobei authored Jul 21, 2020
2 parents 535dbb4 + 79a80e1 commit b2e96b4
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class EntityType implements CustomFilterInterface
{
private const TABLE_ALIAS = 'main_table';
private const TABLE_MEDIA_CONTENT_ASSET = 'media_content_asset';
private const TABLE_MEDIA_GALLERY_ASSET = 'media_gallery_asset';
private const NOT_USED = 'not_used';

/**
* @var ResourceConnection
Expand All @@ -41,9 +43,20 @@ public function apply(Filter $filter, AbstractDb $collection): bool
{
$value = $filter->getValue();
if (is_array($value)) {
$conditions = [];

if (in_array(self::NOT_USED, $value)) {
unset($value[array_search(self::NOT_USED, $value)]);
$conditions[] = ['in' => $this->getNotUsedEntityIds()];
}

if (!empty($value)) {
$conditions[] = ['in' => $this->getSelectByEntityType($value)];
}

$collection->addFieldToFilter(
self::TABLE_ALIAS . '.id',
['in' => $this->getSelectByEntityType($value)]
$conditions
);
}
return true;
Expand All @@ -65,4 +78,21 @@ private function getSelectByEntityType(array $value): Select
$value
);
}

/**
* Return select asset ids that not exists in asset_content_table
*/
private function getNotUsedEntityIds(): Select
{
return $this->connection->getConnection()->select()->from(
['media_gallery_asset' => $this->connection->getTableName(self::TABLE_MEDIA_GALLERY_ASSET)],
['id']
)->where(
'media_gallery_asset.id not in ?',
$this->connection->getConnection()->select()->from(
['asset_content_table' => $this->connection->getTableName(self::TABLE_MEDIA_CONTENT_ASSET)],
['asset_id']
)
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->

<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
<test name="AdminEnhancedMediaGalleryVerifyNotUsedOptionFilterTest">
<annotations>
<features value="MediaGallery"/>
<useCaseId value="https://github.com/magento/adobe-stock-integration/issues/1489"/>
<title value="User filters images that are not used in the content"/>
<stories value="Story 52: User filters images that are not used in the content"/>
<testCaseId value="https://studio.cucumber.io/projects/131313/test-plan/folders/1320712/scenarios/4930844"/>
<description value="User filters images that are not used in the content"/>
<severity value="CRITICAL"/>
<group value="media_gallery_ui"/>
</annotations>
<before>
<createData entity="SimpleSubCategory" stepKey="category"/>
<magentoCLI command="config:set cms/wysiwyg/enabled enabled" stepKey="enableWYSIWYG"/>
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
</before>
<after>
<actionGroup ref="ResetAdminDataGridToDefaultViewActionGroup" stepKey="resetAdminDataGridToDefaultView"/>
<actionGroup ref="AdminMediaGalleryFolderSelectActionGroup" stepKey="selectFolder">
<argument name="name" value="wysiwyg"/>
</actionGroup>
<actionGroup ref="AdminEnhancedMediaGalleryEnableMassActionModeActionGroup" stepKey="enableMassActionToDeleteImages"/>
<actionGroup ref="AdminEnhancedMediaGallerySelectImageForMassActionActionGroup" stepKey="selectFirstImageToDelete">
<argument name="imageName" value="{{ImageUpload.fileName}}"/>
</actionGroup>
<actionGroup ref="AdminEnhancedMediaGallerySelectImageForMassActionActionGroup" stepKey="selectSecondImageToDelete">
<argument name="imageName" value="{{ImageUpload_1.fileName}}"/>
</actionGroup>
<actionGroup ref="AdminEnhancedMediaGalleryClickDeleteImagesButtonActionGroup" stepKey="clikDeleteSelectedButton"/>
<actionGroup ref="AdminEnhancedMediaGalleryConfirmDeleteImagesActionGroup" stepKey="deleteImage"/>
<magentoCLI command="config:set cms/wysiwyg/enabled disabled" stepKey="disableWYSIWYG"/>
</after>

<actionGroup ref="AdminOpenCategoryPageActionGroup" stepKey="openCategoryPage"/>
<actionGroup ref="AdminCategoriesOpenCategoryActionGroup" stepKey="openCategory">
<argument name="category" value="$$category$$"/>
</actionGroup>
<actionGroup ref="AdminOpenMediaGalleryTinyMce4ActionGroup" stepKey="openMediaGalleryFromWysiwyg"/>
<actionGroup ref="AdminEnhancedMediaGalleryUploadImageActionGroup" stepKey="uploadFirstImage">
<argument name="image" value="ImageUpload"/>
</actionGroup>
<actionGroup ref="AdminEnhancedMediaGalleryUploadImageActionGroup" stepKey="uploadSecondImage">
<argument name="image" value="ImageUpload_1"/>
</actionGroup>
<actionGroup ref="AdminMediaGalleryClickImageInGridActionGroup" stepKey="selectCategoryImageInGrid">
<argument name="imageName" value="{{ImageUpload.file}}"/>
</actionGroup>
<actionGroup ref="AdminMediaGalleryClickAddSelectedActionGroup" stepKey="clickAddSelectedContentImage"/>
<actionGroup ref="AdminMediaGalleryClickOkButtonTinyMce4ActionGroup" stepKey="clickOkButton"/>
<actionGroup ref="AdminSaveCategoryActionGroup" stepKey="saveCategory"/>
<actionGroup ref="AdminOpenMediaGalleryTinyMce4ActionGroup" stepKey="openMediaGalleryFromWysiwygToFilterImage"/>

<actionGroup ref="AdminEnhancedMediaGalleryExpandFilterActionGroup" stepKey="expandFilters"/>
<actionGroup ref="AdminMediaGalleryApplyUsedInFilterActionGroup" stepKey="applyUsedInCategoryFilter">
<argument name="entityType" value="Not used anywhere"/>
</actionGroup>
<actionGroup ref="AdminEnhancedMediaGalleryApplyFiltersActionGroup" stepKey="applyFilters"/>

<actionGroup ref="AdminMediaGalleryAssertImageInGridActionGroup" stepKey="assertImageInGrid">
<argument name="image" value="ImageUpload_1"/>
</actionGroup>
<actionGroup ref="AdminMediaGalleryAssertImageNotExistsInTheGridActionGroup" stepKey="assertImageNotExistsInGrid">
<argument name="image" value="ImageUpload "/>
</actionGroup>
</test>
</tests>
4 changes: 4 additions & 0 deletions MediaGalleryUi/etc/adminhtml/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@
<item name="value" xsi:type="string">catalog_product</item>
<item name="label" xsi:type="string" translate="true">Products</item>
</item>
<item name="not_used" xsi:type="array">
<item name="value" xsi:type="string">not_used</item>
<item name="label" xsi:type="string" translate="true">Not used anywhere</item>
</item>
</argument>
</arguments>
</type>
Expand Down

0 comments on commit b2e96b4

Please sign in to comment.