From 7733c6d5ccf5d98629e0574608fe036bf799fbb3 Mon Sep 17 00:00:00 2001 From: xieqiyu Date: Thu, 11 Apr 2024 13:24:58 +0800 Subject: [PATCH] * Add sort for module tree. Fix bug#41368. --- module/tree/control.php | 1 - module/tree/js/browse.ui.js | 8 ++++++++ module/tree/model.php | 2 +- module/tree/ui/browse.html.php | 16 +++++++++++----- 4 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 module/tree/js/browse.ui.js diff --git a/module/tree/control.php b/module/tree/control.php index 7b51bbb70b..8417cda1c0 100644 --- a/module/tree/control.php +++ b/module/tree/control.php @@ -261,7 +261,6 @@ class tree extends control { $this->tree->updateOrder($_POST['orders']); if($viewType == 'story' and !empty($rootID) and !empty($moduleID)) $this->loadModel('action')->create('module', $rootID, 'moved', '', $moduleID); - die(js::reload('parent')); } } diff --git a/module/tree/js/browse.ui.js b/module/tree/js/browse.ui.js new file mode 100644 index 0000000000..f478f58433 --- /dev/null +++ b/module/tree/js/browse.ui.js @@ -0,0 +1,8 @@ +window.updateOrder = function(event, orders) +{ + let sortedIdList = {}; + for(let i in orders) sortedIdList['orders[' + orders[i] + ']'] = i; + + const moveModuleID = $(event.item).attr('z-key'); + $.post($.createLink('tree', 'updateOrder', 'rootID=' + rootID + '&viewType=' + viewType +'&moduleID=' + moveModuleID), sortedIdList); +} diff --git a/module/tree/model.php b/module/tree/model.php index 9a8e822e29..d42f66fff8 100644 --- a/module/tree/model.php +++ b/module/tree/model.php @@ -1728,7 +1728,7 @@ class treeModel extends model asort($orders); $orderInfo = $this->dao->select('*')->from(TABLE_MODULE)->where('id')->in(array_keys($orders))->andWhere('deleted')->eq(0)->fetchAll('id'); $newOrders = array(); - foreach($orders as $moduleID => $order) + foreach(array_keys($orders) as $moduleID) { $parent = $orderInfo[$moduleID]->parent; $grade = $orderInfo[$moduleID]->grade; diff --git a/module/tree/ui/browse.html.php b/module/tree/ui/browse.html.php index 32a03cfd61..f3833230bd 100644 --- a/module/tree/ui/browse.html.php +++ b/module/tree/ui/browse.html.php @@ -10,6 +10,9 @@ declare(strict_types=1); */ namespace zin; +jsVar('rootID', $root->id); +jsVar('viewType', $viewType); + $manageTitle = $lang->tree->manageChild; if(strpos($viewType, 'doc') !== false) { @@ -214,11 +217,14 @@ div ) : null, treeEditor ( - set('selected', $currentModuleID), - set('type', $viewType), - set('items', $tree), - set('canEdit', common::hasPriv('tree', 'edit') && $canBeChanged), - set('canDelete', common::hasPriv('tree', 'delete') && $canBeChanged) + set::selected($currentModuleID), + set::type($viewType), + set::items($tree), + set::canEdit(common::hasPriv('tree', 'edit') && $canBeChanged), + set::canDelete(common::hasPriv('tree', 'delete') && $canBeChanged), + set::itemProps(array('icon' => 'move muted')), + set::sortable(array('handle' => '.icon-move')), + set::onSort(jsRaw('function(event, orders){return window.updateOrder(event, orders);}')) ) ) ),