Skip to content

Commit cf94d74

Browse files
committed
MC-5232: Prefix field names with section name to avoid field name collision
- Retrieve fieldset names from form configuration - Ensure data object defaults are built with their fieldsets - Refactor data store to provide method of accessing data - Introduce getState function in data store and refactor old usage of get to utilise this new function instead - Introduce object-get function
1 parent 52f5ab6 commit cf94d74

File tree

32 files changed

+344
-192
lines changed

32 files changed

+344
-192
lines changed

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

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,15 @@ public function getFields($componentName) : array
4646

4747
$fields = $this->iterateComponents(
4848
$componentConfig,
49-
function ($item, $key) {
49+
function ($item, $fieldset, $key) {
5050
// Determine if this item has a formElement key
5151
if (isset($item[Converter::DATA_ARGUMENTS_KEY]['data']['config']['formElement'])) {
52-
$elementConfig
53-
= $item[Converter::DATA_ARGUMENTS_KEY]['data']['config'];
52+
$elementConfig = $item[Converter::DATA_ARGUMENTS_KEY]['data']['config'];
5453
return [
55-
$key => [
56-
'default' => (isset($elementConfig['default'])
57-
? $elementConfig['default'] : '')
54+
$fieldset => [
55+
$key => [
56+
'default' => (isset($elementConfig['default']) ? $elementConfig['default'] : '')
57+
]
5858
]
5959
];
6060
}
@@ -69,24 +69,30 @@ function ($item, $key) {
6969
*
7070
* @param array $config
7171
* @param \Closure $callback
72+
* @param bool $fieldset
7273
* @param bool $key
7374
*
7475
* @return array
7576
*/
76-
private function iterateComponents($config, $callback, $key = false) : array
77+
private function iterateComponents($config, $callback, $fieldset = false, $key = false) : array
7778
{
78-
$values = $callback($config, $key) ?: [];
79+
$values = $callback($config, $fieldset, $key) ?: [];
7980
if (isset($config[Converter::DATA_COMPONENTS_KEY])
8081
&& !empty($config[Converter::DATA_COMPONENTS_KEY])
8182
&& (!isset($config[Converter::DATA_ARGUMENTS_KEY]['data']['config']['componentType'])
8283
|| isset($config[Converter::DATA_ARGUMENTS_KEY]['data']['config']['componentType'])
8384
&& $config[Converter::DATA_ARGUMENTS_KEY]['data']['config']['componentType'] !== 'dynamicRows'
8485
)
8586
) {
87+
// Retrieve the fieldset name from the configuration
88+
if ($config[Converter::DATA_ATTRIBUTES_KEY]['class'] === \Magento\Ui\Component\Form\Fieldset::class) {
89+
$fieldset = $config[Converter::DATA_ATTRIBUTES_KEY]['name'];
90+
}
91+
8692
foreach ($config[Converter::DATA_COMPONENTS_KEY] as $key => $child) {
87-
$values = array_merge(
93+
$values = array_merge_recursive(
8894
$values,
89-
$this->iterateComponents($child, $callback, $key) ?: []
95+
$this->iterateComponents($child, $callback, $fieldset, $key) ?: []
9096
);
9197
}
9298
}

app/code/Magento/PageBuilder/view/adminhtml/pagebuilder/content_type/row.xml

Lines changed: 84 additions & 84 deletions
Large diffs are not rendered by default.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type-factory.js

Lines changed: 8 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type-menu/edit.js

Lines changed: 20 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/banner/preview.js

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/block/preview.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/image/preview.js

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/master.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/preview-collection.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/preview.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)