Skip to content

Commit

Permalink
Merge branch '2.0-develop' into used-in-products-filter
Browse files Browse the repository at this point in the history
  • Loading branch information
sivaschenko authored Jul 17, 2020
2 parents d25ecbb + 30384b2 commit 87e3463
Show file tree
Hide file tree
Showing 8 changed files with 195 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\MediaGalleryUi\Model\SearchCriteria\CollectionProcessor\FilterProcessor;

use Magento\Framework\Api\Filter;
use Magento\Framework\Api\SearchCriteria\CollectionProcessor\FilterProcessor\CustomFilterInterface;
use Magento\Framework\App\ResourceConnection;
use Magento\Framework\Data\Collection\AbstractDb;
use Magento\Framework\DB\Select;

/**
* Custom filter to filter collection by duplicated hash values
*/
class Duplicated implements CustomFilterInterface
{

/**
* @var ResourceConnection
*/
private $connection;

/**
* @param ResourceConnection $resource
*/
public function __construct(ResourceConnection $resource)
{
$this->connection = $resource;
}

/**
* @inheritDoc
*/
public function apply(Filter $filter, AbstractDb $collection): bool
{
$value = $filter->getValue();
if ($value) {
$collection->getSelect()
->where('main_table.hash IN ('. $this->getDuplicatedSqlPart() . ' HAVING count(*) > 1)');
}
return true;
}

/**
* Return sql part of duplicated values.
*/
private function getDuplicatedSqlPart(): Select
{
return $this->connection->getConnection()
->select()
->from($this->connection->getTableName('media_gallery_asset'), ['hash'])
->group(['hash']);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->

<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
<actionGroup name="AdminEnhancedMediaGalleryApplyDuplicatedFilterActionGroup">
<annotations>
<description>Applies duplicated images filter to the media gallery grid</description>
</annotations>

<click selector="{{AdminEnhancedMediaGalleryFiltersSection.duplicatedFilterCheckbox}}" stepKey="clickShowDuplicates"/>
</actionGroup>
</actionGroups>
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@
<element name="searchOptionsFilterInput" type="input" selector="//div[label/span[contains(text(), '{{filterName}}')]]//input[@data-role='advanced-select-text']" parameterized="true" timeout="30"/>
<element name="searchOptionsFilterOption" type="text" selector="//div[label/span[contains(text(), '{{filterName}}')]]//label[@class='admin__action-multiselect-label']/span[text()='{{optionName}}']" parameterized="true" timeout="30"/>
<element name="searchOptionsFilterDone" type="button" selector="//div[label/span[contains(text(), '{{filterName}}')]]//button[@data-action='close-advanced-select']" parameterized="true"/>
<element name="duplicatedFilterCheckbox" type="button" selector="//input[@name='duplicated']"/>
</section>
</sections>
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?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="AdminEnhancedMediaGalleryDuplicatedImagesTest">
<annotations>
<features value="MediaGallery"/>
<useCaseId value="https://github.com/magento/adobe-stock-integration/issues/1500"/>
<title value="User can filter duplicated images"/>
<stories value="[Story 59] User finds image duplicates"/>
<testCaseId value="https://studio.cucumber.io/projects/131313/test-plan/folders/1054245/scenarios/4753539"/>
<description value="User can filter duplicated images"/>
<severity value="CRITICAL"/>
<group value="media_gallery_ui"/>
</annotations>
<before>
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
<actionGroup ref="AdminOpenMediaGalleryForPageNoEditorActionGroup" stepKey="openMediaGalleryForPage"/>
</before>
<after>
<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="deleteImages"/>
</after>

<actionGroup ref="AdminEnhancedMediaGalleryUploadImageActionGroup" stepKey="uploadImage">
<argument name="image" value="ImageUpload"/>
</actionGroup>
<actionGroup ref="AdminEnhancedMediaGalleryUploadImageActionGroup" stepKey="uploadSecondImage">
<argument name="image" value="ImageUpload_1"/>
</actionGroup>

<actionGroup ref="AdminEnhancedMediaGalleryExpandFilterActionGroup" stepKey="expandFilters"/>
<actionGroup ref="AdminEnhancedMediaGalleryApplyDuplicatedFilterActionGroup" stepKey="SelectDuplicatedFilter"/>
<actionGroup ref="AdminEnhancedMediaGalleryApplyFiltersActionGroup" stepKey="applyFilters"/>

<actionGroup ref="AdminMediaGalleryAssertImageInGridActionGroup" stepKey="assertFirstImageInGrid">
<argument name="image" value="ImageUpload"/>
</actionGroup>
<actionGroup ref="AdminMediaGalleryAssertImageInGridActionGroup" stepKey="assertSecondImageInGrid">
<argument name="image" value="ImageUpload_1"/>
</actionGroup>
</test>
</tests>
1 change: 1 addition & 0 deletions MediaGalleryUi/etc/adminhtml/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<item name="path" xsi:type="object">Magento\MediaGalleryUi\Model\SearchCriteria\CollectionProcessor\FilterProcessor\Directory</item>
<item name="fulltext" xsi:type="object">Magento\MediaGalleryUi\Model\SearchCriteria\CollectionProcessor\FilterProcessor\Keyword</item>
<item name="entity_type" xsi:type="object">Magento\MediaGalleryUi\Model\SearchCriteria\CollectionProcessor\FilterProcessor\EntityType</item>
<item name="duplicated" xsi:type="object">Magento\MediaGalleryUi\Model\SearchCriteria\CollectionProcessor\FilterProcessor\Duplicated</item>
</argument>
</arguments>
</virtualType>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,25 @@
<dataScope>entity_type</dataScope>
</settings>
</filterSelect>
<filterInput
name="duplicated"
provider="${ $.parentName }"
sortOrder="90"
template="Magento_MediaGalleryUi/grid/filter/checkbox"
component="Magento_Ui/js/form/element/single-checkbox">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="description" xsi:type="string" translate="true">Show duplicates</item>
<item name="valueMap" xsi:type="array">
<item name="true" xsi:type="string">Yes</item>
</item>
</item>
</argument>
<settings>
<dataScope>duplicated</dataScope>
<label translate="true">Show duplicates</label>
</settings>
</filterInput>
</filters>
<paging name="listing_paging">
<settings>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,25 @@
<dataScope>entity_type</dataScope>
</settings>
</filterSelect>
<filterInput
name="duplicated"
provider="${ $.parentName }"
sortOrder="90"
template="Magento_MediaGalleryUi/grid/filter/checkbox"
component="Magento_Ui/js/form/element/single-checkbox">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="description" xsi:type="string" translate="true">Show duplicates</item>
<item name="valueMap" xsi:type="array">
<item name="true" xsi:type="string">Yes</item>
</item>
</item>
</argument>
<settings>
<dataScope>duplicated</dataScope>
<label translate="true">Show duplicates</label>
</settings>
</filterInput>
</filters>
<paging name="listing_paging">
<settings>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<div class="admin__field admin__media-gallery-image-checkbox" visible="visible" css="$data.additionalClasses">
<div class="admin__field-control">
<label class="admin__form-field-label" if="$data.label" attr="for: uid">
<span translate="label" attr="'data-config-scope': $data.scopeLabel" />
</label>
</div>
<div class="admin__field admin__field-option">
<input type="checkbox"
class="admin__control-checkbox"
ko-checked="$data.checked"
disable="disabled"
ko-value="value"
hasFocus="focused"
attr="id: uid, name: inputName"/>

<label class="admin__field-label" text="description" attr="for: uid"/>
</div>
</div>

0 comments on commit 87e3463

Please sign in to comment.