Skip to content

Commit 896f0d6

Browse files
committed
MC-29420: Remove event handlers from CE
1 parent a22254e commit 896f0d6

File tree

85 files changed

+1433
-606
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+1433
-606
lines changed

app/code/Magento/Backend/view/adminhtml/templates/dashboard/store/switcher.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
</select>
4343
<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
4444
'onchange',
45-
"return switchStore($('select#store_switcher');",
45+
'return switchStore(this);',
4646
'select#store_switcher'
4747
) ?>
4848
</p>

app/code/Magento/Backend/view/adminhtml/templates/store/switcher.phtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
<?= /* @noEscape */ $block->getUiId() ?> />
1818
<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
1919
'onchange',
20-
"switchScope($('#store_switcher'));",
20+
'switchScope(this);',
2121
'#store_switcher'
2222
) ?>
2323
<input type="hidden" name="store_group_switcher" id="store_group_switcher"
@@ -181,7 +181,7 @@ script;
181181
reload();
182182
},
183183
cancel: function() {
184-
obj.value = \'' . $block->escapeHtml($block->getStoreId()) . '\';
184+
obj.value = \'' . $block->escapeJs($block->getStoreId()) . '\';
185185
}
186186
}
187187
});

app/code/Magento/Backend/view/adminhtml/templates/system/cache/edit.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ script;
7070
<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
7171
'onclick',
7272
/* @noEscape */ $clickAction,
73-
'#' . $block->escapeHtmlAttr($_button['name'])
73+
'#' . $block->escapeJs($_button['name'])
7474
) ?>
7575
<?php endif; ?>
7676
<?php if (isset($_button['comment'])): ?> <br />

app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Config.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
*/
1212
namespace Magento\Catalog\Block\Adminhtml\Product\Helper\Form;
1313

14+
use Magento\Framework\App\ObjectManager;
1415
use Magento\Framework\Data\Form\Element\CollectionFactory;
1516
use Magento\Framework\Data\Form\Element\Factory;
1617
use Magento\Framework\Escaper;
17-
use Magento\Framework\Math\Random;
1818
use Magento\Framework\View\Helper\SecureHtmlRenderer;
1919

2020
class Config extends \Magento\Framework\Data\Form\Element\Select
@@ -24,6 +24,25 @@ class Config extends \Magento\Framework\Data\Form\Element\Select
2424
*/
2525
private $secureRenderer;
2626

27+
/**
28+
* @param Factory $factoryElement
29+
* @param CollectionFactory $factoryCollection
30+
* @param Escaper $escaper
31+
* @param array $data
32+
* @param SecureHtmlRenderer|null $secureRenderer
33+
*/
34+
public function __construct(
35+
Factory $factoryElement,
36+
CollectionFactory $factoryCollection,
37+
Escaper $escaper,
38+
$data = [],
39+
?SecureHtmlRenderer $secureRenderer = null
40+
) {
41+
$secureRenderer = $secureRenderer ?? ObjectManager::getInstance()->get(SecureHtmlRenderer::class);
42+
parent::__construct($factoryElement, $factoryCollection, $escaper, $data, $secureRenderer);
43+
$this->secureRenderer = $secureRenderer;
44+
}
45+
2746
/**
2847
* Retrieve element html
2948
*

app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Image.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
*/
1212
namespace Magento\Catalog\Block\Adminhtml\Product\Helper\Form;
1313

14+
use Magento\Framework\App\ObjectManager;
1415
use Magento\Framework\Data\Form\Element\CollectionFactory;
1516
use Magento\Framework\Data\Form\Element\Factory;
16-
use Magento\Framework\Math\Random;
1717
use Magento\Framework\UrlInterface;
1818
use Magento\Framework\View\Helper\SecureHtmlRenderer;
1919

@@ -24,6 +24,27 @@ class Image extends \Magento\Framework\Data\Form\Element\Image
2424
*/
2525
private $secureRenderer;
2626

27+
/**
28+
* @param Factory $factoryElement
29+
* @param CollectionFactory $factoryCollection
30+
* @param \Magento\Framework\Escaper $escaper
31+
* @param UrlInterface $urlBuilder
32+
* @param array $data
33+
* @param SecureHtmlRenderer|null $secureRenderer
34+
*/
35+
public function __construct(
36+
Factory $factoryElement,
37+
CollectionFactory $factoryCollection,
38+
\Magento\Framework\Escaper $escaper,
39+
UrlInterface $urlBuilder,
40+
$data = [],
41+
?SecureHtmlRenderer $secureRenderer = null
42+
) {
43+
$secureRenderer = $secureRenderer ?? ObjectManager::getInstance()->get(SecureHtmlRenderer::class);
44+
parent::__construct($factoryElement, $factoryCollection, $escaper, $urlBuilder, $data, $secureRenderer);
45+
$this->secureRenderer = $secureRenderer;
46+
}
47+
2748
/**
2849
* Return generated url.
2950
*

app/code/Magento/Catalog/view/frontend/templates/product/image_with_borders.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
alt="<?= $escaper->escapeHtmlAttr($block->getLabel()) ?>"/></span>
2424
</span>
2525
<?= /* @noEscape */ $secureRenderer->renderStyleAsTag(
26-
'width:' . (int)$escaper->escapeHtmlAttr($block->getWidth()) . 'px;',
26+
'width:' . (int)$block->getWidth() . 'px;',
2727
'span.product-image-container'
2828
) ?>
2929
<?= /* @noEscape */ $secureRenderer->renderStyleAsTag(

app/code/Magento/Config/Block/System/Config/Form/Field/Select/Allowspecific.php

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,40 @@
1111
*/
1212
namespace Magento\Config\Block\System\Config\Form\Field\Select;
1313

14+
use Magento\Framework\App\ObjectManager;
15+
use Magento\Framework\Data\Form\Element\CollectionFactory;
16+
use Magento\Framework\Data\Form\Element\Factory;
17+
use Magento\Framework\Escaper;
18+
use Magento\Framework\Math\Random;
19+
use Magento\Framework\View\Helper\SecureHtmlRenderer;
20+
1421
class Allowspecific extends \Magento\Framework\Data\Form\Element\Select
1522
{
23+
/**
24+
* @var SecureHtmlRenderer
25+
*/
26+
private $secureRenderer;
27+
28+
/**
29+
* Allowspecific constructor.
30+
* @param Factory $factoryElement
31+
* @param CollectionFactory $factoryCollection
32+
* @param Escaper $escaper
33+
* @param array $data
34+
* @param SecureHtmlRenderer|null $secureRenderer
35+
*/
36+
public function __construct(
37+
Factory $factoryElement,
38+
CollectionFactory $factoryCollection,
39+
Escaper $escaper,
40+
$data = [],
41+
?SecureHtmlRenderer $secureRenderer = null
42+
) {
43+
$secureRenderer = $secureRenderer ?? ObjectManager::getInstance()->get(SecureHtmlRenderer::class);
44+
parent::__construct($factoryElement, $factoryCollection, $escaper, $data, $secureRenderer);
45+
$this->secureRenderer = $secureRenderer;
46+
}
47+
1648
/**
1749
* Add additional Javascript code
1850
*
@@ -25,7 +57,6 @@ public function getAfterElementHtml()
2557
$useDefaultElementId = $countryListId . '_inherit';
2658

2759
$elementJavaScript = <<<HTML
28-
<script type="text/javascript">
2960
//<![CDATA[
3061
document.getElementById('{$elementId}').addEventListener('change', function(event) {
3162
var isCountrySpecific = event.target.value == 1,
@@ -42,13 +73,15 @@ public function getAfterElementHtml()
4273
}
4374
});
4475
//]]>
45-
</script>
4676
HTML;
4777

48-
return $elementJavaScript . parent::getAfterElementHtml();
78+
return $this->secureRenderer->renderTag('script', [], $elementJavaScript, false) .
79+
parent::getAfterElementHtml();
4980
}
5081

5182
/**
83+
* Return generated html.
84+
*
5285
* @return string
5386
*/
5487
public function getHtml()
@@ -61,6 +94,8 @@ public function getHtml()
6194
}
6295

6396
/**
97+
* Return country specific element id.
98+
*
6499
* @return string
65100
*/
66101
protected function _getSpecificCountryElementId()

app/code/Magento/Config/view/adminhtml/templates/system/config/form/field/array.phtml

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ $_colspan = $block->isAddAfter() ? 2 : 1;
5454
script;
5555
foreach ($block->getColumns() as $columnName => $column):
5656
$scriptString .= <<<script
57+
5758
+ '<td>'
5859
+ '{$block->escapeJs($block->renderCellTemplate($columnName))}'
5960
+ '<\/td>'
@@ -62,17 +63,29 @@ script;
6263

6364
if ($block->isAddAfter()):
6465
$scriptString .= <<<script
66+
6567
+ '<td><button class="action-add" type="button" id="addAfterBtn<%- _id %>"><span>'
6668
+ '{$block->escapeJs(__('Add after'))}'
6769
+ '<\/span><\/button><\/td>'
6870
script;
6971
endif;
7072
$scriptString .= <<<script
73+
7174
+ '<td class="col-actions"><button '
72-
+ 'onclick="arrayRow{$block->escapeJs($_htmlId)}.del(\'<%- _id %>\')" '
7375
+ 'class="action-delete" type="button">'
7476
+ '<span>{$block->escapeJs(__('Delete'))}<\/span><\/button><\/td>'
7577
+ '<\/tr>'
78+
79+
script;
80+
$scriptString1 = /* $noEscape */ $secureRenderer->renderEventListenerAsTag(
81+
'onclick',
82+
"arrayRow" . $block->escapeJs($_htmlId) . ".del('<%- _id %>')",
83+
"tr#<%- _id %> button.action-delete"
84+
);
85+
86+
$scriptString .= " + '" . $block->escapeJs($scriptString1) . "'" . PHP_EOL;
87+
88+
$scriptString .= <<<script
7689
),
7790
7891
add: function(rowData, insertAfterId) {
@@ -88,11 +101,13 @@ script;
88101
script;
89102
foreach ($block->getColumns() as $columnName => $column):
90103
$scriptString .= <<<script
104+
91105
{$block->escapeJs($columnName)}: '',
92106
'option_extra_attrs': {},
93107
script;
94108
endforeach;
95109
$scriptString .= <<<script
110+
96111
_id: '_' + d.getTime() + '_' + d.getMilliseconds()
97112
};
98113
}
@@ -115,13 +130,17 @@ script;
115130
}
116131
117132
// Add event for {addAfterBtn} button
133+
118134
script;
119135
if ($block->isAddAfter()):
120136
$scriptString .= <<<script
137+
121138
Event.observe('addAfterBtn' + templateValues._id, 'click', this.add.bind(this, false, templateValues._id));
139+
122140
script;
123141
endif;
124142
$scriptString .= <<<script
143+
125144
},
126145
127146
del: function(rowId) {
@@ -138,19 +157,25 @@ script;
138157
);
139158
140159
// add existing rows
160+
141161
script;
162+
142163
foreach ($block->getArrayRows() as $_rowId => $_row) {
143-
echo /** @noEscape */ "arrayRow{$block->escapeJs($_htmlId)}.add(" . /** @noEscape */ $_row->toJson() . ");\n";
164+
$scriptString .= /** @noEscape */ " arrayRow" .$block->escapeJs($_htmlId) .
165+
".add(" . /** @noEscape */ $_row->toJson() . ");\n";
144166
}
145167
$scriptString .= <<<script
168+
146169
// Toggle the grid availability, if element is disabled (depending on scope)
147170
script;
148171
if ($block->getElement()->getDisabled()):
149172
$scriptString .= <<<script
173+
150174
toggleValueElements({checked: true}, $('grid{$block->escapeJs($_htmlId)}').parentNode);
151175
script;
152176
endif;
153177
$scriptString .= <<<script
178+
154179
});
155180
script;
156181
?>

app/code/Magento/Customer/view/adminhtml/templates/system/config/validatevat.phtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,5 @@ script;
6868
<?= /* @noEscape */ $secureRenderer->renderEventListenerAsTag(
6969
'onclick',
7070
'javascript:validateVat(); return false;',
71-
'#' . $htmlId
71+
'#' . /* @noEscape */ $block->getHtmlId()
7272
); ?>

app/code/Magento/Integration/view/adminhtml/templates/integration/activate/permissions/tab/webapi.phtml

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,25 @@
77
*
88
* @var \Magento\Integration\Block\Adminhtml\Integration\Activate\Permissions\Tab\Webapi $block
99
*/
10+
11+
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
1012
?>
1113
<fieldset class="admin__fieldset form-inline entry-edit">
12-
<?php if ($block->isTreeEmpty()) : ?>
14+
<?php if ($block->isTreeEmpty()): ?>
1315
<p class="empty"><?= $block->escapeHtml(__('No permissions requested')) ?></p>
14-
<?php else : ?>
16+
<?php else: ?>
1517
<div class="field" data-role="tree-resources-container">
1618
<div class="control">
1719
<div id="resource-tree" class="tree x-tree" data-role="resource-tree"></div>
1820
</div>
1921
</div>
2022
<?php endif ?>
2123
</fieldset>
22-
<?php if (!$block->isTreeEmpty()) : ?>
23-
<script>
24+
<?php
25+
if (!$block->isTreeEmpty()):
26+
$treeJson = /* @noEscape */ $block->getResourcesTreeJson();
27+
$selectedJson = /* @noEscape */ $block->getSelectedResourcesJson();
28+
$scriptString = <<<script
2429
require(["jquery", "Magento_User/js/roles-tree"], function($){
2530
$.widget('mage.rolesTree', $.mage.rolesTree, {
2631
_checkNode: function(event) {},
@@ -32,9 +37,11 @@
3237
});
3338
3439
$('[data-role="resource-tree"]').rolesTree({
35-
'treeInitData': <?= /* @noEscape */ $block->getResourcesTreeJson() ?>,
36-
'treeInitSelectedData': <?= /* @noEscape */ $block->getSelectedResourcesJson() ?>
40+
'treeInitData': {$treeJson},
41+
'treeInitSelectedData': {$selectedJson}
3742
});
3843
});
39-
</script>
44+
script;
45+
?>
46+
<?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>
4047
<?php endif ?>

0 commit comments

Comments
 (0)