diff --git a/module/kanban/control.php b/module/kanban/control.php index 1ae4faeb6c..86d6f22439 100644 --- a/module/kanban/control.php +++ b/module/kanban/control.php @@ -746,15 +746,17 @@ class kanban extends control * Move a card. * * @param int $cardID + * @param int $fromColID * @param int $toColID + * @param int $fromLaneID * @param int $toLaneID * @param int $kanbanID * @access public * @return void */ - public function moveCard($cardID, $toColID, $toLaneID, $kanbanID) + public function moveCard($cardID, $fromColID, $toColID, $fromLaneID, $toLaneID, $kanbanID) { - $this->kanban->moveCard($cardID, $toColID, $toLaneID); + $this->kanban->moveCard($cardID, $fromColID, $toColID, $fromLaneID, $toLaneID); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); $kanbanGroup = $this->kanban->getKanbanData($kanbanID); die(json_encode($kanbanGroup)); diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index c781026980..1908334a33 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -374,16 +374,19 @@ function showErrorMessager(message) * Move a card. * * @param int $cardID + * @param int $fromColID * @param int $toColID + * @param int $fromLaneID + * @param int $toLaneID * @param int $kanbanID * @param int $regionID * @access public * @return string */ -function moveCard(cardID, toColID, toLaneID, kanbanID, regionID) +function moveCard(cardID, fromColID, toColID, fromLaneID, toLaneID, kanbanID, regionID) { if(!cardID) return false; - var url = createLink('kanban', 'moveCard', 'cardID=' + cardID + '&toColID=' + toColID + '&toLaneID=' + toLaneID + '&kanbanID=' + kanbanID); + var url = createLink('kanban', 'moveCard', 'cardID=' + cardID + '&fromColID='+ fromColID + '&toColID=' + toColID + '&fromLaneID='+ fromLaneID + '&toLaneID=' + toLaneID + '&kanbanID=' + kanbanID); return $.ajax( { method: 'post', @@ -586,7 +589,7 @@ function handleDropTask($element, event, kanban) if(oldCol.id === newCol.id && newLane.id === oldLane.id) return false; var cardID = $card.data().id; - moveCard(cardID, newCol.id, newLane.id, kanbanID, regionID); + moveCard(cardID, oldCol.id, newCol.id, oldLane.id, newLane.id, kanbanID, regionID); } /** diff --git a/module/kanban/model.php b/module/kanban/model.php index 52e76e2a0e..32c768ed29 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -827,10 +827,12 @@ class kanbanModel extends model */ public function getCardGroupByKanban($kanbanID) { - $cards = $this->dao->select('*')->from(TABLE_KANBANCARD) + $cards = $this->dao->select('t1.*,t2.kanban,t2.lane,t2.column')->from(TABLE_KANBANCARD)->alias('t1') + ->leftJoin(TABLE_KANBANCELL)->alias('t2')->on('t1.kanban=t2.kanban') ->where('deleted')->eq(0) + ->andWhere("instr(t2.cards,t1.id)")->gt(0) ->andWhere('archived')->eq(0) - ->andWhere('kanban')->eq($kanbanID) + ->andWhere('t2.kanban')->eq($kanbanID) //->orderBy('`order` asc') ->fetchAll('id'); @@ -2468,17 +2470,23 @@ class kanbanModel extends model * Move a card. * * @param int $cardID + * @param int $fromColID * @param int $toColID + * @param int $fromLaneID * @param int $toLaneID * @access public * @return void */ - public function moveCard($cardID, $toColID, $toLaneID) + public function moveCard($cardID, $fromColID, $toColID, $fromLaneID, $toLaneID) { - $this->dao->update(TABLE_KANBANCARD) - ->set('column')->eq($toColID) - ->beginIF($toLaneID)->set('lane')->eq($toLaneID)->fi() - ->where('id')->eq($cardID)->exec(); + $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); + $toCardList = $toCellCards . "$cardID,"; + + $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(); } /**