diff --git a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
index 0228b48f7f11..25cfb61d658c 100644
--- a/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
+++ b/app/code/Magento/Backend/Controller/Adminhtml/System/Design/Save.php
@@ -6,7 +6,12 @@
*/
namespace Magento\Backend\Controller\Adminhtml\System\Design;
-class Save extends \Magento\Backend\Controller\Adminhtml\System\Design
+use Magento\Framework\App\Action\HttpPostActionInterface;
+
+/**
+ * Save design action.
+ */
+class Save extends \Magento\Backend\Controller\Adminhtml\System\Design implements HttpPostActionInterface
{
/**
* Filtering posted data. Converting localized data if needed
@@ -26,6 +31,8 @@ protected function _filterPostData($data)
}
/**
+ * Save design action.
+ *
* @return \Magento\Backend\Model\View\Result\Redirect
*/
public function execute()
@@ -54,10 +61,10 @@ public function execute()
} catch (\Exception $e) {
$this->messageManager->addErrorMessage($e->getMessage());
$this->_objectManager->get(\Magento\Backend\Model\Session::class)->setDesignData($data);
- return $resultRedirect->setPath('adminhtml/*/', ['id' => $design->getId()]);
+ return $resultRedirect->setPath('*/*/edit', ['id' => $design->getId()]);
}
}
- return $resultRedirect->setPath('adminhtml/*/');
+ return $resultRedirect->setPath('*/*/');
}
}
diff --git a/app/code/Magento/Catalog/Model/Api/SearchCriteria/CollectionProcessor/ConditionProcessor/ConditionBuilder/EavAttributeCondition.php b/app/code/Magento/Catalog/Model/Api/SearchCriteria/CollectionProcessor/ConditionProcessor/ConditionBuilder/EavAttributeCondition.php
index d3c84e69c954..e296c8d3b897 100644
--- a/app/code/Magento/Catalog/Model/Api/SearchCriteria/CollectionProcessor/ConditionProcessor/ConditionBuilder/EavAttributeCondition.php
+++ b/app/code/Magento/Catalog/Model/Api/SearchCriteria/CollectionProcessor/ConditionProcessor/ConditionBuilder/EavAttributeCondition.php
@@ -58,22 +58,38 @@ public function build(Filter $filter): string
$conditionValue = $this->mapConditionValue($conditionType, $filter->getValue());
// NOTE: store scope was ignored intentionally to perform search across all stores
- $attributeSelect = $this->resourceConnection->getConnection()
- ->select()
- ->from(
- [$tableAlias => $attribute->getBackendTable()],
- $tableAlias . '.' . $attribute->getEntityIdField()
- )->where(
- $this->resourceConnection->getConnection()->prepareSqlCondition(
- $tableAlias . '.' . $attribute->getIdFieldName(),
- ['eq' => $attribute->getAttributeId()]
- )
- )->where(
- $this->resourceConnection->getConnection()->prepareSqlCondition(
- $tableAlias . '.value',
- [$conditionType => $conditionValue]
- )
- );
+ if ($conditionType == 'is_null') {
+ $entityResourceModel = $attribute->getEntity();
+ $attributeSelect = $this->resourceConnection->getConnection()
+ ->select()
+ ->from(
+ [Collection::MAIN_TABLE_ALIAS => $entityResourceModel->getEntityTable()],
+ Collection::MAIN_TABLE_ALIAS . '.' . $entityResourceModel->getEntityIdField()
+ )->joinLeft(
+ [$tableAlias => $attribute->getBackendTable()],
+ $tableAlias . '.' . $attribute->getEntityIdField() . '=' . Collection::MAIN_TABLE_ALIAS .
+ '.' . $entityResourceModel->getEntityIdField() . ' AND ' . $tableAlias . '.' .
+ $attribute->getIdFieldName() . '=' . $attribute->getAttributeId(),
+ ''
+ )->where($tableAlias . '.value is null');
+ } else {
+ $attributeSelect = $this->resourceConnection->getConnection()
+ ->select()
+ ->from(
+ [$tableAlias => $attribute->getBackendTable()],
+ $tableAlias . '.' . $attribute->getEntityIdField()
+ )->where(
+ $this->resourceConnection->getConnection()->prepareSqlCondition(
+ $tableAlias . '.' . $attribute->getIdFieldName(),
+ ['eq' => $attribute->getAttributeId()]
+ )
+ )->where(
+ $this->resourceConnection->getConnection()->prepareSqlCondition(
+ $tableAlias . '.value',
+ [$conditionType => $conditionValue]
+ )
+ );
+ }
return $this->resourceConnection
->getConnection()
@@ -86,6 +102,8 @@ public function build(Filter $filter): string
}
/**
+ * Get attribute entity by its code
+ *
* @param string $field
* @return Attribute
* @throws \Magento\Framework\Exception\LocalizedException
diff --git a/app/code/Magento/Catalog/Model/Product/Attribute/DataProvider.php b/app/code/Magento/Catalog/Model/Product/Attribute/DataProvider.php
index 2bb10d3b31a2..893000544a72 100644
--- a/app/code/Magento/Catalog/Model/Product/Attribute/DataProvider.php
+++ b/app/code/Magento/Catalog/Model/Product/Attribute/DataProvider.php
@@ -113,27 +113,28 @@ private function customizeAttributeCode($meta)
*/
private function customizeFrontendLabels($meta)
{
+ $labelConfigs = [];
+
foreach ($this->storeRepository->getList() as $store) {
$storeId = $store->getId();
if (!$storeId) {
continue;
}
-
- $meta['manage-titles']['children'] = [
- 'frontend_label[' . $storeId . ']' => $this->arrayManager->set(
- 'arguments/data/config',
- [],
- [
- 'formElement' => Input::NAME,
- 'componentType' => Field::NAME,
- 'label' => $store->getName(),
- 'dataType' => Text::NAME,
- 'dataScope' => 'frontend_label[' . $storeId . ']'
- ]
- ),
- ];
+ $labelConfigs['frontend_label[' . $storeId . ']'] = $this->arrayManager->set(
+ 'arguments/data/config',
+ [],
+ [
+ 'formElement' => Input::NAME,
+ 'componentType' => Field::NAME,
+ 'label' => $store->getName(),
+ 'dataType' => Text::NAME,
+ 'dataScope' => 'frontend_label[' . $storeId . ']'
+ ]
+ );
}
+ $meta['manage-titles']['children'] = $labelConfigs;
+
return $meta;
}
diff --git a/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php b/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
index 707ebbb2964c..23f612582f42 100644
--- a/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
+++ b/app/code/Magento/Catalog/Model/ResourceModel/Eav/Attribute.php
@@ -236,6 +236,8 @@ public function afterSave()
) {
$this->_indexerEavProcessor->markIndexerAsInvalid();
}
+
+ $this->_source = null;
return parent::afterSave();
}
diff --git a/app/code/Magento/Catalog/Test/Mftf/ActionGroup/AdminProductAttributeActionGroup.xml b/app/code/Magento/Catalog/Test/Mftf/ActionGroup/AdminProductAttributeActionGroup.xml
index 0d82ba3817df..0082b376bc4a 100644
--- a/app/code/Magento/Catalog/Test/Mftf/ActionGroup/AdminProductAttributeActionGroup.xml
+++ b/app/code/Magento/Catalog/Test/Mftf/ActionGroup/AdminProductAttributeActionGroup.xml
@@ -30,6 +30,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Catalog/Test/Mftf/ActionGroup/CheckProductsOrderActionGroup.xml b/app/code/Magento/Catalog/Test/Mftf/ActionGroup/CheckProductsOrderActionGroup.xml
new file mode 100644
index 000000000000..f7cd2e707628
--- /dev/null
+++ b/app/code/Magento/Catalog/Test/Mftf/ActionGroup/CheckProductsOrderActionGroup.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Catalog/Test/Mftf/Data/ProductAttributeData.xml b/app/code/Magento/Catalog/Test/Mftf/Data/ProductAttributeData.xml
index 03a004e500ae..bf0762b4b031 100644
--- a/app/code/Magento/Catalog/Test/Mftf/Data/ProductAttributeData.xml
+++ b/app/code/Magento/Catalog/Test/Mftf/Data/ProductAttributeData.xml
@@ -115,6 +115,27 @@
true
ProductAttributeFrontendLabel
+
+ attribute
+ boolean
+ global
+ false
+ false
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ ProductAttributeFrontendLabel
+
attribute
text
diff --git a/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml b/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml
index 6d0d953e4467..d136661e917c 100644
--- a/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml
+++ b/app/code/Magento/Catalog/Test/Mftf/Data/ProductData.xml
@@ -149,6 +149,15 @@
EavStockItem
CustomAttributeProductAttribute
+
+ 50
+
+
+ 60
+
+
+ 70
+
api-simple-product-two
simple
diff --git a/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAdvancedPricingSection.xml b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAdvancedPricingSection.xml
index 0a1804aa284d..697648cedb7b 100644
--- a/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAdvancedPricingSection.xml
+++ b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAdvancedPricingSection.xml
@@ -20,6 +20,7 @@
+
diff --git a/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAttributeSection.xml b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAttributeSection.xml
new file mode 100644
index 000000000000..e159a4ce5c0b
--- /dev/null
+++ b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormAttributeSection.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormSection.xml b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormSection.xml
index 337a3dd53f59..3f67e4b087cc 100644
--- a/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormSection.xml
+++ b/app/code/Magento/Catalog/Test/Mftf/Section/AdminProductFormSection.xml
@@ -189,4 +189,9 @@
+
diff --git a/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontCategoryProductSection.xml b/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontCategoryProductSection.xml
index 178e58ef2d64..f35eb63ee0e0 100644
--- a/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontCategoryProductSection.xml
+++ b/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontCategoryProductSection.xml
@@ -16,6 +16,7 @@
+
diff --git a/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontProductInfoMainSection.xml b/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontProductInfoMainSection.xml
index 6a4ac0d7683c..4114b199715c 100644
--- a/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontProductInfoMainSection.xml
+++ b/app/code/Magento/Catalog/Test/Mftf/Section/StorefrontProductInfoMainSection.xml
@@ -31,6 +31,8 @@
+
+
diff --git a/app/code/Magento/Catalog/Test/Mftf/Test/AdminCreateNewAttributeFromProductTest.xml b/app/code/Magento/Catalog/Test/Mftf/Test/AdminCreateNewAttributeFromProductTest.xml
new file mode 100644
index 000000000000..282331924bca
--- /dev/null
+++ b/app/code/Magento/Catalog/Test/Mftf/Test/AdminCreateNewAttributeFromProductTest.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php
index 86f1db2022cc..f8f82511cc12 100755
--- a/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php
+++ b/app/code/Magento/Catalog/Ui/DataProvider/Product/Form/Modifier/CustomOptions.php
@@ -11,6 +11,7 @@
use Magento\Catalog\Model\Config\Source\Product\Options\Price as ProductOptionsPrice;
use Magento\Framework\UrlInterface;
use Magento\Framework\Stdlib\ArrayManager;
+use Magento\Ui\Component\Form\Element\Hidden;
use Magento\Ui\Component\Modal;
use Magento\Ui\Component\Container;
use Magento\Ui\Component\DynamicRows;
@@ -867,10 +868,9 @@ protected function getPositionFieldConfig($sortOrder)
'data' => [
'config' => [
'componentType' => Field::NAME,
- 'formElement' => Input::NAME,
+ 'formElement' => Hidden::NAME,
'dataScope' => static::FIELD_SORT_ORDER_NAME,
'dataType' => Number::NAME,
- 'visible' => false,
'sortOrder' => $sortOrder,
],
],
diff --git a/app/code/Magento/Catalog/view/adminhtml/ui_component/product_listing.xml b/app/code/Magento/Catalog/view/adminhtml/ui_component/product_listing.xml
index 65090fa3ac46..578281f44c4c 100644
--- a/app/code/Magento/Catalog/view/adminhtml/ui_component/product_listing.xml
+++ b/app/code/Magento/Catalog/view/adminhtml/ui_component/product_listing.xml
@@ -190,6 +190,13 @@
+
+
+ true
+ textRange
+
+
+
entity_id
diff --git a/app/code/Magento/CatalogRule/Model/Rule/Condition/ConditionsToSearchCriteriaMapper.php b/app/code/Magento/CatalogRule/Model/Rule/Condition/ConditionsToSearchCriteriaMapper.php
index 6d343fe149d2..fabe504fbe31 100644
--- a/app/code/Magento/CatalogRule/Model/Rule/Condition/ConditionsToSearchCriteriaMapper.php
+++ b/app/code/Magento/CatalogRule/Model/Rule/Condition/ConditionsToSearchCriteriaMapper.php
@@ -71,6 +71,8 @@ public function mapConditionsToSearchCriteria(CombinedCondition $conditions): Se
}
/**
+ * Convert condition to filter group
+ *
* @param ConditionInterface $condition
* @return null|\Magento\Framework\Api\CombinedFilterGroup|\Magento\Framework\Api\Filter
* @throws InputException
@@ -89,6 +91,8 @@ private function mapConditionToFilterGroup(ConditionInterface $condition)
}
/**
+ * Convert combined condition to filter group
+ *
* @param Combine $combinedCondition
* @return null|\Magento\Framework\Api\CombinedFilterGroup
* @throws InputException
@@ -121,6 +125,8 @@ private function mapCombinedConditionToFilterGroup(CombinedCondition $combinedCo
}
/**
+ * Convert simple condition to filter group
+ *
* @param ConditionInterface $productCondition
* @return FilterGroup|Filter
* @throws InputException
@@ -139,6 +145,8 @@ private function mapSimpleConditionToFilterGroup(ConditionInterface $productCond
}
/**
+ * Convert simple condition with array value to filter group
+ *
* @param ConditionInterface $productCondition
* @return FilterGroup
* @throws InputException
@@ -161,6 +169,8 @@ private function processSimpleConditionWithArrayValue(ConditionInterface $produc
}
/**
+ * Get glue for multiple values by operator
+ *
* @param string $operator
* @return string
*/
@@ -211,6 +221,8 @@ private function reverseSqlOperatorInFilter(Filter $filter)
}
/**
+ * Convert filters array into combined filter group
+ *
* @param array $filters
* @param string $combinationMode
* @return FilterGroup
@@ -227,6 +239,8 @@ private function createCombinedFilterGroup(array $filters, string $combinationMo
}
/**
+ * Creating of filter object by filtering params
+ *
* @param string $field
* @param string $value
* @param string $conditionType
@@ -264,6 +278,7 @@ private function mapRuleOperatorToSQLCondition(string $ruleOperator): string
'!{}' => 'nlike', // does not contains
'()' => 'in', // is one of
'!()' => 'nin', // is not one of
+ '<=>' => 'is_null'
];
if (!array_key_exists($ruleOperator, $operatorsMap)) {
diff --git a/app/code/Magento/CatalogRule/Model/Rule/Condition/Product.php b/app/code/Magento/CatalogRule/Model/Rule/Condition/Product.php
index ab650c94a0f0..0db178b2a0a6 100644
--- a/app/code/Magento/CatalogRule/Model/Rule/Condition/Product.php
+++ b/app/code/Magento/CatalogRule/Model/Rule/Condition/Product.php
@@ -4,12 +4,11 @@
* See COPYING.txt for license details.
*/
-/**
- * Catalog Rule Product Condition data model
- */
namespace Magento\CatalogRule\Model\Rule\Condition;
/**
+ * Catalog Rule Product Condition data model
+ *
* @method string getAttribute() Returns attribute code
*/
class Product extends \Magento\Rule\Model\Condition\Product\AbstractProduct
@@ -29,6 +28,9 @@ public function validate(\Magento\Framework\Model\AbstractModel $model)
$oldAttrValue = $model->getData($attrCode);
if ($oldAttrValue === null) {
+ if ($this->getOperator() === '<=>') {
+ return true;
+ }
return false;
}
diff --git a/app/code/Magento/CatalogRule/Test/Mftf/ActionGroup/CatalogPriceRuleActionGroup.xml b/app/code/Magento/CatalogRule/Test/Mftf/ActionGroup/CatalogPriceRuleActionGroup.xml
index fe4042e8a2e9..b0c4f2d8a609 100644
--- a/app/code/Magento/CatalogRule/Test/Mftf/ActionGroup/CatalogPriceRuleActionGroup.xml
+++ b/app/code/Magento/CatalogRule/Test/Mftf/ActionGroup/CatalogPriceRuleActionGroup.xml
@@ -36,6 +36,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -77,4 +112,8 @@
+
+
+
+
diff --git a/app/code/Magento/CatalogRule/Test/Mftf/Data/CatalogRuleData.xml b/app/code/Magento/CatalogRule/Test/Mftf/Data/CatalogRuleData.xml
index 71bdfe0613bb..5b75708d1ae0 100644
--- a/app/code/Magento/CatalogRule/Test/Mftf/Data/CatalogRuleData.xml
+++ b/app/code/Magento/CatalogRule/Test/Mftf/Data/CatalogRuleData.xml
@@ -77,4 +77,21 @@
by_percent
96
+
+
+ CatalogPriceRule
+ Catalog Price Rule Description
+ 1
+
+ - 0
+ - 1
+ - 2
+ - 3
+
+
+ - 1
+
+ by_percent
+ 10
+
diff --git a/app/code/Magento/CatalogRule/Test/Mftf/Section/AdminNewCatalogPriceRuleSection.xml b/app/code/Magento/CatalogRule/Test/Mftf/Section/AdminNewCatalogPriceRuleSection.xml
index 7cfb5bf40be5..635260888e7f 100644
--- a/app/code/Magento/CatalogRule/Test/Mftf/Section/AdminNewCatalogPriceRuleSection.xml
+++ b/app/code/Magento/CatalogRule/Test/Mftf/Section/AdminNewCatalogPriceRuleSection.xml
@@ -41,6 +41,8 @@
+
+
diff --git a/app/code/Magento/CatalogRule/Test/Mftf/Test/AdminEnableAttributeIsUndefinedCatalogPriceRuleTest.xml b/app/code/Magento/CatalogRule/Test/Mftf/Test/AdminEnableAttributeIsUndefinedCatalogPriceRuleTest.xml
new file mode 100644
index 000000000000..053a8c33e640
--- /dev/null
+++ b/app/code/Magento/CatalogRule/Test/Mftf/Test/AdminEnableAttributeIsUndefinedCatalogPriceRuleTest.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ website
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php b/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php
index 711d5a2da9ff..9e47830debfc 100644
--- a/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php
+++ b/app/code/Magento/CatalogWidget/Block/Product/ProductsList.php
@@ -197,6 +197,7 @@ public function getCacheKeyInfo()
$this->httpContext->getValue(\Magento\Customer\Model\Context::CONTEXT_GROUP),
(int) $this->getRequest()->getParam($this->getData('page_var_name'), 1),
$this->getProductsPerPage(),
+ $this->getProductsCount(),
$conditions,
$this->json->serialize($this->getRequest()->getParams()),
$this->getTemplate(),
diff --git a/app/code/Magento/CatalogWidget/Test/Unit/Block/Product/ProductsListTest.php b/app/code/Magento/CatalogWidget/Test/Unit/Block/Product/ProductsListTest.php
index dc6e100ab1ad..a78975379572 100644
--- a/app/code/Magento/CatalogWidget/Test/Unit/Block/Product/ProductsListTest.php
+++ b/app/code/Magento/CatalogWidget/Test/Unit/Block/Product/ProductsListTest.php
@@ -167,6 +167,7 @@ public function testGetCacheKeyInfo()
'context_group',
1,
5,
+ 10,
'some_serialized_conditions',
json_encode('request_params'),
'test_template',
diff --git a/app/code/Magento/Cms/Test/Mftf/ActionGroup/ClearWidgetsFromCMSContentActionGroup.xml b/app/code/Magento/Cms/Test/Mftf/ActionGroup/ClearWidgetsFromCMSContentActionGroup.xml
new file mode 100644
index 000000000000..2fa1b86a6157
--- /dev/null
+++ b/app/code/Magento/Cms/Test/Mftf/ActionGroup/ClearWidgetsFromCMSContentActionGroup.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Cms/Test/Mftf/Page/CmsPageEditPage.xml b/app/code/Magento/Cms/Test/Mftf/Page/CmsPageEditPage.xml
new file mode 100644
index 000000000000..885310d9399a
--- /dev/null
+++ b/app/code/Magento/Cms/Test/Mftf/Page/CmsPageEditPage.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection.xml b/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection.xml
index 8559334238d2..ff6167ffc10e 100644
--- a/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection.xml
+++ b/app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection.xml
@@ -31,6 +31,8 @@
+
+
@@ -99,6 +101,7 @@
+
@@ -111,6 +114,7 @@
+
diff --git a/app/code/Magento/Config/Test/Mftf/ActionGroup/ConfigWYSIWYGActionGroup.xml b/app/code/Magento/Config/Test/Mftf/ActionGroup/ConfigWYSIWYGActionGroup.xml
index 82411faddfed..eefaf5f3b539 100644
--- a/app/code/Magento/Config/Test/Mftf/ActionGroup/ConfigWYSIWYGActionGroup.xml
+++ b/app/code/Magento/Config/Test/Mftf/ActionGroup/ConfigWYSIWYGActionGroup.xml
@@ -38,4 +38,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
index 2502b79921e9..e07879e93a6b 100644
--- a/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Block/Product/View/Type/Configurable.php
@@ -15,6 +15,8 @@
use Magento\Framework\Pricing\PriceCurrencyInterface;
/**
+ * Confugurable product view type
+ *
* @api
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
* @api
@@ -276,6 +278,8 @@ protected function getOptionImages()
}
/**
+ * Collect price options
+ *
* @return array
*/
protected function getOptionPrices()
@@ -314,6 +318,11 @@ protected function getOptionPrices()
),
],
'tierPrices' => $tierPrices,
+ 'msrpPrice' => [
+ 'amount' => $this->localeFormat->getNumber(
+ $product->getMsrp()
+ ),
+ ],
];
}
return $prices;
diff --git a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
index f98075f2294c..46f10608bc95 100644
--- a/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
+++ b/app/code/Magento/ConfigurableProduct/Model/Product/Type/Configurable.php
@@ -24,6 +24,7 @@
* @SuppressWarnings(PHPMD.TooManyFields)
* @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ * @SuppressWarnings(PHPMD.CookieAndSessionMisuse)
* @api
* @since 100.0.2
*/
@@ -1385,7 +1386,7 @@ function ($item) {
*/
private function getUsedProductsCacheKey($keyParts)
{
- return md5(implode('_', $keyParts));
+ return sha1(implode('_', $keyParts));
}
/**
diff --git a/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Product/View/Type/ConfigurableTest.php b/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Product/View/Type/ConfigurableTest.php
index 25d8412c9105..c5c2368720b9 100644
--- a/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Product/View/Type/ConfigurableTest.php
+++ b/app/code/Magento/ConfigurableProduct/Test/Unit/Block/Product/View/Type/ConfigurableTest.php
@@ -379,6 +379,9 @@ private function getExpectedArray($productId, $amount, $priceQty, $percentage):
'percentage' => $percentage,
],
],
+ 'msrpPrice' => [
+ 'amount' => null ,
+ ]
],
],
'priceFormat' => [],
diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/composite/fieldset/configurable.phtml b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/composite/fieldset/configurable.phtml
index a8712cdc183d..190ecccbfdb7 100644
--- a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/composite/fieldset/configurable.phtml
+++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/composite/fieldset/configurable.phtml
@@ -17,9 +17,9 @@
-
-
-
+
+
+
-
-
+
+