Skip to content

Commit 99b53a5

Browse files
Merge remote-tracking branch 'mainline/develop' into MC-3428-remove-accordion
2 parents 3a620af + 1cc1119 commit 99b53a5

File tree

332 files changed

+13241
-7822
lines changed

Some content is hidden

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

332 files changed

+13241
-7822
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\PageBuilder\Block\Catalog\Block\Product\View;
9+
10+
class Attributes extends \Magento\Catalog\Block\Product\View\Attributes
11+
{
12+
const DISPLAY_ATTRIBUTES_NON_PAGEBUILDER = 'non_pagebuilder';
13+
14+
const DISPLAY_ATTRIBUTES_PAGEBUILDER_ONLY = 'pagebuilder_only';
15+
16+
/**
17+
* Determine if we should display the attribute on the front-end, add support for exclude page builder & page
18+
* builder only options on class.
19+
*
20+
* display_attributes can be set to determine whether to include just Page Builder attributes or to exclude
21+
* them.
22+
*
23+
* @param \Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute
24+
* @param array $excludeAttr
25+
* @return bool
26+
* @throws \Magento\Framework\Exception\LocalizedException
27+
*/
28+
protected function isVisibleOnFrontend(
29+
\Magento\Eav\Model\Entity\Attribute\AbstractAttribute $attribute,
30+
array $excludeAttr
31+
) : bool {
32+
return parent::isVisibleOnFrontend($attribute, $excludeAttr)
33+
&& (($this->getDisplayAttributes() == self::DISPLAY_ATTRIBUTES_NON_PAGEBUILDER
34+
&& !$attribute->getIsPagebuilderEnabled())
35+
|| ($this->getDisplayAttributes() == self::DISPLAY_ATTRIBUTES_PAGEBUILDER_ONLY
36+
&& $attribute->getIsPagebuilderEnabled()));
37+
}
38+
}

app/code/Magento/PageBuilder/Model/Config/ContentType/Converter.php

Lines changed: 58 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212

1313
class Converter implements \Magento\Framework\Config\ConverterInterface
1414
{
15+
const DEFAULT_ATTRIBUTE_READER = 'Magento_PageBuilder/js/property/attribute-reader';
16+
const DEFAULT_PROPERTY_READER = 'Magento_PageBuilder/js/property/style-property-reader';
17+
1518
/**
1619
* @var ArgumentParser
1720
*/
@@ -122,12 +125,13 @@ private function convertAppearanceData(\DOMElement $appearanceNode): array
122125
$appearanceData = [];
123126
$appearanceData = array_merge(
124127
$appearanceData,
125-
$this->convertAppearanceProperties($appearanceNode)
128+
$this->convertAppearanceStyles($appearanceNode)
126129
);
127-
$dataMappingNode = $appearanceNode->getElementsByTagName('data_mapping')->item(0);
128-
if ($dataMappingNode) {
129-
$appearanceData['data_mapping'] = $this->convertDataMapping($dataMappingNode);
130+
$elementsNode = $appearanceNode->getElementsByTagName('elements')->item(0);
131+
if ($elementsNode) {
132+
$appearanceData['elements'] = $this->convertElements($elementsNode);
130133
}
134+
$appearanceData['converters'] = $this->convertConvertersData($appearanceNode);
131135
$appearanceData['preview_template'] = $this->getAttributeValue($appearanceNode, 'preview_template');
132136
$appearanceData['render_template'] = $this->getAttributeValue($appearanceNode, 'render_template');
133137
$appearanceData['reader'] = $this->getAttributeValue($appearanceNode, 'reader');
@@ -145,7 +149,7 @@ private function convertAppearanceData(\DOMElement $appearanceNode): array
145149
* @param \DOMElement $elementNode
146150
* @return array
147151
*/
148-
private function convertAppearanceProperties(\DOMElement $elementNode): array
152+
private function convertAppearanceStyles(\DOMElement $elementNode): array
149153
{
150154
$data = [];
151155
foreach ($elementNode->getElementsByTagName('data') as $dataNode) {
@@ -176,31 +180,26 @@ private function validateAppearanceConfig(array $appearanceConfig)
176180
}
177181

178182
/**
179-
* Convert data mapping
183+
* Convert elements
180184
*
181185
* @param \DOMElement $childNode
182186
* @return array
183187
*/
184-
private function convertDataMapping(\DOMElement $childNode): array
188+
private function convertElements(\DOMElement $childNode): array
185189
{
186190
$elementData = [];
187191
foreach ($childNode->getElementsByTagName('element') as $elementNode) {
188192
$elementName = $elementNode->attributes->getNamedItem('name')->nodeValue;
189193
$elementData[$elementName] = [
190-
'style' => $this->convertProperties($elementNode),
194+
'style' => $this->convertStyles($elementNode),
191195
'attributes' => $this->convertAttributes($elementNode),
192196
'html' => $this->convertHtml($elementNode),
193197
'css' => $this->convertCss($elementNode),
194198
'tag' => $this->convertTag($elementNode)
195199
];
196200
}
197201

198-
$converters = $this->convertConvertersData($childNode);
199-
200-
return [
201-
'elements' => $elementData,
202-
'converters' => $converters
203-
];
202+
return $elementData;
204203
}
205204

206205
/**
@@ -235,45 +234,35 @@ private function convertAdditionalData(\DOMElement $elementNode): array
235234
}
236235

237236
/**
238-
* Convert properties
237+
* Convert styles
239238
*
240239
* @param \DOMElement $elementNode
241240
* @return array
242241
*/
243-
private function convertProperties(\DOMElement $elementNode): array
242+
private function convertStyles(\DOMElement $elementNode): array
244243
{
245-
$propertiesData = [];
246-
$propertiesNode = $elementNode->getElementsByTagName('style_properties')->item(0);
247-
if ($propertiesNode) {
248-
foreach ($propertiesNode->getElementsByTagName('property') as $propertyNode) {
249-
$propertiesData[] = [
250-
'var' => $this->extractVariableName($propertyNode),
251-
'name' => $this->getAttributeValue($propertyNode, 'source'),
252-
'converter' => $this->getAttributeValue($propertyNode, 'converter'),
253-
'preview_converter' => $this->getAttributeValue($propertyNode, 'preview_converter'),
254-
'virtual' => $this->getAttributeValue($propertyNode, 'virtual'),
255-
'persist' => $this->getAttributeValue($propertyNode, 'persist'),
256-
];
257-
}
258-
foreach ($propertiesNode->getElementsByTagName('complex_property') as $propertyNode) {
259-
$propertiesData[] = [
260-
'var' => $this->extractVariableName($propertyNode),
261-
'reader' => $this->getAttributeValue($propertyNode, 'reader'),
262-
'converter' => $this->getAttributeValue($propertyNode, 'converter'),
263-
'preview_converter' => $this->getAttributeValue($propertyNode, 'preview_converter'),
264-
'virtual' => $this->getAttributeValue($propertyNode, 'virtual'),
265-
'complex' => true
266-
];
267-
}
268-
foreach ($propertiesNode->getElementsByTagName('static_property') as $propertyNode) {
269-
$propertiesData[] = [
270-
'name' => $this->getAttributeValue($propertyNode, 'source'),
271-
'value' => $this->getAttributeValue($propertyNode, 'value'),
272-
'static' => true
273-
];
274-
}
244+
$stylesData = [];
245+
foreach ($elementNode->getElementsByTagName('style') as $styleNode) {
246+
$stylesData[] = [
247+
'var' => $this->extractVariableName($styleNode),
248+
'name' => $this->getAttributeValue($styleNode, 'source'),
249+
'converter' => $this->getAttributeValue($styleNode, 'converter'),
250+
'preview_converter' => $this->getAttributeValue($styleNode, 'preview_converter'),
251+
'persistence_mode' => $this->getAttributeValue($styleNode, 'persistence_mode')
252+
?? 'readwrite',
253+
'reader' => $this->getAttributeValue($styleNode, 'reader')
254+
?? self::DEFAULT_PROPERTY_READER,
255+
];
256+
}
257+
foreach ($elementNode->getElementsByTagName('static_style') as $styleNode) {
258+
$stylesData[] = [
259+
'name' => $this->getAttributeValue($styleNode, 'source'),
260+
'value' => $this->getAttributeValue($styleNode, 'value'),
261+
'static' => true
262+
];
275263
}
276-
return $propertiesData;
264+
265+
return $stylesData;
277266
}
278267

279268
/**
@@ -285,37 +274,26 @@ private function convertProperties(\DOMElement $elementNode): array
285274
private function convertAttributes(\DOMElement $elementNode): array
286275
{
287276
$attributesData = [];
288-
$attributesNode = $elementNode->getElementsByTagName('attributes')->item(0);
289-
if ($attributesNode) {
290-
foreach ($attributesNode->getElementsByTagName('attribute') as $attributeNode) {
291-
$attributesData[] = [
292-
'var' => $this->extractVariableName($attributeNode),
293-
'name' => $this->getAttributeValue($attributeNode, 'source'),
294-
'converter' => $this->getAttributeValue($attributeNode, 'converter'),
295-
'preview_converter' => $this->getAttributeValue($attributeNode, 'preview_converter'),
296-
'virtual' => $this->getAttributeValue($attributeNode, 'virtual'),
297-
'persist' => $this->getAttributeValue($attributeNode, 'persist'),
298-
];
299-
}
300-
foreach ($attributesNode->getElementsByTagName('static_attribute') as $attributeNode) {
301-
$attributesData[] = [
302-
'name' => $this->getAttributeValue($attributeNode, 'source'),
303-
'value' => $this->getAttributeValue($attributeNode, 'value'),
304-
'static' => true
305-
];
306-
}
307-
foreach ($attributesNode->getElementsByTagName('complex_attribute') as $attributeNode) {
308-
$attributesData[] = [
309-
'var' => $this->extractVariableName($attributeNode),
310-
'reader' => $this->getAttributeValue($attributeNode, 'reader'),
311-
'converter' => $this->getAttributeValue($attributeNode, 'converter'),
312-
'preview_converter' => $this->getAttributeValue($attributeNode, 'preview_converter'),
313-
'virtual' => $this->getAttributeValue($attributeNode, 'virtual'),
314-
'complex' => true,
315-
'persist' => $this->getAttributeValue($attributeNode, 'persist'),
316-
];
317-
}
277+
foreach ($elementNode->getElementsByTagName('attribute') as $attributeNode) {
278+
$attributesData[] = [
279+
'var' => $this->extractVariableName($attributeNode),
280+
'name' => $this->getAttributeValue($attributeNode, 'source'),
281+
'converter' => $this->getAttributeValue($attributeNode, 'converter'),
282+
'preview_converter' => $this->getAttributeValue($attributeNode, 'preview_converter'),
283+
'persistence_mode' => $this->getAttributeValue($attributeNode, 'persistence_mode')
284+
?? 'readwrite',
285+
'reader' => $this->getAttributeValue($attributeNode, 'reader')
286+
?? self::DEFAULT_ATTRIBUTE_READER,
287+
];
318288
}
289+
foreach ($elementNode->getElementsByTagName('static_attribute') as $attributeNode) {
290+
$attributesData[] = [
291+
'name' => $this->getAttributeValue($attributeNode, 'source'),
292+
'value' => $this->getAttributeValue($attributeNode, 'value'),
293+
'static' => true
294+
];
295+
}
296+
319297
return $attributesData;
320298
}
321299

@@ -383,9 +361,9 @@ private function convertTag(\DOMElement $elementNode): array
383361
* @param \DOMElement $childNode
384362
* @return array
385363
*/
386-
private function convertConvertersData(\DOMElement $childNode): array
364+
private function convertConvertersData(\DOMElement $appearanceNode): array
387365
{
388-
$convertersNode = $childNode->getElementsByTagName('converters')->item(0);
366+
$convertersNode = $appearanceNode->getElementsByTagName('converters')->item(0);
389367
$converters = [];
390368
if ($convertersNode) {
391369
foreach ($convertersNode->getElementsByTagName('converter') as $converterNode) {
@@ -554,7 +532,7 @@ private function getAttributeValue(\DOMElement $attributeNode, $attributeName)
554532
}
555533

556534
/**
557-
* Extract variable name from property and attribute nodes
535+
* Extract variable name from style and attribute nodes
558536
*
559537
* @param \DOMElement $node
560538
* @return string

app/code/Magento/PageBuilder/Model/Config/ContentType/Reader.php

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
class Reader extends \Magento\Framework\Config\Reader\Filesystem
1212
{
13-
const TYPE_PATH = '/config/content_types/type';
13+
const TYPE_PATH = '/config/type';
1414

1515
/**
1616
* List of id attributes for merge
@@ -23,22 +23,18 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
2323
self::TYPE_PATH . '/children/child' => 'name',
2424
self::TYPE_PATH . '/appearances/appearance' => 'name',
2525
self::TYPE_PATH . '/appearances/appearance/data' => 'name',
26-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element' => 'name',
27-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element/style_properties/property'
26+
self::TYPE_PATH . '/appearances/appearance/elements/element' => 'name',
27+
self::TYPE_PATH . '/appearances/appearance/elements/element/style'
2828
=> 'name',
29-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element/style_properties/complex_property'
30-
=> 'name',
31-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element/style_properties/static_property'
29+
self::TYPE_PATH . '/appearances/appearance/elements/element/static_style'
3230
=> 'source',
3331
self::TYPE_PATH . '/additional_data/item' => 'name',
34-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element/attributes/attribute' => 'name',
35-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element/attributes/complex_attribute'
36-
=> 'name',
37-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element/attributes/static_attribute'
32+
self::TYPE_PATH . '/appearances/appearance/elements/element/attribute' => 'name',
33+
self::TYPE_PATH . '/appearances/appearance/elements/element/static_attribute'
3834
=> 'source',
39-
self::TYPE_PATH . '/appearances/appearance/data_mapping/elements/element/css/filter/class' => 'source',
40-
self::TYPE_PATH . '/appearances/appearance/data_mapping/converters/converter' => 'name',
41-
self::TYPE_PATH . '/appearances/appearance/data_mapping/converters/converter/config/item' => 'name',
35+
self::TYPE_PATH . '/appearances/appearance/elements/element/css/filter/class' => 'source',
36+
self::TYPE_PATH . '/appearances/appearance/converters/converter' => 'name',
37+
self::TYPE_PATH . '/appearances/appearance/converters/converter/config/item' => 'name'
4238
];
4339

4440
/**

app/code/Magento/PageBuilder/Model/Config/Group/Converter.php

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,12 @@ public function convert($source): array
3333
private function convertGroups(\DOMDocument $source): array
3434
{
3535
$groupsData = [];
36-
/** @var \DOMNode $source */
37-
$groups = $source->getElementsByTagName('groups');
3836
/** @var \DOMNode $group */
39-
foreach ($groups->item(0)->childNodes as $group) {
40-
if ($group->nodeType == XML_ELEMENT_NODE && $group->tagName == 'group') {
41-
$name = $group->attributes->getNamedItem('name')->nodeValue;
42-
/** @var \DOMElement $attributeValue */
43-
foreach ($group->attributes as $attributeName => $attributeValue) {
44-
$groupsData[$name][$attributeName] = $attributeValue->nodeValue;
45-
}
37+
foreach ($source->getElementsByTagName('group') as $group) {
38+
$name = $group->attributes->getNamedItem('name')->nodeValue;
39+
/** @var \DOMElement $attributeValue */
40+
foreach ($group->attributes as $attributeName => $attributeValue) {
41+
$groupsData[$name][$attributeName] = $attributeValue->nodeValue;
4642
}
4743
}
4844
uasort($groupsData, function ($firstElement, $secondElement) {

app/code/Magento/PageBuilder/Model/Config/Group/Reader.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class Reader extends \Magento\Framework\Config\Reader\Filesystem
1616
* @var array
1717
*/
1818
protected $_idAttributes = [
19-
'/config/groups/group' => 'name'
19+
'/config/group' => 'name'
2020
];
2121

2222
/**

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

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -152,27 +152,21 @@ private function flattenContentTypeData($name, $contentType)
152152
'icon' => $contentType['icon'],
153153
'form' => $contentType['form'],
154154
'contentType' => '',
155-
'group' => (isset($contentType['group'])
156-
? $contentType['group'] : 'general'),
155+
'group' => $contentType['group'] ?? 'general',
157156
'fields' => $this->uiComponentConfig->getFields($contentType['form']),
158-
'preview_template' => (isset($contentType['preview_template'])
159-
? $contentType['preview_template'] : ''),
160-
'render_template' => (isset($contentType['render_template'])
161-
? $contentType['render_template'] : ''),
157+
'preview_template' => $contentType['preview_template'] ?? '',
158+
'render_template' => $contentType['render_template'] ?? '',
162159
'component' => $contentType['component'],
163-
'preview_component' => (isset($contentType['preview_component'])
164-
? $contentType['preview_component']
165-
: self::DEFAULT_PREVIEW_COMPONENT),
166-
'master_component' => (isset($contentType['master_component'])
167-
? $contentType['master_component']
168-
: self::DEFAULT_MASTER_COMPONENT),
169-
'allowed_parents' => isset($contentType['allowed_parents']) ? $contentType['allowed_parents'] : [],
170-
'readers' => isset($contentType['readers']) ? $contentType['readers'] : [],
171-
'appearances' => isset($contentType['appearances']) ? $contentType['appearances'] : [],
160+
'preview_component' => $contentType['preview_component'] ?? self::DEFAULT_PREVIEW_COMPONENT,
161+
'master_component' => $contentType['master_component'] ?? self::DEFAULT_MASTER_COMPONENT,
162+
'allowed_parents' => $contentType['allowed_parents'] ?? [],
163+
'readers' => $contentType['readers'] ?? [],
164+
'appearances' => $contentType['appearances'] ?? [],
172165
'additional_data' => isset($contentType['additional_data'])
173166
? $this->additionalDataParser->toArray($contentType['additional_data'])
174167
: [],
175-
'data_mapping' => isset($contentType['data_mapping']) ? $contentType['data_mapping'] : [],
168+
'elements' => $contentType['elements'] ?? [],
169+
'converters' => $contentType['converters'] ?? [],
176170
'is_visible' => isset($contentType['is_visible']) && $contentType['is_visible'] === 'false' ? false : true
177171
];
178172
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,16 +125,15 @@ public function render(array $itemData, array $additionalData = []) : string
125125
],
126126
];
127127

128-
$productsCount = $eavData['product_display'] ?? 5;
129128
$conditionsEncoded = $this->conditionsHelper->encode($conditions);
130129
$widgetString = "{{widget type=\"Magento\CatalogWidget\Block\Product\ProductsList\" " .
131130
"template=\"Magento_CatalogWidget::product/widget/content/grid.phtml\" " .
132131
"type_name=\"Catalog Products List\" anchor_text=\"\" id_path=\"\" show_pager=\"0\" " .
133-
"products_count=\"$productsCount\" conditions_encoded=\"$conditionsEncoded\"}}";
132+
"products_count=\"1\" conditions_encoded=\"$conditionsEncoded\"}}";
134133

135134
$rootElementAttributes = [
136135
'data-element' => 'main',
137-
'data-role' => 'product',
136+
'data-role' => 'products',
138137
'data-appearance' => 'grid',
139138
'class' => $eavData['css_classes'] ?? '',
140139
];

0 commit comments

Comments
 (0)