Skip to content

Commit e6b26c8

Browse files
committed
Merge branch 'MC-5474' into cms-team-1-delivery
2 parents d815fd8 + aea6518 commit e6b26c8

File tree

49 files changed

+464
-336
lines changed

Some content is hidden

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

49 files changed

+464
-336
lines changed

app/code/Magento/PageBuilder/Setup/DataConverter/Renderer/AdvancedSliderItem.php

+6-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ public function render(array $itemData, array $additionalData = []) : string
120120
}
121121

122122
// mobile wrapper div
123-
$rootElementHtml = '<div' . $this->printAttributes($rootElementAttributes) . '><div data-element="link"';
123+
$linkNodeName = isset($eavData['link_url']) ? 'a' : 'div';
124+
$linkDataElementName = isset($eavData['link_url']) ? 'link' : 'empty_link';
125+
126+
$rootElementHtml = '<div' . $this->printAttributes($rootElementAttributes) . '>';
127+
$rootElementHtml .= '<' . $linkNodeName . ' data-element="' . $linkDataElementName . '"';
124128
$rootElementHtml .= isset($eavData['link_url']) ? ' href="' . $eavData['link_url'] . '">' : '>';
125129
$rootElementHtml .= '<div'
126130
. $this->printAttributes($wrapperDivElementAttributes)
@@ -135,7 +139,7 @@ public function render(array $itemData, array $additionalData = []) : string
135139
. $buttonElementHtml
136140
. '</div></div></div>';
137141

138-
$rootElementHtml .= '</div></div>';
142+
$rootElementHtml .= '</' . $linkNodeName . '></div>';
139143

140144
return $rootElementHtml;
141145
}

app/code/Magento/PageBuilder/Setup/DataConverter/Renderer/ButtonItem.php

+11-4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ class ButtonItem implements RendererInterface
2626
*/
2727
private $eavAttributeLoader;
2828

29+
/**
30+
* @param StyleExtractorInterface $styleExtractor
31+
* @param EavAttributeLoaderInterface $eavAttributeLoader
32+
*/
2933
public function __construct(
3034
StyleExtractorInterface $styleExtractor,
3135
EavAttributeLoaderInterface $eavAttributeLoader
@@ -35,7 +39,7 @@ public function __construct(
3539
}
3640

3741
/**
38-
* {@inheritdoc}
42+
* @inheritdoc
3943
*/
4044
public function render(array $itemData, array $additionalData = []) : string
4145
{
@@ -67,12 +71,15 @@ public function render(array $itemData, array $additionalData = []) : string
6771
$rootElementHtml .= $attributeValue ? " $attributeName=\"$attributeValue\"" : '';
6872
}
6973

70-
$rootElementHtml .= '><a data-element="link" href="'
71-
. ($eavData['link_url'] ?? '') . '"'
74+
$linkNodeName = isset($eavData['link_url']) ? 'a' : 'div';
75+
$linkDataElementName = isset($eavData['link_url']) ? 'link' : 'empty_link';
76+
77+
$rootElementHtml .= '><' . $linkNodeName . ' data-element="' . $linkDataElementName . '"'
78+
. (isset($eavData['link_url']) ? ' href="' . $eavData['link_url'] . '"' : '')
7279
. $buttonStyleAttribute
7380
. ' class="pagebuilder-button-primary"><span data-element="link_text">'
7481
. ($eavData['link_text'] ?? '')
75-
. '</span></a></div>';
82+
. '</span></' . $linkNodeName . '></div>';
7683

7784
return $rootElementHtml;
7885
}

app/code/Magento/PageBuilder/Setup/DataConverter/Renderer/Driver.php

+18-7
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public function __construct(
5050

5151
/**
5252
* @inheritdoc
53+
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
5354
*/
5455
public function render(array $itemData, array $additionalData = []) : string
5556
{
@@ -84,11 +85,19 @@ public function render(array $itemData, array $additionalData = []) : string
8485
}
8586
}
8687
$rootElementAttributes['style'] .= $margin;
87-
$linkAttributes = [
88-
'data-element' => 'link',
89-
'href' => $eavData['link_url'] ?? '',
90-
'target' => isset($eavData['target_blank']) && $eavData['target_blank'] ? '_blank' : '',
91-
];
88+
89+
// if link_url is present, add href and target attribute
90+
if (isset($eavData['link_url'])) {
91+
$linkAttributes = [
92+
'data-element' => 'link',
93+
'href' => $eavData['link_url'],
94+
'target' => isset($eavData['target_blank']) && $eavData['target_blank'] ? '_blank' : '',
95+
];
96+
} else {
97+
$linkAttributes = [
98+
'data-element' => 'empty_link',
99+
];
100+
}
92101

93102
$imageAttributes = [
94103
'data-element' => 'wrapper',
@@ -120,9 +129,11 @@ public function render(array $itemData, array $additionalData = []) : string
120129
. '</button>';
121130
}
122131

132+
$linkNodeName = isset($eavData['link_url']) ? 'a' : 'div';
133+
123134
return '<div'
124135
. $this->printAttributes($rootElementAttributes)
125-
. '><div'
136+
. '><' . $linkNodeName
126137
. $this->printAttributes($linkAttributes)
127138
. '>'
128139
. $imageElementHtml
@@ -133,7 +144,7 @@ public function render(array $itemData, array $additionalData = []) : string
133144
. $overlayElementHtml
134145
. '<div class="pagebuilder-poster-content"><div data-element="content"></div>'
135146
. $buttonHtml
136-
. '</div></div></div></div></div>';
147+
. '</div></div></div></' . $linkNodeName . '></div>';
137148
}
138149

139150
/**

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

-3
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,6 @@
8888
<data key="fieldName">link_url</data>
8989
<data key="value"/>
9090
</entity>
91-
<entity name="PageBuilderBannerLinkUrlProperty_EmptyFrontend" type="pagebuilder_banner_linkUrl_property">
92-
<data key="value">javascript:void(0)</data>
93-
</entity>
9491
<entity name="PageBuilderBannerLinkUrlPropertyValidate" type="pagebuilder_banner_linkUrl_property">
9592
<data key="name">Link</data>
9693
<data key="section">contents</data>

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

-3
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,6 @@
8686
<entity name="PageBuilderButtonItemLink_Empty" type="pagebuilder_button_item_link_property" extends="PageBuilderButtonItemLink_Template">
8787
<data key="value"/>
8888
</entity>
89-
<entity name="PageBuilderButtonItemLink_EmptyFrontend" type="pagebuilder_button_item_link_property" extends="PageBuilderButtonItemLink_Template">
90-
<data key="value">javascript:void(0)</data>
91-
</entity>
9289
<entity name="PageBuilderButtonItemLink_NotSecure" type="pagebuilder_button_item_link_property" extends="PageBuilderButtonItemLink_Template">
9390
<data key="value">http://url.magento/</data>
9491
</entity>

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

-3
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@
5454
<data key="fieldName">link_url</data>
5555
<data key="value"/>
5656
</entity>
57-
<entity name="PageBuilderSlideItemLinkURL_EmptyFrontend" type="pagebuilder_slide_item_link_url_property">
58-
<data key="value">javascript:void(0)</data>
59-
</entity>
6057
<entity name="PageBuilderSlideItemLinkURL_External" type="pagebuilder_slide_item_link_url_property">
6158
<data key="name">Link</data>
6259
<data key="section">general</data>

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

+3
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@
6161
<element name="posterPadding" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='overlay'][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
6262
<element name="collagePadding" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='wrapper'][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
6363
</section>
64+
<section name="BannerOnFrontendEmptyLink">
65+
<element name="linkUrl" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]/div[@data-element='empty_link'][not(@href) and not(@target)][not(@href='{{arg2}}')]" parameterized="true"/>
66+
</section>
6467
<section name="BannerOnBackend">
6568
<element name="base" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and contains(@class,'pagebuilder-content-type')])[{{arg1}}]" parameterized="true"/>
6669
<element name="hidden" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and contains(@class,'pagebuilder-content-type')])[{{arg1}}]/ancestor::*[contains(@class, 'pagebuilder-content-type-wrapper') and contains(@class, 'pagebuilder-content-type-hidden')]" parameterized="true"/>

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

+27-2
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@
9494
<element name="base" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]" parameterized="true"/>
9595
<element name="hidden" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}][contains(@style, 'display: none')]" parameterized="true"/>
9696
<element name="notHidden" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}][not(contains(@style, 'display: none'))]" parameterized="true"/>
97-
<element name="emptyButtonItemElement" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//a//span[not(text())]" parameterized="true"/>
98-
<element name="jsButtonSelector" type="text" selector="document.querySelectorAll('div[data-role=\'button-item\'] a')[{{arg1}}-1]" parameterized="true"/>
97+
<element name="emptyButtonItemElement" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//a[@data-element='link']//span[not(text())]" parameterized="true"/>
98+
<element name="jsButtonSelector" type="text" selector="document.querySelectorAll('div[data-role=\'button-item\'] [data-element=\'link\']')[{{arg1}}-1]" parameterized="true"/>
9999
<!-- Content Configuration -->
100100
<element name="buttonItemText" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//span[@data-element='link_text' and contains(.,'{{arg2}}')]" parameterized="true"/>
101101
<element name="buttonItemTextByButtonGroup" type="button" selector="((//div[@data-role='buttons'])[{{arg1}}]//div[@data-role='button-item'])[{{arg2}}]//span[@data-element='link_text' and contains(.,'{{arg3}}')]" parameterized="true"/>
@@ -121,4 +121,29 @@
121121
<element name="padding" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//a[contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
122122
<element name="noPadding" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//a[not(contains(@style,'padding:'))]" parameterized="true"/>
123123
</section>
124+
<section name="ButtonItemOnStorefrontEmptyLink">
125+
<element name="base" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]" parameterized="true"/>
126+
<element name="emptyButtonItemElement" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)]//span[not(text())]" parameterized="true"/>
127+
<element name="jsButtonSelector" type="text" selector="document.querySelectorAll('div[data-role=\'button-item\'] [data-element=\'empty_link\']')[{{arg1}}-1]" parameterized="true"/>
128+
<!-- Content Configuration -->
129+
<element name="buttonItemText" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//span[@data-element='link_text' and contains(.,'{{arg2}}')]" parameterized="true"/>
130+
<element name="buttonItemType" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@class='{{arg2}}']" parameterized="true"/>
131+
<element name="buttonItemUrl" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(@href='{{arg2}}')]" parameterized="true"/>
132+
<element name="buttonItemNewTab" type="button" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(@target='{{arg2}}')]" parameterized="true"/>
133+
<!-- Advanced Configuration -->
134+
<element name="alignment" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][contains(@style,'text-align: {{arg2}};')]" parameterized="true"/>
135+
<element name="border" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][contains(@style,'border-style: {{arg2}};')]" parameterized="true"/>
136+
<element name="noBorder" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(contains(@style,'border-style:'))]" parameterized="true"/>
137+
<element name="borderColor" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][contains(@style,'border-color: {{arg2}};')]" parameterized="true"/>
138+
<element name="noBorderColor" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(contains(@style,'border-color:'))]" parameterized="true"/>
139+
<element name="borderWidth" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][contains(@style,'border-width: {{arg2}}px;')]" parameterized="true"/>
140+
<element name="noBorderWidth" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(contains(@style,'border-width:'))]" parameterized="true"/>
141+
<element name="borderRadius" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][contains(@style,'border-radius: {{arg2}}px;')]" parameterized="true"/>
142+
<element name="noBorderRadius" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(contains(@style,'border-radius:'))]" parameterized="true"/>
143+
<element name="cssClasses" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}][contains(@class,'{{arg2}}')]//div[@data-element='empty_link'][not(@href) and not(@target)]" parameterized="true"/>
144+
<element name="margins" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
145+
<element name="noMargins" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(contains(@style,'margin:'))]" parameterized="true"/>
146+
<element name="padding" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
147+
<element name="noPadding" type="text" selector="(//div[@data-role='button-item'])[{{arg1}}]//div[@data-element='empty_link'][not(@href) and not(@target)][not(contains(@style,'padding:'))]" parameterized="true"/>
148+
</section>
124149
</sections>

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
<element name="messageContentTextAreaTextWidget" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='content']//a[contains(@href,'{{arg2}}{{arg3}}')]" parameterized="true"/>
9595
<element name="messageContentText" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='content']//*[contains(text(),'{{arg2}}')]" parameterized="true"/>
9696
<element name="messageContentHeightJS" type="text" selector="return document.evaluate(&quot;(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='content']//*[contains(text(),'{{arg2}}')]&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.clientHeight;" parameterized="true"/>
97-
<element name="linkUrl" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]//a[@data-element='link'][contains(@href,'{{arg2}}')]" parameterized="true"/>
97+
<element name="linkUrl" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]/a[@data-element='link'][contains(@href,'{{arg2}}')]" parameterized="true"/>
9898
<element name="openInNewTab" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]/a[@data-element='link'][contains(@target,'_blank')]" parameterized="true"/>
9999
<element name="button" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='wrapper']//button[@data-element='button']" parameterized="true"/>
100100
<element name="noButton" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='wrapper'][not(descendant::*[@data-element='button'])]" parameterized="true"/>
@@ -117,6 +117,9 @@
117117
<element name="posterPadding" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='overlay'][contains(@style,'padding: {{arg2}}px')]" parameterized="true"/>
118118
<element name="collagePadding" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='wrapper'][contains(@style,'padding: {{arg2}}px')]" parameterized="true"/>
119119
</section>
120+
<section name="SlideOnFrontendEmptyLink">
121+
<element name="linkUrl" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]/div[@data-element='empty_link'][not(@href) and not(@target)][not(@href='{{arg2}}')]" parameterized="true"/>
122+
</section>
120123
<section name="SlideOnBackend">
121124
<element name="all" type="button" selector=".pagebuilder-slide"/>
122125
<element name="base" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCommonTest.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1041,8 +1041,8 @@
10411041
</actionGroup>
10421042
<!-- Validate Storefront -->
10431043
<comment userInput="Validate Storefront" stepKey="commentValidateStorefront"/>
1044-
<seeElement selector="{{BannerOnFrontend.linkUrl('1', PageBuilderBannerLinkUrlProperty_EmptyFrontend.value)}}" stepKey="seeJavaScriptVoid0UrlInDom"/>
1045-
<click selector="{{BannerOnFrontend.linkUrl('1', PageBuilderBannerLinkUrlProperty_EmptyFrontend.value)}}" stepKey="clickLinkUrl"/>
1044+
<seeElement selector="{{BannerOnFrontendEmptyLink.linkUrl('1', PageBuilderBannerLinkUrlProperty_Empty.value)}}" stepKey="seeBannerLinkElementIsADiv"/>
1045+
<click selector="{{BannerOnFrontendEmptyLink.linkUrl('1', PageBuilderBannerLinkUrlProperty_Empty.value)}}" stepKey="clickLinkElement"/>
10461046
<wait time="3" stepKey="waitArbitraryTimeForPotentialNavigationToOccur" />
10471047
<seeCurrentUrlEquals url="{{_ENV.MAGENTO_BASE_URL}}{{PageBuilderBannerContentType.pageNamePrefix}}{{PageBuilderPageTitle.pageName}}" stepKey="seeThatCurrentUrlIsUnchanged" />
10481048
</test>

0 commit comments

Comments
 (0)