Помощь с ExtJS
Есть два поля xtype MODx.tree.Tree.
Мне нужно, чтобы выбор пользователя при обновлении страницы сохранялся и при повторном открытии сохранялся. Сейчас, если выбрать в 1 дереве узел А, то при обновлении в двух деревьях будет выбран узел А. Как можно разделить деревья, чтобы выбранные узлы относились к своему дереву?
Сейчас написано вот что.
Мне нужно, чтобы выбор пользователя при обновлении страницы сохранялся и при повторном открытии сохранялся. Сейчас, если выбрать в 1 дереве узел А, то при обновлении в двух деревьях будет выбран узел А. Как можно разделить деревья, чтобы выбранные узлы относились к своему дереву?
Сейчас написано вот что.
yandexMarket.tree.Categories = function(config) {
config = config || {};
Ext.apply(config,{
id : "mycomponent-grid-mygrid",
url: yandexMarket.config.connector_url,
action: 'mgr/product/getcategories',
listeners: {
checkchange: function(n, checked) {
MODx.Ajax.request({
url: yandexMarket.config.connector_url,
params: {
id : "mycomponent-grid-mygrid",
action: 'mgr/product/changecategories',
category_id: n.attributes.pk,
checked: checked
}
});
// If a parent node is unchecked, uncheck all the children
if (!n.getUI().isChecked()) {
n.expandChildNodes(true);
n.eachChild(function(child){
child.ui.toggleCheck(false);
})
} else {
n.expandChildNodes(true);
n.eachChild(function(child){
child.ui.toggleCheck(true);
})
}
},
}
});
yandexMarket.tree.Categories.superclass.constructor.call(this,config);
};
yandexMarket.tree.Categoriess = function(config) {
config = config || {};
Ext.apply(config,{
id : "mycomponent-grid-mygrid1",
url: yandexMarket.config.connector_url,
action: 'mgr/product/getcategories',
listeners: {
checkchange: function(n, checked) {
MODx.Ajax.request({
url: yandexMarket.config.connector_url,
params: {
id : "mycomponent-grid-mygrid1",
action: 'mgr/product/changecategories',
category_id: n.attributes.pk,
checked: checked
}
});
// If a parent node is unchecked, uncheck all the children
if (!n.getUI().isChecked()) {
n.expandChildNodes(true);
n.eachChild(function(child){
child.ui.toggleCheck(false);
})
} else {
n.expandChildNodes(true);
n.eachChild(function(child){
child.ui.toggleCheck(true);
})
}
},
}
});
yandexMarket.tree.Categories.superclass.constructor.call(this,config);
};
Ext.extend(yandexMarket.tree.Categories, MODx.tree.Tree);
Ext.extend(yandexMarket.tree.Categoriess, MODx.tree.Tree);
Ext.reg('yandex-market-tree-categories', yandexMarket.tree.Categories);
Ext.reg('yandex-market-tree-categories1', yandexMarket.tree.Categoriess);
Код скрипта mgr/product/changecategories, отвечающий за сохранение выбора узла<?php
class yandexMarketChangeCategoriesProcessor extends modObjectProcessor {
public $classKey = 'yandexMarketCategories';
/** {@inheritDoc} */
public function process() {
$categoryId = $this->getProperty('category_id');
$checked = $this->getProperty('checked') == 'true';
$fields = array('category_id' => $categoryId);
/** @var yandexMarketCategories $object */
$object = $this->modx->getObject($this->classKey, $fields);
if (!$object && $checked) {
/** @var yandexMarketCategories $res */
$res = $this->modx->newObject($this->classKey);
$res->fromArray($fields);
$res->save();
} else if ($object && !$checked) {
$object->remove();
}
return $this->success('');
}
}
return 'yandexMarketChangeCategoriesProcessor';
Спасибо за потраченное время и извините за глупый вопрос!)Комментарии: 2
Если я правильно понял, то вы для обоих деревьев храните инфу в одной таблице. Тогда нужно ее хоть как-то разграничивать. Помимо category_id добавить еще поля типа market and webmaster, с дефолтным значеним 0. Если дерево маркета, то в маркет 1, если дерево вебмастера, то в него 1.
Спасибо, помог! В таблице только поле category_id было. Не стал в таблицу добавлять, просто в начало category_id стал добавлять ключ, а по нему уже определять к какому дереву относится объект и проставлять чеки.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.