Skip to content

Commit b9d554e

Browse files
committed
Merge branch 'MC-1405' of github.com:magento-trigger/magento2-page-builder into MC-1405
2 parents 8f769d4 + b84c0ce commit b9d554e

File tree

4 files changed

+62
-9
lines changed

4 files changed

+62
-9
lines changed

app/code/Magento/PageBuilder/Model/Stage/Renderer/CmsStaticBlock.php

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
namespace Magento\PageBuilder\Model\Stage\Renderer;
1010

11+
use Psr\Log\LoggerInterface;
12+
1113
/**
1214
* Renders a CMS Block for the stage
1315
*
@@ -26,18 +28,25 @@ class CmsStaticBlock implements \Magento\PageBuilder\Model\Stage\RendererInterfa
2628
private $widgetDirectiveRenderer;
2729

2830
/**
29-
* Constructor
31+
* @var LoggerInterface
32+
*/
33+
private $loggerInterface;
34+
35+
/**
36+
* CmsStaticBlock constructor.
3037
*
31-
* @param WidgetDirective $widgetDirectiveRenderer
3238
* @param \Magento\Cms\Model\ResourceModel\Block\CollectionFactory $blockCollectionFactory
39+
* @param WidgetDirective $widgetDirectiveRenderer
40+
* @param LoggerInterface $loggerInterface
3341
*/
3442
public function __construct(
43+
\Magento\Cms\Model\ResourceModel\Block\CollectionFactory $blockCollectionFactory,
3544
WidgetDirective $widgetDirectiveRenderer,
36-
\Magento\Cms\Model\ResourceModel\Block\CollectionFactory $blockCollectionFactory
45+
LoggerInterface $loggerInterface
3746
) {
38-
3947
$this->blockCollectionFactory = $blockCollectionFactory;
4048
$this->widgetDirectiveRenderer = $widgetDirectiveRenderer;
49+
$this->loggerInterface = $loggerInterface;
4150
}
4251

4352
/**
@@ -79,12 +88,37 @@ public function render(array $params): array
7988

8089
if ($block->isActive()) {
8190
$directiveResult = $this->widgetDirectiveRenderer->render($params);
82-
$result['content'] = $directiveResult['content'];
83-
$result['error'] = $directiveResult['error'];
91+
$result = $this->removeScriptTags($directiveResult);
8492
} else {
8593
$result['error'] = __('Block disabled');
8694
}
8795

8896
return $result;
8997
}
98+
99+
/**
100+
* Remove script tag from html
101+
*
102+
* @param array $directiveResult
103+
* @return array
104+
*/
105+
private function removeScriptTags(array $directiveResult): array
106+
{
107+
$dom = new \DOMDocument();
108+
try {
109+
$dom->loadHTML($directiveResult['content']);
110+
} catch (\Exception $e) {
111+
$this->loggerInterface->critical($e->getMessage());
112+
return [
113+
'error' => __('The block cannot be displayed because it contains errors.')
114+
];
115+
}
116+
foreach (iterator_to_array($dom->getElementsByTagName('script')) as $item) {
117+
$item->parentNode->removeChild($item);
118+
}
119+
return [
120+
'content' => $dom->saveHTML(),
121+
'error' => $directiveResult['error']
122+
];
123+
}
90124
}

app/code/Magento/PageBuilder/view/adminhtml/web/css/source/content-type/block/_default.less

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,21 @@
2121
font-weight: lighter;
2222
}
2323
}
24+
.pagebuilder-block-overlay {
25+
-moz-transition: background-color 500ms ease;
26+
-o-transition: background-color 500ms ease;
27+
-webkit-transition: background-color 500ms ease;
28+
height: 100%;
29+
opacity: .7;
30+
position: absolute;
31+
transition: background-color 500ms ease;
32+
width: 100%;
33+
z-index: 10;
34+
35+
&:hover {
36+
background-color: @color-gray98;
37+
}
38+
}
2439
.rendered-content {
2540
min-height: 50px;
2641
pointer-events: none;

app/code/Magento/PageBuilder/view/adminhtml/web/css/source/content-type/video/_default.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
color: @color-gray65-lighten;
1919
font-size: 80px;
2020
}
21+
div[data-role='video'],
2122
.pagebuilder-video {
2223
display: flex;
2324

app/code/Magento/PageBuilder/view/adminhtml/web/template/content-type/block/default/preview.html

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@
77

88
<div class="pagebuilder-content-type pagebuilder-block" event="{ mouseover: onMouseOver, mouseout: onMouseOut }, mouseoverBubble: false">
99
<div attr="data.main.attributes" ko-style="data.main.style" css="data.main.css">
10-
<div if="displayPreview" class="rendered-content" html="data.main.html" afterRender="initializeWidgets"></div>
11-
<div ifnot="displayPreview" class="pagebuilder-block-placeholder">
12-
<span class="placeholder-text" text="placeholderText"/>
10+
<div class="pagebuilder-block-wrapper">
11+
<div class="pagebuilder-block-overlay"></div>
12+
<div if="displayPreview" class="rendered-content" html="data.main.html" afterRender="initializeWidgets"></div>
13+
<div ifnot="displayPreview" class="pagebuilder-block-placeholder">
14+
<span class="placeholder-text" text="placeholderText"/>
15+
</div>
1316
</div>
1417
</div>
1518
<div data-role="spinner"

0 commit comments

Comments
 (0)