Skip to content

Commit 7534dbc

Browse files
ENGCOM-8223: #1833: Add ability to disable renditions functionality to stores configuration #30057
2 parents 390505a + 95ba128 commit 7534dbc

File tree

10 files changed

+96
-6
lines changed

10 files changed

+96
-6
lines changed

app/code/Magento/MediaGalleryRenditions/Model/Config.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
class Config
1919
{
2020
private const TABLE_CORE_CONFIG_DATA = 'core_config_data';
21-
private const XML_PATH_ENABLED = 'system/media_gallery/enabled';
21+
private const XML_PATH_MEDIA_GALLERY_ENABLED = 'system/media_gallery/enabled';
22+
private const XML_PATH_ENABLED = 'system/media_gallery_renditions/enabled';
2223
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_WIDTH_PATH = 'system/media_gallery_renditions/width';
2324
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_HEIGHT_PATH = 'system/media_gallery_renditions/height';
2425

@@ -49,6 +50,16 @@ public function __construct(
4950
*
5051
* @return bool
5152
*/
53+
public function isMediaGalleryEnabled(): bool
54+
{
55+
return $this->scopeConfig->isSetFlag(self::XML_PATH_MEDIA_GALLERY_ENABLED);
56+
}
57+
58+
/**
59+
* Should the renditions be inserted in the content instead of original image
60+
*
61+
* @return bool
62+
*/
5263
public function isEnabled(): bool
5364
{
5465
return $this->scopeConfig->isSetFlag(self::XML_PATH_ENABLED);

app/code/Magento/MediaGalleryRenditions/Plugin/SetRenditionPath.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public function beforeExecute(
9191
$storeId
9292
];
9393

94-
if (!$this->config->isEnabled()) {
94+
if (!$this->config->isEnabled() || !$this->config->isMediaGalleryEnabled()) {
9595
return $arguments;
9696
}
9797

app/code/Magento/MediaGalleryRenditions/Plugin/UpdateRenditionsOnConfigChange.php

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@
88
namespace Magento\MediaGalleryRenditions\Plugin;
99

1010
use Magento\Framework\App\Config\Value;
11+
use Magento\MediaGalleryRenditions\Model\Config;
1112
use Magento\MediaGalleryRenditions\Model\Queue\ScheduleRenditionsUpdate;
1213

1314
/**
1415
* Update renditions if corresponding configuration changes
1516
*/
1617
class UpdateRenditionsOnConfigChange
1718
{
19+
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_ENABLE_PATH = 'system/media_gallery_renditions/enabled';
1820
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_WIDTH_PATH = 'system/media_gallery_renditions/width';
1921
private const XML_PATH_MEDIA_GALLERY_RENDITIONS_HEIGHT_PATH = 'system/media_gallery_renditions/height';
2022

@@ -24,10 +26,17 @@ class UpdateRenditionsOnConfigChange
2426
private $scheduleRenditionsUpdate;
2527

2628
/**
29+
* @var Config
30+
*/
31+
private $config;
32+
33+
/**
34+
* @param Config $config
2735
* @param ScheduleRenditionsUpdate $scheduleRenditionsUpdate
2836
*/
29-
public function __construct(ScheduleRenditionsUpdate $scheduleRenditionsUpdate)
37+
public function __construct(Config $config, ScheduleRenditionsUpdate $scheduleRenditionsUpdate)
3038
{
39+
$this->config = $config;
3140
$this->scheduleRenditionsUpdate = $scheduleRenditionsUpdate;
3241
}
3342

@@ -41,7 +50,13 @@ public function __construct(ScheduleRenditionsUpdate $scheduleRenditionsUpdate)
4150
*/
4251
public function afterSave(Value $config, Value $result): Value
4352
{
44-
if ($this->isRenditionsValue($result) && $result->isValueChanged()) {
53+
if ($this->isRenditionsEnabled($result)) {
54+
$this->scheduleRenditionsUpdate->execute();
55+
56+
return $result;
57+
}
58+
59+
if ($this->config->isEnabled() && $this->isRenditionsValue($result) && $result->isValueChanged()) {
4560
$this->scheduleRenditionsUpdate->execute();
4661
}
4762

@@ -59,4 +74,17 @@ private function isRenditionsValue(Value $value): bool
5974
return $value->getPath() === self::XML_PATH_MEDIA_GALLERY_RENDITIONS_WIDTH_PATH
6075
|| $value->getPath() === self::XML_PATH_MEDIA_GALLERY_RENDITIONS_HEIGHT_PATH;
6176
}
77+
78+
/**
79+
* Determine if media gallery renditions is enabled based on configuration value
80+
*
81+
* @param Value $value
82+
* @return bool
83+
*/
84+
private function isRenditionsEnabled(Value $value): bool
85+
{
86+
return $value->getPath() === self::XML_PATH_MEDIA_GALLERY_RENDITIONS_ENABLE_PATH
87+
&& $value->isValueChanged()
88+
&& $value->getValue();
89+
}
6290
}

app/code/Magento/MediaGalleryRenditions/etc/adminhtml/system.xml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@
1010
<section id="system">
1111
<group id="media_gallery_renditions" translate="label" type="text" sortOrder="1010" showInDefault="1" showInWebsite="0" showInStore="0">
1212
<label>Media Gallery Image Optimization</label>
13+
<field id="enabled" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
14+
<label>Enable Image Optimization</label>
15+
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
16+
</field>
1317
<comment>Resize images to improve performance and decrease the file size. When you use an image from Media Gallery on the storefront, the smaller image is generated and placed instead of the original.
1418
Changing these settings will update all generated images.</comment>
15-
<field id="width" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
19+
<field id="width" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0">
1620
<label>Maximum Width</label>
1721
<validate>validate-zero-or-greater validate-digits</validate>
1822
<comment>Enter the maximum width of an image in pixels.</comment>
1923
</field>
20-
<field id="height" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="0" showInStore="0">
24+
<field id="height" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="0" showInStore="0">
2125
<label>Maximum Height</label>
2226
<validate>validate-zero-or-greater validate-digits</validate>
2327
<comment>Enter the maximum height of an image in pixels.</comment>

app/code/Magento/MediaGalleryRenditions/etc/config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<default>
1010
<system>
1111
<media_gallery_renditions>
12+
<enabled>1</enabled>
1213
<width>1000</width>
1314
<height>1000</height>
1415
</media_gallery_renditions>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="AdminMediaGalleryRenditionsEnableActionGroup">
12+
<arguments>
13+
<argument name="enabled" type="string" defaultValue="{{MediaGalleryRenditionsDataEnabled.value}}"/>
14+
</arguments>
15+
<amOnPage url="{{AdminMediaGalleryConfigSystemPage.url}}" stepKey="navigateToSystemConfigurationPage" />
16+
<waitForPageLoad stepKey="waitForPageLoad"/>
17+
<scrollTo selector="{{AdminConfigSystemSection.mediaGalleryRenditionsFieldset}}" stepKey="scrollToMediaGalleryRenditionsFieldset"/>
18+
<conditionalClick stepKey="expandMediaGalleryRenditionsTab" selector="{{AdminConfigSystemSection.mediaGalleryRenditionsFieldset}}" dependentSelector="{{AdminConfigSystemSection.mediaGalleryRenditionsEnabledField}}" visible="false" />
19+
<waitForElementVisible selector="{{AdminConfigSystemSection.mediaGalleryRenditionsFieldset}}" stepKey="waitForFieldset" />
20+
<selectOption userInput="{{enabled}}" selector="{{AdminConfigSystemSection.mediaGalleryRenditionsEnabledField}}" stepKey="enableOrDisableMediaGalleryRenditions"/>
21+
<click selector="{{AdminConfigSystemSection.saveConfig}}" stepKey="saveConfiguration"/>
22+
<waitForPageLoad stepKey="waitForConfigurationToSave"/>
23+
</actionGroup>
24+
</actionGroups>

app/code/Magento/MediaGalleryUi/Test/Mftf/Data/AdobeStockConfigData.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,12 @@
1515
<data key="path">system/media_gallery/enabled</data>
1616
<data key="value">0</data>
1717
</entity>
18+
<entity name="MediaGalleryRenditionsDataEnabled">
19+
<data key="path">system/media_gallery_renditions/enabled</data>
20+
<data key="value">1</data>
21+
</entity>
22+
<entity name="MediaGalleryRenditionsDataDisabled">
23+
<data key="path">system/media_gallery_renditions/enabled</data>
24+
<data key="value">0</data>
25+
</entity>
1826
</entities>

app/code/Magento/MediaGalleryUi/Test/Mftf/Section/AdminConfigSystemSection.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<section name="AdminConfigSystemSection">
1212
<element name="enhancedMediaGalleryFieldset" type="block" selector="#system_media_gallery-head"/>
1313
<element name="enhancedMediaGalleryEnabledField" type="select" selector="[data-ui-id='select-groups-media-gallery-fields-enabled-value']"/>
14+
<element name="mediaGalleryRenditionsFieldset" type="block" selector="#system_media_gallery_renditions-head"/>
15+
<element name="mediaGalleryRenditionsEnabledField" type="select" selector="[data-ui-id='select-groups-media-gallery-renditions-fields-enabled-value']"/>
1416
<element name="saveConfig" type="button" selector="#save"/>
1517
</section>
1618
</sections>

app/code/Magento/MediaGalleryUi/Test/Mftf/Suite/MediaGalleryUiDisabledSuite.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@
99
<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1010
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd">
1111
<suite name="MediaGalleryUiDisabledSuite">
12+
<before>
13+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
14+
<actionGroup ref="AdminMediaGalleryRenditionsEnableActionGroup" stepKey="disableMediaGalleryRenditions">
15+
<argument name="enabled" value="0"/>
16+
</actionGroup>
17+
<actionGroup ref="AdminLogoutActionGroup" stepKey="adminLogout"/>
18+
</before>
19+
<after>
20+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
21+
<actionGroup ref="AdminMediaGalleryRenditionsEnableActionGroup" stepKey="enableMediaGalleryRenditions"/>
22+
</after>
1223
<include>
1324
<group name="media_gallery_ui_disabled"/>
1425
</include>

app/code/Magento/MediaGalleryUi/Test/Mftf/Suite/MediaGalleryUiSuite.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
<actionGroup ref="AdminMediaGalleryEnhancedEnableActionGroup" stepKey="enableEnhancedMediaGallery">
1616
<argument name="enabled" value="1"/>
1717
</actionGroup>
18+
<actionGroup ref="AdminMediaGalleryRenditionsEnableActionGroup" stepKey="enableMediaGalleryRenditions"/>
1819
<actionGroup ref="AdminLogoutActionGroup" stepKey="adminLogout"/>
1920
</before>
2021
<after>

0 commit comments

Comments
 (0)