Skip to content

Commit 9971960

Browse files
committed
MAGETWO-87013: Cart Price Rules - Category Drill Down problems
1 parent b310fb4 commit 9971960

File tree

2 files changed

+298
-187
lines changed

2 files changed

+298
-187
lines changed

app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/checkboxes/tree.phtml

Lines changed: 21 additions & 187 deletions
Original file line numberDiff line numberDiff line change
@@ -5,197 +5,31 @@
55
*/
66

77
// @codingStandardsIgnoreFile
8-
8+
/**
9+
* @var $block \Magento\Catalog\Block\Adminhtml\Category\Tree
10+
*/
911
?>
1012

1113
<?php $_divId = 'tree-div_' . time() ?>
1214
<div id="<?= /* @escapeNotVerified */ $_divId ?>" class="tree"></div>
1315
<script id="ie-deferred-loader" defer="defer" src="//:"></script>
14-
<script>
15-
require([
16-
'jquery',
17-
"prototype",
18-
"extjs/ext-tree-checkbox",
19-
"mage/adminhtml/form"
20-
], function(jQuery){
21-
22-
//<![CDATA[
23-
24-
// TODO: cleanup this script. It was copypasted from catalog/category/tree
25-
26-
var tree;
27-
28-
/**
29-
* Fix ext compatibility with prototype 1.6
30-
*/
31-
Ext.lib.Event.getTarget = function(e) {
32-
var ee = e.browserEvent || e;
33-
return ee.target ? Event.element(ee) : null;
34-
};
35-
36-
Ext.tree.TreePanel.Enhanced = function(el, config)
37-
{
38-
Ext.tree.TreePanel.Enhanced.superclass.constructor.call(this, el, config);
39-
};
40-
41-
Ext.extend(Ext.tree.TreePanel.Enhanced, Ext.tree.TreePanel, {
42-
43-
loadTree : function(config, firstLoad)
44-
{
45-
var parameters = config['parameters'];
46-
var data = config['data'];
47-
48-
if ((typeof parameters['root_visible']) != 'undefined') {
49-
this.rootVisible = parameters['root_visible']*1;
50-
}
51-
52-
var root = new Ext.tree.TreeNode(parameters);
53-
54-
this.nodeHash = {};
55-
this.setRootNode(root);
56-
57-
if (firstLoad) {
58-
this.addListener('click', this.categoryClick.createDelegate(this));
59-
}
60-
61-
this.loader.buildCategoryTree(root, data);
62-
this.el.dom.innerHTML = '';
63-
// render the tree
64-
this.render();
65-
},
66-
67-
categoryClick : function(node, e)
68-
{
69-
node.getUI().check(!node.getUI().checked());
70-
}
71-
});
72-
73-
jQuery(function()
74-
{
75-
var categoryLoader = new Ext.tree.TreeLoader({
76-
dataUrl: '<?= /* @escapeNotVerified */ $block->getLoadTreeUrl() ?>'
77-
});
78-
79-
categoryLoader.processResponse = function (response, parent, callback) {
80-
var config = JSON.parse(response.responseText);
8116

82-
this.buildCategoryTree(parent, config);
83-
84-
if (typeof callback == "function") {
85-
callback(this, parent);
86-
}
87-
};
88-
89-
categoryLoader.createNode = function(config) {
90-
config.uiProvider = Ext.tree.CheckboxNodeUI;
91-
var node;
92-
var _node = Object.clone(config);
93-
if (config.children && !config.children.length) {
94-
delete(config.children);
95-
node = new Ext.tree.AsyncTreeNode(config);
96-
} else {
97-
node = new Ext.tree.TreeNode(config);
98-
}
99-
100-
return node;
101-
};
102-
103-
categoryLoader.buildCategoryTree = function(parent, config)
104-
{
105-
if (!config) return null;
106-
107-
if (parent && config && config.length){
108-
for (var i = 0; i < config.length; i++) {
109-
config[i].uiProvider = Ext.tree.CheckboxNodeUI;
110-
var node;
111-
var _node = Object.clone(config[i]);
112-
if (_node.children && !_node.children.length) {
113-
delete(_node.children);
114-
node = new Ext.tree.AsyncTreeNode(_node);
115-
} else {
116-
node = new Ext.tree.TreeNode(config[i]);
117-
}
118-
parent.appendChild(node);
119-
node.loader = node.getOwnerTree().loader;
120-
if (_node.children) {
121-
this.buildCategoryTree(node, _node.children);
122-
}
123-
}
124-
}
125-
};
126-
127-
categoryLoader.buildHash = function(node)
128-
{
129-
var hash = {};
130-
131-
hash = this.toArray(node.attributes);
132-
133-
if (node.childNodes.length>0 || (node.loaded==false && node.loading==false)) {
134-
hash['children'] = new Array;
135-
136-
for (var i = 0, len = node.childNodes.length; i < len; i++) {
137-
if (!hash['children']) {
138-
hash['children'] = new Array;
139-
}
140-
hash['children'].push(this.buildHash(node.childNodes[i]));
141-
}
142-
}
143-
144-
return hash;
145-
};
146-
147-
categoryLoader.toArray = function(attributes) {
148-
var data = {};
149-
for (var key in attributes) {
150-
var value = attributes[key];
151-
data[key] = value;
152-
}
153-
154-
return data;
155-
};
156-
157-
categoryLoader.on("beforeload", function(treeLoader, node) {
158-
treeLoader.baseParams.id = node.attributes.id;
159-
});
160-
161-
categoryLoader.on("load", function(treeLoader, node, config) {
162-
varienWindowOnload();
163-
});
164-
165-
tree = new Ext.tree.TreePanel.Enhanced('<?= /* @escapeNotVerified */ $_divId ?>', {
166-
animate: false,
167-
loader: categoryLoader,
168-
enableDD: false,
169-
containerScroll: true,
170-
selModel: new Ext.tree.CheckNodeMultiSelectionModel(),
171-
rootVisible: '<?= /* @escapeNotVerified */ $block->getRoot()->getIsVisible() ?>',
172-
useAjax: <?= /* @escapeNotVerified */ $block->getUseAjax() ?>,
173-
currentNodeId: <?= (int) $block->getCategoryId() ?>,
174-
addNodeTo: false,
175-
rootUIProvider: Ext.tree.CheckboxNodeUI
176-
});
177-
178-
tree.on('check', function(node, checked) {
179-
<?= /* @escapeNotVerified */ $block->getJsFormObject() ?>.updateElement.value = this.getChecked().join(', ');
180-
varienElementMethods.setHasChanges(node.getUI().checkbox);
181-
}, tree);
182-
183-
// set the root node
184-
var parameters = {
185-
text: '<?= /* @escapeNotVerified */ htmlentities($block->getRoot()->getName()) ?>',
186-
draggable: false,
187-
checked:'<?= /* @escapeNotVerified */ $block->getRoot()->getChecked() ?>',
188-
uiProvider: Ext.tree.CheckboxNodeUI,
189-
allowDrop: <?php if ($block->getRoot()->getIsVisible()): ?>true<?php else : ?>false<?php endif; ?>,
190-
id: <?= (int) $block->getRoot()->getId() ?>,
191-
expanded: <?= (int) $block->getIsWasExpanded() ?>,
192-
category_id: <?= (int) $block->getCategoryId() ?>
193-
};
194-
195-
tree.loadTree({parameters:parameters, data:<?= /* @escapeNotVerified */ $block->getTreeJson() ?>},true);
196-
197-
});
198-
//]]>
199-
200-
});
17+
<script>
18+
require(["Magento_Catalog/js/category-checkbox-tree"], function (element) {
19+
element({
20+
"dataUrl": "<?= /* @escapeNotVerified */ $block->getLoadTreeUrl() ?>" ,
21+
"divId": "<?= /* @escapeNotVerified */$_divId ?>",
22+
"rootVisible": <?php if ($block->getRoot()->getIsVisible()): ?>true<?php else : ?>false<?php endif; ?>,
23+
"useAjax": <?= /* @escapeNotVerified */ $block->getUseAjax() ?>,
24+
"currentNodeId": <?= (int)$block->getCategoryId() ?>,
25+
"jsFormObject": <?= /* @escapeNotVerified */ $block->getJsFormObject() ?>,
26+
"name": "<?= /* @escapeNotVerified */ htmlentities($block->getRoot()->getName()) ?>",
27+
"checked": "<?= /* @escapeNotVerified */ $block->getRoot()->getChecked() ?>",
28+
"allowDrop": <?php if ($block->getRoot()->getIsVisible()): ?>true<?php else : ?>false<?php endif; ?>,
29+
"rootId": <?= (int)$block->getRoot()->getId() ?>,
30+
"expanded": <?= (int)$block->getIsWasExpanded() ?>,
31+
"categoryId": <?= (int)$block->getCategoryId() ?>,
32+
"treeJson": <?= /* @escapeNotVerified */ $block->getTreeJson() ?>
33+
});
34+
})
20135
</script>

0 commit comments

Comments
 (0)