Список – это перечень однотипных элементов.
Дерево – это иерархическая структура элементов (древовидный список). Ветви дерева – это дочерние элементы. Класс, который реализует функционал построения дерева – wAjaxTree.
В качестве примера древовидного списка можно привести список файлов – меню Утилиты- Файл-менеджер.
В этом случае используется метод treeframe() класса wCatalog. Из базы данных выбирается вся информация об элементах дерева, добавляются права удалять, редактировать, добавлять элементы ($tree->editing = true;$tree->adding = true;$tree->deleting = true;), добавляется способность дерева разворачиваться-сворачиваться ($tree->leaf_func).
Отдельно стоит рассмотреть асинхронные запросы класса wAjaxTree. Здесь задействован wAjaxlist плагин jquery (main/js/jquery.wajaxtree.js), который реагирует на действия пользователя и посылает запросы к серверу. Эти запросы обрабатывает метод show(), посылая ответ в xml-формате принимающему js-скрипту. В xml-ответе содержатся данные, позволяющие нарисовать дерево, отредактировать, добавить или удалить его элементы, отобразить контекстное меню. При выполнении этих действий проверяются права пользователя на просмотр дерева и изменение его элементов.
Пример простого древовидного списка с использованием конструктора запросов wSql:
// Create new instance of the wAjaxTree class include_once(SYS_BASE_PATH.'main/classes/wajaxtree.class.php'); $w = new wAjaxTree(); // Set sql $w->q->select('objid'); $w->q->select('name', '', array('lang' => true)); // Or $w->q->lselect('name'); $w->q->select('isfolder'); $w->q->select('parent'); $w->q->from('sys_objects'); $w->q->where("objid<>'0'"); $w->q->where("objtype='sys_elements_pages'"); $w->q->where("parent=:parent:"); $w->q->orderby('name', true); // Or $w->q->lorderby('name'); // Print the tree $w->show();
Пример списка с возможностью редактирования его элементов (добавление к каждому элементу контекстного меню):
// Create new instance of the wAjaxTree class include_once(SYS_BASE_PATH.'main/classes/wajaxtree.class.php'); $w = new wAjaxTree('test_uni'); $w->container = 'tree_editable'; // Set sql $w->q->select('id'); $w->q->select('name'); $w->q->select('isfolder'); $w->q->select('parent'); $w->q->from('test_uni'); $w->q->where('id>0'); $w->q->where('parent=:parent:'); $w->q->orderby('name'); // Set permissions for tree $w->editing = true; $w->adding = true; $w->deleting = true; // Print the tree $w->show();