Skip to content

Commit 732e4ee

Browse files
author
Lukasz Borowiec
committed
Merge branch '511_content-snapshot-product-admin-page' into 510_content-snapshot-cms-admin-page
2 parents ea725cd + adf4239 commit 732e4ee

File tree

23 files changed

+466
-80
lines changed

23 files changed

+466
-80
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
declare(strict_types = 1);
8+
9+
namespace Magento\PageBuilder\Plugin\Catalog\Ui\DataProvider\Product\Form\Modifier;
10+
11+
use Magento\Catalog\Api\Data\ProductAttributeInterface;
12+
use Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav as EavModifier;
13+
use Magento\Framework\Stdlib\ArrayManager;
14+
15+
/**
16+
* Data Provider for EAV Attributes on Product Page
17+
*/
18+
class EavPlugin
19+
{
20+
public const META_ATTRIBUTE_CONFIG_PATH = 'arguments/data/config';
21+
22+
/**
23+
* @var ArrayManager
24+
*/
25+
private $arrayManager;
26+
27+
/**
28+
* @param ArrayManager $arrayManager
29+
*/
30+
public function __construct(ArrayManager $arrayManager)
31+
{
32+
$this->arrayManager = $arrayManager;
33+
}
34+
35+
/**
36+
* Setup Attribute Meta
37+
*
38+
* @param EavModifier $subject
39+
* @param array $result
40+
* @param ProductAttributeInterface $attribute
41+
* @param string $groupCode
42+
* @param int $sortOrder
43+
* @return array
44+
*
45+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
46+
*/
47+
public function afterSetupAttributeMeta(
48+
EavModifier $subject,
49+
$result,
50+
ProductAttributeInterface $attribute,
51+
$groupCode,
52+
$sortOrder
53+
) {
54+
$meta = $result;
55+
56+
if ($attribute->getData('is_pagebuilder_enabled')) {
57+
$meta = $this->arrayManager->merge(
58+
static::META_ATTRIBUTE_CONFIG_PATH,
59+
$result,
60+
[
61+
'additionalClasses' => 'admin__field-wide admin__field-page-builder'
62+
]
63+
);
64+
}
65+
66+
return $meta;
67+
}
68+
69+
/**
70+
* Setup Attribute Container Meta
71+
*
72+
* @param EavModifier $subject
73+
* @param array $result
74+
* @param ProductAttributeInterface $attribute
75+
* @return array
76+
*
77+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
78+
*/
79+
public function afterSetupAttributeContainerMeta(
80+
EavModifier $subject,
81+
$result,
82+
ProductAttributeInterface $attribute
83+
) {
84+
$containerMeta = $result;
85+
86+
if ($attribute->getData('is_pagebuilder_enabled')) {
87+
$containerMeta = $this->arrayManager->merge(
88+
static::META_ATTRIBUTE_CONFIG_PATH,
89+
$result,
90+
[
91+
'additionalFieldsetClasses' => [
92+
'admin__field-wide' => true,
93+
'admin__field-page-builder' => true
94+
],
95+
'template' => 'Magento_PageBuilder/form/components/group/group'
96+
]
97+
);
98+
}
99+
100+
return $containerMeta;
101+
}
102+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
<actionGroup name="AddInvalidFileToStage">
11+
<annotations>
12+
<description>Adds invalid file to Content Type and checks validation message</description>
13+
</annotations>
14+
<arguments>
15+
<argument name="contentType" defaultValue="PageBuilderImageContentType"/>
16+
<argument name="file" defaultValue="PageBuilderImage_InvalidFileType"/>
17+
<argument name="section" defaultValue="ImageOnStageWithoutImageUploaded"/>
18+
<argument name="filePreview" defaultValue="ImageOnStageWithoutImageUploaded.imagePreview"/>
19+
<argument name="fileSource" defaultValue=""/>
20+
</arguments>
21+
<waitForElementVisible selector="{{section.base('1')}}" stepKey="waitForSectionArea"/>
22+
<moveMouseOver selector="{{section.base('1')}}" stepKey="hoverSectionArea"/>
23+
<waitForPageLoad stepKey="waitForPageLoad"/>
24+
<waitForElementVisible selector="{{PageBuilderStage.onHoverUploadImageButton(contentType.role, '1')}}" stepKey="waitForUploadImageButton"/>
25+
<attachFile userInput="{{file.value}}" selector="{{section.uploadImageInput('1')}}" stepKey="attachFile"/>
26+
<waitForPageLoad stepKey="waitForFileLoad"/>
27+
<waitForElementVisible selector="{{PageBuilderStage.modal}}" stepKey="waitForModal"/>
28+
<waitForElementVisible selector="{{PageBuilderStage.errorModalMessage(file.errorMessage)}}" stepKey="waitForModalMessage"/>
29+
<waitForElementVisible selector="{{PageBuilderStage.modalOk}}" stepKey="waitForModalOkButton"/>
30+
<click selector="{{PageBuilderStage.modalOk}}" stepKey="clickModalOkButton"/>
31+
<waitForElementNotVisible selector="{{PageBuilderStage.modal}}" stepKey="waitForModalGone"/>
32+
<dontSeeElementInDOM selector="{{filePreview}}" stepKey="dontSeeFilePreview"/>
33+
<dontSeeElementInDOM selector="{{fileSource}}" stepKey="dontSeeFileSource"/>
34+
</actionGroup>
35+
</actionGroups>

app/code/Magento/PageBuilder/Test/Mftf/Data/ImageData.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,15 @@
7474
<data key="extension">jpg</data>
7575
<data key="path">wysiwyg</data>
7676
</entity>
77+
<entity name="PageBuilderImage_InvalidFileType" type="pagebuilder_image_property">
78+
<data key="name">Image</data>
79+
<data key="section">background</data>
80+
<data key="fieldName">image</data>
81+
<data key="value">dump.sql</data>
82+
<data key="fileName">dump</data>
83+
<data key="extension">sql</data>
84+
<data key="errorMessage">We don't recognize or support this file extension type. Allowed file types: JPG, GIF, PNG.</data>
85+
</entity>
7786
<!-- Image Mobile Image -->
7887
<entity name="PageBuilderMobileImagePropertyGif" type="pagebuilder_mobile_image_property">
7988
<data key="name">Mobile Image</data>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderStageSection/PageBuilderStageSection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
<!-- It's safer to click the label, as Selenium will complain if it's not clicking the exact element -->
2727
<element name="modalDoNotShowThisAgain" type="input" selector="aside.modal-popup._show input[name='modal-dnsa'] + label"/>
2828
<element name="errorModal" type="button" selector="//div[@class='modal-content']//div[contains(text(), '{{arg1}}')]" parameterized="true"/>
29+
<element name="errorModalMessage" type="text" selector="//aside[contains(@class,'modal-popup')]//div[@class='modal-content']//div[.=&quot;{{arg1}}&quot;]" parameterized="true"/>
2930
<element name="dropZone" type="button" selector="(//div[contains(@class, &quot;{{arg1}}-container&quot;)])[{{arg2}}]//div[contains(@class,&quot;pagebuilder-drop-indicator&quot;)][{{arg3}}]" parameterized="true"/>
3031
<element name="contentTypeTotalInStage" type="button" selector=".pagebuilder-content-type.pagebuilder-{{arg1}}" parameterized="true"/>
3132
<element name="contentTypeInStage" type="button" selector="//div[contains(@class, &quot;pagebuilder-content-type&quot;) and contains(@class, &quot;pagebuilder-{{arg1}}&quot;)]" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminCatalogProductPageBuilderTest/PageBuilderWorksForEachCatalogProductAttributeTest.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@
112112
<actionGroup ref="dragContentTypeToContainer" stepKey="dragButtonsToRow">
113113
<argument name="contentType" value="PageBuilderButtonsContentType"/>
114114
<argument name="containerTargetType" value="PageBuilderRowContentType"/>
115-
<argument name="containerTargetIndex" value="2"/>
116115
<argument name="pageBuilderArea" value="{{PageBuilderProductAttribute.PageBuilderArea('description')}}"/>
117116
</actionGroup>
118117
<!-- Edit Button Item -->
@@ -154,7 +153,6 @@
154153
<actionGroup ref="dragContentTypeToContainer" stepKey="dragDividerIntoRow">
155154
<argument name="contentType" value="PageBuilderDividerContentType"/>
156155
<argument name="containerTargetType" value="PageBuilderRowContentType"/>
157-
<argument name="containerTargetIndex" value="3"/>
158156
<argument name="pageBuilderArea" value="{{PageBuilderProductAttribute.PageBuilderArea('short_description')}}"/>
159157
</actionGroup>
160158
<actionGroup ref="openPageBuilderEditPanelByIndex" stepKey="openEditMenuForDivider">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="BannerBackgroundImageInvalidFileTypeTest" extends="ImageInvalidFileTypeValidationTest">
11+
<annotations>
12+
<features value="PageBuilder"/>
13+
<stories value="Banner"/>
14+
<title value="Banner Background Image Invalid File Type Upload Validation"/>
15+
<description value="Tests that the Background Image Validation functions as expected for invalid file type"/>
16+
<severity value="MAJOR"/>
17+
<group value="pagebuilder"/>
18+
<group value="pagebuilder-banner"/>
19+
<group value="pagebuilder-bannerCommon"/>
20+
</annotations>
21+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
22+
<argument name="contentType" value="PageBuilderBannerContentType"/>
23+
</actionGroup>
24+
<actionGroup ref="dragContentTypeToStage" stepKey="dragContentTypeToStage">
25+
<argument name="contentType" value="PageBuilderBannerContentType"/>
26+
</actionGroup>
27+
<actionGroup ref="AddInvalidFileToStage" stepKey="AddInvalidFileToStage">
28+
<argument name="contentType" value="PageBuilderBannerContentType"/>
29+
<argument name="section" value="BannerOnBackend"/>
30+
<argument name="filePreview" value="BannerOnBackend.backgroundImage('1', PageBuilderImage_InvalidFileType.fileName)"/>
31+
<argument name="fileSource" value="BannerOnBackend.imageSourceByIndex('1', PageBuilderImage_InvalidFileType.fileName)"/>
32+
</actionGroup>
33+
</test>
34+
</tests>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="ImageInvalidFileTypeValidationTest">
11+
<annotations>
12+
<features value="PageBuilder"/>
13+
<stories value="Image"/>
14+
<title value="Image Invalid File Type Upload Validation"/>
15+
<description value="Tests that the Image Validation functions as expected for invalid file type"/>
16+
<severity value="MAJOR"/>
17+
<group value="pagebuilder"/>
18+
<group value="pagebuilder-image"/>
19+
</annotations>
20+
<before>
21+
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
22+
<actionGroup ref="navigateToAPageWithPageBuilder" stepKey="navigateToAPageWithPageBuilder"/>
23+
<actionGroup ref="switchToPageBuilderStage" stepKey="switchToPageBuilderStage"/>
24+
</before>
25+
<after>
26+
<actionGroup ref="AdminLogoutActionGroup" stepKey="logout"/>
27+
</after>
28+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
29+
<argument name="contentType" value="PageBuilderImageContentType"/>
30+
</actionGroup>
31+
<actionGroup ref="dragContentTypeToStage" stepKey="dragContentTypeToStage">
32+
<argument name="contentType" value="PageBuilderImageContentType"/>
33+
</actionGroup>
34+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="clickSearchPanel"/>
35+
<actionGroup ref="AddInvalidFileToStage" stepKey="AddInvalidFileToStage">
36+
<argument name="fileSource" value="ImageOnStageWithoutImageUploaded.imageSource(PageBuilderImage_InvalidFileType.fileName)"/>
37+
</actionGroup>
38+
</test>
39+
</tests>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="SlideItemBackgroundImageInvalidFileTypeValidationTest" extends="ImageInvalidFileTypeValidationTest">
11+
<annotations>
12+
<features value="PageBuilder"/>
13+
<stories value="Slider"/>
14+
<title value="Slide Item Background Image Invalid File Type Upload Validation"/>
15+
<description value="Tests that the Slide Item Background Image Validation functions as expected for invalid file type"/>
16+
<severity value="MAJOR"/>
17+
<group value="pagebuilder"/>
18+
<group value="pagebuilder-slide"/>
19+
<group value="pagebuilder-slideItemCommon"/>
20+
</annotations>
21+
<actionGroup ref="expandPageBuilderPanelMenuSection" stepKey="expandPageBuilderPanelMenuSection">
22+
<argument name="contentType" value="PageBuilderSliderContentType"/>
23+
</actionGroup>
24+
<actionGroup ref="dragContentTypeToStage" stepKey="dragContentTypeToStage">
25+
<argument name="contentType" value="PageBuilderSliderContentType"/>
26+
</actionGroup>
27+
<actionGroup ref="AddInvalidFileToStage" stepKey="AddInvalidFileToStage">
28+
<argument name="contentType" value="PageBuilderSliderContentType"/>
29+
<argument name="section" value="SlideOnBackend"/>
30+
<argument name="filePreview" value="SlideOnBackend.backgroundImage('1', PageBuilderImage_InvalidFileType.fileName)"/>
31+
<argument name="fileSource" value="SlideOnBackend.imageSourceByIndex('1', PageBuilderImage_InvalidFileType.fileName)"/>
32+
</actionGroup>
33+
</test>
34+
</tests>

app/code/Magento/PageBuilder/Ui/DataProvider/Product/Form/Modifier/Eav/WysiwygConfigDataProcessor.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class WysiwygConfigDataProcessor implements
1212
\Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav\WysiwygConfigDataProcessorInterface
1313
{
1414
/**
15-
* {@inheritdoc}
15+
* @inheritdoc
1616
*/
1717
public function process(\Magento\Catalog\Api\Data\ProductAttributeInterface $attribute)
1818
{

app/code/Magento/PageBuilder/etc/adminhtml/di.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,4 +623,7 @@
623623
<type name="Magento\Framework\Filter\Template">
624624
<plugin name="convertBackgroundImages" type="Magento\PageBuilder\Plugin\Filter\TemplatePlugin"/>
625625
</type>
626+
<type name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Eav">
627+
<plugin name="pagebuilder_product_form_eav" type="Magento\PageBuilder\Plugin\Catalog\Ui\DataProvider\Product\Form\Modifier\EavPlugin" sortOrder="20"/>
628+
</type>
626629
</config>

0 commit comments

Comments
 (0)