Merge branch 'sprint/244_tianshujie_fixbug' into 'master'
Sprint/244 tianshujie fixbug See merge request easycorp/zentaopms!5633
This commit is contained in:
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php echo html::a(inlink('testcase', "executionID=$executionID&productID=$productID&branchID=$branchID&type=$type&moduleID=$moduleID&orderBy=$orderBy"), "<span class='text'>{$lang->execution->featureBar['all']['all']}</span>", '', "class='btn btn-link btn-active-text'");?>
|
||||
<?php echo html::a(inlink('testcase', "executionID=$executionID&productID=$productID&branchID=$branchID&type=$type&moduleID=$moduleID&orderBy=$orderBy"), "<span class='text'>{$lang->execution->featureBar['all']['all']}</span> <span class='label label-light label-badge'>{$pager->recTotal}</span>", '', "class='btn btn-link btn-active-text'");?>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php if(common::canModify('execution', $execution)) echo html::a(helper::createLink('testcase', 'create', "productID=$productID&branch=0&moduleID=0&from=execution¶m=$execution->id", '', '', '', true), "<i class='icon icon-plus'></i> " . $lang->testcase->create, '', "class='btn btn-primary' data-app='{$this->app->tab}'");?>
|
||||
|
||||
@@ -1446,6 +1446,7 @@ $(function()
|
||||
{
|
||||
initKanban($(this));
|
||||
});
|
||||
initRegionTabs();
|
||||
|
||||
if(navigator.userAgent.toLowerCase().indexOf("qqbrowser") > -1) $('.region .kanban-header-col > .actions').css('top', '30%');
|
||||
|
||||
|
||||
@@ -36,13 +36,13 @@
|
||||
<tr>
|
||||
<th class='c-id'><?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php common::printOrderLink('name', $orderBy, $vars, $lang->project->name);?></th>
|
||||
<th class='c-user'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->project->PM);?></th>
|
||||
<?php if($status == 'openedbyme'):?>
|
||||
<th class='c-status'><?php common::printOrderLink('status', $orderBy, $vars, $lang->project->status);?></th>
|
||||
<?php endif;?>
|
||||
<th class='text-right c-budget'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->project->budget);?></th>
|
||||
<th class='c-date c-begin'><?php common::printOrderLink('begin', $orderBy, $vars, $lang->project->begin);?></th>
|
||||
<th class='c-date c-end'><?php common::printOrderLink('end', $orderBy, $vars, $lang->project->end);?></th>
|
||||
<th class='text-right c-budget'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->project->budget);?></th>
|
||||
<th class='c-user'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->project->PM);?></th>
|
||||
<th class='text-center c-actions-6'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -53,13 +53,6 @@
|
||||
<td class='c-name text-left' title='<?php echo $project->name?>'>
|
||||
<?php echo html::a($this->createLink('project', 'index', "projectID=$project->id", '', '', $project->id), $project->name, '', "data-group='project' title='{$project->name} ({$this->lang->project->{$project->model}})'");?>
|
||||
</td>
|
||||
<?php if($status == 'openedbyme'):?>
|
||||
<td class='c-status'><span class="status-project status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status, '');?></span></td>
|
||||
<?php endif;?>
|
||||
<td class='text-left'><?php echo $project->begin;?></td>
|
||||
<td class='text-left'><?php echo $project->end == LONG_TIME ? $this->lang->project->longTime : $project->end;?></td>
|
||||
<?php $projectBudget = in_array($this->app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?>
|
||||
<td class='text-right c-budget'><?php echo $project->budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $lang->project->future;?></td>
|
||||
<td class='c-manager'>
|
||||
<?php if(!empty($project->PM)):?>
|
||||
<?php $userName = zget($users, $project->PM);?>
|
||||
@@ -68,6 +61,13 @@
|
||||
<?php echo html::a($this->createLink('user', 'profile', "userID=$userID", '', true), $userName, '', "title='{$userName}' data-toggle='modal' data-type='iframe' data-width='600'");?>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<?php if($status == 'openedbyme'):?>
|
||||
<td class='c-status'><span class="status-project status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status, '');?></span></td>
|
||||
<?php endif;?>
|
||||
<?php $projectBudget = in_array($this->app->getClientLang(), array('zh-cn','zh-tw')) ? round((float)$project->budget / 10000, 2) . $this->lang->project->tenThousand : round((float)$project->budget, 2);?>
|
||||
<td class='text-right c-budget'><?php echo $project->budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $lang->project->future;?></td>
|
||||
<td class='text-left'><?php echo $project->begin;?></td>
|
||||
<td class='text-left'><?php echo $project->end == LONG_TIME ? $this->lang->project->longTime : $project->end;?></td>
|
||||
<td class='c-actions'>
|
||||
<?php if($project->status == 'wait' || $project->status == 'suspended') common::printIcon('project', 'start', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);?>
|
||||
<?php if($project->status == 'doing') common::printIcon('project', 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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}完成率";
|
||||
|
||||
@@ -1184,7 +1184,7 @@ class productplanModel extends model
|
||||
$menu .= "<button type='button' class='btn disabled'><i class='icon-plus' title='{$this->lang->productplan->createExecution}'></i></button>";
|
||||
}
|
||||
|
||||
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 .= "<div class='dividing-line'></div>";
|
||||
}
|
||||
@@ -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 .= "<div class='dividing-line'></div>";
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
</th>
|
||||
<th rowspan="2"><?php common::printOrderLink('name', $orderBy, $vars, $lang->product->name);?></th>
|
||||
<th class='c-PO' rowspan="2"><?php common::printOrderLink('PO', $orderBy, $vars, $lang->product->manager);?></th>
|
||||
<th class='c-story' colspan="4"><?php echo $lang->story->story;?></th>
|
||||
<th class='c-story' colspan="5"><?php echo $lang->story->story;?></th>
|
||||
<th class='c-bug' colspan="2"><?php echo $lang->bug->common;?></th>
|
||||
<th class='c-plan' rowspan="2"><?php echo $lang->product->plan;?></th>
|
||||
<th class='c-release' rowspan="2"><?php echo $lang->product->release;?></th>
|
||||
@@ -62,6 +62,7 @@
|
||||
<th style="border-left: 1px solid #ddd;"><?php echo $lang->story->draft;?></th>
|
||||
<th><?php echo $lang->story->activate;?></th>
|
||||
<th><?php echo $lang->story->change;?></th>
|
||||
<th><?php echo $lang->story->review;?></th>
|
||||
<th><?php echo $lang->story->completeRate;?></th>
|
||||
<th style="border-left: 1px solid #ddd;"><?php echo $lang->bug->activate;?></th>
|
||||
<th><?php echo $lang->bug->fixedRate;?></th>
|
||||
@@ -69,10 +70,7 @@
|
||||
</thead>
|
||||
<tbody class="sortable" id="productTableList">
|
||||
<?php foreach($products as $product):?>
|
||||
<?php
|
||||
$totalStories = $product->stories['active'] + $product->stories['closed'] + $product->stories['draft'] + $product->stories['changing'];
|
||||
$totalRequirements = $product->requirements['active'] + $product->requirements['closed'] + $product->requirements['draft'] + $product->requirements['changing'];
|
||||
?>
|
||||
<?php $totalStories = $product->stories['active'] + $product->stories['closed'] + $product->stories['draft'] + $product->stories['changing'] + $product->stories['reviewing'];?>
|
||||
<tr class="text-center" data-id='<?php echo $product->id ?>' data-order='<?php echo $product->code;?>'>
|
||||
<td class='c-id text-left'>
|
||||
<?php if($canBatchEdit):?>
|
||||
@@ -96,6 +94,7 @@
|
||||
<td><?php echo $product->stories['draft'];?></td>
|
||||
<td><?php echo $product->stories['active'];?></td>
|
||||
<td><?php echo $product->stories['changing'];?></td>
|
||||
<td><?php echo $product->stories['reviewing'];?></td>
|
||||
<td><?php echo $totalStories == 0 ? 0 : round($product->stories['closed'] / $totalStories, 3) * 100;?>%</td>
|
||||
<td><?php echo $product->unResolved;?></td>
|
||||
<td><?php echo ($product->unResolved + $product->fixedBugs) == 0 ? 0 : round($product->fixedBugs / ($product->unResolved + $product->fixedBugs), 3) * 100;?>%</td>
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user