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,12 +125,13 @@ 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
- $ 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 );
130
133
}
134
+ $ appearanceData ['converters ' ] = $ this ->convertConvertersData ($ appearanceNode );
131
135
$ appearanceData ['preview_template ' ] = $ this ->getAttributeValue ($ appearanceNode , 'preview_template ' );
132
136
$ appearanceData ['render_template ' ] = $ this ->getAttributeValue ($ appearanceNode , 'render_template ' );
133
137
$ appearanceData ['reader ' ] = $ this ->getAttributeValue ($ appearanceNode , 'reader ' );
@@ -145,7 +149,7 @@ private function convertAppearanceData(\DOMElement $appearanceNode): array
145
149
* @param \DOMElement $elementNode
146
150
* @return array
147
151
*/
148
- private function convertAppearanceProperties (\DOMElement $ elementNode ): array
152
+ private function convertAppearanceStyles (\DOMElement $ elementNode ): array
149
153
{
150
154
$ data = [];
151
155
foreach ($ elementNode ->getElementsByTagName ('data ' ) as $ dataNode ) {
@@ -176,31 +180,26 @@ private function validateAppearanceConfig(array $appearanceConfig)
176
180
}
177
181
178
182
/**
179
- * Convert data mapping
183
+ * Convert elements
180
184
*
181
185
* @param \DOMElement $childNode
182
186
* @return array
183
187
*/
184
- private function convertDataMapping (\DOMElement $ childNode ): array
188
+ private function convertElements (\DOMElement $ childNode ): array
185
189
{
186
190
$ elementData = [];
187
191
foreach ($ childNode ->getElementsByTagName ('element ' ) as $ elementNode ) {
188
192
$ elementName = $ elementNode ->attributes ->getNamedItem ('name ' )->nodeValue ;
189
193
$ elementData [$ elementName ] = [
190
- 'style ' => $ this ->convertProperties ($ elementNode ),
194
+ 'style ' => $ this ->convertStyles ($ elementNode ),
191
195
'attributes ' => $ this ->convertAttributes ($ elementNode ),
192
196
'html ' => $ this ->convertHtml ($ elementNode ),
193
197
'css ' => $ this ->convertCss ($ elementNode ),
194
198
'tag ' => $ this ->convertTag ($ elementNode )
195
199
];
196
200
}
197
201
198
- $ converters = $ this ->convertConvertersData ($ childNode );
199
-
200
- return [
201
- 'elements ' => $ elementData ,
202
- 'converters ' => $ converters
203
- ];
202
+ return $ elementData ;
204
203
}
205
204
206
205
/**
@@ -235,45 +234,35 @@ private function convertAdditionalData(\DOMElement $elementNode): array
235
234
}
236
235
237
236
/**
238
- * Convert properties
237
+ * Convert styles
239
238
*
240
239
* @param \DOMElement $elementNode
241
240
* @return array
242
241
*/
243
- private function convertProperties (\DOMElement $ elementNode ): array
242
+ private function convertStyles (\DOMElement $ elementNode ): array
244
243
{
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
+ ];
275
263
}
276
- return $ propertiesData ;
264
+
265
+ return $ stylesData ;
277
266
}
278
267
279
268
/**
@@ -285,37 +274,26 @@ private function convertProperties(\DOMElement $elementNode): array
285
274
private function convertAttributes (\DOMElement $ elementNode ): array
286
275
{
287
276
$ 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
+ ];
318
288
}
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
+
319
297
return $ attributesData ;
320
298
}
321
299
@@ -383,9 +361,9 @@ private function convertTag(\DOMElement $elementNode): array
383
361
* @param \DOMElement $childNode
384
362
* @return array
385
363
*/
386
- private function convertConvertersData (\DOMElement $ childNode ): array
364
+ private function convertConvertersData (\DOMElement $ appearanceNode ): array
387
365
{
388
- $ convertersNode = $ childNode ->getElementsByTagName ('converters ' )->item (0 );
366
+ $ convertersNode = $ appearanceNode ->getElementsByTagName ('converters ' )->item (0 );
389
367
$ converters = [];
390
368
if ($ convertersNode ) {
391
369
foreach ($ convertersNode ->getElementsByTagName ('converter ' ) as $ converterNode ) {
@@ -554,7 +532,7 @@ private function getAttributeValue(\DOMElement $attributeNode, $attributeName)
554
532
}
555
533
556
534
/**
557
- * Extract variable name from property and attribute nodes
535
+ * Extract variable name from style and attribute nodes
558
536
*
559
537
* @param \DOMElement $node
560
538
* @return string
0 commit comments