diff --git a/module/execution/ui/kanban.html.php b/module/execution/ui/kanban.html.php index fa73c5bef8..665833f633 100644 --- a/module/execution/ui/kanban.html.php +++ b/module/execution/ui/kanban.html.php @@ -40,6 +40,134 @@ foreach($kanbanList as $current => $region) $laneCount += $region['laneCount']; } +$operationMenu = array(); +if(common::hasPriv('execution', 'start')) $operationMenu[] = array('text' => $lang->execution->start, 'url' => inlink('start', "id=$execution->id"), 'data-toggle' => 'modal', 'icon' => 'start'); +if(common::hasPriv('execution', 'putoff')) $operationMenu[] = array('text' => $lang->execution->putoff, 'url' => inlink('putoff', "id=$execution->id"), 'data-toggle' => 'modal', 'icon' => 'calendar'); +if(common::hasPriv('execution', 'suspend')) $operationMenu[] = array('text' => $lang->execution->suspend, 'url' => inlink('suspend', "id=$execution->id"), 'data-toggle' => 'modal', 'icon'=> 'pause'); +if(common::hasPriv('execution', 'close')) $operationMenu[] = array('text' => $lang->execution->close, 'url' => inlink('close', "id=$execution->id"), 'data-toggle' => 'modal', 'icon' => 'off'); +if(common::hasPriv('execution', 'delete')) $operationMenu[] = array('text' => $lang->delete, 'url' => inlink('delete', "id=$execution->id"), 'className' => 'ajax-submit', 'data-confirm' => $lang->execution->confirmDelete, 'icon' => 'trash'); + +$canCreateTask = common::hasPriv('task', 'create'); +$canBatchCreateTask = common::hasPriv('task', 'batchCreate'); +$canImportTask = common::hasPriv('execution', 'importTask') && $execution->multiple; + +$canCreateBug = $features['qa'] && $productID && common::hasPriv('bug', 'create'); +$canBatchCreateBug = $features['qa'] && $productID && common::hasPriv('bug', 'batchCreate') && $execution->multiple; +$canImportBug = $features['qa'] && $productID && common::hasPriv('execution', 'importBug') && $execution->multiple; +$hasBugButton = $features['qa'] && ($canCreateBug || $canBatchCreateBug); + +$canCreateStory = $features['story'] && $productID && common::hasPriv('story', 'create'); +$canBatchCreateStory = $features['story'] && $productID && common::hasPriv('story', 'batchCreate'); +$canLinkStory = $features['story'] && $productID && common::hasPriv('execution', 'linkStory') && !empty($execution->hasProduct); +$canLinkStoryByPlan = $features['story'] && $productID && common::hasPriv('execution', 'importplanstories') && !empty($project->hasProduct); +$hasStoryButton = $features['story'] && ($canCreateStory || $canBatchCreateStory || $canLinkStory || $canLinkStoryByPlan); + +$hasTaskButton = $canCreateTask || $canBatchCreateTask || $canImportBug; + +$createMenu = array(); +if($canCreateStory) $createMenu[] = array('text' => $lang->story->create, 'url' => helper::createLink('story', 'create', "productID=$productID&branch=0&moduleID=0&story=0&execution=$execution->id"), 'data-toggle' => 'modal'); +if($canBatchCreateStory) +{ + if(count($productNames) > 1) + { + $createMenu[] = array('text' => $lang->story->batchCreate, 'url' => '#batchCreateStory', 'data-toggle' => 'modal'); + } + else + { + $createMenu[] = array('text' => $lang->story->batchCreate, 'url' => helper::createLink('story', 'batchCreate', "productID=$productID&branch=$branchID&moduleID=0&story=0&execution=$execution->id"), 'data-toggle' => 'modal', 'data-size' => 'lg'); + } +} +if($canLinkStory) $createMenu[] = array('text' => $lang->execution->linkStory, 'url' => helper::createLink('execution', 'linkStory', "execution=$execution->id"), 'data-toggle' => 'modal'); +if($canLinkStoryByPlan) $createMenu[] = array('text' => $lang->execution->importplanstories, 'url' => "#linkStoryByPlan", 'data-toggle' => 'modal'); +if($hasStoryButton && $hasTaskButton) $createMenu[] = array('type' => 'divider'); +if($canCreateBug) $createMenu[] = array('text' => $lang->bug->create, 'url' => helper::createLink('bug', 'create', "productID=$productID&branch=0&extra=executionID=$execution->id"), 'data-toggle' => 'modal'); +if($canBatchCreateBug) +{ + if(count($productNames) > 1) + { + $createMenu[] = array('text' => $lang->bug->batchCreate, 'url' => '#batchCreateBug', 'data-toggle' => 'modal'); + } + else + { + $createMenu[] = array('text' => $lang->bug->batchCreate, 'url' => helper::createLink('bug', 'batchCreate', "productID=$productID&branch=$branchID&extra=executionID=$execution->id"), 'data-toggle' => 'modal', 'data-size' => 'lg'); + } +} +if(($hasStoryButton or $hasBugButton) and $hasTaskButton) $createMenu[] = array('type' => 'divider'); +if($canCreateTask) $createMenu[] = array('text' => $lang->task->create, 'url' => helper::createLink('task', 'create', "execution=$execution->id"), 'data-toggle' => 'modal'); +if($canImportBug) $createMenu[] = array('text' => $lang->execution->importBug, 'url' => helper::createLink('execution', 'importBug', "execution=$execution->id"), 'data-toggle' => 'modal'); +if($canImportTask) $createMenu[] = array('text' => $lang->execution->importTask, 'url' => helper::createLink('execution', 'importTask', "execution=$execution->id"), 'data-toggle' => 'modal'); +if($canBatchCreateTask) $createMenu[] = array('text' => $lang->execution->batchCreateTask, 'url' => helper::createLink('task', 'batchCreate', "execution=$execution->id"), 'data-toggle' => 'modal', 'data-size' => 'lg'); + +featureBar(); +toolbar +( + btnGroup + ( + btn + ( + set + ( + array + ( + 'class' => 'btn ghost btn-default', + 'url' => 'javascript:fullScreen();', + 'icon' => 'fullscreen' + ) + ), + $lang->kanban->fullScreen, + ), + common::hasPriv('execution', 'setKanban') ? btn + ( + set + ( + array + ( + 'class' => 'btn ghost btn-default', + 'url' => inlink('setKanban', "id=$execution->id"), + 'icon' => 'cog-outline', + 'data-toggle' => 'modal' + ) + ), + $lang->settings, + ) : null, + common::hasPriv('execution', 'edit') ? btn + ( + set + ( + array + ( + 'class' => 'btn ghost btn-default', + 'url' => inlink('edit', "id=$execution->id"), + 'icon' => 'edit', + 'data-toggle' => 'modal', + 'data-size' => 'lg' + ) + ), + $lang->edit, + ) : null, + ), + $operationMenu ? dropdown + ( + btn + ( + setClass('ghost btn square btn-default'), + set::icon('ellipsis-v'), + ), + set::caret(false), + set::items($operationMenu), + ) : null, + $createMenu ? dropdown + ( + btn + ( + setClass('primary btn square btn-default'), + set::icon('plus'), + $lang->create, + ), + set::items($createMenu), + ) : null, +); + div ( set::id('kanbanList'),