Skip to content

Commit cf80c91

Browse files
Merge branch 'develop' of github.com:magento/magento2-page-builder into 421_empty-border-radius-fix
2 parents 656fab9 + a5d7366 commit cf80c91

File tree

7 files changed

+175
-17
lines changed

7 files changed

+175
-17
lines changed
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"/>
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/view/adminhtml/web/js/form/element/image-uploader.js

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,21 @@ define([
8080
new ResizeObserver(this.updateResponsiveClasses.bind(this)).observe(this.$uploadArea.get(0));
8181
},
8282

83+
/**
84+
* Checks if provided file is allowed to be uploaded.
85+
* {@inheritDoc}
86+
*/
87+
isFileAllowed: function () {
88+
var result = this._super(),
89+
allowedExtensions = this.getAllowedFileExtensionsInCommaDelimitedFormat();
90+
91+
if (!result.passed && result.rule === 'validate-file-type') {
92+
result.message += ' ' + this.translations.allowedFileTypes + ': ' + allowedExtensions + '.';
93+
}
94+
95+
return result;
96+
},
97+
8398
/**
8499
* Remove draggable classes from dropzones
85100
* {@inheritDoc}
@@ -95,28 +110,19 @@ define([
95110
* @param {jQuery.event} e
96111
*/
97112
highlightDropzone: function (e) {
98-
var draggedItem,
99-
$dropzone = $(e.target).closest(this.dropZone),
113+
var $dropzone = $(e.target).closest(this.dropZone),
100114
$otherDropzones = $(this.dropZone).not($dropzone),
101115
isInsideDropzone = !!$dropzone.length;
102116

103-
if (e.originalEvent.dataTransfer.items.length === 0) {
104-
return false;
117+
if (isInsideDropzone) {
118+
$dropzone
119+
.removeClass(this.classes.draggingOutside)
120+
.addClass([this.classes.dragging, this.classes.draggingInside].join(' '));
105121
}
106122

107-
draggedItem = e.originalEvent.dataTransfer.items[0];
108-
109-
if (draggedItem.kind === 'file' && /image\//.test(draggedItem.type)) {
110-
if (isInsideDropzone) {
111-
$dropzone
112-
.removeClass(this.classes.draggingOutside)
113-
.addClass([this.classes.dragging, this.classes.draggingInside].join(' '));
114-
}
115-
116-
$otherDropzones
117-
.removeClass(this.classes.draggingInside)
118-
.addClass([this.classes.dragging, this.classes.draggingOutside].join(' '));
119-
}
123+
$otherDropzones
124+
.removeClass(this.classes.draggingInside)
125+
.addClass([this.classes.dragging, this.classes.draggingOutside].join(' '));
120126
},
121127

122128
/**

0 commit comments

Comments
 (0)