| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Mizter Egoist 27.04.2016 12:38 / 27.04.2016 12:43
Из всех пяти пунктов получилось сделать только 4.$_parent[^table::sql{
SELECT
t.anc,
t.dsc,
t.lvl,
p.eID
FROM path AS t
JOIN pages AS p ON (p.eID = t.dsc)
WHERE t.dsc = $form:id AND t.lvl > 0
}]2. Все потомки узла $_child[^table::sql{
SELECT
t.anc,
t.dsc,
t.lvl,
p.eID
FROM path AS t
JOIN pages AS p ON (p.eID = t.dsc)
JOIN path AS h ON (h.dsc = t.dsc AND h.lvl = 1)
WHERE t.anc = $form:id
}]3. Все предки нового узла $n_parent[^table::sql{
SELECT
t.anc,
t.dsc,
t.lvl,
p.eID
FROM path AS t
JOIN pages AS p ON (p.eID = t.anc)
WHERE t.dsc = $form:catalog
}]Считаем дистанцию $n_count[^table::sql{
SELECT COUNT(*) AS count
FROM path AS t
JOIN pages AS p ON (p.eID = t.anc)
WHERE t.dsc = $form:catalog
}]
$level[^get.getPath[
$.anc(0)
$.dsc[$form:catalog]
]]
$lvl($level.lvl + 1)4. Удаляем предыдущие связи ^_parent.menu{
^void:sql{
DELETE FROM path
WHERE dsc = $_parent.dsc
AND anc = $_parent.anc
AND lvl = $_parent.lvl
}
}5. Создаем новые связи для узла с новой дистанцией ^void:sql{
INSERT INTO path (anc, dsc, lvl)
VALUES (0, $form:id, $lvl)
}
^if($n_parent){
$distance($n_count.count)
^n_parent.menu{
^void:sql{
INSERT INTO path (anc, dsc, lvl)
VALUES ($n_parent.anc, $form:id, $distance)
}
$distance($distance - 1)
}
}Вот только как еще сделать перезапись для потомков перемещенного узла (поддерева).