Skip to content

Commit d2e5320

Browse files
authored
Merge pull request #164 from magento-commerce/1.1.50-release
1.1.50 Release
2 parents e8ad819 + 7884753 commit d2e5320

33 files changed

+6661
-5
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "magento/quality-patches",
33
"description": "Provides quality patches for AdobeCommerce & Magento OpenSource",
44
"type": "magento2-component",
5-
"version": "1.1.49",
5+
"version": "1.1.50",
66
"license": "proprietary",
77
"repositories": {
88
"repo": {

patches-info.json

+1-1
Large diffs are not rendered by default.
+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
diff --git a/vendor/magento/module-rma-graph-ql/Model/Formatter/CustomAttribute.php b/vendor/magento/module-rma-graph-ql/Model/Formatter/CustomAttribute.php
2+
index a38f91377171..2f7864714c17 100644
3+
--- a/vendor/magento/module-rma-graph-ql/Model/Formatter/CustomAttribute.php
4+
+++ b/vendor/magento/module-rma-graph-ql/Model/Formatter/CustomAttribute.php
5+
@@ -33,19 +33,27 @@ class CustomAttribute
6+
*/
7+
private $optionValueProvider;
8+
9+
+ /**
10+
+ * @var \Magento\Store\Model\StoreManagerInterface
11+
+ */
12+
+ private $storeManager;
13+
+
14+
/**
15+
* @param SerializerInterface $serializer
16+
* @param Uid $idEncoder
17+
* @param OptionValueProvider $optionValueProvider
18+
+ * @param \Magento\Store\Model\StoreManagerInterface $storeManager
19+
*/
20+
public function __construct(
21+
SerializerInterface $serializer,
22+
Uid $idEncoder,
23+
- OptionValueProvider $optionValueProvider
24+
+ OptionValueProvider $optionValueProvider,
25+
+ \Magento\Store\Model\StoreManagerInterface $storeManager
26+
) {
27+
$this->serializer = $serializer;
28+
$this->idEncoder = $idEncoder;
29+
$this->optionValueProvider = $optionValueProvider;
30+
+ $this->storeManager = $storeManager;
31+
}
32+
33+
/**
34+
@@ -63,8 +71,27 @@ public function format(AttributeInterface $attribute, $value): array
35+
36+
return [
37+
'uid' => $this->idEncoder->encode((string)$attribute->getAttributeId()),
38+
- 'label' => $attribute->getDefaultFrontendLabel(),
39+
+ 'label' => $this->getFrontendLabels($attribute),
40+
'value' => $this->serializer->serialize($value)
41+
];
42+
}
43+
+
44+
+ /**
45+
+ * Get frontend labels according to store
46+
+ *
47+
+ * @param AttributeInterface $attribute
48+
+ * @return string
49+
+ * @throws \Magento\Framework\Exception\NoSuchEntityException
50+
+ */
51+
+ public function getFrontendLabels(AttributeInterface $attribute) : string
52+
+ {
53+
+ $storeId = $this->storeManager->getStore()->getId();
54+
+
55+
+ $frontendLabels = [];
56+
+ foreach ($attribute->getFrontendLabels() as $label) {
57+
+ $frontendLabels[$label->getStoreId()] = $label->getLabel();
58+
+ }
59+
+
60+
+ return $frontendLabels[$storeId] ?? $attribute->getDefaultFrontendLabel();
61+
+ }
62+
}
+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
diff --git a/vendor/magento/module-page-builder/etc/view.xml b/vendor/magento/module-page-builder/etc/view.xml
2+
index 4e4052bcb..684423384 100644
3+
--- a/vendor/magento/module-page-builder/etc/view.xml
4+
+++ b/vendor/magento/module-page-builder/etc/view.xml
5+
@@ -62,9 +62,9 @@
6+
<var name="stage">true</var>
7+
<var name="class">mobile-switcher</var>
8+
<var name="icon">Magento_PageBuilder::css/images/switcher/switcher-mobile.svg</var>
9+
- <var name="media">only screen and (max-width: 768px)</var>
10+
+ <var name="media">only screen and (max-width: 767px)</var>
11+
<var name="conditions">
12+
- <var name="max-width">768px</var>
13+
+ <var name="max-width">767px</var>
14+
<var name="min-width">640px</var>
15+
</var>
16+
<var name="options">
17+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
diff --git a/vendor/magento/module-catalog-rule-staging/Model/CatalogRuleApplier.php b/vendor/magento/module-catalog-rule-staging/Model/CatalogRuleApplier.php
2+
index e62cd775e8b..8ee4258caa1 100644
3+
--- a/vendor/magento/module-catalog-rule-staging/Model/CatalogRuleApplier.php
4+
+++ b/vendor/magento/module-catalog-rule-staging/Model/CatalogRuleApplier.php
5+
@@ -9,10 +9,8 @@ use Magento\CatalogRule\Model\Indexer\Rule\RuleProductProcessor;
6+
use Magento\Staging\Model\StagingApplierInterface;
7+
use Magento\Framework\App\ObjectManager;
8+
use Magento\Framework\Indexer\IndexerRegistry;
9+
+use Magento\Catalog\Model\Indexer\Product\Price\Processor as PriceProcessor;
10+
11+
-/**
12+
- * Class CatalogRuleApplier
13+
- */
14+
class CatalogRuleApplier implements StagingApplierInterface
15+
{
16+
/**
17+
@@ -36,11 +34,12 @@ class CatalogRuleApplier implements StagingApplierInterface
18+
IndexerRegistry $indexerRegistry = null
19+
) {
20+
$this->ruleProductProcessor = $ruleProductProcessor;
21+
- $this->indexerRegistry = $indexerRegistry
22+
- ?: ObjectManager::getInstance()->get(IndexerRegistry::class);
23+
+ $this->indexerRegistry = $indexerRegistry ?: ObjectManager::getInstance()->get(IndexerRegistry::class);
24+
}
25+
26+
/**
27+
+ * Invalidate related indexers
28+
+ *
29+
* @param array $entityIds
30+
* @return void
31+
*/
32+
@@ -48,10 +47,7 @@ class CatalogRuleApplier implements StagingApplierInterface
33+
{
34+
if (!empty($entityIds)) {
35+
$this->ruleProductProcessor->markIndexerAsInvalid();
36+
- $this->indexerRegistry->get(\Magento\CatalogRule\Model\Indexer\Product\ProductRuleProcessor::INDEXER_ID)
37+
- ->invalidate();
38+
- $this->indexerRegistry->get(\Magento\Catalog\Model\Indexer\Product\Price\Processor::INDEXER_ID)
39+
- ->invalidate();
40+
+ $this->indexerRegistry->get(PriceProcessor::INDEXER_ID)->invalidate();
41+
}
42+
}
43+
}
+130
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
diff --git a/vendor/magento/module-page-builder/ViewModel/StageRenderFrameRequireJsConfigModifier.php b/vendor/magento/module-page-builder/ViewModel/StageRenderFrameRequireJsConfigModifier.php
2+
new file mode 100644
3+
index 0000000000..1ae244b039
4+
--- /dev/null
5+
+++ b/vendor/magento/module-page-builder/ViewModel/StageRenderFrameRequireJsConfigModifier.php
6+
@@ -0,0 +1,37 @@
7+
+<?php
8+
+/**
9+
+ * Copyright 2024 Adobe
10+
+ * All Rights Reserved.
11+
+ */
12+
+declare(strict_types=1);
13+
+
14+
+namespace Magento\PageBuilder\ViewModel;
15+
+
16+
+use Magento\Backend\ViewModel\RequireJsConfigModifierInterface;
17+
+use Magento\Framework\View\Element\Block\ArgumentInterface;
18+
+
19+
+/**
20+
+ * Modifies requirejs configuration for the stage render frame
21+
+ *
22+
+ * Override the text! plugin within the iframe to ensure we can pipe any XHR requests through to the parent window
23+
+ * as the same origin policy will not allow us to load the templates within this iframe.
24+
+ * It is important that this mapping is configured before requirejs-config.js to ensure the text! plugin is overridden
25+
+ * for all requests.
26+
+ */
27+
+class StageRenderFrameRequireJsConfigModifier implements ArgumentInterface, RequireJsConfigModifierInterface
28+
+{
29+
+ /**
30+
+ * @inheritDoc
31+
+ */
32+
+ public function modify(array $config): array
33+
+ {
34+
+ $config['map']['*'] = array_merge(
35+
+ $config['map']['*'] ?? [],
36+
+ [
37+
+ 'text' => 'Magento_PageBuilder/js/master-format/render/requirejs/text',
38+
+ 'Magento_PageBuilder/js/events' => 'Magento_PageBuilder/js/master-format/render/events'
39+
+ ]
40+
+ );
41+
+ return $config;
42+
+ }
43+
+}
44+
diff --git a/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml b/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml
45+
index 6a95e8e87f..c400058706 100644
46+
--- a/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml
47+
+++ b/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml
48+
@@ -14,6 +14,13 @@
49+
<remove src="css/styles.css"/>
50+
</head>
51+
<body>
52+
+ <referenceBlock name="require.js">
53+
+ <arguments>
54+
+ <argument name="config_modifier" xsi:type="object">
55+
+ Magento\PageBuilder\ViewModel\StageRenderFrameRequireJsConfigModifier
56+
+ </argument>
57+
+ </arguments>
58+
+ </referenceBlock>
59+
<referenceContainer name="backend.page" remove="true"/>
60+
<referenceContainer name="menu.wrapper" remove="true"/>
61+
<referenceContainer name="root">
62+
diff --git a/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml b/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml
63+
index cd3c853b21..600c1f3656 100644
64+
--- a/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml
65+
+++ b/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml
66+
@@ -4,32 +4,22 @@
67+
* See COPYING.txt for license details.
68+
*/
69+
70+
-/** @var \Magento\PageBuilder\Block\Adminhtml\Stage\Render $block */
71+
+/**
72+
+ * @var \Magento\PageBuilder\Block\Adminhtml\Stage\Render $block
73+
+ * @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer
74+
+ */
75+
?>
76+
-<script>
77+
- <?php
78+
- /**
79+
- * Override the text! plugin within the iframe to ensure we can pipe any XHR requests through to the parent window
80+
- * as the same origin policy will not allow us to load the templates within this iframe.
81+
- */
82+
- ?>
83+
- require.config({
84+
- 'map': {
85+
- '*': {
86+
- 'text': 'Magento_PageBuilder/js/master-format/render/requirejs/text',
87+
- 'Magento_PageBuilder/js/events': 'Magento_PageBuilder/js/master-format/render/events'
88+
- }
89+
- }
90+
- });
91+
92+
- <?php
93+
- /**
94+
- * To be able to override the text plugin we need the Magento template engine to be used, as the template engine
95+
- * within lib has a dependency on the text! plugin we need to ensure we set the template engine before the
96+
- * dependency blocks us. If we try to just override using the RequireJS config above our !text plugin will never
97+
- * get overridden as our template engine cannot load.
98+
- */
99+
- ?>
100+
+<?php
101+
+$pageBuilderConfig = $block->getPageBuilderConfig();
102+
+
103+
+/**
104+
+ * To be able to override the text plugin we need the Magento template engine to be used, as the template engine
105+
+ * within lib has a dependency on the text! plugin we need to ensure we set the template engine before the
106+
+ * dependency blocks us. If we try to just override using the RequireJS config above our !text plugin will never
107+
+ * get overridden as our template engine cannot load.
108+
+ */
109+
+$script = <<<SCRIPT
110+
require([
111+
'ko',
112+
'Magento_Ui/js/lib/knockout/template/engine'
113+
@@ -39,10 +29,11 @@
114+
ko.uid = 0;
115+
ko.setTemplateEngine(templateEngine);
116+
});
117+
-</script>
118+
-<script>
119+
+
120+
require(['Magento_PageBuilder/js/master-format/render/frame'], function (listen) {
121+
- listen(<?= /* @noEscape */ $block->getPageBuilderConfig(); ?>);
122+
+ listen({$pageBuilderConfig});
123+
});
124+
-</script>
125+
-<div>Page Builder Render Frame</div>
126+
+SCRIPT;
127+
+?>
128+
+<?= /* @noEscape */ $secureRenderer->renderTag('script', [], $script, false) ?>
129+
+<div>Page Builder Render Frame</div>
130+
\ No newline at end of file
+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
diff --git a/vendor/magento/module-page-builder/ViewModel/StageRenderFrameRequireJsConfigModifier.php b/vendor/magento/module-page-builder/ViewModel/StageRenderFrameRequireJsConfigModifier.php
2+
new file mode 100644
3+
index 000000000..1ae244b03
4+
--- /dev/null
5+
+++ b/vendor/magento/module-page-builder/ViewModel/StageRenderFrameRequireJsConfigModifier.php
6+
@@ -0,0 +1,37 @@
7+
+<?php
8+
+/**
9+
+ * Copyright 2024 Adobe
10+
+ * All Rights Reserved.
11+
+ */
12+
+declare(strict_types=1);
13+
+
14+
+namespace Magento\PageBuilder\ViewModel;
15+
+
16+
+use Magento\Backend\ViewModel\RequireJsConfigModifierInterface;
17+
+use Magento\Framework\View\Element\Block\ArgumentInterface;
18+
+
19+
+/**
20+
+ * Modifies requirejs configuration for the stage render frame
21+
+ *
22+
+ * Override the text! plugin within the iframe to ensure we can pipe any XHR requests through to the parent window
23+
+ * as the same origin policy will not allow us to load the templates within this iframe.
24+
+ * It is important that this mapping is configured before requirejs-config.js to ensure the text! plugin is overridden
25+
+ * for all requests.
26+
+ */
27+
+class StageRenderFrameRequireJsConfigModifier implements ArgumentInterface, RequireJsConfigModifierInterface
28+
+{
29+
+ /**
30+
+ * @inheritDoc
31+
+ */
32+
+ public function modify(array $config): array
33+
+ {
34+
+ $config['map']['*'] = array_merge(
35+
+ $config['map']['*'] ?? [],
36+
+ [
37+
+ 'text' => 'Magento_PageBuilder/js/master-format/render/requirejs/text',
38+
+ 'Magento_PageBuilder/js/events' => 'Magento_PageBuilder/js/master-format/render/events'
39+
+ ]
40+
+ );
41+
+ return $config;
42+
+ }
43+
+}
44+
diff --git a/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml b/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml
45+
index 6a95e8e87..c40005870 100644
46+
--- a/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml
47+
+++ b/vendor/magento/module-page-builder/view/adminhtml/layout/pagebuilder_stage_render.xml
48+
@@ -14,6 +14,13 @@
49+
<remove src="css/styles.css"/>
50+
</head>
51+
<body>
52+
+ <referenceBlock name="require.js">
53+
+ <arguments>
54+
+ <argument name="config_modifier" xsi:type="object">
55+
+ Magento\PageBuilder\ViewModel\StageRenderFrameRequireJsConfigModifier
56+
+ </argument>
57+
+ </arguments>
58+
+ </referenceBlock>
59+
<referenceContainer name="backend.page" remove="true"/>
60+
<referenceContainer name="menu.wrapper" remove="true"/>
61+
<referenceContainer name="root">
62+
diff --git a/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml b/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml
63+
index 6e96a2757..2586df2b3 100644
64+
--- a/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml
65+
+++ b/vendor/magento/module-page-builder/view/adminhtml/templates/stage/render.phtml
66+
@@ -10,33 +10,16 @@
67+
*/
68+
?>
69+
70+
-<?php
71+
-/**
72+
- * Override the text! plugin within the iframe to ensure we can pipe any XHR requests through to the parent window
73+
- * as the same origin policy will not allow us to load the templates within this iframe.
74+
- */
75+
-?>
76+
<?php
77+
$pageBuilderConfig = $block->getPageBuilderConfig();
78+
79+
-$script = <<<SCRIPT
80+
- require.config({
81+
- 'map': {
82+
- '*': {
83+
- 'text': 'Magento_PageBuilder/js/master-format/render/requirejs/text',
84+
- 'Magento_PageBuilder/js/events': 'Magento_PageBuilder/js/master-format/render/events'
85+
- }
86+
- }
87+
- });
88+
-SCRIPT;
89+
-
90+
/**
91+
* To be able to override the text plugin we need the Magento template engine to be used, as the template engine
92+
* within lib has a dependency on the text! plugin we need to ensure we set the template engine before the
93+
* dependency blocks us. If we try to just override using the RequireJS config above our !text plugin will never
94+
* get overridden as our template engine cannot load.
95+
*/
96+
-$script .= <<<SCRIPT
97+
+$script = <<<SCRIPT
98+
require([
99+
'ko',
100+
'Magento_Ui/js/lib/knockout/template/engine'
101+
diff --git a/vendor/magento/module-page-builder/view/adminhtml/web/template/page-builder.html b/vendor/magento/module-page-builder/view/adminhtml/web/template/page-builder.html
102+
index 8b495ce72..1ff74d860 100644
103+
--- a/vendor/magento/module-page-builder/view/adminhtml/web/template/page-builder.html
104+
+++ b/vendor/magento/module-page-builder/view/adminhtml/web/template/page-builder.html
105+
@@ -31,6 +31,7 @@
106+
<with args="stage">
107+
<render></render>
108+
</with>
109+
- <iframe attr="id: 'render_frame_' + id" sandbox="allow-scripts allow-same-origin" style="position: absolute; width:0; height:0; border: none;"></iframe>
110+
+ <!-- Do not modify the "sandbox" attribute without approval from a security engineer -->
111+
+ <iframe attr="id: 'render_frame_' + id" sandbox="allow-scripts" style="position: absolute; width:0; height:0; border: none;"></iframe>
112+
</if>
113+
</div>

0 commit comments

Comments
 (0)