| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
dev 02.12.2005 13:29
Т.е. примерно вот так все должно выглядеть?@CLASS
uri
###################################################################
# Конструктор, items - таблица (поля: uri, id, title).
@init[items]
$children_of[^items.hash[parent_id][$.distinct[tables]]]
###################################################################
# Необязательный параметр parent_uri - адрес корневой директории, по умолчанию "/".
# Возвращает таблицу (поля: uri, id, title), содержащую полные адреса всех дочерних директорий.
@get[parent_uri]
^if(!def $parent_uri){$parent_uri[/]}
$_items[^table::create{uri id title}]
^_get[$children_of.0;$parent_uri]
$result[$_items]
$_items[]
###################################################################
# внутренний метод, рекурсивно обходит дочерние директории, вычисляет их адреса
# и добавляет их в таблицу _item.
@_get[sibling;parent_uri]
^sibling.menu{
^_items.append{${parent_uri}$sibling.[dir]/ $sibling.id $sibling.title}
^if(def $children_of.[$sibling.id]){
^_get[$children_of.[$sibling.id];${parent_uri}$sibling.[dir]/]
}
}