12
12
13
13
class Converter implements \Magento \Framework \Config \ConverterInterface
14
14
{
15
+ const DEFAULT_ATTRIBUTE_READER = 'Magento_PageBuilder/js/property/attribute-reader ' ;
16
+ const DEFAULT_PROPERTY_READER = 'Magento_PageBuilder/js/property/style-property-reader ' ;
17
+
15
18
/**
16
19
* @var ArgumentParser
17
20
*/
@@ -122,18 +125,19 @@ private function convertAppearanceData(\DOMElement $appearanceNode): array
122
125
$ appearanceData = [];
123
126
$ appearanceData = array_merge (
124
127
$ appearanceData ,
125
- $ this ->convertAppearanceProperties ($ appearanceNode )
128
+ $ this ->convertAppearanceStyles ($ appearanceNode )
126
129
);
127
130
$ readerNode = $ appearanceNode ->getElementsByTagName ('reader ' )->item (0 );
128
131
if ($ readerNode && $ readerNode ->nodeValue ) {
129
132
$ appearanceData ['readers ' ] = [$ readerNode ->nodeValue ];
130
133
} else {
131
134
$ appearanceData ['readers ' ] = $ this ->convertAppearanceReaders ($ appearanceNode );
132
135
}
133
- $ dataMappingNode = $ appearanceNode ->getElementsByTagName ('data_mapping ' )->item (0 );
134
- if ($ dataMappingNode ) {
135
- $ appearanceData ['data_mapping ' ] = $ this ->convertDataMapping ( $ dataMappingNode );
136
+ $ elementsNode = $ appearanceNode ->getElementsByTagName ('elements ' )->item (0 );
137
+ if ($ elementsNode ) {
138
+ $ appearanceData ['elements ' ] = $ this ->convertElements ( $ elementsNode );
136
139
}
140
+ $ appearanceData ['converters ' ] = $ this ->convertConvertersData ($ appearanceNode );
137
141
$ appearanceData ['preview_template ' ] = $ this ->getAttributeValue ($ appearanceNode , 'preview_template ' );
138
142
$ appearanceData ['render_template ' ] = $ this ->getAttributeValue ($ appearanceNode , 'render_template ' );
139
143
$ appearanceData ['reader ' ] = $ this ->getAttributeValue ($ appearanceNode , 'reader ' );
@@ -151,7 +155,7 @@ private function convertAppearanceData(\DOMElement $appearanceNode): array
151
155
* @param \DOMElement $elementNode
152
156
* @return array
153
157
*/
154
- private function convertAppearanceProperties (\DOMElement $ elementNode ): array
158
+ private function convertAppearanceStyles (\DOMElement $ elementNode ): array
155
159
{
156
160
$ data = [];
157
161
foreach ($ elementNode ->getElementsByTagName ('data ' ) as $ dataNode ) {
@@ -200,31 +204,26 @@ private function validateAppearanceConfig(array $appearanceConfig)
200
204
}
201
205
202
206
/**
203
- * Convert data mapping
207
+ * Convert elements
204
208
*
205
209
* @param \DOMElement $childNode
206
210
* @return array
207
211
*/
208
- private function convertDataMapping (\DOMElement $ childNode ): array
212
+ private function convertElements (\DOMElement $ childNode ): array
209
213
{
210
214
$ elementData = [];
211
215
foreach ($ childNode ->getElementsByTagName ('element ' ) as $ elementNode ) {
212
216
$ elementName = $ elementNode ->attributes ->getNamedItem ('name ' )->nodeValue ;
213
217
$ elementData [$ elementName ] = [
214
- 'style ' => $ this ->convertProperties ($ elementNode ),
218
+ 'style ' => $ this ->convertStyles ($ elementNode ),
215
219
'attributes ' => $ this ->convertAttributes ($ elementNode ),
216
220
'html ' => $ this ->convertHtml ($ elementNode ),
217
221
'css ' => $ this ->convertCss ($ elementNode ),
218
222
'tag ' => $ this ->convertTag ($ elementNode )
219
223
];
220
224
}
221
225
222
- $ converters = $ this ->convertConvertersData ($ childNode );
223
-
224
- return [
225
- 'elements ' => $ elementData ,
226
- 'converters ' => $ converters
227
- ];
226
+ return $ elementData ;
228
227
}
229
228
230
229
/**
@@ -259,45 +258,35 @@ private function convertAdditionalData(\DOMElement $elementNode): array
259
258
}
260
259
261
260
/**
262
- * Convert properties
261
+ * Convert styles
263
262
*
264
263
* @param \DOMElement $elementNode
265
264
* @return array
266
265
*/
267
- private function convertProperties (\DOMElement $ elementNode ): array
266
+ private function convertStyles (\DOMElement $ elementNode ): array
268
267
{
269
- $ propertiesData = [];
270
- $ propertiesNode = $ elementNode ->getElementsByTagName ('style_properties ' )->item (0 );
271
- if ($ propertiesNode ) {
272
- foreach ($ propertiesNode ->getElementsByTagName ('property ' ) as $ propertyNode ) {
273
- $ propertiesData [] = [
274
- 'var ' => $ this ->extractVariableName ($ propertyNode ),
275
- 'name ' => $ this ->getAttributeValue ($ propertyNode , 'source ' ),
276
- 'converter ' => $ this ->getAttributeValue ($ propertyNode , 'converter ' ),
277
- 'preview_converter ' => $ this ->getAttributeValue ($ propertyNode , 'preview_converter ' ),
278
- 'virtual ' => $ this ->getAttributeValue ($ propertyNode , 'virtual ' ),
279
- 'persist ' => $ this ->getAttributeValue ($ propertyNode , 'persist ' ),
280
- ];
281
- }
282
- foreach ($ propertiesNode ->getElementsByTagName ('complex_property ' ) as $ propertyNode ) {
283
- $ propertiesData [] = [
284
- 'var ' => $ this ->extractVariableName ($ propertyNode ),
285
- 'reader ' => $ this ->getAttributeValue ($ propertyNode , 'reader ' ),
286
- 'converter ' => $ this ->getAttributeValue ($ propertyNode , 'converter ' ),
287
- 'preview_converter ' => $ this ->getAttributeValue ($ propertyNode , 'preview_converter ' ),
288
- 'virtual ' => $ this ->getAttributeValue ($ propertyNode , 'virtual ' ),
289
- 'complex ' => true
290
- ];
291
- }
292
- foreach ($ propertiesNode ->getElementsByTagName ('static_property ' ) as $ propertyNode ) {
293
- $ propertiesData [] = [
294
- 'name ' => $ this ->getAttributeValue ($ propertyNode , 'source ' ),
295
- 'value ' => $ this ->getAttributeValue ($ propertyNode , 'value ' ),
296
- 'static ' => true
297
- ];
298
- }
268
+ $ stylesData = [];
269
+ foreach ($ elementNode ->getElementsByTagName ('style ' ) as $ styleNode ) {
270
+ $ stylesData [] = [
271
+ 'var ' => $ this ->extractVariableName ($ styleNode ),
272
+ 'name ' => $ this ->getAttributeValue ($ styleNode , 'source ' ),
273
+ 'converter ' => $ this ->getAttributeValue ($ styleNode , 'converter ' ),
274
+ 'preview_converter ' => $ this ->getAttributeValue ($ styleNode , 'preview_converter ' ),
275
+ 'persistence_mode ' => $ this ->getAttributeValue ($ styleNode , 'persistence_mode ' )
276
+ ?? 'readwrite ' ,
277
+ 'reader ' => $ this ->getAttributeValue ($ styleNode , 'reader ' )
278
+ ?? self ::DEFAULT_PROPERTY_READER ,
279
+ ];
280
+ }
281
+ foreach ($ elementNode ->getElementsByTagName ('static_style ' ) as $ styleNode ) {
282
+ $ stylesData [] = [
283
+ 'name ' => $ this ->getAttributeValue ($ styleNode , 'source ' ),
284
+ 'value ' => $ this ->getAttributeValue ($ styleNode , 'value ' ),
285
+ 'static ' => true
286
+ ];
299
287
}
300
- return $ propertiesData ;
288
+
289
+ return $ stylesData ;
301
290
}
302
291
303
292
/**
@@ -309,37 +298,26 @@ private function convertProperties(\DOMElement $elementNode): array
309
298
private function convertAttributes (\DOMElement $ elementNode ): array
310
299
{
311
300
$ attributesData = [];
312
- $ attributesNode = $ elementNode ->getElementsByTagName ('attributes ' )->item (0 );
313
- if ($ attributesNode ) {
314
- foreach ($ attributesNode ->getElementsByTagName ('attribute ' ) as $ attributeNode ) {
315
- $ attributesData [] = [
316
- 'var ' => $ this ->extractVariableName ($ attributeNode ),
317
- 'name ' => $ this ->getAttributeValue ($ attributeNode , 'source ' ),
318
- 'converter ' => $ this ->getAttributeValue ($ attributeNode , 'converter ' ),
319
- 'preview_converter ' => $ this ->getAttributeValue ($ attributeNode , 'preview_converter ' ),
320
- 'virtual ' => $ this ->getAttributeValue ($ attributeNode , 'virtual ' ),
321
- 'persist ' => $ this ->getAttributeValue ($ attributeNode , 'persist ' ),
322
- ];
323
- }
324
- foreach ($ attributesNode ->getElementsByTagName ('static_attribute ' ) as $ attributeNode ) {
325
- $ attributesData [] = [
326
- 'name ' => $ this ->getAttributeValue ($ attributeNode , 'source ' ),
327
- 'value ' => $ this ->getAttributeValue ($ attributeNode , 'value ' ),
328
- 'static ' => true
329
- ];
330
- }
331
- foreach ($ attributesNode ->getElementsByTagName ('complex_attribute ' ) as $ attributeNode ) {
332
- $ attributesData [] = [
333
- 'var ' => $ this ->extractVariableName ($ attributeNode ),
334
- 'reader ' => $ this ->getAttributeValue ($ attributeNode , 'reader ' ),
335
- 'converter ' => $ this ->getAttributeValue ($ attributeNode , 'converter ' ),
336
- 'preview_converter ' => $ this ->getAttributeValue ($ attributeNode , 'preview_converter ' ),
337
- 'virtual ' => $ this ->getAttributeValue ($ attributeNode , 'virtual ' ),
338
- 'complex ' => true ,
339
- 'persist ' => $ this ->getAttributeValue ($ attributeNode , 'persist ' ),
340
- ];
341
- }
301
+ foreach ($ elementNode ->getElementsByTagName ('attribute ' ) as $ attributeNode ) {
302
+ $ attributesData [] = [
303
+ 'var ' => $ this ->extractVariableName ($ attributeNode ),
304
+ 'name ' => $ this ->getAttributeValue ($ attributeNode , 'source ' ),
305
+ 'converter ' => $ this ->getAttributeValue ($ attributeNode , 'converter ' ),
306
+ 'preview_converter ' => $ this ->getAttributeValue ($ attributeNode , 'preview_converter ' ),
307
+ 'persistence_mode ' => $ this ->getAttributeValue ($ attributeNode , 'persistence_mode ' )
308
+ ?? 'readwrite ' ,
309
+ 'reader ' => $ this ->getAttributeValue ($ attributeNode , 'reader ' )
310
+ ?? self ::DEFAULT_ATTRIBUTE_READER ,
311
+ ];
342
312
}
313
+ foreach ($ elementNode ->getElementsByTagName ('static_attribute ' ) as $ attributeNode ) {
314
+ $ attributesData [] = [
315
+ 'name ' => $ this ->getAttributeValue ($ attributeNode , 'source ' ),
316
+ 'value ' => $ this ->getAttributeValue ($ attributeNode , 'value ' ),
317
+ 'static ' => true
318
+ ];
319
+ }
320
+
343
321
return $ attributesData ;
344
322
}
345
323
@@ -407,9 +385,9 @@ private function convertTag(\DOMElement $elementNode): array
407
385
* @param \DOMElement $childNode
408
386
* @return array
409
387
*/
410
- private function convertConvertersData (\DOMElement $ childNode ): array
388
+ private function convertConvertersData (\DOMElement $ appearanceNode ): array
411
389
{
412
- $ convertersNode = $ childNode ->getElementsByTagName ('converters ' )->item (0 );
390
+ $ convertersNode = $ appearanceNode ->getElementsByTagName ('converters ' )->item (0 );
413
391
$ converters = [];
414
392
if ($ convertersNode ) {
415
393
foreach ($ convertersNode ->getElementsByTagName ('converter ' ) as $ converterNode ) {
@@ -578,7 +556,7 @@ private function getAttributeValue(\DOMElement $attributeNode, $attributeName)
578
556
}
579
557
580
558
/**
581
- * Extract variable name from property and attribute nodes
559
+ * Extract variable name from style and attribute nodes
582
560
*
583
561
* @param \DOMElement $node
584
562
* @return string
0 commit comments