Skip to content

Commit d1c07c8

Browse files
author
Cari Spruiell
committed
Merge remote-tracking branch 'origin/MAGETWO-87048-Extensible-Grid-System' into cms-team-1-delivery
# Conflicts: # app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/SliderActionGroup.xml # app/code/Magento/PageBuilder/Test/Mftf/Data/ColumnData.xml
2 parents 12f0201 + 81e099d commit d1c07c8

File tree

92 files changed

+4678
-1314
lines changed

Some content is hidden

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

92 files changed

+4678
-1314
lines changed

app/code/Magento/PageBuilder/Model/Stage/Config.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ class Config
1515
const DEFAULT_PREVIEW_COMPONENT = 'Magento_PageBuilder/js/content-type/preview';
1616
const DEFAULT_MASTER_COMPONENT = 'Magento_PageBuilder/js/content-type/master';
1717

18+
const XML_PATH_COLUMN_GRID_DEFAULT = 'cms/pagebuilder/column_grid_default';
19+
const XML_PATH_COLUMN_GRID_MAX = 'cms/pagebuilder/column_grid_max';
20+
1821
/**
1922
* @var \Magento\PageBuilder\Model\Config\ConfigInterface
2023
*/
@@ -46,13 +49,18 @@ class Config
4649
private $additionalDataParser;
4750

4851
/**
49-
* Constructor
50-
*
52+
* @var \Magento\Framework\App\Config\ScopeConfigInterface
53+
*/
54+
private $scopeConfig;
55+
56+
/**
57+
* Config constructor.
5158
* @param \Magento\PageBuilder\Model\Config\ConfigInterface $config
5259
* @param Config\UiComponentConfig $uiComponentConfig
53-
* @param \Magento\Framework\UrlInterface $urlBuilder
60+
* @param UrlInterface $urlBuilder
5461
* @param \Magento\Framework\Url $frontendUrlBuilder
5562
* @param \Magento\PageBuilder\Model\Config\ContentType\AdditionalData\Parser $additionalDataParser
63+
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
5664
* @param array $data
5765
*/
5866
public function __construct(
@@ -61,13 +69,15 @@ public function __construct(
6169
\Magento\Framework\UrlInterface $urlBuilder,
6270
\Magento\Framework\Url $frontendUrlBuilder,
6371
\Magento\PageBuilder\Model\Config\ContentType\AdditionalData\Parser $additionalDataParser,
72+
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
6473
array $data = []
6574
) {
6675
$this->config = $config;
6776
$this->uiComponentConfig = $uiComponentConfig;
6877
$this->urlBuilder = $urlBuilder;
6978
$this->frontendUrlBuilder = $frontendUrlBuilder;
7079
$this->additionalDataParser = $additionalDataParser;
80+
$this->scopeConfig = $scopeConfig;
7181
$this->data = $data;
7282
}
7383

@@ -83,7 +93,9 @@ public function getConfig()
8393
'content_types' => $this->getContentTypes(),
8494
'stage_config' => $this->data,
8595
'media_url' => $this->urlBuilder->getBaseUrl(['_type' => UrlInterface::URL_TYPE_MEDIA]),
86-
'preview_url' => $this->frontendUrlBuilder->getUrl('pagebuilder/contenttype/preview')
96+
'preview_url' => $this->frontendUrlBuilder->getUrl('pagebuilder/contenttype/preview'),
97+
'column_grid_default' => $this->scopeConfig->getValue(self::XML_PATH_COLUMN_GRID_DEFAULT),
98+
'column_grid_max' => $this->scopeConfig->getValue(self::XML_PATH_COLUMN_GRID_MAX),
8799
];
88100
}
89101

app/code/Magento/PageBuilder/Setup/DataConverter/ChildrenRenderer/Row.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,6 @@ private function getColumnWidth($column)
102102
return 0;
103103
}
104104

105-
$width = $column['formData']['width'];
106-
if (isset(Column::COLUMN_WIDTH_MAPPING[$width])) {
107-
$width = Column::COLUMN_WIDTH_MAPPING[$width];
108-
}
109-
110-
return $width;
105+
return $column['formData']['width'];
111106
}
112107
}

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

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,16 @@
1313
*/
1414
class Column implements RendererInterface
1515
{
16-
// Defined column mapping to supported widths
16+
// We have to map as we are unable to calculate the new column width effectively for all sizes
1717
const COLUMN_WIDTH_MAPPING = [
18-
'0.250' => '0.167',
19-
'0.750' => '0.833'
18+
'0.167' => '16.6667',
19+
'0.250' => '25',
20+
'0.333' => '33.3333',
21+
'0.500' => '50',
22+
'0.666' => '66.6666',
23+
'0.750' => '75',
24+
'0.825' => '82.5000',
25+
'1.000' => '100',
2026
];
2127

2228
/**
@@ -74,13 +80,10 @@ public function render(array $itemData, array $additionalData = [])
7480
*/
7581
private function calculateColumnWidth($oldWidth)
7682
{
77-
// Map column sizes to suitable sizes for columns we don't yet support
78-
if (isset(self::COLUMN_WIDTH_MAPPING[$oldWidth])) {
79-
$oldWidth = self::COLUMN_WIDTH_MAPPING[$oldWidth];
83+
if (!isset(self::COLUMN_WIDTH_MAPPING[number_format($oldWidth, 3)])) {
84+
throw new \InvalidArgumentException('Width ' . $oldWidth .' has no valid mapping.');
8085
}
8186

82-
// Resolve issues with old system storing non exact percentages (e.g. 0.167 != 16.6667%)
83-
$percentage = 100 / round(100 / ($oldWidth * 100), 1);
84-
return floatval(number_format($percentage, 4, '.', '')) . '%';
87+
return self::COLUMN_WIDTH_MAPPING[number_format($oldWidth, 3)] . '%';
8588
}
8689
}

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,48 @@
3434
<waitForElementVisible time="10" selector="{{PageBuilderActionsSection.contentTypeOptionsMenuByIndex(contentType.role, contentTypeIndex)}}" stepKey="waitForOptions"/>
3535
<waitForElementVisible selector="{{PageBuilderColumnSection.columnMoveByIndex(contentTypeIndex)}}" stepKey="waitForMoveHandle"/>
3636
<dragAndDrop selector1="{{PageBuilderColumnSection.columnMoveByIndex(contentTypeIndex)}}" selector2="{{PageBuilderActionsSection.contentTypeContainer(contentType.role, containerTargetIndex)}}" stepKey="moveContentTypeIntoContainer"/>
37+
<waitForPageLoad stepKey="waitForDragOperation" />
38+
</actionGroup>
39+
<actionGroup name="openGridSizeForm">
40+
<arguments>
41+
<argument name="index" defaultValue="1" type="string"/>
42+
</arguments>
43+
<waitForElementVisible selector="{{PageBuilderColumnSection.gridSizeButton(index)}}" stepKey="waitForGridSizeButtonVisible" />
44+
<click selector="{{PageBuilderColumnSection.gridSizeButton(index)}}" stepKey="clickGridSizeButton" />
45+
<waitForPageLoad stepKey="waitForAnimation" />
46+
<waitForElementVisible selector="{{PageBuilderColumnSection.gridSizeInput(index)}}" stepKey="waitForGridVisible" />
47+
</actionGroup>
48+
<actionGroup name="closeGridSizeForm">
49+
<arguments>
50+
<argument name="index" defaultValue="1" type="string"/>
51+
</arguments>
52+
<click selector="{{PageBuilderColumnSection.columnX('1')}}" stepKey="clickColumn" />
53+
<waitForPageLoad stepKey="waitForAnimation" />
54+
<waitForElementNotVisible selector="{{PageBuilderColumnSection.gridSizeInput(index)}}" stepKey="waitForGridNotVisible" />
55+
</actionGroup>
56+
<actionGroup name="updateGridSize">
57+
<arguments>
58+
<argument name="index" defaultValue="1" type="string"/>
59+
<argument name="gridSize" defaultValue="12" type="string"/>
60+
</arguments>
61+
<waitForElementVisible selector="{{PageBuilderColumnSection.gridSizeButton(index)}}" stepKey="waitForGridSizeButtonVisible" />
62+
<click selector="{{PageBuilderColumnSection.gridSizeButton(index)}}" stepKey="clickGridSizeButton" />
63+
<waitForPageLoad stepKey="waitForAnimation" />
64+
<waitForElementVisible selector="{{PageBuilderColumnSection.gridSizeInput(index)}}" stepKey="waitForGridVisible" />
65+
<fillField selector="{{PageBuilderColumnSection.gridSizeInput(index)}}" userInput="{{gridSize}}" stepKey="enterGridSize"/>
66+
<pressKey selector="{{PageBuilderColumnSection.gridSizeInput(index)}}" parameterArray="['su',\Facebook\WebDriver\WebDriverKeys::ENTER]" stepKey="pressKeyEnter"/>
67+
<waitForPageLoad stepKey="waitForUpdate" />
68+
<waitForElementVisible selector="{{PageBuilderColumnSection.displayLabelGridSize(index, gridSize)}}" stepKey="validateGridSize" />
69+
</actionGroup>
70+
<actionGroup name="updateGridSizeInvalid">
71+
<arguments>
72+
<argument name="index" defaultValue="1" type="string"/>
73+
<argument name="gridSize" defaultValue="12" type="string"/>
74+
<argument name="errorMessage"/>
75+
</arguments>
76+
<fillField selector="{{PageBuilderColumnSection.gridSizeInput(index)}}" userInput="{{gridSize}}" stepKey="enterGridSize"/>
77+
<click selector="{{PageBuilderColumnSection.columnX(index)}}" stepKey="clickColumn" />
78+
<waitForPageLoad stepKey="waitForAnimation" />
79+
<waitForElementVisible selector="{{PageBuilderColumnSection.gridSizeError(index, errorMessage)}}" stepKey="verifyError"/>
3780
</actionGroup>
3881
</actionGroups>

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
<argument name="section" defaultValue="SliderOnFrontend"/>
1414
<argument name="index" defaultValue="2" type="string"/>
1515
</arguments>
16-
<waitForElementVisible selector="{{section.slideNavigator(index)}}" stepKey="waitForSliderButton"/>
17-
<click selector="{{section.slideNavigator(index)}}" stepKey="clickSliderButton"/>
18-
<waitForElementVisible selector="{{section.slide(index)}}" stepKey="waitForSlide"/>
16+
<waitForElementVisible selector="{{SliderOnFrontend.slideNavigator(index)}}" stepKey="waitForSliderButton"/>
17+
<click selector="{{SliderOnFrontend.slideNavigator(index)}}" stepKey="clickSliderButton"/>
18+
<waitForPageLoad stepKey="waitForPageLoad"/>
19+
<waitForElementVisible selector="{{SlideOnFrontend.slide(index)}}" stepKey="waitForSlide"/>
1920
</actionGroup>
2021
<actionGroup name="unfocusSlideOptions">
2122
<click selector="{{PageBuilderActionsSection.searchPanel}}" stepKey="clickOutsideLiveEdit"/>
@@ -27,10 +28,10 @@
2728
<click stepKey="focusOnSlider" selector="{{SliderInAdmin.sliderContainer}}"/>
2829
<scrollTo selector="div.pagebuilder-header" x="0" y="-100" stepKey="scrollToTop"/>
2930
<moveMouseOver selector="{{SliderInAdmin.sliderContainer}}" x="10" y="10" stepKey="onMouseOverContentTypeStage"/>
30-
<waitForPageLoad stepKey="waitForPageLoad"/>
31+
<waitForPageLoad stepKey="waitForPageLoad1"/>
3132
<waitForElementVisible time="5" selector="{{PageBuilderActionsSection.contentTypeOptionsMenu(PageBuilderSliderContentType.role)}}" stepKey="seeContentTypeOptionsMenu"/>
3233
<moveMouseOver selector="{{PageBuilderActionsSection.contentTypeOptionsMenu(PageBuilderSliderContentType.role)}}" stepKey="onMouseOverOptionsMenu"/>
3334
<click selector="{{PageBuilderActionsSection.contentTypeAdd(PageBuilderSliderContentType.role)}}" stepKey="clickAddNewSlideChild"/>
34-
<waitForLoadingMaskToDisappear stepKey="waitForAnimation"/>
35+
<waitForPageLoad stepKey="waitForPageLoad2"/>
3536
</actionGroup>
3637
</actionGroups>

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,17 @@
1919
<waitForPageLoad stepKey="waitForPageLoad"/>
2020
</actionGroup>
2121
<actionGroup name="saveStoreConfigurationAndValidateFieldError">
22+
<arguments>
23+
<argument name="inputFieldError" type="string"/>
24+
<argument name="errorMessageSelector" type="string"/>
25+
<argument name="errorMessage" type="string"/>
26+
</arguments>
2227
<comment userInput="saveStoreConfigurationAndValidateFieldError" stepKey="comment"/>
2328
<waitForElementVisible selector="{{StoreConfigSection.Save}}" stepKey="waitForSaveButton"/>
2429
<click selector="{{StoreConfigSection.Save}}" stepKey="clickSaveButton"/>
25-
<waitForElement selector="{{ContentManagementSection.GoogleMapsStyleInputFieldError}}" stepKey="waitForErrorField"/>
26-
<waitForElementVisible selector="{{ContentManagementSection.GoogleMapsStyleErrorMessage}}" stepKey="waitForErrorMessage"/>
27-
<see selector="{{ContentManagementSection.GoogleMapsStyleErrorMessage}}" userInput="{{googleMapsStyle.errorMessage}}" stepKey="seeErrorMessage"/>
30+
<waitForElement selector="{{inputFieldError}}" stepKey="waitForErrorField"/>
31+
<waitForElementVisible selector="{{errorMessageSelector}}" stepKey="waitForErrorMessage"/>
32+
<see selector="{{errorMessageSelector}}" userInput="{{errorMessage}}" stepKey="seeErrorMessage"/>
2833
</actionGroup>
2934
<actionGroup name="enablePageBuilderSetting">
3035
<amOnPage url="{{AdminContentManagementPage.url}}" stepKey="navigateToConfigurationPage" />
@@ -101,4 +106,18 @@
101106
<waitForElementVisible selector="{{ContentManagementSection.GoogleMapsStyleInputField}}" stepKey="waitForGoogleMapsStyleInputField"/>
102107
<fillField selector="{{ContentManagementSection.GoogleMapsStyleInputField}}" userInput="{{style}}" stepKey="inputStyle"/>
103108
</actionGroup>
109+
<actionGroup name="updateDefaultGridSizeConfig">
110+
<arguments>
111+
<argument name="gridSize" defaultValue="12" type="string"/>
112+
</arguments>
113+
<waitForElementVisible selector="{{ContentManagementSection.ColumnGridDefaultInputField}}" stepKey="waitForDefaultGridSizeInputFieldVisible"/>
114+
<fillField selector="{{ContentManagementSection.ColumnGridDefaultInputField}}" userInput="{{gridSize}}" stepKey="enterDefaultGridSize"/>
115+
</actionGroup>
116+
<actionGroup name="updateMaxGridSizeConfig">
117+
<arguments>
118+
<argument name="gridSize" defaultValue="16" type="string"/>
119+
</arguments>
120+
<waitForElementVisible selector="{{ContentManagementSection.ColumnGridMaxInputField}}" stepKey="waitForMaxGridSizeInputFieldVisible"/>
121+
<fillField selector="{{ContentManagementSection.ColumnGridMaxInputField}}" userInput="{{gridSize}}" stepKey="enterMaxGridSize"/>
122+
</actionGroup>
104123
</actionGroups>

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,17 @@
4949
<data key="empty"/>
5050
<data key="errorMessage">Google Maps Style JSON is invalid. Please paste the valid JSON style.</data>
5151
</entity>
52+
<entity name="PageBuilderDefaultColumnGridSize" type="pagebuilder_default_grid_size">
53+
<data key="section">cms_pagebuilder</data>
54+
<data key="row">row_cms_pagebuilder_column_grid_default</data>
55+
<data key="label">Default Column Grid Size</data>
56+
<data key="invalidDefaultGridSizeErrorMessage">Default grid size must be less than the maximum grid size.</data>
57+
<data key="invalidDigitErrorMessage">Please enter a valid number in this field.</data>
58+
<data key="greaterThanOneErrorMessage">Please enter a number 2 or greater in this field.</data>
59+
</entity>
60+
<entity name="PageBuilderMaximumColumnGridSize" type="pagebuilder_max_grid_size">
61+
<data key="section">cms_pagebuilder</data>
62+
<data key="row">row_cms_pagebuilder_column_grid_max</data>
63+
<data key="label">Maximum Column Grid Size</data>
64+
</entity>
5265
</entities>

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,31 @@
173173
<data key="verticalAlignmentBottom">justify-content: flex-end</data>
174174
<data key="verticalAlignmentCenter">justify-content: center</data>
175175
<data key="verticalAlignmentTop">justify-content: flex-start</data>
176+
<data key="widthOneTwelfth">width: 8.33333%</data>
176177
<data key="widthOneSixth">width: 16.6667%</data>
177178
<data key="widthOneThird">width: 33.3333%</data>
179+
<data key="widthFiveTwelfth">width: 41.6667%</data>
178180
<data key="widthHalf">width: 50%</data>
179181
</entity>
180-
<!--Border Color-->
182+
<!-- Grid Size -->
183+
<entity name="PageBuilderGridSize" type="pagebuilder_grid_size">
184+
<data key="defaultGridSize">12</data>
185+
<data key="defaultMaxGridSize">16</data>
186+
<data key="gridSizeErrorNegative">-8</data>
187+
<data key="gridSizeErrorZero">0</data>
188+
<data key="gridSizeErrorOne">1</data>
189+
<data key="gridSizeErrorFloat">12.5</data>
190+
<data key="gridSize_3">3</data>
191+
<data key="gridSize_5">5</data>
192+
<data key="gridSize_6">6</data>
193+
<data key="gridSize_32">32</data>
194+
<data key="gridSize_50">50</data>
195+
<data key="invalidNumberErrorMessage">Please enter a valid number.</data>
196+
<data key="minimumGridSizeErrorMessage">The minimum grid size supported is 2.</data>
197+
<data key="maximumGridSizeErrorMessage">The maximum grid size supported is</data>
198+
<data key="smallerThanTotalColumnsErrorMessage">Grid size cannot be smaller than the current total amount of columns, minus any empty columns.</data>
199+
</entity>
200+
<entity name="PageBuilderColumnDuplicate" type="pagebuilder_column">
201+
<data key="cannotDuplicateColumnErrorMessage">There is no free space within the column group to perform this action</data>
202+
</entity>
181203
</entities>

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,13 @@
2525
<element name="GoogleMapsStyleErrorMessage" type="text" selector="#cms_pagebuilder_google_maps_style-error"/>
2626
<element name="GoogleMapsStyleHelperText" type="text" selector="#row_cms_pagebuilder_google_maps_style .value .note span"/>
2727
<element name="GoogleMapsCreateMapStyleLink" type="button" selector="#row_cms_pagebuilder_google_maps_style a[href]"/>
28+
<element name="ColumnGridDefaultInputField" type="input" selector="#cms_pagebuilder_column_grid_default"/>
29+
<element name="ColumnGridDefaultInputFieldError" type="input" selector="//label[@class='mage-error'][@for='cms_pagebuilder_column_grid_default']"/>
30+
<element name="ColumnGridDefaultHelperText" type="text" selector="#row_cms_pagebuilder_column_grid_default .value .note span"/>
31+
<element name="ColumnGridMaxInputField" type="input" selector="#cms_pagebuilder_column_grid_max"/>
32+
<element name="ColumnGridMaxInputFieldError" type="input" selector="//label[@class='mage-error'][@for='cms_pagebuilder_column_grid_max']"/>
33+
<element name="ColumnGridMaxHelperText" type="text" selector="#row_cms_pagebuilder_column_grid_max .value .note span"/>
34+
<element name="UseSystem" type="input" selector="[name='groups[pagebuilder][fields][{{arg1}}][inherit]']" parameterized="true"/>
35+
<element name="UseSystemChecked" type="input" selector="[name='groups[pagebuilder][fields][{{arg1}}][inherit]']:checked" parameterized="true"/>
2836
</section>
2937
</sections>

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,5 +158,6 @@
158158
<element name="invalidUploadTitle" type="text" selector="//aside[contains(@class,'modal-popup')]//header/h1[contains(.,'Attention')]"/>
159159
<element name="invalidUploadMessage" type="text" selector="//aside[contains(@class,'modal-popup')]//div[@class='modal-content']//div[.=&quot;{{arg1}}&quot;]" parameterized="true"/>
160160
<element name="invalidUploadOkBtn" type="text" selector="//aside[contains(@class,'modal-popup')]//footer//button//span[.='OK']"/>
161+
<element name="errorModal" type="button" selector="//div[@class='modal-content']//div[contains(text(), '{{arg1}}')]" parameterized="true"/>
161162
</section>
162163
</sections>

0 commit comments

Comments
 (0)