Merge branch 'master' into 'sprint/247_tianshujie_table'
# Conflicts: # module/my/view/task.html.php # www/theme/default/style.css
This commit is contained in:
+72
-72
@@ -24,7 +24,7 @@ $config->bug->list->allFields = 'id, module, execution, story, task,
|
||||
lastEditedBy,
|
||||
lastEditedDate';
|
||||
|
||||
$config->bug->list->defaultFields = 'id,severity,pri,title,openedBy,assignedTo,resolvedBy,resolution';
|
||||
$config->bug->list->defaultFields = 'id,title,severity,pri,openedBy,assignedTo,resolvedBy,resolution';
|
||||
|
||||
$config->bug->exportFields = 'id, product, branch, module, project, execution, story, task,
|
||||
title, keywords, severity, pri, type, os, browser,
|
||||
@@ -159,7 +159,7 @@ $config->bug->search['params']['deadline'] = array('operator' => '=',
|
||||
$config->bug->search['params']['activatedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
|
||||
$config->bug->datatable = new stdclass();
|
||||
$config->bug->datatable->defaultField = array('id', 'severity', 'pri', 'confirmed', 'title', 'status', 'openedBy', 'openedDate', 'assignedTo', 'resolution', 'actions');
|
||||
$config->bug->datatable->defaultField = array('id', 'title', 'severity', 'pri', 'status', 'openedBy', 'openedDate', 'confirmed', 'assignedTo', 'resolution', 'actions');
|
||||
|
||||
$config->bug->datatable->fieldList['id']['title'] = 'idAB';
|
||||
$config->bug->datatable->fieldList['id']['fixed'] = 'left';
|
||||
@@ -174,6 +174,12 @@ $config->bug->datatable->fieldList['module']['control'] = 'select';
|
||||
$config->bug->datatable->fieldList['module']['title'] = 'module';
|
||||
$config->bug->datatable->fieldList['module']['dataSource'] = array('module' => 'tree', 'method' => 'getOptionMenu', 'params' => '$productID&bug');
|
||||
|
||||
$config->bug->datatable->fieldList['title']['title'] = 'title';
|
||||
$config->bug->datatable->fieldList['title']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['title']['width'] = 'auto';
|
||||
$config->bug->datatable->fieldList['title']['required'] = 'yes';
|
||||
$config->bug->datatable->fieldList['title']['minWidth'] = '200';
|
||||
|
||||
$config->bug->datatable->fieldList['severity']['title'] = 'severityAB';
|
||||
$config->bug->datatable->fieldList['severity']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['severity']['width'] = '50';
|
||||
@@ -186,16 +192,10 @@ $config->bug->datatable->fieldList['pri']['width'] = '50';
|
||||
$config->bug->datatable->fieldList['pri']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['pri']['name'] = $lang->bug->pri;
|
||||
|
||||
$config->bug->datatable->fieldList['confirmed']['title'] = 'confirmedAB';
|
||||
$config->bug->datatable->fieldList['confirmed']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['confirmed']['width'] = '100';
|
||||
$config->bug->datatable->fieldList['confirmed']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['title']['title'] = 'title';
|
||||
$config->bug->datatable->fieldList['title']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['title']['width'] = 'auto';
|
||||
$config->bug->datatable->fieldList['title']['required'] = 'yes';
|
||||
$config->bug->datatable->fieldList['title']['minWidth'] = '200';
|
||||
$config->bug->datatable->fieldList['status']['title'] = 'statusAB';
|
||||
$config->bug->datatable->fieldList['status']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['status']['width'] = '80';
|
||||
$config->bug->datatable->fieldList['status']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['branch']['title'] = 'branch';
|
||||
$config->bug->datatable->fieldList['branch']['fixed'] = 'left';
|
||||
@@ -230,10 +230,66 @@ $config->bug->datatable->fieldList['plan']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['plan']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['plan']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['status']['title'] = 'statusAB';
|
||||
$config->bug->datatable->fieldList['status']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['status']['width'] = '80';
|
||||
$config->bug->datatable->fieldList['status']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedBy']['title'] = 'openedByAB';
|
||||
$config->bug->datatable->fieldList['openedBy']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedBy']['width'] = '80';
|
||||
$config->bug->datatable->fieldList['openedBy']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['openedDate']['title'] = 'openedDateAB';
|
||||
$config->bug->datatable->fieldList['openedDate']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedDate']['width'] = '90';
|
||||
$config->bug->datatable->fieldList['openedDate']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['openedBuild']['title'] = 'openedBuild';
|
||||
$config->bug->datatable->fieldList['openedBuild']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedBuild']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['openedBuild']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedBuild']['control'] = 'multiple';
|
||||
$config->bug->datatable->fieldList['openedBuild']['dataSource'] = array('module' => 'build', 'method' =>'getBuildPairs', 'params' => '$productID&$branch&noempty,noterminate,nodone,withbranch');
|
||||
|
||||
$config->bug->datatable->fieldList['confirmed']['title'] = 'confirmedAB';
|
||||
$config->bug->datatable->fieldList['confirmed']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['confirmed']['width'] = '100';
|
||||
$config->bug->datatable->fieldList['confirmed']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['assignedTo']['title'] = 'assignedToAB';
|
||||
$config->bug->datatable->fieldList['assignedTo']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['assignedTo']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['assignedTo']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['assignedTo']['dataSource'] = array('module' => 'user', 'method' =>'getPairs', 'params' => 'noclosed|noletter');
|
||||
|
||||
$config->bug->datatable->fieldList['assignedDate']['title'] = 'assignedDate';
|
||||
$config->bug->datatable->fieldList['assignedDate']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['assignedDate']['width'] = '90';
|
||||
$config->bug->datatable->fieldList['assignedDate']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['deadline']['title'] = 'deadline';
|
||||
$config->bug->datatable->fieldList['deadline']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['deadline']['width'] = '90';
|
||||
$config->bug->datatable->fieldList['deadline']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['deadline']['control'] = 'date';
|
||||
|
||||
$config->bug->datatable->fieldList['resolvedBy']['title'] = 'resolvedBy';
|
||||
$config->bug->datatable->fieldList['resolvedBy']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedBy']['width'] = '100';
|
||||
$config->bug->datatable->fieldList['resolvedBy']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['resolution']['title'] = 'resolutionAB';
|
||||
$config->bug->datatable->fieldList['resolution']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolution']['width'] = '110';
|
||||
$config->bug->datatable->fieldList['resolution']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['resolvedDate']['title'] = 'resolvedDateAB';
|
||||
$config->bug->datatable->fieldList['resolvedDate']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedDate']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['resolvedDate']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['title'] = 'resolvedBuild';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['control'] = 'select';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['dataSource'] = array('module' => 'bug', 'method' =>'getRelatedObjects', 'params' => 'resolvedBuild&id,name');
|
||||
|
||||
$config->bug->datatable->fieldList['activatedCount']['title'] = 'activatedCountAB';
|
||||
$config->bug->datatable->fieldList['activatedCount']['fixed'] = 'no';
|
||||
@@ -283,62 +339,6 @@ $config->bug->datatable->fieldList['mailto']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['mailto']['width'] = '100';
|
||||
$config->bug->datatable->fieldList['mailto']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['openedBy']['title'] = 'openedByAB';
|
||||
$config->bug->datatable->fieldList['openedBy']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedBy']['width'] = '80';
|
||||
$config->bug->datatable->fieldList['openedBy']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['openedDate']['title'] = 'openedDateAB';
|
||||
$config->bug->datatable->fieldList['openedDate']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedDate']['width'] = '90';
|
||||
$config->bug->datatable->fieldList['openedDate']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['openedBuild']['title'] = 'openedBuild';
|
||||
$config->bug->datatable->fieldList['openedBuild']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedBuild']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['openedBuild']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['openedBuild']['control'] = 'multiple';
|
||||
$config->bug->datatable->fieldList['openedBuild']['dataSource'] = array('module' => 'build', 'method' =>'getBuildPairs', 'params' => '$productID&$branch&noempty,noterminate,nodone,withbranch');
|
||||
|
||||
$config->bug->datatable->fieldList['assignedTo']['title'] = 'assignedToAB';
|
||||
$config->bug->datatable->fieldList['assignedTo']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['assignedTo']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['assignedTo']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['assignedTo']['dataSource'] = array('module' => 'user', 'method' =>'getPairs', 'params' => 'noclosed|noletter');
|
||||
|
||||
$config->bug->datatable->fieldList['assignedDate']['title'] = 'assignedDate';
|
||||
$config->bug->datatable->fieldList['assignedDate']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['assignedDate']['width'] = '90';
|
||||
$config->bug->datatable->fieldList['assignedDate']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['deadline']['title'] = 'deadline';
|
||||
$config->bug->datatable->fieldList['deadline']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['deadline']['width'] = '90';
|
||||
$config->bug->datatable->fieldList['deadline']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['deadline']['control'] = 'date';
|
||||
|
||||
$config->bug->datatable->fieldList['resolvedBy']['title'] = 'resolvedByAB';
|
||||
$config->bug->datatable->fieldList['resolvedBy']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedBy']['width'] = '100';
|
||||
$config->bug->datatable->fieldList['resolvedBy']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['resolution']['title'] = 'resolutionAB';
|
||||
$config->bug->datatable->fieldList['resolution']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolution']['width'] = '110';
|
||||
$config->bug->datatable->fieldList['resolution']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['resolvedDate']['title'] = 'resolvedDateAB';
|
||||
$config->bug->datatable->fieldList['resolvedDate']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedDate']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['resolvedDate']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['title'] = 'resolvedBuild';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['control'] = 'select';
|
||||
$config->bug->datatable->fieldList['resolvedBuild']['dataSource'] = array('module' => 'bug', 'method' =>'getRelatedObjects', 'params' => 'resolvedBuild&id,name');
|
||||
|
||||
$config->bug->datatable->fieldList['closedBy']['title'] = 'closedBy';
|
||||
$config->bug->datatable->fieldList['closedBy']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['closedBy']['width'] = '80';
|
||||
|
||||
@@ -146,7 +146,7 @@ $lang->workingHour = '工时';
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = '状态';
|
||||
$lang->openedByAB = '创建';
|
||||
$lang->openedByAB = '创建者';
|
||||
$lang->assignedToAB = '指派';
|
||||
$lang->typeAB = '类型';
|
||||
$lang->nameAB = '名称';
|
||||
|
||||
@@ -136,7 +136,7 @@ $lang->workingHour = '工時';
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = '狀態';
|
||||
$lang->openedByAB = '創建';
|
||||
$lang->openedByAB = '創建者';
|
||||
$lang->assignedToAB = '指派';
|
||||
$lang->typeAB = '類型';
|
||||
$lang->nameAB = '名稱';
|
||||
|
||||
@@ -177,11 +177,11 @@ $config->execution->gantt->linkType['begin']['end'] = 3;
|
||||
$config->execution->datatable = new stdclass();
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$config->execution->datatable->defaultField = array('id', 'name', 'project', 'PM', 'status', 'progress', 'begin', 'end', 'estimate', 'consumed', 'left', 'burn');
|
||||
$config->execution->datatable->defaultField = array('id', 'name', 'project', 'status', 'PM', 'begin', 'end', 'estimate', 'consumed', 'left', 'progress', 'burn');
|
||||
}
|
||||
else
|
||||
{
|
||||
$config->execution->datatable->defaultField = array('id', 'name', 'PM', 'status', 'progress', 'begin', 'end', 'estimate', 'consumed', 'left', 'burn');
|
||||
$config->execution->datatable->defaultField = array('id', 'name', 'status', 'PM', 'begin', 'end', 'estimate', 'consumed', 'left', 'progress', 'burn');
|
||||
}
|
||||
|
||||
$config->execution->datatable->fieldList['id']['title'] = 'idAB';
|
||||
|
||||
@@ -38,3 +38,7 @@ canvas {height: 28px;}
|
||||
#datatable-executionList .table-child-bottom.table-child-top > .c-name.flex {border-bottom: 2px solid #cbd0db !important;}
|
||||
#datatable-executionList .parent.has-child.c-name.flex {border-bottom: 1px solid #cbd0db !important;}
|
||||
#datatable-executionList tr:last-child .c-name.flex {margin-top: 1px !important;}
|
||||
|
||||
.table thead .c-estimate.text-right,
|
||||
.table thead .c-consumed.text-right,
|
||||
.table thead .c-left.text-right {padding-right: 8px;}
|
||||
|
||||
@@ -13,7 +13,7 @@ $(function()
|
||||
|
||||
adjustTableFooter();
|
||||
$('body').on('click', '#toggleFold', adjustTableFooter);
|
||||
$('body').on('click', '.icon.icon-angle-double-right', adjustTableFooter);
|
||||
$('body').on('click', '.icon.icon-angle-right', adjustTableFooter);
|
||||
|
||||
/* The display of the adjusting sidebarHeader is synchronized with the sidebar. */
|
||||
$(".sidebar-toggle").click(function()
|
||||
|
||||
@@ -419,7 +419,7 @@ $lang->execution->storyDragError = "The {$lang->SRCommon} is not ac
|
||||
$lang->execution->countTip = ' (%s member)';
|
||||
$lang->execution->pleaseInput = "Enter";
|
||||
$lang->execution->week = 'week';
|
||||
$lang->execution->checkedExecutions = 'Seleted %s executions.';
|
||||
$lang->execution->checkedExecutions = "Seleted %s {$lang->executionCommon}.";
|
||||
|
||||
/* Statistics. */
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -342,8 +342,8 @@ $lang->execution->stats = 'Available: <strong>%s</strong>(h). Est
|
||||
$lang->execution->taskSummary = "Total tasks on this page:<strong>%s</strong>. Waiting: <strong>%s</strong>. Doing: <strong>%s</strong>. Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).";
|
||||
$lang->execution->pageSummary = "Total tasks: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>. Estimates: <strong>%estimate%</strong>(h). Cost: <strong>%consumed%</strong>(h). Left: <strong>%left%</strong>(h).";
|
||||
$lang->execution->checkedSummary = "Selected: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>. Estimates: <strong>%estimate%</strong>(h). Cost: <strong>%consumed%</strong>(h). Left: <strong>%left%</strong>(h).";
|
||||
$lang->execution->executionSummary = "Total executions: <strong>%s</strong>.";
|
||||
$lang->execution->pageExecSummary = "Total executions: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>.";
|
||||
$lang->execution->executionSummary = "Total {$lang->executionCommon}: <strong>%s</strong>.";
|
||||
$lang->execution->pageExecSummary = "Total {$lang->executionCommon}: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>.";
|
||||
$lang->execution->checkedExecSummary = "Selected: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>.";
|
||||
$lang->execution->memberHoursAB = "%s has <strong>%s</ strong> hours.";
|
||||
$lang->execution->memberHours = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">%s Available Hours</div><div class="segment-value">%s</div></div></div></div>';
|
||||
@@ -419,7 +419,7 @@ $lang->execution->storyDragError = "The {$lang->SRCommon} is not ac
|
||||
$lang->execution->countTip = ' (%s member)';
|
||||
$lang->execution->pleaseInput = "Enter";
|
||||
$lang->execution->week = 'week';
|
||||
$lang->execution->checkedExecutions = 'Seleted %s executions.';
|
||||
$lang->execution->checkedExecutions = "Seleted %s {$lang->executionCommon}.";
|
||||
|
||||
/* Statistics. */
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -419,7 +419,7 @@ $lang->execution->storyDragError = "该{$lang->SRCommon}不是激
|
||||
$lang->execution->countTip = '(%s人)';
|
||||
$lang->execution->pleaseInput = "请输入";
|
||||
$lang->execution->week = '周';
|
||||
$lang->execution->checkedExecutions = "共选中%s个{$lang->execution->common}。";
|
||||
$lang->execution->checkedExecutions = "共选中%s个{$lang->executionCommon}。";
|
||||
|
||||
/* 统计。*/
|
||||
$lang->execution->charts = new stdclass();
|
||||
|
||||
@@ -4603,7 +4603,7 @@ class executionModel extends model
|
||||
|
||||
$burns = join(',', $execution->burns);
|
||||
echo "<tr $trAttrs class='$trClass'>";
|
||||
echo "<td><span id=$execution->id class='table-nest-icon icon table-nest-toggle'></span>";
|
||||
echo "<td class='c-name text-left flex sort-handler'><span id=$execution->id class='table-nest-icon icon table-nest-toggle'></span>";
|
||||
if($this->config->systemMode == 'new')
|
||||
{
|
||||
$spanClass = $execution->type == 'stage' ? 'label-warning' : 'label-info';
|
||||
@@ -4636,9 +4636,9 @@ class executionModel extends model
|
||||
echo '<td>' . html::ring($execution->hours->progress) . '</td>';
|
||||
echo helper::isZeroDate($execution->begin) ? '<td class="c-date"></td>' : '<td class="c-date">' . $execution->begin . '</td>';
|
||||
echo helper::isZeroDate($execution->end) ? '<td class="c-date"></td>' : '<td class="c-date">' . $execution->end . '</td>';
|
||||
echo "<td class='hours' title='{$execution->hours->totalEstimate}{$this->lang->execution->workHour}'>" . $execution->hours->totalEstimate . $this->lang->execution->workHourUnit . '</td>';
|
||||
echo "<td class='hours' title='{$execution->hours->totalConsumed}{$this->lang->execution->workHour}'>" . $execution->hours->totalConsumed . $this->lang->execution->workHourUnit . '</td>';
|
||||
echo "<td class='hours' title='{$execution->hours->totalLeft}{$this->lang->execution->workHour}'>" . $execution->hours->totalLeft . $this->lang->execution->workHourUnit . '</td>';
|
||||
echo "<td class='hours text-right' title='{$execution->hours->totalEstimate}{$this->lang->execution->workHour}'>" . $execution->hours->totalEstimate . $this->lang->execution->workHourUnit . '</td>';
|
||||
echo "<td class='hours text-right' title='{$execution->hours->totalConsumed}{$this->lang->execution->workHour}'>" . $execution->hours->totalConsumed . $this->lang->execution->workHourUnit . '</td>';
|
||||
echo "<td class='hours text-right' title='{$execution->hours->totalLeft}{$this->lang->execution->workHour}'>" . $execution->hours->totalLeft . $this->lang->execution->workHourUnit . '</td>';
|
||||
echo "<td id='spark-{$execution->id}' class='sparkline text-left no-padding' values='$burns'></td>";
|
||||
echo '<td class="c-actions">';
|
||||
common::printIcon('execution', 'start', "executionID={$execution->id}", $execution, 'list', '', '', 'iframe', true);
|
||||
@@ -4898,7 +4898,7 @@ class executionModel extends model
|
||||
if(isset($execution->delay)) echo "<span class='label label-danger label-badge'>{$this->lang->execution->delayed}</span> ";
|
||||
if(!empty($execution->children))
|
||||
{
|
||||
echo "<a class='plan-toggle' data-id='$execution->id'><i class='icon icon-angle-double-right'></i></a>";
|
||||
echo "<a class='plan-toggle' data-id='$execution->id'><i class='icon icon-angle-right'></i></a>";
|
||||
}
|
||||
break;
|
||||
case 'code':
|
||||
|
||||
@@ -16,13 +16,17 @@
|
||||
$datatableId = $this->moduleName . ucfirst($this->methodName);
|
||||
$useDatatable = (isset($config->datatable->$datatableId->mode) and $config->datatable->$datatableId->mode == 'datatable');
|
||||
?>
|
||||
<?php js::set('unfoldExecutions', array());?>
|
||||
<?php js::set('useDatatable', $useDatatable);?>
|
||||
<?php js::set('from', $from);?>
|
||||
<?php js::set('checkedSummary', $lang->execution->checkedExecSummary);?>
|
||||
<?php js::set('pageSummary', $lang->execution->pageExecSummary);?>
|
||||
<?php js::set('executionSummary', $lang->execution->executionSummary);?>
|
||||
<?php js::set('checkedExecutions', $lang->execution->checkedExecutions);?>
|
||||
<?php
|
||||
js::set('unfoldExecutions', array());
|
||||
js::set('useDatatable', $useDatatable);
|
||||
js::set('from', $from);
|
||||
|
||||
/* Replace Iteration to Execution. */
|
||||
js::set('checkedSummary', str_replace($lang->executionCommon, $lang->execution->common, $lang->execution->checkedExecSummary));
|
||||
js::set('pageSummary', str_replace($lang->executionCommon, $lang->execution->common, $lang->execution->pageExecSummary));
|
||||
js::set('executionSummary', str_replace($lang->executionCommon, $lang->execution->common, $lang->execution->executionSummary));
|
||||
js::set('checkedExecutions', str_replace($lang->executionCommon, $lang->execution->common, $lang->execution->checkedExecutions));
|
||||
?>
|
||||
<?php
|
||||
/* Set unfold parent executionID. */
|
||||
js::set('unfoldAll', $lang->execution->treeLevel['all']);
|
||||
|
||||
@@ -256,6 +256,11 @@ class misc extends control
|
||||
$condition = "owner={$account}&module={$objectType}§ion=task&key=unfoldTasks";
|
||||
$settingPath = $account . ".{$objectType}.task.unfoldTasks";
|
||||
}
|
||||
elseif($objectType == 'productplan')
|
||||
{
|
||||
$condition = "owner={$account}&module={$objectType}§ion=browse&key=unfoldPlans";
|
||||
$settingPath = $account . ".{$objectType}.browse.unfoldPlans";
|
||||
}
|
||||
else
|
||||
{
|
||||
$condition = "owner={$account}&module=product§ion=browse&key=unfoldStories";
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
.c-hours, .c-progress {width: 80px !important;}
|
||||
.c-status, .c-date {padding-right: 8px !important; text-align: center;}
|
||||
.align-right {text-align: right; padding-right: 8px !important;}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
.table td.has-child > .task-toggle:hover {color: #006af1; cursor: pointer;}
|
||||
.table td.has-child > .task-toggle > .icon {font-size: 16px; display: inline-block; transition: transform .2s; -ms-transform: rotate(-90deg); -moz-transform: rotate(-90deg); -o-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); transform: rotate(-90deg);}
|
||||
.table td.has-child > .task-toggle > .icon:before {text-align: left;}
|
||||
.table td.has-child > .task-toggle.collapsed {top: 2px;}
|
||||
.table td.has-child > .task-toggle.collapsed {top: 0;}
|
||||
.table td.has-child > .task-toggle.collapsed > .icon {-ms-transform: rotate(90deg); -moz-transform: rotate(90deg); -o-transform: rotate(90deg); -webkit-transform: rotate(90deg); transform: rotate(90deg);}
|
||||
.table td.c-hours {padding-right: 12px;}
|
||||
.main-table tbody > tr.table-children > td:first-child::before {width: 3px;}
|
||||
|
||||
@@ -10,7 +10,7 @@ $(function()
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
toggleFold('#myTaskForm', [], 0, 'my');
|
||||
$('#taskTable td.has-child .task-toggle').each(function()
|
||||
{
|
||||
var $td = $(this).closest('td');
|
||||
|
||||
@@ -34,16 +34,13 @@
|
||||
<tr class='text-left'>
|
||||
<th class='c-id'><?php echo $lang->idAB;?></th>
|
||||
<th class='c-name text-left'><?php echo $lang->my->name;?></th>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<th class='c-name text-left'><?php echo $lang->my->projects;?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-date'><?php echo $lang->execution->begin;?></th>
|
||||
<th class='c-date'><?php echo $lang->execution->end;?></th>
|
||||
<th class='c-status'><?php echo $lang->statusAB;?></th>
|
||||
<th class='c-user' title='<?php echo $lang->team->roleAB;?>'><?php echo $lang->team->roleAB;?></th>
|
||||
<th class='c-date'><?php echo $lang->team->join;?></th>
|
||||
<th class='c-hours'><?php echo $lang->my->hours;?></th>
|
||||
<th class='c-user text-center'><?php echo $lang->execution->myTask;?></th>
|
||||
<th class='c-date'><?php echo $lang->execution->begin;?></th>
|
||||
<th class='c-date'><?php echo $lang->execution->end;?></th>
|
||||
<th class='c-date'><?php echo $lang->team->join;?></th>
|
||||
<th class='c-hours align-right'><?php echo $lang->my->hours;?></th>
|
||||
<th class='c-progress'><?php echo $lang->execution->progress;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -62,13 +59,6 @@
|
||||
<?php endif;?>
|
||||
<?php echo html::a($link, $execution->name, '', "title='$execution->name'");?>
|
||||
</td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<td class='c-name text-left'>
|
||||
<?php echo isset($execution->projectName) ? html::a($this->createLink('project', 'index', "id=$execution->project", '', '', $execution->project), $execution->projectName, '', "title='$execution->projectName'") : '';?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
<td class='c-date'><?php echo $execution->begin;?></td>
|
||||
<td class='c-date'><?php echo $execution->end;?></td>
|
||||
<td class="c-status">
|
||||
<?php if(isset($execution->delay)):?>
|
||||
<span class="status-project status-delayed" title='<?php echo $lang->execution->delayed;?>'><?php echo $lang->execution->delayed;?></span>
|
||||
@@ -78,9 +68,11 @@
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<td><?php echo $execution->role;?></td>
|
||||
<td class='c-date'><?php echo $execution->join;?></td>
|
||||
<td><?php echo $execution->hours;?></td>
|
||||
<td class="text-center"><?php echo $execution->assignedToMeTasks;?></td>
|
||||
<td class='c-date'><?php echo $execution->begin;?></td>
|
||||
<td class='c-date'><?php echo $execution->end;?></td>
|
||||
<td class='c-date'><?php echo $execution->join;?></td>
|
||||
<td class="text-right"><?php echo $execution->hours;?></td>
|
||||
<td>
|
||||
<div class='progress-pie' data-doughnut-size='90' data-color='#3CB371' data-value='<?php echo $execution->progress;?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
||||
<div class='progress-info'><?php echo $execution->progress;?></div>
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
</td>
|
||||
<td class='c-name nobr <?php if(!empty($story->children)) echo "has-child" ?>' title='<?php echo $story->title;?>'>
|
||||
<?php echo common::hasPriv('story', 'view') ? html::a($storyLink, $story->title, null, "style='color: $story->color' data-group='product'") : $story->title;?>
|
||||
<?php if(!empty($story->children)) echo '<a class="story-toggle" data-id="' . $story->id . '"><i class="icon icon-angle-double-right"></i></a>';;?>
|
||||
<?php if(!empty($story->children)) echo '<a class="story-toggle" data-id="' . $story->id . '"><i class="icon icon-angle-right"></i></a>';;?>
|
||||
</td>
|
||||
<td class='c-pri'><span class='label-pri <?php echo 'label-pri-' . $story->pri;?>' title='<?php echo zget($lang->story->priList, $story->pri, $story->pri);?>'><?php echo zget($lang->story->priList, $story->pri, $story->pri);?></span></td>
|
||||
<td class='c-status'><span class='status-story status-<?php echo $story->status;?>'><?php echo $this->processStatus('story', $story);?></span></td>
|
||||
|
||||
@@ -119,7 +119,12 @@
|
||||
echo html::a($this->createLink('task', 'view', "taskID=$task->id", '', $onlybody, $task->project), $task->name, null, "class='$class' data-width='80%' style='color: $task->color'");
|
||||
}
|
||||
?>
|
||||
<?php if(!empty($task->children)) echo '<a class="task-toggle" data-id="' . $task->id . '"><i class="icon icon-angle-double-right"></i></a>';?>
|
||||
<?php if(!empty($task->children)) echo '<a class="task-toggle" data-id="' . $task->id . '"><i class="icon icon-angle-right"></i></a>';?>
|
||||
</td>
|
||||
<td class="c-pri"><span class='label-pri <?php echo 'label-pri-' . $task->pri;?>' title='<?php echo zget($lang->task->priList, $task->pri);?>'><?php echo zget($lang->task->priList, $task->pri);?></span></td>
|
||||
<td class='c-status'>
|
||||
<?php $storyChanged = (!empty($task->storyStatus) and $task->storyStatus == 'active' and $task->latestStoryVersion > $task->storyVersion and !in_array($task->status, array('cancel', 'closed')));?>
|
||||
<?php $storyChanged ? print("<span class='status-story status-changed'>{$this->lang->my->storyChanged}</span>") : print("<span class='status-task status-{$task->status}'> " . $this->processStatus('task', $task) . "</span>");?>
|
||||
</td>
|
||||
<td class="c-pri"><span class='label-pri <?php echo 'label-pri-' . $task->pri;?>' title='<?php echo zget($lang->task->priList, $task->pri);?>'><?php echo zget($lang->task->priList, $task->pri);?></span></td>
|
||||
<td class='c-status'>
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
<tr>
|
||||
<th class='c-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th> <?php common::printOrderLink('name', $orderBy, $vars, $lang->testtask->name);?></th>
|
||||
<th class='c-execution'><?php common::printOrderLink('execution', $orderBy, $vars, $lang->testtask->execution);?></th>
|
||||
<th class='c-build'> <?php common::printOrderLink('build', $orderBy, $vars, $lang->testtask->build);?></th>
|
||||
<th class='c-execution'><?php common::printOrderLink('execution', $orderBy, $vars, $lang->testtask->execution);?></th>
|
||||
<th class='c-status'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
<th class='c-date'> <?php common::printOrderLink('begin', $orderBy, $vars, $lang->testtask->begin);?></th>
|
||||
<th class='c-date'> <?php common::printOrderLink('end', $orderBy, $vars, $lang->testtask->end);?></th>
|
||||
<th class='c-status'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
<th class='c-actions-6 text-center'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -48,11 +48,11 @@
|
||||
<tr>
|
||||
<td class="c-id"><?php printf('%03d', $task->id);?></td>
|
||||
<td class='text-left nobr' title='<?php echo $task->name;?>'><?php echo html::a($this->createLink('testtask', 'view', "taskID=$task->id"), $task->name);?></td>
|
||||
<td class='nobr' title='<?php echo $task->executionName;?>'><?php echo $task->executionName;?></td>
|
||||
<td class='nobr' title='<?php echo $task->build == 'trunk' ? $lang->trunk : $task->buildName;?>'><?php $task->build == 'trunk' ? print($lang->trunk) : print(html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName));?></td>
|
||||
<td class='nobr' title='<?php echo $task->executionName;?>'><?php echo $task->executionName;?></td>
|
||||
<td title='<?php echo $this->processStatus('testtask', $task);?>'><span class="status-task status-<?php echo $task->status?>"><?php echo $this->processStatus('testtask', $task);?></span></td>
|
||||
<td><?php echo $task->begin?></td>
|
||||
<td><?php echo $task->end?></td>
|
||||
<td title='<?php echo $this->processStatus('testtask', $task);?>'><span class="status-task status-<?php echo $task->status?>"><?php echo $this->processStatus('testtask', $task);?></span></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
common::printIcon('testtask', 'cases', "taskID=$task->id", $task, 'list', 'sitemap', '', '', '', "data-app='qa'");
|
||||
|
||||
@@ -37,10 +37,10 @@ js::set('deptID', $deptID);
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="c-id"><?php echo $lang->idAB;?></th>
|
||||
<th class="c-department"><?php echo $lang->personnel->department;?></th>
|
||||
<th class="c-user"><?php echo $lang->personnel->realName;?></th>
|
||||
<th class="c-user"><?php echo $lang->personnel->userName;?></th>
|
||||
<th class="c-department"><?php echo $lang->personnel->department;?></th>
|
||||
<th class="c-job"><?php echo $lang->personnel->job;?></th>
|
||||
<th class="c-user"><?php echo $lang->personnel->userName;?></th>
|
||||
<th class="c-genders"><?php echo $lang->personnel->genders;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -48,10 +48,10 @@ js::set('deptID', $deptID);
|
||||
<?php foreach($personnelList as $personnel):?>
|
||||
<tr>
|
||||
<td class="c-id"><?php echo $personnel->id;?></td>
|
||||
<td class="c-name"><?php echo zget($deptList, $personnel->dept);?></td>
|
||||
<td class="c-name"><?php echo $personnel->realname;?></td>
|
||||
<td class="c-name"><?php echo $personnel->account;?></td>
|
||||
<td class="c-name"><?php echo zget($deptList, $personnel->dept);?></td>
|
||||
<td><?php echo zget($lang->user->roleList, $personnel->role, '');?></td>
|
||||
<td class="c-name"><?php echo $personnel->account;?></td>
|
||||
<td><?php echo zget($lang->user->genderList, $personnel->gender, '');?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
|
||||
+16
-12
@@ -35,7 +35,7 @@
|
||||
#programTree ul > li.has-list:after {width: 14px;}
|
||||
#programTree ul > li.item-meas a.selected {color: #0c64eb;}
|
||||
.side-col {padding-right: 20px; width: 18%;}
|
||||
#sidebar>.cell {width: 100%;}
|
||||
#sidebar > .cell {width: 100%;}
|
||||
|
||||
th.c-name {width: 400px;}
|
||||
th.c-PO {width: 100px;}
|
||||
@@ -44,15 +44,18 @@ th.c-bug {width: 150px;}
|
||||
th.c-plan {width: 45px;}
|
||||
th.c-release {width: 50px;}
|
||||
th.c-actions {width: 50px;}
|
||||
.c-name {border-left: none !important;}
|
||||
.icon-cards-view {color: #888fa1;}
|
||||
[lang='en'] .en-wrap-text {white-space: normal; height: 24px; line-height: 1; font-size: 12px;}
|
||||
|
||||
#productListForm thead>tr>th,
|
||||
#productListForm tbody>tr>td {text-align: center; text-overflow: unset!important}
|
||||
#productListForm thead>tr>th {padding: 0; line-height: 24px;}
|
||||
#productListForm thead>tr:first-child>th {border-left: 1px solid #ddd;}
|
||||
#productListForm thead>tr>th.c-checkbox {border-left: none; padding-left: 15px; width: 45px;}
|
||||
#productListForm tbody>tr>td {padding: 2px 4px;}
|
||||
#productListForm tbody>tr>td:first-child {text-align: left; padding-left: 15px;}
|
||||
#productListForm thead > tr > th,
|
||||
#productListForm tbody > tr > td {text-align: center; text-overflow: unset!important}
|
||||
#productListForm thead > tr > th {padding: 0; line-height: 24px;}
|
||||
#productListForm thead > tr:first-child > th {border-left: 1px solid #ddd;}
|
||||
#productListForm thead > tr > th.c-checkbox {border-left: none; padding-left: 15px; width: 30px;}
|
||||
#productListForm tbody > tr > td {padding: 2px 4px;}
|
||||
#productListForm tbody > tr > td:first-child {text-align: left; padding-left: 15px;}
|
||||
#productListForm tbody > tr > td.table-nest-title {padding-left: 16px;}
|
||||
#productListForm th.table-nest-title .nest-has-checkbox {margin-top: 7px; margin-left: 35px;}
|
||||
#productListForm th.table-nest-title .nest-none-checkbox {margin-top: 8px; margin-left: 5px;}
|
||||
#productListForm th.table-nest-title .header {margin-left: 5px;}
|
||||
@@ -61,11 +64,12 @@ th.c-actions {width: 50px;}
|
||||
#productListForm th.table-nest-title .table-nest-toggle {top: 14px; left: auto; right: 10px; opacity: .6;}
|
||||
#productListForm th.table-nest-title .table-nest-toggle::before {position: absolute; top: 0 !important; right: 0; bottom: 0; left: 0;}
|
||||
#productListForm th.table-nest-title .table-nest-toggle:hover {opacity: 1;}
|
||||
#productListForm .table.has-sort-head thead>tr>th>a:after,
|
||||
#productListForm .table.has-sort-head thead>tr>th>a:before {top: -3px;}
|
||||
#productListForm .table.has-sort-head thead > tr > th > a:after,
|
||||
#productListForm .table.has-sort-head thead > tr > th > a:before {top: -3px;}
|
||||
#productListForm .icon-product:before {content: '\e98f'; width: 22px; height: 22px; background: none; color: rgb(166, 170, 184); top: 0; line-height: 22px; margin-right: 2px; font-size: 14px;}
|
||||
#productTableList td.table-nest-title > span.icon.table-nest-toggle {vertical-align: middle;}
|
||||
#productList > thead th.table-nest-title.c-name {position: relative; padding-left: 4px !important;}
|
||||
#productTableList > tr[data-nest-parent] {background: #f8f8f8;}
|
||||
#productList > thead th.table-nest-title.c-name {position: relative; padding-left: 16px !important;}
|
||||
|
||||
@media screen and (max-width: 1460px)
|
||||
{
|
||||
@@ -81,7 +85,7 @@ th.c-actions {width: 50px;}
|
||||
|
||||
@media screen and (max-width: 1250px)
|
||||
{
|
||||
#productListForm thead>tr>th {font-size: 12px;}
|
||||
#productListForm thead > tr > th {font-size: 12px;}
|
||||
th.c-requirement {width: 265px;}
|
||||
th.c-story {width: 265px;}
|
||||
[lang^='zh-'] th.c-requirement {width: 220px;}
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
<?php endif;?>
|
||||
<td class='text-left table-nest-title' title="<?php echo $program['programName']?>">
|
||||
<span class="table-nest-icon icon table-nest-toggle"></span>
|
||||
<span class="icon icon-cards-view"></span>
|
||||
<span><?php echo $program['programName']?></span>
|
||||
</td>
|
||||
<td class='c-manager'>
|
||||
|
||||
@@ -19,6 +19,7 @@ $config->productplan->future = '2030-01-01';
|
||||
global $app, $lang;
|
||||
$app->loadLang('productplan');
|
||||
$config->productplan->search['module'] = 'productplan';
|
||||
$config->productplan->browse = new stdclass();
|
||||
|
||||
$config->productplan->search['fields']['id'] = $lang->productplan->id;
|
||||
$config->productplan->search['fields']['title'] = $lang->productplan->title;
|
||||
|
||||
@@ -10,7 +10,7 @@ td.c-branch {overflow: hidden; text-align: left !important; text-overflow: ellip
|
||||
.table td.has-child > .plan-name > .task-toggle:hover {color: #006af1; cursor: pointer;}
|
||||
.table td.has-child > .plan-name > .task-toggle > .icon {font-size: 16px; display: inline-block; transition: transform .2s; -ms-transform: rotate(-90deg); -moz-transform: rotate(-90deg); -o-transform: rotate(-90deg); -webkit-transform: rotate(-90deg); transform: rotate(-90deg);}
|
||||
.table td.has-child > .plan-name > .task-toggle > .icon:before {text-align: left;}
|
||||
.table td.has-child > .plan-name > .task-toggle.collapsed {top: 2px;}
|
||||
.table td.has-child > .plan-name > .task-toggle.collapsed {top: 0;}
|
||||
.table td.has-child > .plan-name > .task-toggle.collapsed > .icon {-ms-transform: rotate(90deg); -moz-transform: rotate(90deg); -o-transform: rotate(90deg); -webkit-transform: rotate(90deg); transform: rotate(90deg);}
|
||||
.main-table tbody > tr.table-children > td:first-child::before {width: 3px;}
|
||||
@-moz-document url-prefix() {.main-table tbody > tr.table-children > td:first-child::before {width: 4px;};}
|
||||
@@ -35,6 +35,7 @@ td.c-branch {overflow: hidden; text-align: left !important; text-overflow: ellip
|
||||
.panel-actions {position: relative; padding: 0 0; padding-top: 1px;}
|
||||
.icon-list {padding-left: 7px;}
|
||||
.icon-kanban {padding-left: 7px; font-size: 16px;}
|
||||
#productplanList thead th.c-title {width: 100%;}
|
||||
#productplanList .c-actions {width: 265px;}
|
||||
#productplanList .c-actions .btn+.btn {margin-left: -1px;}
|
||||
#productplanList .c-actions .btn {display: block; float: left;}
|
||||
|
||||
@@ -11,6 +11,7 @@ $(document).on('click', '.task-toggle', function(e)
|
||||
|
||||
$(function()
|
||||
{
|
||||
toggleFold('#productplanForm', unfoldPlans, productID, 'productplan');
|
||||
$('#productplanList tbody tr').each(function()
|
||||
{
|
||||
var $content = $(this).find('td.content');
|
||||
|
||||
@@ -9,6 +9,14 @@
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php $unfoldPlans = isset($config->productplan->browse->unfoldPlans) ? json_decode($config->productplan->browse->unfoldPlans, true) : array();?>
|
||||
<?php $unfoldPlans = zget($unfoldPlans, $productID, array());?>
|
||||
<?php js::set('unfoldPlans', $unfoldPlans);?>
|
||||
<style>
|
||||
.c-actions {width: 250px;}
|
||||
#productplanList .c-actions .btn+.btn {margin-left: -1px;}
|
||||
#productplanList .c-actions .btn {display: block; float: left;}
|
||||
</style>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php common::sortFeatureMenu();?>
|
||||
@@ -108,7 +116,7 @@
|
||||
$i++;
|
||||
}
|
||||
?>
|
||||
<tr class='<?php echo $class;?>' data-parent="<?php echo $plan->parent;?>">
|
||||
<tr class='<?php echo $class;?>' data-id="<?php echo $plan->id;?>" data-parent="<?php echo $plan->parent;?>">
|
||||
<td class='cell-id'>
|
||||
<?php if(common::hasPriv('productplan', 'batchEdit') or common::hasPriv('productplan', 'batchChangeStatus')):?>
|
||||
<?php echo html::checkbox('planIDList', array($plan->id => ''), '', $attribute) . html::a(helper::createLink('productplan', 'view', "planID=$plan->id"), sprintf('%03d', $plan->id));?>
|
||||
@@ -130,7 +138,7 @@
|
||||
if($plan->parent > 0) echo "<span class='label label-badge label-light' title='{$this->lang->productplan->children}'>{$this->lang->productplan->childrenAB}</span>";
|
||||
echo html::a(inlink('view', "id=$plan->id"), $plan->title);
|
||||
if(!empty($expired)) echo $expired;
|
||||
if(isset($plan->children)) echo '<a class="task-toggle" data-id="' . $plan->id . '"><i class="icon icon-angle-double-right"></i></a>';
|
||||
if(isset($plan->children)) echo '<a class="task-toggle" data-id="' . $plan->id . '"><i class="icon icon-angle-right"></i></a>';
|
||||
echo '</div>';
|
||||
?>
|
||||
</td>
|
||||
|
||||
+10
-10
@@ -1532,11 +1532,11 @@ class programModel extends model
|
||||
if(common::hasPriv('program', 'suspend') || (common::hasPriv('program', 'close') && $program->status != 'doing') || (common::hasPriv('program', 'activate') && $program->status != 'closed'))
|
||||
{
|
||||
$menu .= "<div class='btn-group'>";
|
||||
$menu .= "<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='dropdown' title='{$this->lang->more}' style='width: 16px; padding-left: 0px;'></button>";
|
||||
$menu .= "<ul class='dropdown-menu pull-right text-center' role='menu' style='min-width:auto; padding: 5px 10px;'>";
|
||||
$menu .= $this->buildMenu('program', 'suspend', $params, $program, $type, 'pause', '', 'iframe', true, '', $this->lang->program->suspend);
|
||||
if($program->status != 'doing') $menu .= $this->buildMenu('program', 'close', $params, $program, $type, 'off', '', 'iframe', true);
|
||||
if($program->status != 'closed') $menu .= $this->buildMenu('program', 'activate', $params, $program, $type, 'magic', '', 'iframe', true);
|
||||
$menu .= "<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='context-dropdown' title='{$this->lang->more}' style='width: 16px; padding-left: 0px;'></button>";
|
||||
$menu .= "<ul class='dropdown-menu pull-right text-center' role='menu'>";
|
||||
$menu .= $this->buildMenu('program', 'suspend', $params, $program, $type, 'pause', '', 'iframe btn-action btn', true, '', $this->lang->program->suspend);
|
||||
if($program->status != 'doing') $menu .= $this->buildMenu('program', 'close', $params, $program, $type, 'off', '', 'iframe btn-action btn', true);
|
||||
if($program->status != 'closed') $menu .= $this->buildMenu('program', 'activate', $params, $program, $type, 'magic', '', 'iframe btn-action btn', true);
|
||||
$menu .= "</ul>";
|
||||
$menu .= "</div>";
|
||||
}
|
||||
@@ -1560,11 +1560,11 @@ class programModel extends model
|
||||
if(common::hasPriv('project', 'suspend') || (common::hasPriv('project', 'close') && $program->status != 'doing') || (common::hasPriv('project', 'activate') && $program->status != 'closed'))
|
||||
{
|
||||
$menu .= "<div class='btn-group'>";
|
||||
$menu .= "<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='dropdown' title='{$this->lang->more}' style='width: 16px; padding-left: 0px;'></button>";
|
||||
$menu .= "<ul class='dropdown-menu pull-right text-center' role='menu' style='min-width:auto; padding: 5px 10px;'>";
|
||||
$menu .= $this->buildMenu('project', 'suspend', $params, $program, $type, 'pause', '', 'iframe', true);
|
||||
if($program->status != 'doing') $menu .= $this->buildMenu('project', 'close', $params, $program, $type, 'off', '', 'iframe', true);
|
||||
if($program->status != 'closed') $menu .= $this->buildMenu('project', 'activate', $params, $program, $type, 'magic', '', 'iframe', true);
|
||||
$menu .= "<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='context-dropdown' title='{$this->lang->more}' style='width: 16px; padding-left: 0px;'></button>";
|
||||
$menu .= "<ul class='dropdown-menu pull-right text-center' role='menu'>";
|
||||
$menu .= $this->buildMenu('project', 'suspend', $params, $program, $type, 'pause', '', 'iframe btn-action btn', true);
|
||||
if($program->status != 'doing') $menu .= $this->buildMenu('project', 'close', $params, $program, $type, 'off', '', 'iframe btn-action btn', true);
|
||||
if($program->status != 'closed') $menu .= $this->buildMenu('project', 'activate', $params, $program, $type, 'magic', '', 'iframe btn-action btn', true);
|
||||
$menu .= "</ul>";
|
||||
$menu .= "</div>";
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#executionList > thead > tr > th .table-nest-toggle-global {top: 6px}
|
||||
#executionList > thead > tr > th .table-nest-toggle-global {top: 4px;}
|
||||
#executionList > thead > tr > th .table-nest-toggle-global:before {color: #a6aab8;}
|
||||
#executionsSummary {padding-left: 10px;}
|
||||
#mainMenu .pull-left .checkbox-primary {margin-top: 5px;}
|
||||
@@ -8,7 +8,7 @@ th.table-nest-title-edit {padding-left: 50px !important;}
|
||||
th.table-nest-title-edit .table-nest-toggle {left: 28px;}
|
||||
th.table-nest-title .check-all {position: absolute; left: 15px; top: 7px;}
|
||||
.c-date {text-align: center;}
|
||||
#executionTableList > tr.has-nest-child .table-nest-toggle {vertical-align: middle;}
|
||||
#executionTableList > tr:not(.has-nest-child) .table-nest-toggle {display: none;}
|
||||
#executionTableList > tr:not(.has-nest-child) .project-type-label {margin-left: 22px;}
|
||||
.table-statistic {padding-left: 10px;}
|
||||
#executionTableList .table-nest-icon {top: 6px;}
|
||||
|
||||
@@ -82,9 +82,9 @@
|
||||
<th class='c-hours'><?php echo $lang->project->progress;?></th>
|
||||
<th class='c-date'><?php echo $lang->programplan->begin;?></th>
|
||||
<th class='c-date'><?php echo $lang->programplan->end;?></th>
|
||||
<th class='c-hours'><?php echo $lang->task->estimateAB;?></th>
|
||||
<th class='c-hours'><?php echo $lang->task->consumedAB;?></th>
|
||||
<th class='c-hours'><?php echo $lang->task->leftAB;?> </th>
|
||||
<th class='c-hours text-right'><?php echo $lang->task->estimateAB;?></th>
|
||||
<th class='c-hours text-right'><?php echo $lang->task->consumedAB;?></th>
|
||||
<th class='c-hours text-right'><?php echo $lang->task->leftAB;?> </th>
|
||||
<th class='c-progress'><?php echo $lang->execution->burn;?> </th>
|
||||
<th class='text-center c-actions-6'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
$(function()
|
||||
{
|
||||
/* Update table summary text. */
|
||||
var $rows = $('#releaseList').find('tbody>tr');
|
||||
|
||||
var normal = 0;
|
||||
var terminate = 0;
|
||||
$rows.each(function()
|
||||
{
|
||||
var $row = $(this);
|
||||
var data = $row.data();
|
||||
if(data.type === 'normal') normal++;
|
||||
if(data.type === 'terminate') terminate++;
|
||||
});
|
||||
|
||||
var summary = '';
|
||||
if(type != 'all')
|
||||
{
|
||||
summary = pageSummary.replace('%s', $rows.length);
|
||||
}
|
||||
else
|
||||
{
|
||||
summary = pageAllSummary.replace('%total%', $rows.length).replace('%normal%', normal).replace('%terminate%', terminate);
|
||||
}
|
||||
$('.table-statistic').html(summary);
|
||||
});
|
||||
@@ -13,6 +13,9 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<?php js::set('confirmDelete', $lang->release->confirmDelete)?>
|
||||
<?php js::set('pageAllSummary', $lang->release->pageAllSummary)?>
|
||||
<?php js::set('pageSummary', $lang->release->pageSummary)?>
|
||||
<?php js::set('type', $type)?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
@@ -46,11 +49,11 @@
|
||||
<tr>
|
||||
<th class='c-id'><?php echo $lang->release->id;?></th>
|
||||
<th><?php echo $lang->release->name;?></th>
|
||||
<th class='c-build'><?php echo $lang->release->build;?></th>
|
||||
<th class='c-product'><?php echo $lang->release->product;?></th>
|
||||
<th class='c-execution'><?php echo $lang->executionCommon;?></th>
|
||||
<th class='c-build'><?php echo $lang->release->build;?></th>
|
||||
<th class='c-date text-center'><?php echo $lang->release->date;?></th>
|
||||
<th class='c-status text-center'><?php echo $lang->release->status;?></th>
|
||||
<th class='c-date text-center'><?php echo $lang->release->date;?></th>
|
||||
<?php
|
||||
$extendFields = $this->projectrelease->getFlowExtendFields();
|
||||
foreach($extendFields as $extendField) echo "<th>{$extendField->name}</th>";
|
||||
@@ -60,7 +63,7 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($releases as $release):?>
|
||||
<tr>
|
||||
<tr data-type='<?php echo $release->status;?>'>
|
||||
<td><?php echo html::a(inlink('view', "releaseID=$release->id"), sprintf('%03d', $release->id));?></td>
|
||||
<td>
|
||||
<?php
|
||||
@@ -68,21 +71,24 @@
|
||||
echo html::a(inlink('view', "release=$release->id"), $release->name, '', "data-app='$from'") . $flagIcon;
|
||||
?>
|
||||
</td>
|
||||
<td title='<?php echo $release->buildName?>'><?php echo empty($release->execution) ? $release->buildName : html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName);?></td>
|
||||
<td title='<?php echo $release->productName?>'><?php echo $release->productName?></td>
|
||||
<td title='<?php echo $release->executionName?>'><?php echo $release->executionName?></td>
|
||||
<td title='<?php echo $release->buildName?>'><?php echo empty($release->execution) ? $release->buildName : html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName);?></td>
|
||||
<td class='text-center'><?php echo $release->date;?></td>
|
||||
<?php $status = $this->processStatus('release', $release);?>
|
||||
<td class='c-status text-center' title='<?php echo $status;?>'>
|
||||
<span class="status-release status-<?php echo $release->status?>"><?php echo $status;?></span>
|
||||
</td>
|
||||
<td class='text-center'><?php echo $release->date;?></td>
|
||||
<?php foreach($extendFields as $extendField) echo "<td>" . $this->loadModel('flow')->getFieldValue($extendField, $release) . "</td>";?>
|
||||
<td class='c-actions'><?php echo $this->projectrelease->buildOperateMenu($release, 'browse');?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='table-footer'><?php echo $pager->show('left', 'pagerjs');?></div>
|
||||
<div class='table-footer'>
|
||||
<div class="table-statistic"></div>
|
||||
<?php echo $pager->show('left', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
$(function()
|
||||
{
|
||||
/* Update table summary text. */
|
||||
var $rows = $('#releaseList').find('tbody>tr');
|
||||
|
||||
var normal = 0;
|
||||
var terminate = 0;
|
||||
$rows.each(function()
|
||||
{
|
||||
var $row = $(this);
|
||||
var data = $row.data();
|
||||
if(data.type === 'normal') normal++;
|
||||
if(data.type === 'terminate') terminate++;
|
||||
});
|
||||
|
||||
var summary = '';
|
||||
if(type != 'all')
|
||||
{
|
||||
summary = pageSummary.replace('%s', $rows.length);
|
||||
}
|
||||
else
|
||||
{
|
||||
summary = pageAllSummary.replace('%total%', $rows.length).replace('%normal%', normal).replace('%terminate%', terminate);
|
||||
}
|
||||
$('.table-statistic').html(summary);
|
||||
});
|
||||
+33
-31
@@ -33,37 +33,39 @@ $lang->release->errorDate = 'The release date should not be greater tha
|
||||
|
||||
$lang->release->basicInfo = 'Basis Info';
|
||||
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = 'Platform/Branch';
|
||||
$lang->release->project = 'Project';
|
||||
$lang->release->build = 'Build';
|
||||
$lang->release->name = 'Name';
|
||||
$lang->release->marker = 'Meilensteine';
|
||||
$lang->release->date = 'Datum';
|
||||
$lang->release->desc = 'Beschreibung';
|
||||
$lang->release->files = 'Gehäuse';
|
||||
$lang->release->status = 'Status';
|
||||
$lang->release->subStatus = 'Sub Status';
|
||||
$lang->release->last = 'Letztes Release';
|
||||
$lang->release->unlinkStory = 'Story entfernen';
|
||||
$lang->release->unlinkBug = 'Bug entfernen';
|
||||
$lang->release->stories = 'Abgeschlossene Story';
|
||||
$lang->release->bugs = 'Gelöste Bugs';
|
||||
$lang->release->leftBugs = 'Verbleibende Bugs';
|
||||
$lang->release->generatedBugs = 'Gemeldete Bugs';
|
||||
$lang->release->finishStories = 'Abgeschlossene %s Storys';
|
||||
$lang->release->resolvedBugs = 'Gelöste %s Bugs';
|
||||
$lang->release->createdBugs = 'Erstellte %s Bugs';
|
||||
$lang->release->export = 'Export as HTML';
|
||||
$lang->release->yesterday = 'Gestern veröffentlicht';
|
||||
$lang->release->all = 'All';
|
||||
$lang->release->notify = 'Notify';
|
||||
$lang->release->notifyUsers = 'Notify Users';
|
||||
$lang->release->mailto = 'Mailto';
|
||||
$lang->release->mailContent = '<p>Dear users,</p><p style="margin-left: 30px;">The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version.</p>';
|
||||
$lang->release->storyList = '<p style="margin-left: 30px;">Story List:%s。</p>';
|
||||
$lang->release->bugList = '<p style="margin-left: 30px;">Bug List:%s。</p>';
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = 'Platform/Branch';
|
||||
$lang->release->project = 'Project';
|
||||
$lang->release->build = 'Build';
|
||||
$lang->release->name = 'Name';
|
||||
$lang->release->marker = 'Meilensteine';
|
||||
$lang->release->date = 'Datum';
|
||||
$lang->release->desc = 'Beschreibung';
|
||||
$lang->release->files = 'Gehäuse';
|
||||
$lang->release->status = 'Status';
|
||||
$lang->release->subStatus = 'Sub Status';
|
||||
$lang->release->last = 'Letztes Release';
|
||||
$lang->release->unlinkStory = 'Story entfernen';
|
||||
$lang->release->unlinkBug = 'Bug entfernen';
|
||||
$lang->release->stories = 'Abgeschlossene Story';
|
||||
$lang->release->bugs = 'Gelöste Bugs';
|
||||
$lang->release->leftBugs = 'Verbleibende Bugs';
|
||||
$lang->release->generatedBugs = 'Gemeldete Bugs';
|
||||
$lang->release->finishStories = 'Abgeschlossene %s Storys';
|
||||
$lang->release->resolvedBugs = 'Gelöste %s Bugs';
|
||||
$lang->release->createdBugs = 'Erstellte %s Bugs';
|
||||
$lang->release->export = 'Export as HTML';
|
||||
$lang->release->yesterday = 'Gestern veröffentlicht';
|
||||
$lang->release->all = 'All';
|
||||
$lang->release->notify = 'Notify';
|
||||
$lang->release->notifyUsers = 'Notify Users';
|
||||
$lang->release->mailto = 'Mailto';
|
||||
$lang->release->mailContent = '<p>Dear users,</p><p style="margin-left: 30px;">The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version.</p>';
|
||||
$lang->release->storyList = '<p style="margin-left: 30px;">Story List:%s。</p>';
|
||||
$lang->release->bugList = '<p style="margin-left: 30px;">Bug List:%s。</p>';
|
||||
$lang->release->pageAllSummary = 'Total releases: <strong>%total%</strong>, Normal: <strong>%normal%</strong>, Terminate: <strong>%terminate%</strong>。';
|
||||
$lang->release->pageSummary = "Total releases: <strong>%s</strong>.";
|
||||
|
||||
$lang->release->storyTitle = 'Story Name';
|
||||
$lang->release->bugTitle = 'Bug Name';
|
||||
|
||||
+33
-31
@@ -33,37 +33,39 @@ $lang->release->errorDate = 'The release date should not be greater tha
|
||||
|
||||
$lang->release->basicInfo = 'Basic Info';
|
||||
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = 'Platform/Branch';
|
||||
$lang->release->project = 'Project';
|
||||
$lang->release->build = 'Build';
|
||||
$lang->release->name = 'Name';
|
||||
$lang->release->marker = 'Milestone';
|
||||
$lang->release->date = 'Release Date';
|
||||
$lang->release->desc = 'Description';
|
||||
$lang->release->files = 'Files';
|
||||
$lang->release->status = 'Status';
|
||||
$lang->release->subStatus = 'Sub Status';
|
||||
$lang->release->last = 'Last Release';
|
||||
$lang->release->unlinkStory = 'Unlink Story';
|
||||
$lang->release->unlinkBug = 'Unlink Bug';
|
||||
$lang->release->stories = 'Finished Story';
|
||||
$lang->release->bugs = 'Resolved Bug';
|
||||
$lang->release->leftBugs = 'Active Bug';
|
||||
$lang->release->generatedBugs = 'Active Bug';
|
||||
$lang->release->finishStories = 'Finished %s Stories';
|
||||
$lang->release->resolvedBugs = 'Resolved %s Bugs';
|
||||
$lang->release->createdBugs = 'Unresolved %s Bug';
|
||||
$lang->release->export = 'Export as HTML';
|
||||
$lang->release->yesterday = 'Released Yesterday';
|
||||
$lang->release->all = 'All';
|
||||
$lang->release->notify = 'Notify';
|
||||
$lang->release->notifyUsers = 'Notify Users';
|
||||
$lang->release->mailto = 'Mailto';
|
||||
$lang->release->mailContent = '<p>Dear users,</p><p style="margin-left: 30px;">The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version.</p>';
|
||||
$lang->release->storyList = '<p style="margin-left: 30px;">Story List:%s。</p>';
|
||||
$lang->release->bugList = '<p style="margin-left: 30px;">Bug List:%s。</p>';
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = 'Platform/Branch';
|
||||
$lang->release->project = 'Project';
|
||||
$lang->release->build = 'Build';
|
||||
$lang->release->name = 'Name';
|
||||
$lang->release->marker = 'Milestone';
|
||||
$lang->release->date = 'Release Date';
|
||||
$lang->release->desc = 'Description';
|
||||
$lang->release->files = 'Files';
|
||||
$lang->release->status = 'Status';
|
||||
$lang->release->subStatus = 'Sub Status';
|
||||
$lang->release->last = 'Last Release';
|
||||
$lang->release->unlinkStory = 'Unlink Story';
|
||||
$lang->release->unlinkBug = 'Unlink Bug';
|
||||
$lang->release->stories = 'Finished Story';
|
||||
$lang->release->bugs = 'Resolved Bug';
|
||||
$lang->release->leftBugs = 'Active Bug';
|
||||
$lang->release->generatedBugs = 'Active Bug';
|
||||
$lang->release->finishStories = 'Finished %s Stories';
|
||||
$lang->release->resolvedBugs = 'Resolved %s Bugs';
|
||||
$lang->release->createdBugs = 'Unresolved %s Bug';
|
||||
$lang->release->export = 'Export as HTML';
|
||||
$lang->release->yesterday = 'Released Yesterday';
|
||||
$lang->release->all = 'All';
|
||||
$lang->release->notify = 'Notify';
|
||||
$lang->release->notifyUsers = 'Notify Users';
|
||||
$lang->release->mailto = 'Mailto';
|
||||
$lang->release->mailContent = '<p>Dear users,</p><p style = "margin-left: 30px;">The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version.</p>';
|
||||
$lang->release->storyList = '<p style = "margin-left: 30px;">Story List:%s。</p>';
|
||||
$lang->release->bugList = '<p style = "margin-left: 30px;">Bug List:%s。</p>';
|
||||
$lang->release->pageAllSummary = 'Total releases: <strong>%total%</strong>, Normal: <strong>%normal%</strong>, Terminate: <strong>%terminate%</strong>。';
|
||||
$lang->release->pageSummary = "Total releases: <strong>%s</strong>.";
|
||||
|
||||
$lang->release->storyTitle = 'Story Name';
|
||||
$lang->release->bugTitle = 'Bug Name';
|
||||
|
||||
+33
-31
@@ -33,37 +33,39 @@ $lang->release->errorDate = "La date de release ne doit pas être supé
|
||||
|
||||
$lang->release->basicInfo = 'Infos de Base';
|
||||
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = 'Plateforme/Branche';
|
||||
$lang->release->project = 'Project';
|
||||
$lang->release->build = 'Build';
|
||||
$lang->release->name = 'Nom';
|
||||
$lang->release->marker = 'Etape Importante';
|
||||
$lang->release->date = 'Date Release';
|
||||
$lang->release->desc = 'Description';
|
||||
$lang->release->files = 'Files';
|
||||
$lang->release->status = 'Statut';
|
||||
$lang->release->subStatus = 'Sous-statut';
|
||||
$lang->release->last = 'Dernière Release';
|
||||
$lang->release->unlinkStory = 'Retirer Story';
|
||||
$lang->release->unlinkBug = 'Retirer Bug';
|
||||
$lang->release->stories = 'Stories Terminées';
|
||||
$lang->release->bugs = 'Bugs Résolus';
|
||||
$lang->release->leftBugs = 'Bugs Actifs';
|
||||
$lang->release->generatedBugs = 'Bugs Actifs';
|
||||
$lang->release->finishStories = '%s Stories Terminées';
|
||||
$lang->release->resolvedBugs = '%s Bugs Résolus';
|
||||
$lang->release->createdBugs = '%s Bugs non résolus';
|
||||
$lang->release->export = 'Export HTML';
|
||||
$lang->release->yesterday = 'Versionné Hier';
|
||||
$lang->release->all = 'Tout';
|
||||
$lang->release->notify = 'Notify';
|
||||
$lang->release->notifyUsers = 'Notify Users';
|
||||
$lang->release->mailto = 'Mailto';
|
||||
$lang->release->mailContent = '<p>Dear users,</p><p style="margin-left: 30px;">The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version.</p>';
|
||||
$lang->release->storyList = '<p style="margin-left: 30px;">Story List:%s。</p>';
|
||||
$lang->release->bugList = '<p style="margin-left: 30px;">Bug List:%s。</p>';
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = 'Plateforme/Branche';
|
||||
$lang->release->project = 'Project';
|
||||
$lang->release->build = 'Build';
|
||||
$lang->release->name = 'Nom';
|
||||
$lang->release->marker = 'Etape Importante';
|
||||
$lang->release->date = 'Date Release';
|
||||
$lang->release->desc = 'Description';
|
||||
$lang->release->files = 'Files';
|
||||
$lang->release->status = 'Statut';
|
||||
$lang->release->subStatus = 'Sous-statut';
|
||||
$lang->release->last = 'Dernière Release';
|
||||
$lang->release->unlinkStory = 'Retirer Story';
|
||||
$lang->release->unlinkBug = 'Retirer Bug';
|
||||
$lang->release->stories = 'Stories Terminées';
|
||||
$lang->release->bugs = 'Bugs Résolus';
|
||||
$lang->release->leftBugs = 'Bugs Actifs';
|
||||
$lang->release->generatedBugs = 'Bugs Actifs';
|
||||
$lang->release->finishStories = '%s Stories Terminées';
|
||||
$lang->release->resolvedBugs = '%s Bugs Résolus';
|
||||
$lang->release->createdBugs = '%s Bugs non résolus';
|
||||
$lang->release->export = 'Export HTML';
|
||||
$lang->release->yesterday = 'Versionné Hier';
|
||||
$lang->release->all = 'Tout';
|
||||
$lang->release->notify = 'Notify';
|
||||
$lang->release->notifyUsers = 'Notify Users';
|
||||
$lang->release->mailto = 'Mailto';
|
||||
$lang->release->mailContent = '<p>Dear users,</p><p style = "margin-left: 30px;">The following requirements and bugs you feedback have been released in the %s. Please contact your account manager to check the latest version.</p>';
|
||||
$lang->release->storyList = '<p style = "margin-left: 30px;">Story List:%s。</p>';
|
||||
$lang->release->bugList = '<p style = "margin-left: 30px;">Bug List:%s。</p>';
|
||||
$lang->release->pageAllSummary = 'Total releases: <strong>%total%</strong>, Normal: <strong>%normal%</strong>, Terminate: <strong>%terminate%</strong>。';
|
||||
$lang->release->pageSummary = "Total releases: <strong>%s</strong>.";
|
||||
|
||||
$lang->release->storyTitle = 'Story Name';
|
||||
$lang->release->bugTitle = 'Bug Name';
|
||||
|
||||
@@ -33,37 +33,39 @@ $lang->release->errorDate = '发布日期不能大于今天。';
|
||||
|
||||
$lang->release->basicInfo = '基本信息';
|
||||
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = '平台/分支';
|
||||
$lang->release->project = '所属项目';
|
||||
$lang->release->build = '版本';
|
||||
$lang->release->name = '发布名称';
|
||||
$lang->release->marker = '里程碑';
|
||||
$lang->release->date = '发布日期';
|
||||
$lang->release->desc = '描述';
|
||||
$lang->release->files = '附件';
|
||||
$lang->release->status = '状态';
|
||||
$lang->release->subStatus = '子状态';
|
||||
$lang->release->last = '上次发布';
|
||||
$lang->release->unlinkStory = "移除{$lang->SRCommon}";
|
||||
$lang->release->unlinkBug = '移除Bug';
|
||||
$lang->release->stories = "完成的{$lang->SRCommon}";
|
||||
$lang->release->bugs = '解决的Bug';
|
||||
$lang->release->leftBugs = '遗留的Bug';
|
||||
$lang->release->generatedBugs = '遗留的Bug';
|
||||
$lang->release->finishStories = "本次共完成 %s 个{$lang->SRCommon}";
|
||||
$lang->release->resolvedBugs = '本次共解决 %s 个Bug';
|
||||
$lang->release->createdBugs = '本次共遗留 %s 个Bug';
|
||||
$lang->release->export = '导出HTML';
|
||||
$lang->release->yesterday = '昨日发布';
|
||||
$lang->release->all = '所有';
|
||||
$lang->release->notify = '发送通知';
|
||||
$lang->release->notifyUsers = '通知人员';
|
||||
$lang->release->mailto = '抄送给';
|
||||
$lang->release->mailContent = '<p>尊敬的用户,您好!</p><p style="margin-left: 30px;">您反馈的如下需求和Bug已经在 %s版本中发布,请联系客户经理查看最新版本。</p>';
|
||||
$lang->release->storyList = '<p style="margin-left: 30px;">需求列表:%s。</p>';
|
||||
$lang->release->bugList = '<p style="margin-left: 30px;">Bug列表:%s。</p>';
|
||||
$lang->release->id = 'ID';
|
||||
$lang->release->product = $lang->productCommon;
|
||||
$lang->release->branch = '平台/分支';
|
||||
$lang->release->project = '所属项目';
|
||||
$lang->release->build = '版本';
|
||||
$lang->release->name = '发布名称';
|
||||
$lang->release->marker = '里程碑';
|
||||
$lang->release->date = '发布日期';
|
||||
$lang->release->desc = '描述';
|
||||
$lang->release->files = '附件';
|
||||
$lang->release->status = '状态';
|
||||
$lang->release->subStatus = '子状态';
|
||||
$lang->release->last = '上次发布';
|
||||
$lang->release->unlinkStory = "移除{$lang->SRCommon}";
|
||||
$lang->release->unlinkBug = '移除Bug';
|
||||
$lang->release->stories = "完成的{$lang->SRCommon}";
|
||||
$lang->release->bugs = '解决的Bug';
|
||||
$lang->release->leftBugs = '遗留的Bug';
|
||||
$lang->release->generatedBugs = '遗留的Bug';
|
||||
$lang->release->finishStories = "本次共完成 %s 个{$lang->SRCommon}";
|
||||
$lang->release->resolvedBugs = '本次共解决 %s 个Bug';
|
||||
$lang->release->createdBugs = '本次共遗留 %s 个Bug';
|
||||
$lang->release->export = '导出HTML';
|
||||
$lang->release->yesterday = '昨日发布';
|
||||
$lang->release->all = '所有';
|
||||
$lang->release->notify = '发送通知';
|
||||
$lang->release->notifyUsers = '通知人员';
|
||||
$lang->release->mailto = '抄送给';
|
||||
$lang->release->mailContent = '<p>尊敬的用户,您好!</p><p style="margin-left: 30px;">您反馈的如下需求和Bug已经在 %s版本中发布,请联系客户经理查看最新版本。</p>';
|
||||
$lang->release->storyList = '<p style="margin-left: 30px;">需求列表:%s。</p>';
|
||||
$lang->release->bugList = '<p style="margin-left: 30px;">Bug列表:%s。</p>';
|
||||
$lang->release->pageAllSummary = '本页共 <strong>%total%</strong> 个发布,正常 <strong>%normal%</strong>,停止维护 <strong>%terminate%</strong>。';
|
||||
$lang->release->pageSummary = "本页共 <strong>%s</strong> 个发布。";
|
||||
|
||||
$lang->release->storyTitle = '需求名称';
|
||||
$lang->release->bugTitle = 'Bug名称';
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<?php js::set('confirmDelete', $lang->release->confirmDelete)?>
|
||||
<?php js::set('pageAllSummary', $lang->release->pageAllSummary)?>
|
||||
<?php js::set('pageSummary', $lang->release->pageSummary)?>
|
||||
<?php js::set('type', $type)?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
@@ -48,13 +51,13 @@
|
||||
<tr>
|
||||
<th class='c-id'><?php echo $lang->release->id;?></th>
|
||||
<th class="c-name"><?php echo $lang->release->name;?></th>
|
||||
<th class="c-project"><?php echo $lang->release->project;?></th>
|
||||
<th class="c-build"><?php echo $lang->release->build;?></th>
|
||||
<?php if($product->type != 'normal'):?>
|
||||
<th class='text-center c-branch'><?php echo $lang->product->branch;?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-date text-center'><?php echo $lang->release->date;?></th>
|
||||
<th class="c-project"><?php echo $lang->release->project;?></th>
|
||||
<th class='text-center c-status'><?php echo $lang->release->status;?></th>
|
||||
<th class='c-date text-center'><?php echo $lang->release->date;?></th>
|
||||
<?php
|
||||
$extendFields = $this->release->getFlowExtendFields();
|
||||
foreach($extendFields as $extendField) echo "<th>{$extendField->name}</th>";
|
||||
@@ -65,7 +68,7 @@
|
||||
<tbody>
|
||||
<?php foreach($releases as $release):?>
|
||||
<?php $canBeChanged = common::canBeChanged('release', $release);?>
|
||||
<tr>
|
||||
<tr data-type='<?php echo $release->status;?>'>
|
||||
<td><?php echo html::a(inlink('view', "releaseID=$release->id"), sprintf('%03d', $release->id));?></td>
|
||||
<td>
|
||||
<?php
|
||||
@@ -73,16 +76,16 @@
|
||||
echo html::a(inlink('view', "release=$release->id"), $release->name, '', "title='$release->name'") . $flagIcon;
|
||||
?>
|
||||
</td>
|
||||
<td title='<?php echo $release->projectName?>'><?php echo $release->projectName;?></td>
|
||||
<td title='<?php echo $release->buildName?>'><?php echo empty($release->execution) ? $release->buildName : html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName);?></td>
|
||||
<?php if($product->type != 'normal'):?>
|
||||
<td class='text-center' title='<?php echo zget($branches, $release->branch, '');?>'><?php echo $branches[$release->branch];?></td>
|
||||
<?php endif;?>
|
||||
<td class='text-center'><?php echo $release->date;?></td>
|
||||
<td title='<?php echo $release->projectName?>'><?php echo $release->projectName;?></td>
|
||||
<?php $status = $this->processStatus('release', $release);?>
|
||||
<td class='c-status text-center' title='<?php echo $status;?>'>
|
||||
<span class="status-release status-<?php echo $release->status?>"><?php echo $status;?></span>
|
||||
</td>
|
||||
<td class='text-center'><?php echo $release->date;?></td>
|
||||
<?php foreach($extendFields as $extendField) echo "<td>" . $this->loadModel('flow')->getFieldValue($extendField, $release) . "</td>";?>
|
||||
<td class='c-actions'>
|
||||
<?php echo $this->release->buildOperateMenu($release, 'browse');?>
|
||||
@@ -92,6 +95,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='table-footer'>
|
||||
<div class="table-statistic"></div>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
|
||||
+17
-6
@@ -72,9 +72,9 @@ class stageModel extends model
|
||||
->batchCheck($this->config->stage->create->requiredFields, 'notempty')
|
||||
->checkIF($stage->percent != '', 'percent', 'float')
|
||||
->exec();
|
||||
|
||||
if(dao::isError()) return false;
|
||||
|
||||
|
||||
if(dao::isError()) return false;
|
||||
|
||||
$stageID = $this->dao->lastInsertID();
|
||||
$this->action->create('stage', $stageID, 'Opened');
|
||||
}
|
||||
@@ -117,13 +117,24 @@ class stageModel extends model
|
||||
* Get stages.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getStages($orderBy = 'id_desc')
|
||||
public function getStages($orderBy = 'id_desc', $projectID = 0)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->orderBy($orderBy)->fetchAll('id');
|
||||
}
|
||||
$stages = $this->dao->select('t1.id,name,type,percent,openedBy as createdBy,begin as createdDate,lastEditedBy as editedBy,end as editedDate,deleted')
|
||||
->from(TABLE_EXECUTION)->alias('t1')
|
||||
->where('t1.type')->in('sprint,stage,kanban')
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi()
|
||||
->orderBy($orderBy)
|
||||
->fetchAll('id');
|
||||
$stages = !empty($stages) ? $stages : $this->dao->select('*')->from(TABLE_STAGE)->where('deleted')->eq(0)->orderBy($orderBy)->fetchAll('id');
|
||||
return $stages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs of stage.
|
||||
|
||||
@@ -2466,24 +2466,6 @@ class story extends control
|
||||
echo json_encode($storyInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get the user requirements of the product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param string $labelName
|
||||
* @param bool $isMultiple
|
||||
* @param int $defaultID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function ajaxGetProductURS($productID, $labelName = '', $isMultiple = false, $defaultID = '')
|
||||
{
|
||||
$requirements = array('0' => '') + $this->story->getRequirements($productID);
|
||||
$labelName = $isMultiple ? $labelName . '[]' : $labelName;
|
||||
$misc = $isMultiple ? 'class="form-control" multiple' : 'class="form-control"';
|
||||
return print(html::select($labelName, $requirements, $defaultID, $misc));
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: get the parent story.
|
||||
*
|
||||
|
||||
@@ -62,3 +62,27 @@ function getStatus(method, params)
|
||||
$('form #status').val(status).change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load URS.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadURS()
|
||||
{
|
||||
var productID = $('#product').val();
|
||||
var branchID = $('#branch').val();
|
||||
var moduleID = $('#module').val();
|
||||
var requirementList = $('#URS').val();
|
||||
requirementList = requirementList ? requirementList.join(',') : '';
|
||||
|
||||
var link = createLink('story', 'ajaxGetURS', 'productID=' + productID + '&branchID=' + branchID + '&moduleID=' + moduleID + '&requirementList=' + requirementList);
|
||||
|
||||
$.post(link, function(data)
|
||||
{
|
||||
$('#URS').replaceWith(data);
|
||||
$('#URS_chosen').remove();
|
||||
$('#URS').chosen();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -80,30 +80,6 @@ function loadAssignedTo()
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load URS.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadURS()
|
||||
{
|
||||
var productID = $('#product').val();
|
||||
var branchID = $('#branch').val();
|
||||
var moduleID = $('#module').val();
|
||||
var requirementList = $('#URS').val();
|
||||
requirementList = requirementList ? requirementList.join(',') : '';
|
||||
|
||||
var link = createLink('story', 'ajaxGetURS', 'productID=' + productID + '&branchID=' + branchID + '&moduleID=' + moduleID + '&requirementList=' + requirementList);
|
||||
|
||||
$.post(link, function(data)
|
||||
{
|
||||
$('#URS').replaceWith(data);
|
||||
$('#URS_chosen').remove();
|
||||
$('#URS').chosen();
|
||||
});
|
||||
}
|
||||
|
||||
function refreshPlan()
|
||||
{
|
||||
loadProductPlans($('#product').val(), $('#branch').val());
|
||||
|
||||
@@ -4805,7 +4805,7 @@ class storyModel extends model
|
||||
if($story->module and isset($modulePairs[$story->module])) echo "<span class='label label-gray label-badge'>{$modulePairs[$story->module]}</span> ";
|
||||
if($story->parent > 0) echo '<span class="label label-badge label-light" title="' . $this->lang->story->children . '">' . $this->lang->story->childrenAB . '</span> ';
|
||||
echo $canView ? html::a($storyLink, $story->title, '', "title='$story->title' style='color: $story->color' data-app='$tab'") : "<span style='color: $story->color'>{$story->title}</span>";
|
||||
if(!empty($story->children)) echo '<a class="story-toggle" data-id="' . $story->id . '"><i class="icon icon-angle-double-right"></i></a>';
|
||||
if(!empty($story->children)) echo '<a class="story-toggle" data-id="' . $story->id . '"><i class="icon icon-angle-right"></i></a>';
|
||||
break;
|
||||
case 'plan':
|
||||
echo isset($story->planTitle) ? $story->planTitle : '';
|
||||
|
||||
@@ -40,15 +40,6 @@ function loadProduct(productID)
|
||||
|
||||
if(typeof(storyType) == 'string' && storyType == 'story')
|
||||
{
|
||||
var requirementLink = createLink('story', 'ajaxGetProductURS', 'productID=' + productID + '&labelName=URS' + '&isMultiple=1');
|
||||
$.get(requirementLink, function(data)
|
||||
{
|
||||
$('#URS').replaceWith(data);
|
||||
$('#URS' + "_chosen").remove();
|
||||
$('#URS').next('.picker').remove();
|
||||
$('#URS').chosen();
|
||||
});
|
||||
|
||||
var storyLink = createLink('story', 'ajaxGetParentStory', 'productID=' + productID + '&labelName=parent');
|
||||
$.get(storyLink, function(data)
|
||||
{
|
||||
@@ -75,7 +66,6 @@ function loadBranch()
|
||||
|
||||
loadProductModules(productID, branch);
|
||||
loadProductPlans(productID, branch);
|
||||
loadURS();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -105,7 +95,6 @@ function loadProductBranches(productID)
|
||||
|
||||
loadProductModules(productID, $('#branch').val());
|
||||
loadProductPlans(productID, $('#branch').val());
|
||||
loadURS();
|
||||
})
|
||||
}
|
||||
|
||||
@@ -136,8 +125,6 @@ function loadProductModules(productID, branch)
|
||||
if(typeof(storyModule) == 'string' && config.currentMethod != 'edit') $moduleIDBox.prepend("<span class='input-group-addon'>" + storyModule + "</span>");
|
||||
$moduleIDBox.fixInputGroup();
|
||||
});
|
||||
|
||||
loadURS();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+16
-1
@@ -291,7 +291,22 @@ class task extends control
|
||||
/* Set Custom*/
|
||||
foreach(explode(',', $this->config->task->customCreateFields) as $field) $customFields[$field] = $this->lang->task->$field;
|
||||
|
||||
$executions = $this->config->systemMode == 'classic' ? $executions : $this->execution->getByProject($projectID, 'noclosed', 0, true);
|
||||
$executionAll = array();
|
||||
if(!empty($projectID))
|
||||
{
|
||||
$executionList = $this->execution->getByProject($projectID, 'noclosed', 0, true);
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
$replace = substr(current($executionList), 0, strpos(current($executionList), '/'));
|
||||
if(isset($project->model) and $project->model == 'waterfall')
|
||||
{
|
||||
foreach($executionList as $key => $val)
|
||||
{
|
||||
$values = str_replace($replace, $project->name, $val);
|
||||
$executionAll[$key] = $values;
|
||||
}
|
||||
}
|
||||
}
|
||||
$executions = $this->config->systemMode == 'classic' ? $executions : $executionAll;
|
||||
|
||||
$testStoryIdList = $this->loadModel('story')->getTestStories(array_keys($stories), $execution->id);
|
||||
/* Stories that can be used to create test tasks. */
|
||||
|
||||
@@ -81,6 +81,17 @@ class testsuite extends control
|
||||
$pager = pager::init(0, $recPerPage, 1);
|
||||
$suites = $this->testsuite->getSuites($productID, $sort, $pager, $type);
|
||||
}
|
||||
$privateNum = 0;
|
||||
foreach($suites as $suiteItem)
|
||||
{
|
||||
if($suiteItem->type == 'private')
|
||||
{
|
||||
$privateNum++;
|
||||
}
|
||||
}
|
||||
$suitesNum = !empty(count($suites, 0)) ? count($suites, 0) : 0;
|
||||
$publicNum = $suitesNum - $privateNum;
|
||||
$summary = str_replace(array('%total%', '%public%', '%private%'), array($suitesNum, $publicNum, $privateNum), $this->lang->testsuite->summary);
|
||||
|
||||
$this->view->title = $productName . $this->lang->testsuite->common;
|
||||
$this->view->position[] = html::a($this->createLink('testsuite', 'browse', "productID=$productID"), $productName);
|
||||
@@ -94,6 +105,7 @@ class testsuite extends control
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter');
|
||||
$this->view->pager = $pager;
|
||||
$this->view->product = $this->product->getByID($productID);
|
||||
$this->view->summary = $summary;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = 'Möchten Sie diese Verknüpfung aufheben?
|
||||
$lang->testsuite->noticeNone = 'Sie haben noch keine Suite erstellt.';
|
||||
$lang->testsuite->noModule = '<div>Sie haben keine Module</div><div>Jetzt verwalten</div>';
|
||||
$lang->testsuite->noTestsuite = 'Keine Suite. ';
|
||||
$lang->testsuite->summary = "Total suites: <strong>%total%</strong>, public: <strong>%public%</strong>, private: <strong>%private%</strong>.";
|
||||
|
||||
$lang->testsuite->lblCases = 'Fälle';
|
||||
$lang->testsuite->lblUnlinkCase = 'Unverknüpfte Fälle';
|
||||
@@ -55,4 +56,4 @@ $lang->testsuite->lblUnlinkCase = 'Unverknüpfte Fälle';
|
||||
$lang->testsuite->authorList['private'] = 'Privat';
|
||||
$lang->testsuite->authorList['public'] = 'Öffentlich';
|
||||
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
@@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = 'Do you want to unlink this Case?';
|
||||
$lang->testsuite->noticeNone = 'You have not created any suite yet.';
|
||||
$lang->testsuite->noModule = '<div>You have no modules.</div><div>Manage it now.</div>';
|
||||
$lang->testsuite->noTestsuite = 'No suites yet.';
|
||||
$lang->testsuite->summary = "Total suites: <strong>%total%</strong>, public: <strong>%public%</strong>, private: <strong>%private%</strong>.";
|
||||
|
||||
$lang->testsuite->lblCases = 'Cases';
|
||||
$lang->testsuite->lblUnlinkCase = 'Unlink Case';
|
||||
@@ -55,4 +56,4 @@ $lang->testsuite->lblUnlinkCase = 'Unlink Case';
|
||||
$lang->testsuite->authorList['private'] = 'Private';
|
||||
$lang->testsuite->authorList['public'] = 'Public';
|
||||
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
@@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = 'Voulez-vous retirer ce CasTest ?';
|
||||
$lang->testsuite->noticeNone = "Vous n'avez pas encore créé de Cahier de Recette pour l'instant.";
|
||||
$lang->testsuite->noModule = '<div>Vous avez aucun Module.</div><div>Gérer les Modules maintenant.</div>';
|
||||
$lang->testsuite->noTestsuite = 'Aucun Cahier de Recette.';
|
||||
$lang->testsuite->summary = "Total suites: <strong>%total%</strong>, public: <strong>%public%</strong>, private: <strong>%private%</strong>.";
|
||||
|
||||
$lang->testsuite->lblCases = 'CasTests';
|
||||
$lang->testsuite->lblUnlinkCase = 'Retirer CasTest';
|
||||
@@ -55,4 +56,4 @@ $lang->testsuite->lblUnlinkCase = 'Retirer CasTest';
|
||||
$lang->testsuite->authorList['private'] = 'Privé';
|
||||
$lang->testsuite->authorList['public'] = 'Public';
|
||||
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
@@ -45,6 +45,7 @@ $lang->testsuite->confirmUnlinkCase = 'Bạn có muốn hủy liên kết tình
|
||||
$lang->testsuite->noticeNone = 'Bạn chưa tạo suite nào';
|
||||
$lang->testsuite->noModule = '<div>Chưa có Module.</div><div>Quản lý ngay.</div>';
|
||||
$lang->testsuite->noTestsuite = 'Không có suites nào';
|
||||
$lang->testsuite->summary = "Tổng <strong>%total%</strong> suites nào, Công khai: <strong>%public%</strong>, Riêng tư: <strong>%private%</strong>.";
|
||||
|
||||
$lang->testsuite->lblCases = 'Tình huống';
|
||||
$lang->testsuite->lblUnlinkCase = 'Hủy liên kết tình huống';
|
||||
@@ -52,4 +53,4 @@ $lang->testsuite->lblUnlinkCase = 'Hủy liên kết tình huống';
|
||||
$lang->testsuite->authorList['private'] = 'Riêng tư';
|
||||
$lang->testsuite->authorList['public'] = 'Công khai';
|
||||
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
$lang->testsuite->featureBar['browse']['all'] = 'Suite List';
|
||||
@@ -48,6 +48,7 @@ $lang->testsuite->confirmUnlinkCase = '您确认要移除该用例吗?';
|
||||
$lang->testsuite->noticeNone = '您还没有创建套件';
|
||||
$lang->testsuite->noModule = '<div>您现在还没有模块信息</div><div>请维护用例库模块</div>';
|
||||
$lang->testsuite->noTestsuite = '暂时没有套件。';
|
||||
$lang->testsuite->summary = "本页共 <strong>%total%</strong> 个套件,公开 <strong>%public%</strong> 个,私有 <strong>%private%</strong> 个。";
|
||||
|
||||
$lang->testsuite->lblCases = '用例列表';
|
||||
$lang->testsuite->lblUnlinkCase = '移除用例';
|
||||
@@ -55,4 +56,4 @@ $lang->testsuite->lblUnlinkCase = '移除用例';
|
||||
$lang->testsuite->authorList['private'] = '私有';
|
||||
$lang->testsuite->authorList['public'] = '公开';
|
||||
|
||||
$lang->testsuite->featureBar['browse']['all'] = '套件列表';
|
||||
$lang->testsuite->featureBar['browse']['all'] = '套件列表';
|
||||
@@ -47,6 +47,7 @@ $lang->testsuite->confirmUnlinkCase = '您確認要移除該用例嗎?';
|
||||
$lang->testsuite->noticeNone = '您還沒有創建套件';
|
||||
$lang->testsuite->noModule = '<div>您現在還沒有模組信息</div><div>請維護用例庫模組</div>';
|
||||
$lang->testsuite->noTestsuite = '暫時沒有套件。';
|
||||
$lang->testsuite->summary = "本頁共 <strong>%total%</strong> 個套件,公開 <strong>%public%</strong> 個,私有 <strong>%private%</strong> 個。";
|
||||
|
||||
$lang->testsuite->lblCases = '用例列表';
|
||||
$lang->testsuite->lblUnlinkCase = '移除用例';
|
||||
|
||||
@@ -82,7 +82,10 @@
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='table-footer'><?php $pager->show('right', 'pagerjs');?></div>
|
||||
<div class='table-footer'>
|
||||
<div class='table-statistic'><?php echo $summary;?></div>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -60,13 +60,13 @@ $status = $this->session->testTaskVersionStatus;
|
||||
<tr>
|
||||
<th class='c-id text-left'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='c-name text-left'> <?php common::printOrderLink('name', $orderBy, $vars, $lang->testtask->name);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('build', $orderBy, $vars, $lang->testtask->build);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('product', $orderBy, $vars, $lang->testtask->product);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('execution', $orderBy, $vars, $lang->testtask->execution);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('build', $orderBy, $vars, $lang->testtask->build);?></th>
|
||||
<th class='c-status text-left'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
<th class='c-user text-left'> <?php common::printOrderLink('owner', $orderBy, $vars, $lang->testtask->owner);?></th>
|
||||
<th class='c-date text-left'> <?php common::printOrderLink('begin', $orderBy, $vars, $lang->testtask->begin);?></th>
|
||||
<th class='c-date text-left'> <?php common::printOrderLink('end', $orderBy, $vars, $lang->testtask->end);?></th>
|
||||
<th class='c-status text-left'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
<?php
|
||||
$extendFields = $this->testtask->getFlowExtendFields();
|
||||
foreach($extendFields as $extendField) echo "<th>{$extendField->name}</th>";
|
||||
@@ -79,18 +79,19 @@ $status = $this->session->testTaskVersionStatus;
|
||||
<tr class='text-left'>
|
||||
<td><?php echo html::a(inlink('cases', "taskID=$task->id"), sprintf('%03d', $task->id));?></td>
|
||||
<td class='c-name' title="<?php echo $task->name?>"><?php echo html::a(inlink('cases', "taskID=$task->id"), $task->name);?></td>
|
||||
<td class='c-name' title="<?php echo $task->buildName?>"><?php echo ($task->build == 'trunk' || empty($task->buildName)) ? $lang->trunk : html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName, '', "data-group=execution");?></td>
|
||||
<td class='c-name' title="<?php echo $task->productName?>"><?php echo $task->productName?></td>
|
||||
<td class='c-name' title="<?php echo $task->executionName?>"><?php echo $task->executionName?></td>
|
||||
<td class='c-name' title="<?php echo $task->buildName?>"><?php echo ($task->build == 'trunk' || empty($task->buildName)) ? $lang->trunk : html::a($this->createLink('build', 'view', "buildID=$task->build"), $task->buildName, '', "data-group=execution");?></td>
|
||||
<td title="<?php echo zget($users, $task->owner);?>"><?php echo zget($users, $task->owner);?></td>
|
||||
<td><?php echo $task->begin?></td>
|
||||
<td><?php echo $task->end?></td>
|
||||
<?php $status = $this->processStatus('testtask', $task);?>
|
||||
<td title='<?php echo $status;?>'>
|
||||
<span class='status-task status-<?php echo $task->status?>'>
|
||||
<?php echo $status;?>
|
||||
</span>
|
||||
</td>
|
||||
<td title="<?php echo zget($users, $task->owner);?>"><?php echo zget($users, $task->owner);?></td>
|
||||
<td><?php echo $task->begin?></td>
|
||||
<td><?php echo $task->end?></td>
|
||||
|
||||
<?php foreach($extendFields as $extendField) echo "<td>" . $this->loadModel('flow')->getFieldValue($extendField, $task) . "</td>";?>
|
||||
<td class='c-actions'>
|
||||
<?php echo $this->testtask->buildOperateMenu($task, 'browse');?>
|
||||
|
||||
@@ -39,10 +39,10 @@
|
||||
<thead>
|
||||
<tr class='text-center'>
|
||||
<th class='c-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
|
||||
<th class='c-severity' title=<?php echo $lang->bug->severity;?>><?php common::printOrderLink('severity', $orderBy, $vars, $lang->bug->severityAB);?></th>
|
||||
<th class='c-pri' title='<?php echo $lang->pri;?>'><?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-type'> <?php common::printOrderLink('type', $orderBy, $vars, $lang->typeAB);?></th>
|
||||
<th class='text-left'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->bug->title);?></th>
|
||||
<th class='c-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
<th class='c-user'> <?php common::printOrderLink('resolvedBy', $orderBy, $vars, $lang->bug->resolvedBy);?></th>
|
||||
<th class='c-resolution'><?php common::printOrderLink('resolution', $orderBy, $vars, $lang->bug->resolutionAB);?></th>
|
||||
@@ -52,10 +52,10 @@
|
||||
<?php foreach($bugs as $bug):?>
|
||||
<tr class='text-center'>
|
||||
<td><?php echo html::a($this->createLink('bug', 'view', "bugID=$bug->id"), $bug->id, '_blank');?></td>
|
||||
<td class='text-left nobr'><?php echo html::a($this->createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?></td>
|
||||
<td><span class='<?php echo 'severity' . zget($lang->bug->severityList, $bug->severity, $bug->severity)?>'><?php echo zget($lang->bug->severityList, $bug->severity, $bug->severity)?></span></td>
|
||||
<td><span class='<?php echo 'pri' . zget($lang->bug->priList, $bug->pri, $bug->pri)?>'><?php echo zget($lang->bug->priList, $bug->pri, $bug->pri)?></span></td>
|
||||
<td><?php echo $lang->bug->typeList[$bug->type]?></td>
|
||||
<td class='text-left nobr'><?php echo html::a($this->createLink('bug', 'view', "bugID=$bug->id"), $bug->title);?></td>
|
||||
<td><?php echo zget($lang->bug->typeList, $bug->type, '');?></td>
|
||||
<td><?php echo zget($users, $bug->openedBy);?></td>
|
||||
<td><?php echo zget($users, $bug->resolvedBy);?></td>
|
||||
<td><?php echo zget($lang->bug->resolutionList, $bug->resolution);?></td>
|
||||
|
||||
@@ -32,6 +32,13 @@ class repoTest
|
||||
return $objects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get switcher test.
|
||||
*
|
||||
* @param int $repoID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getSwitcherTest($repoID)
|
||||
{
|
||||
$objects = $this->objectModel->getSwitcher($repoID);
|
||||
@@ -59,8 +66,13 @@ class repoTest
|
||||
return $objects;
|
||||
}
|
||||
|
||||
public function createTest()
|
||||
public function createTest($list)
|
||||
{
|
||||
$init = array('SCM' => '', 'serviceHost' => '', 'serviceProject' => '', 'name' => '', 'path' => '', 'encoding' => '', 'client' => '', 'account' => '', 'password' => '', 'encrypt' => '', 'desc' => '', 'uid' => '');
|
||||
|
||||
foreach($init as $filed => $defaultvalue) $_POST[$filed] = $defaultvalue;
|
||||
foreach($list as $key => $value) $_POST[$key] = $value;
|
||||
|
||||
$objects = $this->objectModel->create();
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
Regular → Executable
+3
-1
@@ -10,6 +10,8 @@ title=测试 repoModel->checkPriv();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
检查用户权限,返回布尔值 >> 0
|
||||
|
||||
*/
|
||||
|
||||
$checkPriv = new repoTest();
|
||||
@@ -20,4 +22,4 @@ $repo->acl->user = 'admin';
|
||||
|
||||
$result = $checkPriv->checkPrivTest($repo);
|
||||
|
||||
r($result) && p($result) && e('0');
|
||||
r($result) && p($result) && e('0'); //检查用户权限,返回布尔值
|
||||
Regular → Executable
+44
-1
@@ -10,8 +10,51 @@ title=测试 repoModel->create();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
正常创建gitlab版本库 >> 1
|
||||
当已有版本库时提示已有记录 >> 『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。
|
||||
当数据类型为Gitea时提示写版本号 >> 因为安全原因,需要检测客户端版本,请将版本号写入文件
|
||||
|
||||
*/
|
||||
|
||||
$repo = new repoTest();
|
||||
|
||||
r($repo->createTest()) && p() && e();
|
||||
$list = array(
|
||||
'product' => '1',
|
||||
'SCM' => 'Gitlab',
|
||||
'serviceHost' => '2',
|
||||
'serviceProject' => '971',
|
||||
'name' => 'zzxx',
|
||||
'path' => '',
|
||||
'encoding' => 'utf-8',
|
||||
'client' => '/usr/bin/git',
|
||||
'account' => '',
|
||||
'password' => '',
|
||||
'encrypt' => 'base64',
|
||||
'desc' => '',
|
||||
'uid' => '6321819c78be5'
|
||||
);
|
||||
|
||||
$listOne = array(
|
||||
'SCM' => 'Gitea',
|
||||
'serviceHost' => 2,
|
||||
'serviceProject' => 'root/Demo',
|
||||
'name' => 'Demo',
|
||||
'path' => '',
|
||||
'encoding' => 'utf-8',
|
||||
'client' => '/usr/bin/git',
|
||||
'account' => '',
|
||||
'password' => '',
|
||||
'encrypt' => 'base64',
|
||||
'desc' => '',
|
||||
'uid' => '6322b184f3a72'
|
||||
);
|
||||
|
||||
$resultOne = $repo->createTest($list);
|
||||
$resultTwo = $repo->createTest($list);
|
||||
$resultThree = $repo->createTest($listOne);
|
||||
|
||||
r($resultOne) && p($resultOne) && e('1'); //正常创建gitlab版本库
|
||||
r($resultTwo) && p('name:0') && e('『名称』已经有『jktest』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); //当已有版本库时提示已有记录
|
||||
r($resultThree) && p($resultThree) && e('因为安全原因,需要检测客户端版本,请将版本号写入文件'); //当数据类型为Gitea时提示写版本号
|
||||
|
||||
$db->restoreDB();
|
||||
@@ -202,6 +202,9 @@ switch($argv[1])
|
||||
case 'webhook':
|
||||
ztfRun('model/webhook');
|
||||
break;
|
||||
case 'repo':
|
||||
ztfRun('model/repo');
|
||||
break;
|
||||
|
||||
default:
|
||||
ztfExtract($argv[1]);
|
||||
|
||||
+5
-5
@@ -835,8 +835,8 @@ function toggleFold(form, unfoldIdList, objectID, objectType)
|
||||
if($parentTd.length == 0) return false;
|
||||
|
||||
var toggleClass = objectType == 'product' ? 'story-toggle' : 'task-toggle';
|
||||
var nameClass = objectType == 'product' ? 'c-title' : 'c-name';
|
||||
$form.find('th.' + nameClass).append("<button type='button' id='toggleFold' class='btn btn-mini collapsed'>" + unfoldAll + "</button>");
|
||||
var nameClass = ['product', 'productplan'].indexOf(objectType) !== -1 ? 'c-title' : 'c-name';
|
||||
$form.find('th.' + nameClass).addClass('flex-between').append("<span id='toggleFold' class='collapsed'><i class='icon icon-angle-double-right'></i></span>");
|
||||
|
||||
var allUnfold = true;
|
||||
$parentTd.each(function()
|
||||
@@ -849,7 +849,7 @@ function toggleFold(form, unfoldIdList, objectID, objectType)
|
||||
$(this).find('a.' + toggleClass).addClass('collapsed')
|
||||
})
|
||||
|
||||
$form.find('th.' + nameClass + ' #toggleFold').html(allUnfold ? foldAll : unfoldAll).toggleClass('collapsed', !allUnfold);
|
||||
$form.find('th.' + nameClass + ' #toggleFold').toggleClass('collapsed', !allUnfold);
|
||||
|
||||
$(document).on('click', '#toggleFold', function()
|
||||
{
|
||||
@@ -864,7 +864,7 @@ function toggleFold(form, unfoldIdList, objectID, objectType)
|
||||
newUnfoldID.push(dataID);
|
||||
})
|
||||
|
||||
$(this).html(collapsed ? foldAll : unfoldAll).toggleClass('collapsed', !collapsed);
|
||||
$(this).toggleClass('collapsed', !collapsed);
|
||||
url = createLink('misc', 'ajaxSetUnfoldID', 'objectID=' + objectID + '&objectType=' + objectType + '&action=' + (collapsed ? 'add' : 'delete'));
|
||||
$.post(url, {'newUnfoldID': JSON.stringify(newUnfoldID)});
|
||||
});
|
||||
@@ -884,7 +884,7 @@ function toggleFold(form, unfoldIdList, objectID, objectType)
|
||||
setTimeout(function()
|
||||
{
|
||||
hasCollapsed = $table.find('td.has-child a.' + toggleClass + '.collapsed').length != 0;
|
||||
$('#toggleFold').html(hasCollapsed ? unfoldAll : foldAll).toggleClass('collapsed', hasCollapsed);
|
||||
$('#toggleFold').toggleClass('collapsed', hasCollapsed);
|
||||
}, 100);
|
||||
|
||||
$.post(url, {'newUnfoldID': JSON.stringify(newUnfoldID)});
|
||||
|
||||
@@ -134,9 +134,18 @@ body.xxc-embed.m-productplan-view,body.xxc-embed.m-bug-browse,body.xxc-embed.m-p
|
||||
|
||||
#projectForm .c-name .label-danger,
|
||||
#executionTableList .c-name .label-danger,
|
||||
|
||||
.flex-between {display: flex !important;align-items: center;justify-content: space-between;}
|
||||
#toggleFold > .icon {display: inline-block; color: #838a9d; font-size: 16px; transition: transform .2s; transform: rotate(-90deg);}
|
||||
#toggleFold.collapsed > .icon {transform: rotate(90deg);}
|
||||
|
||||
#executionTableList .c-name .label-danger {position: absolute; top: 8px; right: 0px;}
|
||||
#programTableList .c-name .label-danger {position: absolute; right: 4px; padding: 2px 4px;}
|
||||
|
||||
#projectForm .c-name,
|
||||
#executionTableList .c-name,
|
||||
#programTableList .c-name {padding-right: 64px;}
|
||||
td.delayed > span {display: inline-block; height: 20px; line-height: 18px; background: #FFEBEB; color: #FB2B2B; border-radius: 20px; padding: 2px 8px;}
|
||||
.table .table-children,
|
||||
.table .is-nest-child {background: #F8F8F8;}
|
||||
.table tbody td.has-child .icon-angle-right {color: #838a9d;}
|
||||
Reference in New Issue
Block a user