Новости | 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) } }Вот только как еще сделать перезапись для потомков перемещенного узла (поддерева).