Skip to content

Commit 5271343

Browse files
committed
Merge remote-tracking branch 'mainline/develop' into cms-team-2-sprint-15-bugs
2 parents 75d735e + d6b3016 commit 5271343

File tree

108 files changed

+7412
-8869
lines changed

Some content is hidden

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

108 files changed

+7412
-8869
lines changed

app/code/Magento/PageBuilder/Model/Template/Filter.php

Lines changed: 0 additions & 136 deletions
This file was deleted.

app/code/Magento/PageBuilder/Plugin/Cms/Block/Block.php

Lines changed: 0 additions & 41 deletions
This file was deleted.

app/code/Magento/PageBuilder/Plugin/Cms/Block/Page.php

Lines changed: 0 additions & 41 deletions
This file was deleted.

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

Lines changed: 54 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,31 +44,67 @@ public function render(array $itemData, array $additionalData = []) : string
4444
}
4545
$eavData = $this->eavAttributeLoader->load($itemData['entityId']);
4646

47-
$rootElementAttributes = [
48-
'data-element' => 'main',
49-
'data-role' => 'newsletter',
50-
'data-appearance' => 'default',
51-
'class' => $itemData['formData']['css_classes'] ?? '',
52-
'data-button-text' => $eavData['button_text'] ?? '',
53-
'data-label-text' => $eavData['label'] ?? '',
54-
'data-title' => $eavData['title'] ?? '',
55-
'data-placeholder' => $eavData['placeholder'] ?? '',
56-
];
47+
$rootElementHtml = '<div data-element="main" data-role="html" data-appearance="default">';
48+
$rootElementHtml .= $this->getNewsletterHtml($itemData, $eavData) . '</div>';
5749

50+
return $rootElementHtml;
51+
}
52+
53+
/**
54+
* Get the html for the newsletter
55+
*
56+
* @param array $itemData
57+
* @param array $eavData
58+
* @return string
59+
*/
60+
private function getNewsletterHtml(array $itemData, array $eavData): string
61+
{
62+
$newsletterButtonText = $eavData['button_text'] ?? __('Subscribe');
63+
$newsletterLabel = $eavData['label'] ?? __('Sign Up for Our Newsletter:');
64+
$newsletterTitle = $eavData['title'] ?? __('Newsletter');
65+
$newsletterPlaceHolder = $eavData['placeholder'] ?? __('Enter your email address');
66+
$newsletterClasses = $eavData['css_classes'] ?? '';
67+
$newsletterStyles = '';
5868
if (isset($itemData['formData'])) {
69+
$justifyContent = '';
70+
if (isset($itemData['formData']['align'])) {
71+
$convertAlignContent = [
72+
'left' => 'flex-start',
73+
'right' => 'flex-end',
74+
'center' => 'center'
75+
];
76+
$itemData['formData']['display'] = 'flex';
77+
$justifyContent = ' justify-content: ' . $convertAlignContent[$itemData['formData']['align']] . ';';
78+
unset($itemData['formData']['align']);
79+
}
5980
$style = $this->styleExtractor->extractStyle($itemData['formData']);
6081
if ($style) {
61-
$rootElementAttributes['style'] = $style;
82+
$newsletterStyles = $style . $justifyContent;
6283
}
6384
}
6485

65-
$rootElementHtml = '<div';
66-
foreach ($rootElementAttributes as $attributeName => $attributeValue) {
67-
$rootElementHtml .= $attributeValue ? " $attributeName=\"$attributeValue\"" : '';
68-
}
86+
$newsletterHtml = '<div class="' . $newsletterClasses . '" style="' . $newsletterStyles . '">' .
87+
'<div class="block newsletter"><div class="title"><strong>' . $newsletterTitle . '</strong></div>' .
88+
'<div class="content">' .
89+
'<form class="form subscribe" novalidate method="post" ' .
90+
'action="{{store direct_url=\'newsletter/subscriber/new\' _secure=1}}" ' .
91+
'data-mage-init=\'{"validation": {"errorClass": "mage-error"}}\'>' .
92+
'<div class="field newsletter">' .
93+
'<label class="label" for="newsletter-' . $itemData['entityId'] . '">' .
94+
'<span>' . $newsletterLabel . '</span>'.
95+
'</label>' .
96+
'<div class="control">' .
97+
'<input name="email" type="email" id="newsletter-' . $itemData['entityId'] . '" '.
98+
'placeholder="' . $newsletterPlaceHolder . '" ' .
99+
'data-mage-init=\'{"mage/trim-input":{}}\' ' .
100+
'data-validate="{required:true, \'validate-email\':true}"/>' .
101+
'</div></div>' .
102+
'<div class="actions">' .
103+
'<button class="action subscribe primary" title="' . $newsletterButtonText . '" type="submit">' .
104+
'<span>' . $newsletterButtonText . '</span>' .
105+
'</button>' .
106+
'</div></form></div></div></div>';
69107

70-
$rootElementHtml .= '></div>';
71-
72-
return $rootElementHtml;
108+
return $newsletterHtml;
73109
}
74110
}

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

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -141,27 +141,45 @@
141141
<actionGroup name="validateBackgroundImage">
142142
<arguments>
143143
<argument name="section"/>
144-
<argument name="pageNamePrefix" defaultValue="admin" type="string"/>
145144
<argument name="backgroundImage"/>
146145
<argument name="index" defaultValue="1" type="string"/>
147146
</arguments>
148147
<comment userInput="validateBackgroundImage" stepKey="comment"/>
149148
<waitForElementVisible selector="{{section.base(index)}}" stepKey="waitForBaseElement"/>
150149
<waitForElementVisible selector="{{section.backgroundImage(index, backgroundImage.fileName)}}" stepKey="waitForBackgroundImage"/>
151150
<grabAttributeFrom selector="{{section.backgroundImage(index, backgroundImage.fileName)}}" userInput="style" stepKey="contentTypeStyle"/>
152-
<!-- Grab base URL -->
153-
<executeJS function="return '{{pageNamePrefix}}'" stepKey="pageNamePrefix"/>
154-
<grabFromCurrentUrl regex="/(^.+(?=\/$pageNamePrefix))/" stepKey="baseURL"/>
155151
<!-- Return the string value of background-image -->
156152
<executeJS function="return '{$contentTypeStyle}'.match(/((?&lt;=(background-image: url\((&quot;|\'))).+(?=(&quot;|\')\);))/)[0]" stepKey="backgroundImageValue"/>
157153
<!-- Convert all characters in string variables to regex friendly strings -->
158-
<executeJS function="return '{$baseURL}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexBaseURL"/>
159154
<executeJS function="return '{{backgroundImage.path}}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexFilePath"/>
160155
<assertRegExp stepKey="assertBackgroundImageContainsFileInformation">
161-
<expectedResult type="string">/{$regexBaseURL}\/(pub\/|\/)?media.*{$regexFilePath}\/{{backgroundImage.fileName}}(_\d+)?\.{{backgroundImage.extension}}/</expectedResult>
156+
<expectedResult type="string">/.*\/(pub\/|\/)?media.*{$regexFilePath}\/{{backgroundImage.fileName}}(_\d+)?\.{{backgroundImage.extension}}/</expectedResult>
162157
<actualResult type="variable">$backgroundImageValue</actualResult>
163158
</assertRegExp>
164159
</actionGroup>
160+
<actionGroup name="validateBackgroundMobileImage">
161+
<arguments>
162+
<argument name="section"/>
163+
<argument name="backgroundMobileImage"/>
164+
<argument name="index" defaultValue="1" type="string"/>
165+
</arguments>
166+
<comment userInput="validateBackgroundMobileImage" stepKey="comment"/>
167+
<waitForElementVisible selector="{{section.base(index)}}" stepKey="waitForBaseElement"/>
168+
<waitForElement selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" stepKey="waitForBackgroundMobileImage"/>
169+
<dontSeeElement selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" stepKey="dontSeeBackgroundMobileImage"/>
170+
<grabAttributeFrom selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" userInput="style" stepKey="contentTypeStyle"/>
171+
<!-- Return the string value of background-image -->
172+
<executeJS function="return '{$contentTypeStyle}'.match(/((?&lt;=(background-image: url\((&quot;|\'))).+(?=(&quot;|\')\);))/)[0]" stepKey="backgroundMobileImageValue"/>
173+
<!-- Convert all characters in string variables to regex friendly strings -->
174+
<executeJS function="return '{{backgroundMobileImage.path}}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexFilePath"/>
175+
<assertRegExp stepKey="assertBackgroundMobileImageContainsFileInformation">
176+
<expectedResult type="string">/.*\/(pub\/|\/)?media.*{$regexFilePath}\/{{backgroundMobileImage.fileName}}(_\d+)?\.{{backgroundMobileImage.extension}}/</expectedResult>
177+
<actualResult type="variable">$backgroundMobileImageValue</actualResult>
178+
</assertRegExp>
179+
<resizeWindow width="767" height="1000" stepKey="resizeWindowToMobile"/>
180+
<waitForElementVisible selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" stepKey="waitForBackgroundMobileImageVisible"/>
181+
<resizeWindow width="1280" height="1024" stepKey="resizeWindowToDesktop"/>
182+
</actionGroup>
165183
<actionGroup name="validateNoBackgroundImage">
166184
<arguments>
167185
<argument name="section"/>
@@ -198,32 +216,4 @@
198216
<actualResult type="variable">$backgroundImageValue</actualResult>
199217
</assertRegExp>
200218
</actionGroup>
201-
<actionGroup name="validateBackgroundMobileImage">
202-
<arguments>
203-
<argument name="section"/>
204-
<argument name="pageNamePrefix" type="string"/>
205-
<argument name="backgroundMobileImage"/>
206-
<argument name="index" defaultValue="1" type="string"/>
207-
</arguments>
208-
<comment userInput="validateBackgroundMobileImage" stepKey="comment"/>
209-
<waitForElementVisible selector="{{section.base(index)}}" stepKey="waitForBaseElement"/>
210-
<waitForElement selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" stepKey="waitForBackgroundMobileImage"/>
211-
<dontSeeElement selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" stepKey="dontSeeBackgroundMobileImage"/>
212-
<grabAttributeFrom selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" userInput="style" stepKey="contentTypeStyle"/>
213-
<!-- Grab base URL -->
214-
<executeJS function="return '{{pageNamePrefix}}'" stepKey="pageNamePrefix"/>
215-
<grabFromCurrentUrl regex="/(^.+(?=\/$pageNamePrefix))/" stepKey="baseURL"/>
216-
<!-- Return the string value of background-image -->
217-
<executeJS function="return '{$contentTypeStyle}'.match(/((?&lt;=(background-image: url\((&quot;|\'))).+(?=(&quot;|\')\);))/)[0]" stepKey="backgroundMobileImageValue"/>
218-
<!-- Convert all characters in string variables to regex friendly strings -->
219-
<executeJS function="return '{$baseURL}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexBaseURL"/>
220-
<executeJS function="return '{{backgroundMobileImage.path}}'.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\\\^\\$\|]/g, '\\\\$&amp;')" stepKey="regexFilePath"/>
221-
<assertRegExp stepKey="assertBackgroundMobileImageContainsFileInformation">
222-
<expectedResult type="string">/{$regexBaseURL}\/(pub\/|\/)?media.*{$regexFilePath}\/{{backgroundMobileImage.fileName}}(_\d+)?\.{{backgroundMobileImage.extension}}/</expectedResult>
223-
<actualResult type="variable">$backgroundMobileImageValue</actualResult>
224-
</assertRegExp>
225-
<resizeWindow width="767" height="1000" stepKey="resizeWindowToMobile"/>
226-
<waitForElementVisible selector="{{section.backgroundMobileImage(index, backgroundMobileImage.fileName)}}" stepKey="waitForBackgroundMobileImageVisible"/>
227-
<resizeWindow width="1280" height="1024" stepKey="resizeWindowToDesktop"/>
228-
</actionGroup>
229219
</actionGroups>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<waitForLoadingMaskToDisappear stepKey="waitForLoadingMaskToDisappear3"/>
2424
<waitForElementVisible selector="{{BlockOnGrid.addSelectedBtn}}" stepKey="waitForAddSelected"/>
2525
<click selector="{{BlockOnGrid.addSelectedBtn}}" stepKey="clickAddSelected"/>
26+
<waitForPageLoad stepKey="waitForPageLoad"/>
2627
</actionGroup>
2728
<actionGroup name="verifyBlockOnStage">
2829
<arguments>

0 commit comments

Comments
 (0)