|
4 | 4 | * See COPYING.txt for license details.
|
5 | 5 | */
|
6 | 6 |
|
7 |
| -/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */ |
| 7 | +/** |
| 8 | + * @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer |
| 9 | + * @var \Magento\Framework\Escaper $escaper |
| 10 | + */ |
8 | 11 | ?>
|
9 | 12 |
|
10 | 13 | <?php $_divId = 'tree' . $block->getId() ?>
|
11 |
| -<div id="<?= $block->escapeHtmlAttr($_divId) ?>" class="tree"></div> |
| 14 | +<div id="<?= $escaper->escapeHtmlAttr($_divId) ?>" class="tree"></div> |
12 | 15 | <?php
|
13 | 16 | $isUseMassAction = $block->getUseMassaction() ? 1 : 0;
|
14 | 17 | $isAnchorOnly = $block->getIsAnchorOnly() ? 1 : 0;
|
@@ -124,29 +127,30 @@ require(['jquery', 'jquery/jstree/jquery.jstree'], function($) {
|
124 | 127 |
|
125 | 128 | function handleOpenNode(e, data) {
|
126 | 129 | let parentNode = data.node;
|
127 |
| -
|
128 |
| - if (parentNode.children.length > 0) { |
129 |
| - let childNode = data.instance.get_node(parentNode.children, false); |
130 |
| -
|
131 |
| - // Check if the child node has no children (is not yet loaded) |
132 |
| - if (childNode.children && childNode.children.length === 0 |
133 |
| - && childNode.original && !childNode.original.lastNode) { |
134 |
| - $.ajax({ |
135 |
| - url: '{$block->escapeJs($block->escapeUrl($block->getLoadTreeUrl()))}', |
136 |
| - data: { |
137 |
| - id: childNode.original.id, |
138 |
| - store: childNode.original.store, |
139 |
| - form_key: FORM_KEY |
140 |
| - }, |
141 |
| - dataType: 'json', |
142 |
| - success: function (response) { |
143 |
| - handleSuccessResponse(response, childNode, data); |
144 |
| - }, |
145 |
| - error: function (jqXHR, status, error) { |
146 |
| - console.log(status + ': ' + error + 'Response text:' + jqXHR.responseText); |
147 |
| - } |
148 |
| - }); |
149 |
| - } |
| 130 | + if (parentNode && parentNode.children.length > 0) { |
| 131 | + parentNode.children.forEach(function(childId) { |
| 132 | + let childNode = data.instance.get_node(childId, false); |
| 133 | + // Check if the child node has no children (is not yet loaded) |
| 134 | + if (childNode.children && childNode.children.length === 0 |
| 135 | + && childNode.original && !childNode.original.lastNode) { |
| 136 | + $.ajax({ |
| 137 | + url: '{$block->escapeJs($block->escapeUrl($block->getLoadTreeUrl()))}', |
| 138 | + type: "POST", |
| 139 | + data: { |
| 140 | + id: childNode.original.id, |
| 141 | + store: childNode.original.store, |
| 142 | + form_key: FORM_KEY |
| 143 | + }, |
| 144 | + dataType: 'json', |
| 145 | + success: function (response) { |
| 146 | + handleSuccessResponse(response, childNode, data); |
| 147 | + }, |
| 148 | + error: function (jqXHR, status, error) { |
| 149 | + console.log(status + ': ' + error + 'Response text:' + jqXHR.responseText); |
| 150 | + } |
| 151 | + }); |
| 152 | + } |
| 153 | + }) |
150 | 154 | }
|
151 | 155 | }
|
152 | 156 |
|
@@ -179,7 +183,7 @@ script;
|
179 | 183 | ?>
|
180 | 184 | <?= /* @noEscape */ $secureRenderer->renderStyleAsTag(
|
181 | 185 | 'overflow-x: auto;',
|
182 |
| - '#tree' . $block->escapeJs($block->getId()) |
| 186 | + '#tree' . $escaper->escapeJs($block->getId()) |
183 | 187 | );
|
184 | 188 | ?>
|
185 | 189 | <?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false); ?>
|
0 commit comments