Skip to content

Commit 3ba2ad9

Browse files
Merge branch 'develop' of github.com:magento/magento2-page-builder into 635_user-access-column-action-panel
Conflicts: app/code/Magento/PageBuilder/view/adminhtml/web/template/content-type/column/full-height/preview.html
2 parents eb70ba8 + a546d4a commit 3ba2ad9

File tree

139 files changed

+8990
-249
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

139 files changed

+8990
-249
lines changed

app/code/Magento/PageBuilder/Component/Form/Element/Wysiwyg.php

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99

1010
use Magento\Framework\App\ObjectManager;
1111
use Magento\Framework\Data\FormFactory;
12+
use Magento\Framework\View\Asset\Repository;
1213
use Magento\Framework\View\Element\UiComponent\ContextInterface;
13-
use Magento\PageBuilder\Model\View\File\Collector\PageBuilder;
1414
use Magento\Ui\Component\Wysiwyg\ConfigInterface;
1515
use Magento\Catalog\Api\CategoryAttributeRepositoryInterface;
1616
use Magento\Framework\Exception\NoSuchEntityException;
1717
use Magento\PageBuilder\Model\Config as PageBuilderConfig;
1818
use Magento\PageBuilder\Model\State as PageBuilderState;
1919
use Magento\PageBuilder\Model\Stage\Config as Config;
20+
use Magento\Framework\View\ConfigInterface as ViewConfigInterface;
2021

2122
/**
2223
* Updates wysiwyg element with Page Builder specific config
@@ -25,6 +26,11 @@
2526
*/
2627
class Wysiwyg extends \Magento\Ui\Component\Form\Element\Wysiwyg
2728
{
29+
/**
30+
* @var Repository
31+
*/
32+
private $assetRepo;
33+
2834
/**
2935
* WYSIWYG Constructor
3036
*
@@ -39,8 +45,11 @@ class Wysiwyg extends \Magento\Ui\Component\Form\Element\Wysiwyg
3945
* @param array $config
4046
* @param PageBuilderConfig|null $pageBuilderConfig
4147
* @param bool $overrideSnapshot
48+
* @param ViewConfigInterface $viewConfig
49+
* @param Repository $assetRepo
4250
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
4351
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
52+
* @SuppressWarnings(PHPMD.NPathComplexity)
4453
* @throws \Magento\Framework\Exception\NoSuchEntityException
4554
*/
4655
public function __construct(
@@ -54,8 +63,12 @@ public function __construct(
5463
array $data = [],
5564
array $config = [],
5665
PageBuilderConfig $pageBuilderConfig = null,
57-
bool $overrideSnapshot = false
66+
bool $overrideSnapshot = false,
67+
ViewConfigInterface $viewConfig = null,
68+
Repository $assetRepo = null
5869
) {
70+
$viewConfig = $viewConfig ?: ObjectManager::getInstance()->get(ViewConfigInterface::class);
71+
$this->assetRepo = $assetRepo ?: ObjectManager::getInstance()->get(Repository::class);
5972
$wysiwygConfigData = isset($config['wysiwygConfigData']) ? $config['wysiwygConfigData'] : [];
6073

6174
// If a dataType is present we're dealing with an attribute
@@ -84,6 +97,11 @@ public function __construct(
8497
$wysiwygConfigData = $stageConfig->getConfig();
8598
$wysiwygConfigData['pagebuilder_button'] = true;
8699
$wysiwygConfigData['pagebuilder_content_snapshot'] = true;
100+
$wysiwygConfigData['viewports'] = $viewConfig->getViewConfig()->getVarValue(
101+
'Magento_PageBuilder',
102+
'breakpoints'
103+
);
104+
$wysiwygConfigData = $this->processBreakpointsIcons($wysiwygConfigData);
87105

88106
if ($overrideSnapshot) {
89107
$pageBuilderConfig = $pageBuilderConfig ?: ObjectManager::getInstance()->get(PageBuilderConfig::class);
@@ -108,4 +126,24 @@ public function __construct(
108126

109127
parent::__construct($context, $formFactory, $wysiwygConfig, $components, $data, $config);
110128
}
129+
130+
/**
131+
* Process viewport icon paths
132+
*
133+
* @param array $wysiwygConfigData
134+
* @return array
135+
*/
136+
private function processBreakpointsIcons(array $wysiwygConfigData): array
137+
{
138+
if ($wysiwygConfigData && isset($wysiwygConfigData['viewports'])) {
139+
foreach ($wysiwygConfigData['viewports'] as $breakpoint => $attributes) {
140+
if (isset($attributes['icon'])) {
141+
$wysiwygConfigData['viewports'][$breakpoint]['icon'] = $this->assetRepo->getUrl(
142+
$attributes['icon']
143+
);
144+
}
145+
}
146+
}
147+
return $wysiwygConfigData;
148+
}
111149
}

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/ContentTypeBlockActionGroup/VerifyBlockOnStageActionGroup.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
<argument name="block"/>
1313
<argument name="index" defaultValue="1" type="string"/>
1414
</arguments>
15-
<moveMouseOver selector="{{PageBuilderStage.contentTypeInStageByIndex(PageBuilderBlockContentType.role, index)}}" stepKey="onMouseOverContentTypeStage"/>
1615
<waitForPageLoad stepKey="waitForPageLoad"/>
16+
<moveMouseOver selector="{{PageBuilderStage.contentTypeInStageByIndex(PageBuilderBlockContentType.role, index)}}" stepKey="onMouseOverContentTypeStage"/>
1717
<waitForElementVisible selector="{{BlockOnStage.title(index, block.title)}}" stepKey="wait"/>
1818
<seeElement selector="{{BlockOnStage.title(index,block.title)}}" stepKey="seeOptionMenuTitle"/>
1919
<see selector="{{BlockOnStage.content(index)}}" userInput="{{block.content}}" stepKey="seeBlockContentOnStage"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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="AdminSwitchPageBuilderViewportActionGroup">
11+
<annotations>
12+
<description>Switches the Page Builder stage in admin to the specified viewport</description>
13+
</annotations>
14+
<arguments>
15+
<argument name="viewportButton" defaultValue="desktop" type="string"/>
16+
<argument name="viewportStage" defaultValue="desktop" type="string"/>
17+
</arguments>
18+
<waitForElement selector="{{PageBuilderViewportSwitcherSection.viewportSwitcherButton(viewportButton)}}" stepKey="waitForElementViewportButton"/>
19+
<conditionalClick selector="{{PageBuilderViewportSwitcherSection.viewportSwitcherButton(viewportButton)}}"
20+
dependentSelector="{{PageBuilderViewportSwitcherSection.viewportStage(viewportStage)}}"
21+
visible="false"
22+
stepKey="clickViewportSwitcherButton"/>
23+
<waitForElementVisible selector="{{PageBuilderViewportSwitcherSection.viewportStage(viewportStage)}}" stepKey="waitForElementViewportStage"/>
24+
</actionGroup>
25+
</actionGroups>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderBannerSection/BannerOnBackendSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<element name="backgroundColorElement" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{bannerIndex}}]//div[@data-element='wrapper'][contains(@style,'background-color:')]" parameterized="true" deprecated="Styles are not inline"/>
4242
<element name="noBackgroundColor" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{bannerIndex}}]//div[@data-element='wrapper'][not(contains(@style,'background-color:'))]" parameterized="true" deprecated="Styles are not inline"/>
4343
<element name="backgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{bannerIndex}}]//div[@data-element='wrapper'][contains(@style,'background-image: url(') and contains(@style,'{{backgroundImage}}')]" parameterized="true"/>
44-
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{bannerIndex}}]//div[@data-element='wrapper'][not(contains(@style,'background-image:'))]" parameterized="true"/>
44+
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{bannerIndex}}]//div[@data-element='wrapper'][contains(@style,'background-image: none')]" parameterized="true"/>
4545
<element name="backgroundPath" type="button" selector="(//div[contains(@class,&quot;pagebuilder-banner&quot;) and @data-element=&quot;main&quot;])[{{bannerIndex}}]//div[@data-element=&quot;wrapper&quot;]" parameterized="true"/>
4646
<element name="invalidUploadTitle" type="text" selector="//aside[contains(@class,'modal-popup')]//header/h1[contains(.,'Attention')]"/>
4747
<element name="invalidUploadMessage" type="text" selector="//aside[contains(@class,'modal-popup')]//div[@class='modal-content']//div[.=&quot;{{arg1}}&quot;]" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderColumnSection/ColumnOnBackendSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<element name="backgroundColor" type="button" selector="(//div[contains(@class,'pagebuilder-column') and contains(@class,'pagebuilder-content-type')])[{{arg1}}][contains(@style,'background-color: {{arg2}};')]" parameterized="true" deprecated="Styles are not inline"/>
5151
<element name="noBackgroundColor" type="button" selector="(//div[contains(@class,'pagebuilder-column') and contains(@class,'pagebuilder-content-type')])[{{arg1}}][not(contains(@style,'background-color:'))]" parameterized="true" deprecated="Styles are not inline"/>
5252
<element name="backgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-column') and contains(@class,'pagebuilder-content-type')])[{{arg1}}][contains(@style,'background-image: url(') and contains(@style,'{{arg2}}')]" parameterized="true" deprecated="Styles are not inline"/>
53-
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-column') and contains(@class,'pagebuilder-content-type')])[{{arg1}}][not(contains(@style,'background-image:'))]" parameterized="true" deprecated="Styles are not inline"/>
53+
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-column') and contains(@class,'pagebuilder-content-type')])[{{arg1}}][contains(@style,'background-image: none')]" parameterized="true" deprecated="Styles are not inline"/>
5454
<!-- Advanced Configuration -->
5555
<element name="advancedConfigurationPath" type="button" selector="((//div[contains(@class, &quot;pagebuilder-column-group&quot;)])[{{arg1}}]/descendant::div[contains(@class, &quot;pagebuilder-content-type&quot;) and contains(@class, &quot;pagebuilder-column&quot;)])[{{arg2}}]//div[contains(@class, &quot;pagebuilder-column-inner&quot;)]" parameterized="true"/>
5656
<element name="alignment" type="button" selector="((//div[contains(@class, 'pagebuilder-column-group')])[{{arg1}}]/descendant::div[contains(@class, 'pagebuilder-content-type') and contains(@class, 'pagebuilder-column')])[{{arg2}}][contains(@style, 'text-align: {{arg3}};')]" parameterized="true" deprecated="Styles are not inline"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderRowSection/RowOnStageSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<element name="backgroundColorElement" type="button" parameterized="true" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][contains(@style,'background-color:')]" deprecated="Styles are not inline"/>
3636
<element name="noBackgroundColor" type="button" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][not(contains(@style,'background-color:'))]" parameterized="true" deprecated="Styles are not inline"/>
3737
<element name="backgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][contains(@style,'background-image: url(') and contains(@style,'{{arg2}}')]" parameterized="true" deprecated="Styles are not inline"/>
38-
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][not(contains(@style,'background-image:'))]" parameterized="true" deprecated="Styles are not inline"/>
38+
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][contains(@style,'background-image: none')]" parameterized="true" deprecated="Styles are not inline"/>
3939
<element name="backgroundPosition" type="button" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][contains(@style,'background-position: {{arg2}};')]" parameterized="true" deprecated="Styles are not inline"/>
4040
<element name="backgroundSize" type="button" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][contains(@style,'background-size: {{arg2}};')]" parameterized="true" deprecated="Styles are not inline"/>
4141
<element name="backgroundRepeat" type="button" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-row')])[{{arg1}}][contains(@style,'background-repeat: {{arg2}};')]" parameterized="true" deprecated="Styles are not inline"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderSliderSection/SlideOnBackendSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<element name="backgroundColor" type="button" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][contains(@style,'background-color: {{backgroundColor}};')]" parameterized="true" deprecated="Styles are not inline"/>
4545
<element name="noBackgroundColor" type="text" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][not(contains(@style,'background-color:'))]" parameterized="true" deprecated="Styles are not inline"/>
4646
<element name="backgroundImage" type="text" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][contains(@style,'background-image: url(') and contains(@style,'{{backgroundImage}}')]" parameterized="true" deprecated="Styles are not inline"/>
47-
<element name="noBackgroundImage" type="button" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][not(contains(@style,'background-image:'))]" parameterized="true" deprecated="Styles are not inline"/>
47+
<element name="noBackgroundImage" type="button" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][contains(@style,'background-image: none')]" parameterized="true" deprecated="Styles are not inline"/>
4848
<element name="backgroundPosition" type="button" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][contains(@style,'background-position: {{backgroundPosition}};')]" parameterized="true" deprecated="Styles are not inline"/>
4949
<element name="backgroundSize" type="button" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][contains(@style,'background-size: {{backgroundSize}};')]" parameterized="true" deprecated="Styles are not inline"/>
5050
<element name="backgroundRepeat" type="button" selector="(//div[@data-content-type='slide'])[{{slideIndex}}]//div[@data-element='wrapper'][contains(@style,'background-repeat: {{backgroundRepeat}};')]" parameterized="true" deprecated="Styles are not inline"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderTabsSection/TabOnStageSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,6 @@
6464
<element name="backgroundColor" type="button" selector="(//div[contains(@class,'pagebuilder-tab-item')])[{{arg1}}][contains(@style,'background-color: {{arg2}};')]" parameterized="true"/>
6565
<element name="noBackgroundColor" type="button" selector="(//div[contains(@class,'pagebuilder-tab-item')])[{{arg1}}][not(contains(@style,'background-color:'))]" parameterized="true"/>
6666
<element name="backgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-tab-item')])[{{arg1}}][contains(@style,'background-image: url(') and contains(@style,'{{arg2}}')]" parameterized="true"/>
67-
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-tab-item')])[{{arg1}}][not(contains(@style,'background-image:'))]" parameterized="true"/>
67+
<element name="noBackgroundImage" type="button" selector="(//div[contains(@class,'pagebuilder-tab-item')])[{{arg1}}][contains(@style,'background-image: none')]" parameterized="true"/>
6868
</section>
6969
</sections>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
10+
<section name="PageBuilderViewportSwitcherSection">
11+
<!-- Viewport Switcher Buttons -->
12+
<element name="viewportSwitcherButton" type="button" selector="//span[@class='viewport-buttons']//span[@class='tooltip']//button[contains(@class, 'page-builder-viewport') and contains(@class, '{{viewport}}-switcher')]" parameterized="true"/>
13+
<!-- Viewport Switcher Icons -->
14+
<element name="viewportSwitcherIcon" parameterized="true" type="text" selector="//span[@class='viewport-buttons']//span[@class='tooltip']//button[contains(@class, 'page-builder-viewport') and contains(@class, '{{viewport}}-switcher')]//img[contains(@src, 'switcher-{{viewport}}.svg')]"/>
15+
<!-- Viewport Switcher Tooltip -->
16+
<element name="viewportTooltipLabel" type="text" parameterized="true" selector="//span[@class='tooltip'][{{index}}]//span[@class='tooltip-content']//span[@class='tooltip-label' and text()='{{viewport}}']"/>
17+
<element name="viewportTooltipContent" type="text" parameterized="true" selector="//span[@class='tooltip'][{{index}}]//span[@class='tooltip-content']"/>
18+
<!-- Viewport Stages -->
19+
<element name="viewportStage" type="block" parameterized="true" selector="//div[contains(@class,'stage-is-active') and contains(@class, '{{viewport}}-viewport')]"/>
20+
</section>
21+
</sections>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBackgroundFormAttributeTest/BackgroundImageInvalidFileSizeTest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
</before>
2828
<after>
2929
<actionGroup ref="NavigateToMediaGalleryActionGroup" stepKey="navigateToMediaGallery"/>
30+
<waitForPageLoad stepKey="waitForPageLoad"/>
3031
<actionGroup ref="NavigateToMediaFolderActionGroup" stepKey="NavigateToFolder">
3132
<argument name="FolderName" value="{{PageBuilderBackgroundImage_JPG.path}}"/>
3233
</actionGroup>

0 commit comments

Comments
 (0)