diff --git a/module/execution/js/kanban.js b/module/execution/js/kanban.js index 62a5500751..adb7b87a61 100644 --- a/module/execution/js/kanban.js +++ b/module/execution/js/kanban.js @@ -464,12 +464,12 @@ if(!window.kanbanDropRules) }, bug: { - 'unconfirmed': ['confirmed'], - 'confirmed': ['fixing'], + 'unconfirmed': ['confirmed', 'fixing', 'fixed'], + 'confirmed': ['fixing', 'fixed'], 'fixing': ['fixed'], - 'fixed': ['testing'], - 'testing': ['tested'], - 'tested': ['closed'], + 'fixed': ['testing', 'tested', 'fixing'], + 'testing': ['tested', 'closed', 'fixing'], + 'tested': ['closed', 'fixing'], 'closed': ['fixing'], }, task: @@ -529,6 +529,7 @@ function changeCardColType(card, fromColType, toColType, kanbanID) if(typeof card == 'undefined') return false; var objectID = card.id; var showIframe = false; + var moveCard = false; /* Task lane. */ if(kanbanID == 'task') @@ -591,6 +592,60 @@ function changeCardColType(card, fromColType, toColType, kanbanID) showIframe = true; } } + else if(toColType == 'fixing') + { + if(fromColType == 'confirmed' || fromColType == 'unconfirmed') moveCard = true; + if((fromColType == 'closed' || fromColType == 'fixed' || fromColType == 'testing' || fromColType == 'tested') && priv.canActivateBug) + { + var link = createLink('bug', 'activate', 'bugID=' + objectID, '', true); + showIframe = true; + } + } + else if(toColType == 'fixed') + { + if(fromColType == 'fixing' || fromColType == 'confirmed' || fromColType == 'unconfirmed') + { + var link = createLink('bug', 'resolve', 'bugID=' + objectID, '', true); + showIframe = true; + } + } + else if(toColType == 'testing') + { + if(fromColType == 'fixed') moveCard = true; + } + else if(toColType == 'tested') + { + if(fromColType == 'fixed' || fromColType == 'testing') moveCard = true; + } + else if(toColType == 'closed') + { + if(fromColType == 'testing' || fromColType == 'tested') + { + var link = createLink('bug', 'close', 'bugID=' + objectID, '', true); + showIframe = true; + } + } + + if(moveCard) + { + var colID = card.$col.columnID; + var link = createLink('kanban', 'ajaxMoveCard', 'cardID=' + objectID + '&colID=' + colID + '&toColType=' + toColType + '&execitionID=' + executionID + '&browseType=' + browseType + '&groupBy=' + groupBy); + $.get(link, function(data) + { + if(data) + { + kanbanGroup = $.parseJSON(data); + if(groupBy == 'default') + { + updateKanban('bug', kanbanGroup.bug); + } + else + { + updateKanban(browseType, kanbanGroup[groupBy]); + } + } + }) + } } /* Story lane. */ diff --git a/module/execution/view/kanban.html.php b/module/execution/view/kanban.html.php index 63ec6c7f6d..28fb732228 100644 --- a/module/execution/view/kanban.html.php +++ b/module/execution/view/kanban.html.php @@ -148,14 +148,15 @@ js::set('priv', 'canLinkStoryByPlane' => $canLinkStoryByPlane, 'canAssignTask' => common::hasPriv('task', 'assignto'), 'canAssignStory' => common::hasPriv('story', 'assignto'), - 'canAssignBug' => common::hasPriv('bug', 'assignto'), 'canFinishTask' => common::hasPriv('task', 'finish'), 'canPauseTask' => common::hasPriv('task', 'pause'), 'canCancelTask' => common::hasPriv('task', 'cancel'), 'canCloseTask' => common::hasPriv('task', 'close'), 'canActivateTask' => common::hasPriv('task', 'activate'), 'canStartTask' => common::hasPriv('task', 'start'), - 'canConfirmBug' => common::hasPriv('bug', 'confirmBug') + 'canAssignBug' => common::hasPriv('bug', 'assignto'), + 'canConfirmBug' => common::hasPriv('bug', 'confirmBug'), + 'canActivateBug' => common::hasPriv('bug', 'activate') ) ); ?> diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 92cb6cf10d..eff00130ca 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -27,6 +27,7 @@ function fullScreen() var afterEnterFullscreen = function() { $('#kanban').css('background', '#fff'); + $('.actions').hide(); $.cookie('isFullScreen', 1); }; @@ -63,6 +64,7 @@ function fullScreen() function exitFullScreen() { $('#mainContent').removeClass('scrollbar-hover'); + $('.actions').show(); $.cookie('isFullScreen', 0); } diff --git a/module/kanban/model.php b/module/kanban/model.php index 2a1a9bce77..e1c827f7c3 100644 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -1443,6 +1443,11 @@ class kanbanModel extends model { foreach($this->config->kanban->storyColumnStageList as $colType => $stage) { + if($story->stage != $stage and strpos($cardPairs[$colType], ",$storyID,") !== false) + { + $cardPairs[$colType] = str_replace(",$storyID,", ',', $cardPairs[$colType]); + } + if(strpos(',ready,develop,test,', $colType) !== false) continue; if($lane->groupby and $story->{$lane->groupby} != $lane->extra) @@ -1457,10 +1462,6 @@ class kanbanModel extends model { $cardPairs[$colType] = empty($cardPairs[$colType]) ? ",$storyID," : ",$storyID" . $cardPairs[$colType]; } - elseif($story->stage != $stage and strpos($cardPairs[$colType], ",$storyID,") !== false) - { - $cardPairs[$colType] = str_replace(",$storyID,", ',', $cardPairs[$colType]); - } } } } @@ -1471,34 +1472,43 @@ class kanbanModel extends model { foreach($this->config->kanban->bugColumnStatusList as $colType => $status) { - if(strpos(',resolving,fixing,test,testing,tested,', $colType) !== false) continue; + if($bug->status != $status and strpos($cardPairs[$colType], ",$bugID,") !== false) + { + $cardPairs[$colType] = str_replace(",$bugID,", ',', $cardPairs[$colType]); + } + + if(strpos(',resolving,test,testing,tested,', $colType) !== false) continue; if($lane->groupby and $bug->{$lane->groupby} != $lane->extra) { $cardPairs[$colType] = str_replace(",$bugID,", ',', $cardPairs[$colType]); } - elseif($colType == 'unconfirmed' and $bug->status == $status and $bug->confirmed == 0 and strpos($cardPairs['unconfirmed'], ",$bugID,") === false and strpos($cardPairs['fixing'], ",$bugID,") === false) + elseif($colType == 'unconfirmed' and $bug->status == $status and $bug->confirmed == 0 and strpos($cardPairs['unconfirmed'], ",$bugID,") === false and strpos($cardPairs['fixing'], ",$bugID,") === false and $bug->activatedCount == 0) { $cardPairs['unconfirmed'] = empty($cardPairs['unconfirmed']) ? ",$bugID," : ",$bugID" . $cardPairs['unconfirmed']; if(strpos($cardPairs['closed'], ",$bugID,") !== false) $cardPairs['closed'] = str_replace(",$bugID,", ',', $cardPairs['closed']); } - elseif($colType == 'confirmed' and $bug->status == $status and $bug->confirmed == 1 and strpos($cardPairs['confirmed'], ",$bugID,") === false and strpos($cardPairs['fixing'], ",$bugID,") === false) + elseif($colType == 'confirmed' and $bug->status == $status and $bug->confirmed == 1 and strpos($cardPairs['confirmed'], ",$bugID,") === false and strpos($cardPairs['fixing'], ",$bugID,") === false and $bug->activatedCount) { $cardPairs['confirmed'] = empty($cardPairs['confirmed']) ? ",$bugID," : ",$bugID" . $cardPairs['confirmed']; if(strpos($cardPairs['unconfirmed'], ",$bugID,") !== false) $cardPairs['unconfirmed'] = str_replace(",$bugID,", ',', $cardPairs['unconfirmed']); } + elseif($colType == 'fixing' and $bug->status == $status and $bug->activatedCount > 0) + { + $cardPairs['fixing'] = empty($cardPairs['fixing']) ? ",$bugID," : ",$bugID" . $cardPairs['fixing']; + if(strpos($cardPairs['confirmed'], ",$bugID,") !== false) $cardPairs['confirmed'] = str_replace(",$bugID,", ',', $cardPairs['confirmed']); + if(strpos($cardPairs['unconfirmed'], ",$bugID,") !== false) $cardPairs['unconfirmed'] = str_replace(",$bugID,", ',', $cardPairs['unconfirmed']); + } elseif($colType == 'fixed' and $bug->status == $status and strpos($cardPairs['fixed'], ",$bugID,") === false and strpos($cardPairs['testing'], ",$bugID,") === false and strpos($cardPairs['tested'], ",$bugID,") === false) { $cardPairs['fixed'] = empty($cardPairs['fixed']) ? ",$bugID," : ",$bugID" . $cardPairs['fixed']; + if(strpos($cardPairs['testing'], ",$bugID,") !== false) $cardPairs['testing'] = str_replace(",$bugID,", ',', $cardPairs['testing']); + if(strpos($cardPairs['tested'], ",$bugID,") !== false) $cardPairs['tested'] = str_replace(",$bugID,", ',', $cardPairs['tested']); } elseif($colType == 'closed' and $bug->status == 'closed' and strpos($cardPairs[$colType], ",$bugID,") === false) { $cardPairs[$colType] = empty($cardPairs[$colType]) ? ",$bugID," : ",$bugID". $cardPairs[$colType]; } - elseif($bug->status != $status and strpos($cardPairs[$colType], ",$bugID,") !== false) - { - $cardPairs[$colType] = str_replace(",$bugID,", ',', $cardPairs[$colType]); - } } } }