|
| 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 |
0 commit comments