Skip to content

Commit 00acbda

Browse files
committed
PB-207: Empty "Category" or "SKU" condition option causes error on save
1 parent 40c71e3 commit 00acbda

File tree

6 files changed

+24
-8
lines changed

6 files changed

+24
-8
lines changed

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderProductsCarouselTests.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,6 @@
278278
<group value="pagebuilder"/>
279279
<group value="pagebuilder-products"/>
280280
<group value="pagebuilder-productsCarousel"/>
281-
<skip>
282-
<issueId value="PB-207"/>
283-
</skip>
284281
</annotations>
285282
<actionGroup ref="openPageBuilderEditPanelByIndex" stepKey="openEditPanel" after="dragProductsIntoStage">
286283
<argument name="contentType" value="PageBuilderProductsContentType"/>

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/products/mass-converter/carousel-widget-directive.js

Lines changed: 5 additions & 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/products/mass-converter/widget-directive.js

Lines changed: 5 additions & 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/form/provider/conditions-data-processor.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,17 @@ define([
3737
var conditionOperator = data[data.condition_option + '-condition_operator']
3838
? data[data.condition_option + '-condition_operator']
3939
: "==";
40+
var conditionValue = typeof data[data.condition_option] === 'string'
41+
? data[data.condition_option].trim()
42+
: '';
4043
pairs['parameters[' + attribute + '][1--1][operator]'] = conditionOperator;
4144
pairs['parameters[' + attribute + '][1--1][type]'] = "Magento\\CatalogWidget\\Model\\Rule\\Condition\\Product";
4245
pairs['parameters[' + attribute + '][1][aggregator]'] = "all";
4346
pairs['parameters[' + attribute + '][1][new_child]'] = "";
4447
pairs['parameters[' + attribute + '][1][type]'] = "Magento\\CatalogWidget\\Model\\Rule\\Condition\\Combine";
4548
pairs['parameters[' + attribute + '][1][value]'] = "1";
4649
pairs['parameters[' + attribute + '][1--1][attribute]'] = data.condition_option;
47-
pairs['parameters[' + attribute + '][1--1][value]'] = data[data.condition_option].trim();
50+
pairs['parameters[' + attribute + '][1--1][value]'] = conditionValue;
4851
}
4952

5053
if (!_.isEmpty(pairs)) {

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/products/mass-converter/carousel-widget-directive.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,15 @@ export default class WidgetDirective extends BaseWidgetDirective {
5353
products_count: data.carousel_products_count,
5454
sort_order: data.sort_order,
5555
condition_option: data.condition_option,
56-
condition_option_value: this.encodeWysiwygCharacters(data[data.condition_option] || ""),
56+
condition_option_value: "",
5757
type_name: "Catalog Products Carousel",
5858
conditions_encoded: this.encodeWysiwygCharacters(data.conditions_encoded || ""),
5959
};
6060

61+
if (typeof data[data.condition_option] === "string") {
62+
attributes.condition_option_value = this.encodeWysiwygCharacters(data[data.condition_option]);
63+
}
64+
6165
if (attributes.conditions_encoded.length === 0) {
6266
return data;
6367
}

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/products/mass-converter/widget-directive.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,15 @@ export default class WidgetDirective extends BaseWidgetDirective {
5353
products_count: data.products_count,
5454
sort_order: data.sort_order,
5555
condition_option: data.condition_option,
56-
condition_option_value: this.encodeWysiwygCharacters(data[data.condition_option] || ""),
56+
condition_option_value: "",
5757
type_name: "Catalog Products List",
5858
conditions_encoded: this.encodeWysiwygCharacters(data.conditions_encoded || ""),
5959
};
6060

61+
if (typeof data[data.condition_option] === "string") {
62+
attributes.condition_option_value = this.encodeWysiwygCharacters(data[data.condition_option]);
63+
}
64+
6165
if (attributes.conditions_encoded.length === 0) {
6266
return data;
6367
}

0 commit comments

Comments
 (0)