From 2e030b874c18d9783acca3687230bdc68d635011 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Fri, 21 Jan 2022 14:59:21 +0800 Subject: [PATCH 1/3] * Fix bug #18806. --- module/kanban/js/view.js | 21 +++++++++++++++------ module/kanban/model.php | 3 ++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index ca041f600f..2901c48c42 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -393,6 +393,7 @@ function moveCard(cardID, fromColID, toColID, fromLaneID, toLaneID, kanbanID, re method: 'post', dataType: 'json', url: url, + async: false, success: function(data) { regions = data; @@ -844,7 +845,7 @@ function createColumnCreateMenu(options) var laneID = col.$kanbanData.lanes[0].id ? col.$kanbanData.lanes[0].id : 0; var columnID = col.id; - if(privs.includes('createCard')) items.push({label: kanbanLang.createCard, url: $.createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}}); + if(privs.includes('createCard')) items.push({label: kanbanLang.createCard, url: $.createLink('kanban', 'createCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&columnID=' + columnID), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}}); if(privs.includes('batchCreateCard')) items.push({label: kanbanLang.batchCreateCard, url: $.createLink('kanban', 'batchCreateCard', 'kanbanID=' + kanbanID + '®ionID=' + regionID + '&groupID=' + groupID + '&laneID=' + laneID + '&columnID=' + columnID), attrs: {'data-width': '80%'}}); return items; } @@ -1010,8 +1011,10 @@ $(function() }); /* Init sortable */ - var sortType = ''; - var $cards = null; + var sortType = ''; + var oldLaneID = ''; + var oldColID = ''; + var $cards = null; $('#kanban').sortable( { selector: '.region, .kanban-board, .kanban-lane, .kanban-item.sort', @@ -1066,6 +1069,12 @@ $(function() $('.region').find('.kanban').hide(); hideKanbanAction(); } + + if(sortType == 'card') + { + oldLaneID = e.element.closest('.kanban-lane').data('id'); + oldColID = e.element.closest('.kanban-col').data('id'); + } }, finish: function(e) { @@ -1101,9 +1110,9 @@ $(function() } if(sortType == 'card') { - var laneID = e.element.closest('.kanban-lane').data('id'); - var columnID = e.element.closest('.kanban-col').data('id'); - url = createLink('kanban', 'sortCard', 'kanbanID=' + kanbanID + '&laneID=' + laneID + '&columnID=' + columnID + '&cards=' + orders.join(',')); + var newLaneID = e.element.closest('.kanban-lane').data('id'); + var newColID = e.element.closest('.kanban-col').data('id'); + if(newLaneID == oldLaneID && newColID == oldColID) url = createLink('kanban', 'sortCard', 'kanbanID=' + kanbanID + '&laneID=' + newLaneID + '&columnID=' + newColID + '&cards=' + orders.join(',')); } if(!url) return true; diff --git a/module/kanban/model.php b/module/kanban/model.php index a8c339cf93..2a042c1969 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -2709,9 +2709,10 @@ class kanbanModel extends model $fromCellCards = $this->dao->select('cards')->from(TABLE_KANBANCELL)->where('lane')->eq($fromLaneID)->andWhere('`column`')->eq($fromColID)->fetch('cards'); $toCellCards = $this->dao->select('cards')->from(TABLE_KANBANCELL)->where('lane')->eq($toLaneID)->andWhere('`column`')->eq($toColID)->fetch('cards'); - $fromCardList = str_replace("$cardID,", '', $fromCellCards); + $fromCardList = str_replace(",$cardID,", ',', $fromCellCards); $toCardList = rtrim($toCellCards, ',') . ",$cardID,"; + if($fromCardList == ',') $fromCardList = ''; $this->dao->update(TABLE_KANBANCELL)->set('cards')->eq($fromCardList)->where('`column`')->eq($fromColID)->andWhere('lane')->eq($fromLaneID)->exec(); $this->dao->update(TABLE_KANBANCELL)->set('cards')->eq($toCardList)->where('`column`')->eq($toColID)->andWhere('lane')->eq($toLaneID)->exec(); } From 3f15a1e01603b06f17adb4c41bcf53a5bd5e7c33 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Fri, 21 Jan 2022 15:04:25 +0800 Subject: [PATCH 2/3] * Fix bug #18806. --- module/execution/js/kanban.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/module/execution/js/kanban.js b/module/execution/js/kanban.js index b392edf00e..dac7ee3352 100644 --- a/module/execution/js/kanban.js +++ b/module/execution/js/kanban.js @@ -927,6 +927,7 @@ function changeCardColType(cardID, fromColID, toColID, fromLaneID, toLaneID, car method: 'post', dataType: 'json', url: link, + async: false, success: function(data) { updateRegion(regionID, data[regionID]); @@ -993,6 +994,7 @@ function shiftCard(objectID, fromColID, toColID, fromLaneID, toLaneID, regionID) method: 'post', dataType: 'json', url: link, + async: false, success: function(data) { updateRegion(regionID, data[regionID]); @@ -1229,13 +1231,6 @@ $(function() return $ele.parent().children('.kanban-lane'); } - - /* Sort lanes */ - if($ele.hasClass('kanban-item')) - { - sortType = 'item'; - return $ele.parent().children('.kanban-item'); - } }, start: function(e) { @@ -1284,10 +1279,7 @@ $(function() var region = e.element.parent().parent().data('id'); url = createLink('kanban', 'sortLane', 'region=' + region + '&lanes=' + orders.join(',')); } - if(sortType == 'item') - { - url = createLink('task', 'sort', 'kanbanID=' + kanbanID + '&tasks=' + orders.join(',')); - } + if(!url) return true; $.getJSON(url, function(response) From 78dc1af6bdde87178f0de241a6024be3a4ff29b3 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Fri, 21 Jan 2022 15:40:56 +0800 Subject: [PATCH 3/3] * Modify the format. --- module/kanban/js/view.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 2901c48c42..11d1949bf1 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -1011,10 +1011,10 @@ $(function() }); /* Init sortable */ - var sortType = ''; + var sortType = ''; var oldLaneID = ''; var oldColID = ''; - var $cards = null; + var $cards = null; $('#kanban').sortable( { selector: '.region, .kanban-board, .kanban-lane, .kanban-item.sort',