Skip to content

Commit 9ebaf06

Browse files
authored
Merge pull request #172 from magento/1.0.0-release
Sync develop with release branch
2 parents 84225c6 + 31439c7 commit 9ebaf06

File tree

45 files changed

+9194
-489
lines changed

Some content is hidden

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

45 files changed

+9194
-489
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
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\Block\Adminhtml\Html\Head;
10+
11+
use Magento\Framework\View\Element\Template;
12+
13+
/**
14+
* Babel polyfill is required for IE 11 compatibility
15+
*
16+
* @api
17+
*/
18+
class BabelPolyfill extends Template
19+
{
20+
/**
21+
* @var \Magento\PageBuilder\Model\ConfigInterface
22+
*/
23+
private $config;
24+
25+
/**
26+
* @var \Magento\Framework\HTTP\Header
27+
*/
28+
private $httpHeader;
29+
30+
/**
31+
* @param Template\Context $context
32+
* @param \Magento\PageBuilder\Model\ConfigInterface $config
33+
* @param \Magento\Framework\HTTP\Header $httpHeader
34+
* @param array $data
35+
*/
36+
public function __construct(
37+
Template\Context $context,
38+
\Magento\PageBuilder\Model\ConfigInterface $config,
39+
\Magento\Framework\HTTP\Header $httpHeader,
40+
array $data = []
41+
) {
42+
$this->config = $config;
43+
$this->httpHeader = $httpHeader;
44+
parent::__construct($context, $data);
45+
}
46+
47+
/**
48+
* Detect if Page Builder is enabled and the user is loading the website from IE 11
49+
*
50+
* @return bool
51+
*/
52+
public function shouldLoadPolyfill() : bool
53+
{
54+
return $this->config->isEnabled() && $this->isIe11();
55+
}
56+
57+
/**
58+
* Build and return the polyfill static URL
59+
*
60+
* @return string
61+
*/
62+
public function getJsUrl() : string
63+
{
64+
return $this->_assetRepo->getUrl("Magento_PageBuilder::js/resource/babel/polyfill.min.js");
65+
}
66+
67+
/**
68+
* Extend the cache keys with a IE 11 flag
69+
*
70+
* @return array
71+
*/
72+
public function getCacheKeyInfo() : array
73+
{
74+
$cacheKeys = parent::getCacheKeyInfo();
75+
$cacheKeys['is_ie11'] = $this->isIe11();
76+
return $cacheKeys;
77+
}
78+
79+
/**
80+
* Detect if the browser user agent contains the IE 11 user agent
81+
*
82+
* @return bool
83+
*/
84+
private function isIe11() : bool
85+
{
86+
return strpos($this->httpHeader->getHttpUserAgent(), 'rv:11.0') !== false
87+
&& strpos($this->httpHeader->getHttpUserAgent(), 'Trident/7.0;') !== false;
88+
}
89+
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public function render(array $itemData, array $additionalData = []) : string
121121

122122
// mobile wrapper div
123123
$rootElementHtml = '<div' . $this->printAttributes($rootElementAttributes) . '><div data-element="link"';
124-
$rootElementHtml .= isset($eavData['link_url']) ? ' data-href="' . $eavData['link_url'] . '">' : '>';
124+
$rootElementHtml .= isset($eavData['link_url']) ? ' href="' . $eavData['link_url'] . '">' : '>';
125125
$rootElementHtml .= '<div'
126126
. $this->printAttributes($wrapperDivElementAttributes)
127127
. '><div'

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ public function render(array $itemData, array $additionalData = []) : string
8686
$rootElementAttributes['style'] .= $margin;
8787
$linkAttributes = [
8888
'data-element' => 'link',
89-
'data-href' => $eavData['link_url'] ?? '',
90-
'data-target' => isset($eavData['target_blank']) && $eavData['target_blank'] ? '_blank' : '',
89+
'href' => $eavData['link_url'] ?? '',
90+
'target' => isset($eavData['target_blank']) && $eavData['target_blank'] ? '_blank' : '',
9191
];
9292

9393
$imageAttributes = [

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/ContentTypeMapActionGroup.xml

+9-9
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
<dontSeeElementInDOM selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="dontSeeGoogleModalInDOM"/>
113113
<waitForElementVisible selector="{{AddLocationForm.base}}" stepKey="waitForMapVisible"/>
114114
<clickWithLeftButton selector="{{AddLocationForm.base}}" x="{{x}}" y="{{y}}" stepKey="clickMapToMovePin"/>
115-
<waitForElementVisible selector="{{AddLocationForm.pin}}" stepKey="waitForPinVisible"/>
115+
<waitForElementVisible selector="{{AddLocationForm.allPins}}" stepKey="waitForPinVisible"/>
116116
<wait time="2" stepKey="waitForPinMove"/>
117117
</actionGroup>
118118
<actionGroup name="moveMapPinByDraggingAndDroppingPin">
@@ -123,11 +123,11 @@
123123
<conditionalClick selector="{{AddLocationForm.googleModalOkButton('1')}}" dependentSelector="{{AddLocationForm.googleModalOkButton('1')}}" visible="true" stepKey="clickOkButton"/>
124124
<waitForElementNotVisible selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="waitForGoogleModalGone"/>
125125
<dontSeeElementInDOM selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="dontSeeGoogleModalInDOM"/>
126-
<waitForElementVisible selector="{{AddLocationForm.clickablePin}}" stepKey="waitForMapVisible"/>
127126
<!-- Adding 2nd click to reduce flakiness -->
128127
<conditionalClick selector="{{AddLocationForm.googleModalOkButton('1')}}" dependentSelector="{{AddLocationForm.googleModalOkButton('1')}}" visible="true" stepKey="clickOkButton2"/>
129128
<waitForElementNotVisible selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="waitForGoogleModalGone2"/>
130129
<dontSeeElementInDOM selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="dontSeeGoogleModalInDOM2"/>
130+
<waitForElement selector="{{AddLocationForm.clickablePin}}" stepKey="waitForMapVisible"/>
131131
<dragAndDrop selector1="{{AddLocationForm.clickablePin}}" selector2="{{AddLocationForm.clickablePin}}" x="{{x}}" y="{{y}}" stepKey="dragAndDropOnMapToMovePin"/>
132132
<wait time="2" stepKey="waitForPinMove"/>
133133
</actionGroup>
@@ -139,7 +139,7 @@
139139
<conditionalClick selector="{{page.googleModalOkButton(index)}}" dependentSelector="{{page.googleModalOkButton(index)}}" visible="true" stepKey="clickOkButton"/>
140140
<waitForElementNotVisible selector="{{page.googleModalOkButton(index)}}" stepKey="waitForGoogleModalGone"/>
141141
<dontSeeElementInDOM selector="{{page.googleModalOkButton(index)}}" stepKey="dontSeeGoogleModalInDOM"/>
142-
<waitForElementVisible selector="{{page.pin(index)}}" stepKey="waitForMapWithPin"/>
142+
<waitForElementVisible selector="{{page.allPins(index)}}" stepKey="waitForMapWithPin"/>
143143
</actionGroup>
144144
<actionGroup name="verifyNumberOfPinsOnMap">
145145
<arguments>
@@ -151,8 +151,8 @@
151151
<waitForElementNotVisible selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="waitForGoogleModalGone"/>
152152
<dontSeeElementInDOM selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="dontSeeGoogleModalInDOM"/>
153153
<waitForElementVisible selector="{{page.base(mapIndex)}}" stepKey="waitForMap"/>
154-
<waitForElementVisible selector="{{page.pin(mapIndex)}}" stepKey="waitForMapPin"/>
155-
<seeNumberOfElements selector="{{page.pin(mapIndex)}}" userInput="{{count}}" stepKey="seeNumberOfPins"/>
154+
<waitForElementVisible selector="{{page.allPins(mapIndex)}}" stepKey="waitForMapPin"/>
155+
<seeNumberOfElements selector="{{page.allPins(mapIndex)}}" userInput="{{count}}" stepKey="seeNumberOfPins"/>
156156
</actionGroup>
157157
<actionGroup name="dontSeeMapPin">
158158
<arguments>
@@ -162,7 +162,7 @@
162162
<conditionalClick selector="{{page.googleModalOkButton(index)}}" dependentSelector="{{page.googleModalOkButton(index)}}" visible="true" stepKey="clickOkButton"/>
163163
<waitForElementNotVisible selector="{{page.googleModalOkButton(index)}}" stepKey="waitForGoogleModalGone"/>
164164
<dontSeeElementInDOM selector="{{page.googleModalOkButton(index)}}" stepKey="dontSeeGoogleModalInDOM"/>
165-
<dontSeeElement selector="{{page.pin(index)}}" stepKey="dontSeeMapPin"/>
165+
<dontSeeElement selector="{{page.allPins(index)}}" stepKey="dontSeeMapPin"/>
166166
</actionGroup>
167167
<actionGroup name="validateMapButtons">
168168
<arguments>
@@ -232,11 +232,11 @@
232232
<conditionalClick selector="{{page.googleModalOkButton(mapIndex)}}" dependentSelector="{{page.googleModalOkButton(mapIndex)}}" visible="true" stepKey="clickOkButton"/>
233233
<waitForElementNotVisible selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="waitForGoogleModalGone"/>
234234
<dontSeeElementInDOM selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="dontSeeGoogleModalInDOM"/>
235-
<waitForElementVisible selector="{{page.clickablePin(mapIndex, pinIndex)}}" stepKey="waitForPin"/>
236235
<!-- Adding 2nd click to reduce flakiness -->
237236
<conditionalClick selector="{{page.googleModalOkButton(mapIndex)}}" dependentSelector="{{page.googleModalOkButton(mapIndex)}}" visible="true" stepKey="clickOkButton2"/>
238237
<waitForElementNotVisible selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="waitForGoogleModalGone2"/>
239238
<dontSeeElementInDOM selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="dontSeeGoogleModalInDOM2"/>
239+
<waitForElement selector="{{page.clickablePin(mapIndex, pinIndex)}}" stepKey="waitForPin"/>
240240
<click selector="{{page.clickablePin(mapIndex, pinIndex)}}" stepKey="clickPin"/>
241241
<waitForElementVisible selector="{{page.tooltipWindow(mapIndex)}}" stepKey="waitForPinTooltip"/>
242242
</actionGroup>
@@ -269,11 +269,11 @@
269269
<conditionalClick selector="{{page.googleModalOkButton(mapIndex)}}" dependentSelector="{{page.googleModalOkButton(mapIndex)}}" visible="true" stepKey="clickOkButton"/>
270270
<waitForElementNotVisible selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="waitForGoogleModalGone"/>
271271
<dontSeeElementInDOM selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="dontSeeGoogleModalInDOM"/>
272-
<waitForElementVisible selector="{{page.clickablePin(mapIndex, pinIndex)}}" stepKey="waitForPin"/>
273272
<!-- Adding 2nd click to reduce flakiness -->
274273
<conditionalClick selector="{{page.googleModalOkButton(mapIndex)}}" dependentSelector="{{page.googleModalOkButton(mapIndex)}}" visible="true" stepKey="clickOkButton2"/>
275274
<waitForElementNotVisible selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="waitForGoogleModalGone2"/>
276275
<dontSeeElementInDOM selector="{{page.googleModalOkButton(mapIndex)}}" stepKey="dontSeeGoogleModalInDOM2"/>
276+
<waitForElement selector="{{page.clickablePin(mapIndex, pinIndex)}}" stepKey="waitForPin"/>
277277
<click selector="{{page.clickablePin(mapIndex, pinIndex)}}" stepKey="clickPin"/>
278278
<waitForElementVisible selector="{{page.tooltipWindow(mapIndex)}}" stepKey="waitForPinTooltip"/>
279279
<waitForElementVisible selector="{{page.locationName(mapIndex, locationName.value)}}" stepKey="waitForLocationName"/>
@@ -290,11 +290,11 @@
290290
<conditionalClick selector="{{AddLocationForm.googleModalOkButton('1')}}" dependentSelector="{{AddLocationForm.googleModalOkButton('1')}}" visible="true" stepKey="clickOkButton"/>
291291
<waitForElementNotVisible selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="waitForGoogleModalGone"/>
292292
<dontSeeElementInDOM selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="dontSeeGoogleModalInDOM"/>
293-
<waitForElementVisible selector="{{AddLocationForm.clickablePin}}" stepKey="waitForPin"/>
294293
<!-- Adding 2nd click to reduce flakiness -->
295294
<conditionalClick selector="{{AddLocationForm.googleModalOkButton('1')}}" dependentSelector="{{AddLocationForm.googleModalOkButton('1')}}" visible="true" stepKey="clickOkButton2"/>
296295
<waitForElementNotVisible selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="waitForGoogleModalGone2"/>
297296
<dontSeeElementInDOM selector="{{AddLocationForm.googleModalOkButton('1')}}" stepKey="dontSeeGoogleModalInDOM2"/>
297+
<waitForElement selector="{{AddLocationForm.clickablePin}}" stepKey="waitForPin"/>
298298
<click selector="{{AddLocationForm.clickablePin}}" stepKey="clickPin"/>
299299
<dontSeeElementInDOM selector="{{AddLocationForm.tooltipWindow}}" stepKey="dontSeeTooltip"/>
300300
</actionGroup>

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@
3838
<element name="messageContentTextAreaTextWidget" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='content']//a[contains(@href,'{{arg2}}{{arg3}}')]" parameterized="true"/>
3939
<element name="messageContentText" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='content']//*[contains(text(),'{{arg2}}')]" parameterized="true"/>
4040
<element name="messageContentHeightJS" type="text" selector="return document.evaluate(&quot;(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='content']//div[contains(text(),'{{arg2}}')]&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.clientHeight;" parameterized="true"/>
41-
<element name="linkUrl" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]/*[@data-element='link'][contains(@data-href,'{{arg2}}')]" parameterized="true"/>
42-
<element name="openInNewTab" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]/*[@data-element='link'][contains(@data-target,'_blank')]" parameterized="true"/>
41+
<element name="linkUrl" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]/a[@data-element='link'][contains(@href,'{{arg2}}')]" parameterized="true"/>
42+
<element name="openInNewTab" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]/a[@data-element='link'][contains(@target,'_blank')]" parameterized="true"/>
4343
<element name="button" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='wrapper']//button" parameterized="true"/>
4444
<element name="showButton" type="button" selector="(//div[@data-role='banner'])[{{arg1}}][@data-show-button='{{arg2}}']" parameterized="true"/>
4545
<element name="buttonType" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='wrapper']//button[contains(@class,'{{arg2}}')]" parameterized="true"/>

0 commit comments

Comments
 (0)