Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#1833: Add ability to disable renditions functionality to stores configuration #30057

2 changes: 1 addition & 1 deletion app/code/Magento/MediaGalleryRenditions/Model/Config.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
class Config
{
private const TABLE_CORE_CONFIG_DATA = 'core_config_data';
private const XML_PATH_ENABLED = 'system/media_gallery/enabled';
private const XML_PATH_ENABLED = 'system/media_gallery_renditions/enabled';
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_WIDTH_PATH = 'system/media_gallery_renditions/width';
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_HEIGHT_PATH = 'system/media_gallery_renditions/height';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@
namespace Magento\MediaGalleryRenditions\Plugin;

use Magento\Framework\App\Config\Value;
use Magento\MediaGalleryRenditions\Model\Config;
use Magento\MediaGalleryRenditions\Model\Queue\ScheduleRenditionsUpdate;

/**
* Update renditions if corresponding configuration changes
*/
class UpdateRenditionsOnConfigChange
{
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_ENABLE_PATH = 'system/media_gallery_renditions/enabled';
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_WIDTH_PATH = 'system/media_gallery_renditions/width';
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_HEIGHT_PATH = 'system/media_gallery_renditions/height';

Expand All @@ -24,10 +26,17 @@ class UpdateRenditionsOnConfigChange
private $scheduleRenditionsUpdate;

/**
* @var Config
*/
private $config;

/**
* @param Config $config
* @param ScheduleRenditionsUpdate $scheduleRenditionsUpdate
*/
public function __construct(ScheduleRenditionsUpdate $scheduleRenditionsUpdate)
public function __construct(Config $config, ScheduleRenditionsUpdate $scheduleRenditionsUpdate)
{
$this->config = $config;
$this->scheduleRenditionsUpdate = $scheduleRenditionsUpdate;
}

Expand All @@ -41,7 +50,13 @@ public function __construct(ScheduleRenditionsUpdate $scheduleRenditionsUpdate)
*/
public function afterSave(Value $config, Value $result): Value
{
if ($this->isRenditionsValue($result) && $result->isValueChanged()) {
if ($this->isRenditionsEnabled($result)) {
$this->scheduleRenditionsUpdate->execute();

return $result;
}

if ($this->config->isEnabled() && $this->isRenditionsValue($result) && $result->isValueChanged()) {
$this->scheduleRenditionsUpdate->execute();
}

Expand All @@ -59,4 +74,17 @@ private function isRenditionsValue(Value $value): bool
return $value->getPath() === self::XML_PATH_MEDIA_GALLERY_RENDITIONS_WIDTH_PATH
|| $value->getPath() === self::XML_PATH_MEDIA_GALLERY_RENDITIONS_HEIGHT_PATH;
}

/**
* Determine if media gallery renditions is enabled based on configuration value
*
* @param Value $value
* @return bool
*/
private function isRenditionsEnabled(Value $value): bool
{
return $value->getPath() === self::XML_PATH_MEDIA_GALLERY_RENDITIONS_ENABLE_PATH
&& $value->isValueChanged()
&& $value->getValue();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@
<section id="system">
<group id="media_gallery_renditions" translate="label" type="text" sortOrder="1010" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Media Gallery Renditions</label>
<field id="width" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<field id="enabled" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Enable Image Optimization</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<field id="width" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Max Width</label>
<validate>validate-zero-or-greater validate-digits</validate>
</field>
<field id="height" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0">
<field id="height" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Max Height</label>
<validate>validate-zero-or-greater validate-digits</validate>
</field>
Expand Down
1 change: 1 addition & 0 deletions app/code/Magento/MediaGalleryRenditions/etc/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<default>
<system>
<media_gallery_renditions>
<enabled>1</enabled>
<width>1000</width>
<height>1000</height>
</media_gallery_renditions>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?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="AdminMediaGalleryRenditionsEnableActionGroup">
<arguments>
<argument name="enabled" type="string" defaultValue="{{MediaGalleryRenditionsDataEnabled.value}}"/>
</arguments>
<amOnPage url="{{AdminMediaGalleryConfigSystemPage.url}}" stepKey="navigateToSystemConfigurationPage" />
<waitForPageLoad stepKey="waitForPageLoad"/>
<scrollTo selector="{{AdminConfigSystemSection.mediaGalleryRenditionsFieldset}}" stepKey="scrollToMediaGalleryRenditionsFieldset"/>
<conditionalClick stepKey="expandMediaGalleryRenditionsTab" selector="{{AdminConfigSystemSection.mediaGalleryRenditionsFieldset}}" dependentSelector="{{AdminConfigSystemSection.mediaGalleryRenditionsEnabledField}}" visible="false" />
<waitForElementVisible selector="{{AdminConfigSystemSection.mediaGalleryRenditionsFieldset}}" stepKey="waitForFieldset" />
<selectOption userInput="{{enabled}}" selector="{{AdminConfigSystemSection.mediaGalleryRenditionsEnabledField}}" stepKey="enableOrDisableMediaGalleryRenditions"/>
<click selector="{{AdminConfigSystemSection.saveConfig}}" stepKey="saveConfiguration"/>
<waitForPageLoad stepKey="waitForConfigurationToSave"/>
</actionGroup>
</actionGroups>
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,12 @@
<data key="path">system/media_gallery/enabled</data>
<data key="value">0</data>
</entity>
<entity name="MediaGalleryRenditionsDataEnabled">
<data key="path">system/media_gallery_renditions/enabled</data>
<data key="value">1</data>
</entity>
<entity name="MediaGalleryRenditionsDataDisabled">
<data key="path">system/media_gallery_renditions/enabled</data>
<data key="value">0</data>
</entity>
</entities>
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
<section name="AdminConfigSystemSection">
<element name="enhancedMediaGalleryFieldset" type="block" selector="#system_media_gallery-head"/>
<element name="enhancedMediaGalleryEnabledField" type="select" selector="[data-ui-id='select-groups-media-gallery-fields-enabled-value']"/>
<element name="mediaGalleryRenditionsFieldset" type="block" selector="#system_media_gallery_renditions-head"/>
<element name="mediaGalleryRenditionsEnabledField" type="select" selector="[data-ui-id='select-groups-media-gallery-renditions-fields-enabled-value']"/>
<element name="saveConfig" type="button" selector="#save"/>
</section>
</sections>
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@
<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd">
<suite name="MediaGalleryUiDisabledSuite">
<before>
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
<actionGroup ref="AdminMediaGalleryRenditionsEnableActionGroup" stepKey="disableMediaGalleryRenditions">
<argument name="enabled" value="0"/>
</actionGroup>
<actionGroup ref="AdminLogoutActionGroup" stepKey="adminLogout"/>
</before>
<after>
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
<actionGroup ref="AdminMediaGalleryRenditionsEnableActionGroup" stepKey="enableMediaGalleryRenditions"/>
</after>
<include>
<group name="media_gallery_ui_disabled"/>
</include>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
<actionGroup ref="AdminMediaGalleryEnhancedEnableActionGroup" stepKey="enableEnhancedMediaGallery">
<argument name="enabled" value="1"/>
</actionGroup>
<actionGroup ref="AdminMediaGalleryRenditionsEnableActionGroup" stepKey="enableMediaGalleryRenditions"/>
<actionGroup ref="AdminLogoutActionGroup" stepKey="adminLogout"/>
</before>
<after>
Expand Down