diff --git a/module/execution/css/kanban.css b/module/execution/css/kanban.css index e167b91aba..31b965666b 100644 --- a/module/execution/css/kanban.css +++ b/module/execution/css/kanban.css @@ -121,3 +121,4 @@ #kanban .kanban-affixed .kanban-header-col .title.action-dbc {pointer-events: none;} #kanban .kanban-affixed .kanban-header-col .title.action-dbc .storyColumn .text {color: #fff;} #kanban .kanban-affixed .kanban-header-col .title.action-dbc .storyColumn .caret {display: none;} +.kanban-card a[disabled] {color: #313c52;} diff --git a/module/execution/css/taskkanban.css b/module/execution/css/taskkanban.css index c9adfef160..6d02e68754 100644 --- a/module/execution/css/taskkanban.css +++ b/module/execution/css/taskkanban.css @@ -73,3 +73,4 @@ #kanbans .kanban-affixed .kanban-header-col .title.action-dbc {pointer-events: none;} #kanbans .kanban-affixed .kanban-header-col .title.action-dbc .storyColumn .text {color: #fff;} #kanbans .kanban-affixed .kanban-header-col .title.action-dbc .storyColumn .caret {display: none;} +.kanban-card a[disabled] {color: #313c52;} diff --git a/module/execution/view/testcase.html.php b/module/execution/view/testcase.html.php index 5dd81e5f50..825b61153f 100644 --- a/module/execution/view/testcase.html.php +++ b/module/execution/view/testcase.html.php @@ -13,7 +13,7 @@
- {$lang->execution->featureBar['all']['all']}", '', "class='btn btn-link btn-active-text'");?> + {$lang->execution->featureBar['all']['all']} {$pager->recTotal}", '', "class='btn btn-link btn-active-text'");?>
id", '', '', '', true), " " . $lang->testcase->create, '', "class='btn btn-primary' data-app='{$this->app->tab}'");?> diff --git a/module/kanban/js/view.js b/module/kanban/js/view.js index 6f8d39a5b8..6d4b921759 100644 --- a/module/kanban/js/view.js +++ b/module/kanban/js/view.js @@ -1446,6 +1446,7 @@ $(function() { initKanban($(this)); }); + initRegionTabs(); if(navigator.userAgent.toLowerCase().indexOf("qqbrowser") > -1) $('.region .kanban-header-col > .actions').css('top', '30%'); diff --git a/module/my/view/project.html.php b/module/my/view/project.html.php index b1eafc7518..2fc86b3206 100644 --- a/module/my/view/project.html.php +++ b/module/my/view/project.html.php @@ -36,13 +36,13 @@ idAB);?> project->name);?> + project->PM);?> project->status);?> + project->budget);?> project->begin);?> project->end);?> - project->budget);?> - project->PM);?> actions;?> @@ -53,13 +53,6 @@ createLink('project', 'index', "projectID=$project->id", '', '', $project->id), $project->name, '', "data-group='project' title='{$project->name} ({$this->lang->project->{$project->model}})'");?> - - project->statusList, $project->status, '');?> - - begin;?> - end == LONG_TIME ? $this->lang->project->longTime : $project->end;?> - app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> - budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $lang->project->future;?> PM)):?> PM);?> @@ -68,6 +61,13 @@ createLink('user', 'profile', "userID=$userID", '', true), $userName, '', "title='{$userName}' data-toggle='modal' data-type='iframe' data-width='600'");?> + + project->statusList, $project->status, '');?> + + app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?> + budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $lang->project->future;?> + begin;?> + end == LONG_TIME ? $this->lang->project->longTime : $project->end;?> status == 'wait' || $project->status == 'suspended') common::printIcon('project', 'start', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);?> status == 'doing') common::printIcon('project', 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?> diff --git a/module/product/config.php b/module/product/config.php index c42c6ce6bd..ac10fd7bfa 100644 --- a/module/product/config.php +++ b/module/product/config.php @@ -11,7 +11,7 @@ $config->product->custom->batchEditFields = 'line,PO,QD,RD'; if($config->systemMode == 'new') $config->product->custom->batchEditFields .= ',program'; $config->product->list = new stdclass(); -$config->product->list->exportFields = 'id,program,line,name,activeRequirements,changedRequirements,draftRequirements,closedRequirements,requireCompleteRate,activeStories,changedStories,draftStories,closedStories,storyCompleteRate,plans,releases,bugs,unResolvedBugs,assignToNullBugs,closedBugs,bugFixedRate'; +$config->product->list->exportFields = 'id,program,line,name,manager,draftStories,activeStories,changedStories,reviewingStories,closedStories,storyCompleteRate,bugs,unResolvedBugs,assignToNullBugs,bugFixedRate,plans,releases'; $config->product->showBranchMethod = 'browse,project'; diff --git a/module/product/control.php b/module/product/control.php index 2bd4c6fb33..66833d346f 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -1440,7 +1440,6 @@ class product extends control $productConfig = $this->config->product; /* Create field lists. */ - if(!$this->config->URAndSR) $productConfig->list->exportFields = str_replace('activeRequirements,changedRequirements,draftRequirements,closedRequirements,requireCompleteRate,', '', $productConfig->list->exportFields); $fields = $this->post->exportFields ? $this->post->exportFields : explode(',', $productConfig->list->exportFields); foreach($fields as $key => $fieldName) { @@ -1451,28 +1450,21 @@ class product extends control $lastProgram = $lastLine = ''; $lines = $this->product->getLinePairs(); + $users = $this->user->getPairs('noletter'); $productStats = $this->product->getStats('program_desc,line_desc,' . $orderBy, null, $status); foreach($productStats as $i => $product) { - $product->line = zget($lines, $product->line, ''); - if($this->config->URAndSR) - { - $product->activeRequirements = (int) $product->requirements['active']; - $product->changedRequirements = (int) $product->requirements['changing']; - $product->draftRequirements = (int) $product->requirements['draft']; - $product->closedRequirements = (int) $product->requirements['closed']; - $product->totalRequirements = $product->activeRequirements + $product->changedRequirements + $product->draftRequirements + $product->closedRequirements; - $product->requireCompleteRate = ($product->totalRequirements == 0 ? 0 : round($product->closedRequirements / $product->totalRequirements, 3) * 100) . '%'; - } + $product->line = zget($lines, $product->line, ''); + $product->manager = zget($users, $product->PO, ''); + $product->draftStories = (int)$product->stories['draft']; $product->activeStories = (int)$product->stories['active']; $product->changedStories = (int)$product->stories['changing']; - $product->draftStories = (int)$product->stories['draft']; + $product->reviewingStories = (int)$product->stories['reviewing']; $product->closedStories = (int)$product->stories['closed']; - $product->totalStories = $product->activeStories + $product->changedStories + $product->draftStories + $product->closedStories; + $product->totalStories = $product->activeStories + $product->changedStories + $product->draftStories + $product->closedStories + $product->reviewingStories; $product->storyCompleteRate = ($product->totalStories == 0 ? 0 : round($product->closedStories / $product->totalStories, 3) * 100) . '%'; $product->unResolvedBugs = (int)$product->unResolved; $product->assignToNullBugs = (int)$product->assignToNull; - $product->closedBugs = (int)$product->closedBugs; $product->bugFixedRate = (($product->unResolved + $product->fixedBugs) == 0 ? 0 : round($product->fixedBugs / ($product->unResolved + $product->fixedBugs), 3) * 100) . '%'; $product->program = $product->programName; diff --git a/module/product/lang/de.php b/module/product/lang/de.php index 913c2c6eda..0b6f2d3c81 100644 --- a/module/product/lang/de.php +++ b/module/product/lang/de.php @@ -72,6 +72,8 @@ $lang->product->changedStories = 'Geänderte [S]'; $lang->product->changedStoriesTitle = 'Changed Stories'; $lang->product->draftStories = 'Entwurf [S]'; $lang->product->draftStoriesTitle = 'Draft Stories'; +$lang->product->reviewingStories = "Reviewing [S]"; +$lang->product->reviewingStoriesTitle = "Reviewing Stories"; $lang->product->closedStories = 'Geschlossene [S]'; $lang->product->closedStoriesTitle = 'Closed Stories'; $lang->product->storyCompleteRate = "{$lang->SRCommon} Completion rate"; diff --git a/module/product/lang/en.php b/module/product/lang/en.php index bf6a91a961..6fbdd044da 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -72,6 +72,8 @@ $lang->product->changedStories = 'Changed [S]'; $lang->product->changedStoriesTitle = 'Changed Stories'; $lang->product->draftStories = 'Draft [S]'; $lang->product->draftStoriesTitle = 'Draft Stories'; +$lang->product->reviewingStories = "Reviewing [S]"; +$lang->product->reviewingStoriesTitle = "Reviewing Stories"; $lang->product->closedStories = 'Closed [S]'; $lang->product->closedStoriesTitle = 'Closed Stories'; $lang->product->storyCompleteRate = "{$lang->SRCommon} Completion rate"; diff --git a/module/product/lang/fr.php b/module/product/lang/fr.php index 6154559fac..bd7f8e0ce0 100644 --- a/module/product/lang/fr.php +++ b/module/product/lang/fr.php @@ -72,6 +72,8 @@ $lang->product->changedStories = 'Changées [S]'; $lang->product->changedStoriesTitle = 'Stories Modifiées'; $lang->product->draftStories = 'Brouillon [S]'; $lang->product->draftStoriesTitle = 'Stories en Analyse'; +$lang->product->reviewingStories = "Reviewing [S]"; +$lang->product->reviewingStoriesTitle = "Reviewing Stories"; $lang->product->closedStories = 'Fermées [S]'; $lang->product->closedStoriesTitle = 'Stories Fermées'; $lang->product->storyCompleteRate = "{$lang->SRCommon} Completion rate"; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index 6d33a54d1f..46dad4abdc 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -72,6 +72,8 @@ $lang->product->changedStories = "已变更{$lang->SRCommon}"; $lang->product->changedStoriesTitle = "已变更{$lang->SRCommon}"; $lang->product->draftStories = "草稿{$lang->SRCommon}"; $lang->product->draftStoriesTitle = "草稿{$lang->SRCommon}"; +$lang->product->reviewingStories = "评审中{$lang->SRCommon}"; +$lang->product->reviewingStoriesTitle = "评审中{$lang->SRCommon}"; $lang->product->closedStories = "已关闭{$lang->SRCommon}"; $lang->product->closedStoriesTitle = "已关闭{$lang->SRCommon}"; $lang->product->storyCompleteRate = "{$lang->SRCommon}完成率"; diff --git a/module/productplan/model.php b/module/productplan/model.php index d07ec90341..f2481a291c 100644 --- a/module/productplan/model.php +++ b/module/productplan/model.php @@ -1184,7 +1184,7 @@ class productplanModel extends model $menu .= ""; } - if(($canStart or $canFinish or $canClose or $canCreateExec) and ($canLinkStory or $canLinkBug or $canEdit or $canCreateChild or $canDelete)) + if($type == 'browse' and ($canStart or $canFinish or $canClose or $canCreateExec) and ($canLinkStory or $canLinkBug or $canEdit or $canCreateChild or $canDelete)) { $menu .= "
"; } @@ -1212,7 +1212,7 @@ class productplanModel extends model $menu .= $this->buildMenu('productplan', 'create', "product={$plan->product}&branch={$plan->branch}&parent={$plan->id}", $plan, $type, 'split', '', '', '', '', $this->lang->productplan->children); - if(($canLinkStory or $canLinkBug or $canEdit or $canCreateChild) and $canDelete) + if($type == 'browse' and ($canLinkStory or $canLinkBug or $canEdit or $canCreateChild) and $canDelete) { $menu .= "
"; } diff --git a/module/program/view/product.html.php b/module/program/view/product.html.php index 400629ea9b..1ee1d0ae63 100644 --- a/module/program/view/product.html.php +++ b/module/program/view/product.html.php @@ -52,7 +52,7 @@ product->name);?> product->manager);?> - story->story;?> + story->story;?> bug->common;?> product->plan;?> product->release;?> @@ -62,6 +62,7 @@ story->draft;?> story->activate;?> story->change;?> + story->review;?> story->completeRate;?> bug->activate;?> bug->fixedRate;?> @@ -69,10 +70,7 @@ - stories['active'] + $product->stories['closed'] + $product->stories['draft'] + $product->stories['changing']; - $totalRequirements = $product->requirements['active'] + $product->requirements['closed'] + $product->requirements['draft'] + $product->requirements['changing']; - ?> + stories['active'] + $product->stories['closed'] + $product->stories['draft'] + $product->stories['changing'] + $product->stories['reviewing'];?> @@ -96,6 +94,7 @@ stories['draft'];?> stories['active'];?> stories['changing'];?> + stories['reviewing'];?> stories['closed'] / $totalStories, 3) * 100;?>% unResolved;?> unResolved + $product->fixedBugs) == 0 ? 0 : round($product->fixedBugs / ($product->unResolved + $product->fixedBugs), 3) * 100;?>% diff --git a/module/project/control.php b/module/project/control.php index 509c7f9ced..63dbbcca00 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -63,7 +63,7 @@ class project extends control $project->PM = zget($users, $project->PM); $project->status = $this->processStatus('project', $project); $project->model = zget($projectLang->modelList, $project->model); - $project->budget = $project->budget . zget($projectLang->unitList, $project->budgetUnit); + $project->budget = $project->budget != 0 ? $project->budget . zget($projectLang->unitList, $project->budgetUnit) : $this->lang->project->future; $project->parent = $project->parentName; $linkedProducts = $this->product->getProducts($project->id, 'all', '', false);