Merge branch 'master' of github.com:easysoft/zentaopms

This commit is contained in:
wangyidong
2018-04-27 15:47:07 +08:00
34 changed files with 233 additions and 202 deletions
+8
View File
@@ -54,6 +54,14 @@ $lang->action->dynamic->all = '所有';
$lang->action->dynamic->hidden = '已隱藏';
$lang->action->dynamic->search = '搜索';
$lang->action->periods['all'] = $lang->action->dynamic->all;
$lang->action->periods['today'] = $lang->action->dynamic->today;
$lang->action->periods['yesterday'] = $lang->action->dynamic->yesterday;
$lang->action->periods['thisweek'] = $lang->action->dynamic->thisWeek;
$lang->action->periods['lastweek'] = $lang->action->dynamic->lastWeek;
$lang->action->periods['thismonth'] = $lang->action->dynamic->thisMonth;
$lang->action->periods['lastmonth'] = $lang->action->dynamic->lastMonth;
$lang->action->objectTypes['product'] = $lang->productCommon;
$lang->action->objectTypes['story'] = '需求';
$lang->action->objectTypes['productplan'] = '計劃';
+6
View File
@@ -266,6 +266,12 @@ $lang->block->orderByList->product['id_desc'] = 'ID 遞減';
$lang->block->orderByList->product['status_asc'] = '狀態正序';
$lang->block->orderByList->product['status_desc'] = '狀態倒序';
$lang->block->orderByList->project = array();
$lang->block->orderByList->project['id_asc'] = 'ID 遞增';
$lang->block->orderByList->project['id_desc'] = 'ID 遞減';
$lang->block->orderByList->project['status_asc'] = '狀態正序';
$lang->block->orderByList->project['status_desc'] = '狀態倒序';
$lang->block->orderByList->task = array();
$lang->block->orderByList->task['id_asc'] = 'ID 遞增';
$lang->block->orderByList->task['id_desc'] = 'ID 遞減';
+25 -22
View File
@@ -103,23 +103,24 @@ $lang->bug->copy = 'Copy';
$lang->bug->search = 'Search';
/* 查询条件列表。*/
$lang->bug->assignToMe = 'AssignedToMe';
$lang->bug->openedByMe = 'CreatedByMe';
$lang->bug->resolvedByMe = 'ResolvedByMe';
$lang->bug->closedByMe = 'ClosedByMe';
$lang->bug->assignToNull = 'Unassigned';
$lang->bug->unResolved = 'Unresolved';
$lang->bug->toClosed = 'WaitForClose';
$lang->bug->unclosed = 'Active';
$lang->bug->unconfirmed = 'UnConfirmed';
$lang->bug->longLifeBugs = 'Pending';
$lang->bug->postponedBugs = 'Postponed';
$lang->bug->overdueBugs = 'Overdue';
$lang->bug->allBugs = 'All';
$lang->bug->byQuery = 'Search';
$lang->bug->needConfirm = 'StoryChanged';
$lang->bug->allProduct = 'All' . $lang->productCommon;
$lang->bug->my = 'My';
$lang->bug->assignToMe = 'AssignedToMe';
$lang->bug->openedByMe = 'CreatedByMe';
$lang->bug->resolvedByMe = 'ResolvedByMe';
$lang->bug->closedByMe = 'ClosedByMe';
$lang->bug->assignToNull = 'Unassigned';
$lang->bug->unResolved = 'Unresolved';
$lang->bug->toClosed = 'WaitForClose';
$lang->bug->unclosed = 'Active';
$lang->bug->unconfirmed = 'UnConfirmed';
$lang->bug->longLifeBugs = 'Pending';
$lang->bug->postponedBugs = 'Postponed';
$lang->bug->overdueBugs = 'Overdue';
$lang->bug->allBugs = 'All';
$lang->bug->byQuery = 'Search';
$lang->bug->needConfirm = 'StoryChanged';
$lang->bug->allProduct = 'All' . $lang->productCommon;
$lang->bug->my = 'My';
$lang->bug->yesterdayResolved = 'Resolved Yesterday ';
$lang->bug->assignToMeAB = 'Assigned To Me';
$lang->bug->openedByMeAB = 'Created By Me';
@@ -233,6 +234,10 @@ $lang->bug->typeList['performance'] = 'Performance';
$lang->bug->typeList['standard'] = 'Standard';
$lang->bug->typeList['automation'] = 'Testing Script';
$lang->bug->typeList['others'] = 'Other';
$lang->bug->typeList['designchange'] = 'Design Changed';
$lang->bug->typeList['newfeature'] = 'New Feature';
$lang->bug->typeList['designdefect'] = 'Design Defect';
$lang->bug->typeList['trackthings'] = 'Track Things';
$lang->bug->statusList[''] = '';
$lang->bug->statusList['active'] = 'Active';
@@ -366,14 +371,12 @@ $lang->bug->placeholder = new stdclass();
$lang->bug->placeholder->chooseBuilds = 'Choose Build...';
$lang->bug->placeholder->newBuildName = 'The name of new build';
$lang->bug->mySelects['assigntome'] = $lang->bug->assignToMeAB;
$lang->bug->mySelects['openedbyme'] = $lang->bug->openedByMeAB;
$lang->bug->mySelects['resolvedbyme'] = $lang->bug->resolvedByMeAB;
$lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['all'] = $lang->bug->allBugs;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
$lang->bug->featureBar['browse']['my'] = $lang->bug->my;
$lang->bug->featureBar['browse']['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->featureBar['browse']['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
+18 -17
View File
@@ -103,23 +103,24 @@ $lang->bug->copy = '複製Bug';
$lang->bug->search = '搜索';
/* 查詢條件列表。*/
$lang->bug->assignToMe = '指派給我';
$lang->bug->openedByMe = '由我創建';
$lang->bug->resolvedByMe = '由我解決';
$lang->bug->closedByMe = '由我關閉';
$lang->bug->assignToNull = '未指派';
$lang->bug->unResolved = '未解決';
$lang->bug->toClosed = '待關閉';
$lang->bug->unclosed = '未關閉';
$lang->bug->unconfirmed = '未確認';
$lang->bug->longLifeBugs = '久未處理';
$lang->bug->postponedBugs = '被延期';
$lang->bug->overdueBugs = '過期Bug';
$lang->bug->allBugs = '所有';
$lang->bug->byQuery = '搜索';
$lang->bug->needConfirm = '需求變動';
$lang->bug->allProduct = '所有' . $lang->productCommon;
$lang->bug->my = '我的';
$lang->bug->assignToMe = '指派給我';
$lang->bug->openedByMe = '由我創建';
$lang->bug->resolvedByMe = '由我解決';
$lang->bug->closedByMe = '由我關閉';
$lang->bug->assignToNull = '未指派';
$lang->bug->unResolved = '未解決';
$lang->bug->toClosed = '待關閉';
$lang->bug->unclosed = '未關閉';
$lang->bug->unconfirmed = '未確認';
$lang->bug->longLifeBugs = '久未處理';
$lang->bug->postponedBugs = '被延期';
$lang->bug->overdueBugs = '過期Bug';
$lang->bug->allBugs = '所有';
$lang->bug->byQuery = '搜索';
$lang->bug->needConfirm = '需求變動';
$lang->bug->allProduct = '所有' . $lang->productCommon;
$lang->bug->my = '我的';
$lang->bug->yesterdayResolved = '昨天解決';
$lang->bug->assignToMeAB = '指派給我';
$lang->bug->openedByMeAB = '由我創建';
+1 -1
View File
@@ -41,7 +41,7 @@
<?php if($build->product != $bug->product) continue; ?>
<tr>
<td class='cell-id'>
<?php echo html::checkbox('bugs', array($bug->id => sprintf('%03d', $bug->id)), ($bug->status == 'resolved' or $bug->status == 'closed') ? $story->id : '');?>
<?php echo html::checkbox('bugs', array($bug->id => sprintf('%03d', $bug->id)), ($bug->status == 'resolved' or $bug->status == 'closed') ? $bug->id : '');?>
</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 class='text-left nobr' title='<?php echo $bug->title?>'><?php echo html::a($this->createLink('bug', 'view', "bugID=$bug->id", '', true), $bug->title, '', "data-toggle='modal' data-type='iframe' data-width='90%'");?></td>
+2 -1
View File
@@ -17,6 +17,7 @@ $lang->at = ' 于 ';
$lang->downArrow = '↓';
$lang->null = '空';
$lang->ellipsis = '…';
$lang->percent = '%';
$lang->zentaoPMS = '禪道';
$lang->welcome = "%s項目管理系統";
@@ -241,7 +242,7 @@ $lang->project->subMenu->list->groupTask = '分組視圖|project|groupTask|proje
$lang->project->subMenu->qa = new stdclass();
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
$lang->project->subMenu->qa->build = '版本|project|build|projectID=%s';
$lang->project->subMenu->qa->testtask = '測試單|project|testtask|projectID=%s';
$lang->project->subMenu->qa->testtask = array('link' => '測試單|project|testtask|projectID=%s', 'subModule' => 'testreport');
$lang->project->subMenu->action = new stdclass();
$lang->project->subMenu->action->dynamic = '動態|project|dynamic|projectID=%s';
+1 -1
View File
@@ -66,7 +66,7 @@
<td></td>
<td>
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
<?php echo html::hidden('maxOrder', $maxOrder);?>
<?php echo html::hidden('parentDeptID', $deptID);?>
</td>
+1 -1
View File
@@ -65,7 +65,7 @@
<th><span class='hidden'><?php echo html::selectAll('', 'checkbox')?></span></th>
<td colspan='2'>
<?php echo html::submitButton('', "onclick='setNoChecked()'", 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
<?php echo html::hidden('foo'); // Just a hidden var, to make sure $_POST is not empty.?>
</td>
</tr>
+2 -2
View File
@@ -38,7 +38,7 @@
<th class='text-right'></th>
<td>
<?php echo html::submitButton('', "onclick='setNoChecked()'", 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
<?php echo html::hidden('noChecked'); // Save the value of no checked.?>
</td>
</tr>
@@ -122,7 +122,7 @@
</th>
<td>
<?php echo html::submitButton('', "onclick='setNoChecked()'", 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
<?php echo html::hidden('noChecked'); // Save the value of no checked.?>
</td>
</tr>
+1 -1
View File
@@ -42,7 +42,7 @@
<tr>
<td class='text-center' colspan='3'>
<?php echo html::submitButton('', "onclick='setNoChecked()'", 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
<?php echo html::hidden('foo'); // Just make $_POST not empty..?>
</td>
</tr>
+1 -1
View File
@@ -119,7 +119,7 @@
<?php if($canBatchEdit):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class="table-actions btn-toolbar">
<?php echo html::submitButton($lang->edit);?>
<?php echo html::submitButton($lang->edit, '', 'btn');?>
</div>
<?php endif;?>
<?php if(!$canOrder and common::hasPriv('product', 'updateOrder')) echo html::a(inlink('all', "productID=$productID&line=$line&status=$status&order=order_desc&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"), $lang->product->updateOrder, '' , "class='btn'");?>
+1 -1
View File
@@ -61,7 +61,7 @@
<tr>
<td colspan="<?php echo count($visibleFields) + 4?>" class="text-center">
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', "btn btn-wide");?>
<?php echo html::backButton('', '', "btn btn-wide btn-gray");?>
</td>
</tr>
</tfoot>
+1 -1
View File
@@ -42,7 +42,7 @@
<tr>
<td colspan='5' class="text-center">
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', "btn btn-wide");?>
<?php echo html::backButton('', '', "btn btn-wide btn-gray");?>
</td>
</tr>
</tfoot>
+3 -3
View File
@@ -16,10 +16,10 @@
<?php js::set('planID', $plan->id);?>
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'>
<?php $browseLink = $this->session->productPlanList ? $this->session->productPlanList : inlink('browse', "planID=$plan->id");?>
<?php common::printBack($browseLink, 'btn btn-link');?>
<div class='divider'></div>
<div class='page-title'>
<?php $browseLink = $this->session->productPlanList ? $this->session->productPlanList : inlink('browse', "planID=$plan->id");?>
<?php common::printBack($browseLink, 'btn btn-link');?>
<div class='divider'></div>
<span class='label label-id'><?php echo $plan->id;?></span>
<?php echo $plan->title;?>
<?php if($plan->deleted):?>
+10 -5
View File
@@ -569,10 +569,10 @@ class project extends control
$stories = $this->story->getProjectStories($projectID, $sort, $type, $param, $pager);
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story', false);
$users = $this->user->getPairs('noletter');
$users = $this->user->getPairs('noletter');
/* Get project's product. */
$productID = 0;
$productID = 0;
$productPairs = $this->loadModel('product')->getProductsByProject($projectID);
if($productPairs) $productID = key($productPairs);
@@ -600,9 +600,9 @@ class project extends control
/* Count T B C */
$storyIdList = array_keys($stories);;
$storyTasks = $this->loadModel('task')->getStoryTaskCounts($storyIdList, $projectID);
$storyBugs = $this->loadModel('bug')->getStoryBugCounts($storyIdList, $projectID);
$storyCases = $this->loadModel('testcase')->getStoryCaseCounts($storyIdList);
$storyTasks = $this->loadModel('task')->getStoryTaskCounts($storyIdList, $projectID);
$storyBugs = $this->loadModel('bug')->getStoryBugCounts($storyIdList, $projectID);
$storyCases = $this->loadModel('testcase')->getStoryCaseCounts($storyIdList);
$plans = $this->project->getPlans($productID);
$allPlans = array('' => '');
@@ -614,6 +614,11 @@ class project extends control
}
}
if($type == 'byModule')
{
$this->view->module = $this->loadModel('tree')->getById($param);
}
/* Assign. */
$this->view->title = $title;
$this->view->position = $position;
-3
View File
@@ -1,7 +1,5 @@
$(function()
{
ajaxGetSearchForm();
$('#storyList').on('sort.sortable', function(e, data)
{
var list = '';
@@ -36,7 +34,6 @@ $(function()
function showCheckedSummary()
{
console.log('test');
var $summary = $('#main #mainContent form.main-table .table-header .table-statistic');
var checkedTotal = 0;
+2 -2
View File
@@ -14,11 +14,11 @@
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left">
<span class='btn btn-link btn-active-text'>
<span class='text'><?php echo html::icon($lang->icons['bug']);?> <?php echo $lang->project->bug;?></span>
<span class='text'><?php echo $lang->bug->allBugs;?></span>
<span class="label label-light label-badge"><?php echo $pager->recTotal;?></span>
<?php if($build) echo ' <span class="label label-danger">Build:' . $build->name . '</span>';?>
</span>
<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> <?php echo $lang->bug->search;?></a>
<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> <?php echo $lang->bug->search;?></a>
</div>
<div class="btn-toolbar pull-right">
<?php common::printLink('bug', 'export', "productID=$productID&orderBy=$orderBy", "<i class='icon icon-export'> </i>" . $lang->bug->export, '', "class='btn btn-link export iframe'");?>
+64 -64
View File
@@ -15,79 +15,79 @@
<div class="btn-toolbar pull-left">
<span class='btn btn-link btn-active-text'><span class='text'><?php echo $lang->project->linkStory;?></span></span>
</div>
<div class='btn-toolbar pull-right'><?php echo html::a($this->server->http_referer, '<i class="icon-goback icon-level-up icon-large icon-rotate-270"></i> ' . $lang->goback, '', "class='btn btn-link'")?></div>
<div class='btn-toolbar pull-right'>
<?php common::printBack($this->server->http_referer, 'btn btn-link');?>
</div>
</div>
<div id="mainContent" class="main-content">
<div id='queryBox' class='show'></div>
<form class='main-table table-story' method='post' data-ride='table' id='linkStoryForm'>
<table class='table table-fixed' id='linkStoryList'>
<thead>
<tr>
<th class='c-id'>
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
<label></label>
</div>
<?php echo $lang->idAB;?>
</th>
<th class='w-pri'><?php echo $lang->priAB;?></th>
<th class='w-150px'><?php echo $lang->story->product;?></th>
<th class='w-150px'><?php echo $lang->story->module;?></th>
<th><?php echo $lang->story->title;?></th>
<th class='w-120px'><?php echo $lang->story->plan;?></th>
<th class='w-80px'><?php echo $lang->story->stage;?></th>
<?php if($productType != 'normal'):?>
<th class='w-80px'><?php echo $lang->product->branchName[$productType];?></th>
<?php endif;?>
<th class='w-user'><?php echo $lang->openedByAB;?></th>
<th class='w-80px'><?php echo $lang->story->estimateAB;?></th>
</tr>
</thead>
<tbody>
<?php $storyCount = 0;?>
<?php foreach($allStories as $story):?>
<?php if(isset($prjStories[$story->id])) continue;?>
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
<tr>
<td class='c-id'>
<div class="checkbox-primary">
<input type='checkbox' name='stories[]' value='<?php echo $story->id;?>'/>
<label></label>
<form class='main-table table-story' method='post' data-ride='table' id='linkStoryForm'>
<table class='table table-fixed' id='linkStoryList'>
<thead>
<tr>
<th class='c-id'>
<?php if($allStories):?>
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
<label></label>
</div>
<?php endif;?>
<?php echo $lang->idAB;?>
</th>
<th class='w-pri'><?php echo $lang->priAB;?></th>
<th class='w-150px'><?php echo $lang->story->product;?></th>
<th class='w-150px'><?php echo $lang->story->module;?></th>
<th><?php echo $lang->story->title;?></th>
<th class='w-120px'><?php echo $lang->story->plan;?></th>
<th class='w-80px'><?php echo $lang->story->stage;?></th>
<?php if($productType != 'normal'):?>
<th class='w-80px'><?php echo $lang->product->branchName[$productType];?></th>
<?php endif;?>
<th class='w-user'><?php echo $lang->openedByAB;?></th>
<th class='w-80px text-center'><?php echo $lang->story->estimateAB;?></th>
</tr>
</thead>
<tbody>
<?php $storyCount = 0;?>
<?php foreach($allStories as $story):?>
<?php if(isset($prjStories[$story->id])) continue;?>
<?php $storyLink = $this->createLink('story', 'view', "storyID=$story->id");?>
<tr>
<td class='cell-id'>
<?php echo html::checkbox('stories', array($story->id => sprintf('%03d', $story->id)));?>
<?php echo html::hidden("products[$story->id]", $story->product);?>
<?php printf('%03d', $story->id);?>
</div>
</td>
<td><span class='label-pri <?php echo 'label-pri-' . $story->pri;?>'><?php echo zget($lang->story->priList, $story->pri, $story->pri);?></span></td>
<td class='text-left' title='<?php echo $products[$story->product]->name?>'><?php echo html::a($this->createLink('product', 'browse', "productID=$story->product&branch=$story->branch"), $products[$story->product]->name, '_blank');?></td>
<td class='text-left' title='<?php echo zget($modules, $story->module, '')?>'><?php echo zget($modules, $story->module, '')?></td>
<td class='text-left nobr' title="<?php echo $story->title?>"><?php echo html::a($storyLink, $story->title);?></td>
<td title='<?php echo $story->planTitle;?>'><?php echo $story->planTitle;?></td>
<td><?php echo zget($lang->story->stageList, $story->stage);?></td>
<?php if($productType != 'normal'):?>
<td><?php if(isset($branchGroups[$story->product][$story->branch])) echo $branchGroups[$story->product][$story->branch];?></td>
</td>
<td><span class='label-pri <?php echo 'label-pri-' . $story->pri;?>'><?php echo zget($lang->story->priList, $story->pri, $story->pri);?></span></td>
<td class='text-left' title='<?php echo $products[$story->product]->name?>'><?php echo html::a($this->createLink('product', 'browse', "productID=$story->product&branch=$story->branch"), $products[$story->product]->name, '_blank');?></td>
<td class='text-left' title='<?php echo zget($modules, $story->module, '')?>'><?php echo zget($modules, $story->module, '')?></td>
<td class='text-left nobr' title="<?php echo $story->title?>"><?php echo html::a($storyLink, $story->title);?></td>
<td title='<?php echo $story->planTitle;?>'><?php echo $story->planTitle;?></td>
<td><?php echo zget($lang->story->stageList, $story->stage);?></td>
<?php if($productType != 'normal'):?>
<td><?php if(isset($branchGroups[$story->product][$story->branch])) echo $branchGroups[$story->product][$story->branch];?></td>
<?php endif;?>
<td><?php echo zget($users, $story->openedBy);?></td>
<td class='text-center'><?php echo $story->estimate;?></td>
</tr>
<?php $storyCount++;?>
<?php endforeach;?>
</tbody>
</table>
<div class='table-footer'>
<?php if($storyCount):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class='table-actions btn-toolbar'>
<?php echo html::submitButton('', '', 'btn');?>
</div>
<?php else:?>
<div class='text'><?php echo $lang->project->whyNoStories;?></div>
<?php endif;?>
<td><?php echo zget($users, $story->openedBy, $story->openedBy);?></td>
<td><?php echo $story->estimate;?></td>
</tr>
<?php $storyCount ++;?>
<?php endforeach;?>
</tbody>
</table>
<div class='table-footer'>
<?php if($storyCount):?>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class='table-actions btn-toolbar'>
<?php echo html::submitButton();?>
</div>
<?php else:?>
<div class='text'><?php echo $lang->project->whyNoStories;?></div>
<?php endif;?>
</div>
</form>
</form>
</div>
<script type='text/javascript'>
$(function()
{
ajaxGetSearchForm()
ajaxGetSearchForm();
});
</script>
<?php include '../../common/view/footer.html.php';?>
+28 -33
View File
@@ -20,33 +20,24 @@
<div id="mainMenu" class="clearfix">
<div id="sidebarHeader">
<?php echo html::commonButton('<i class="icon icon-caret-left"></i>', '', 'btn btn-icon btn-sm btn-info sidebar-toggle');?>
<?php if(!empty($module->name)):?>
<div class="title" title='<?php echo $module->name?>'>
<?php $removeLink = inlink('story', "projectID=$project->id&orderBy=$orderBy&type=$type&param=0&recTotal=0&recPerPage={$pager->recPerPage}");?>
<?php echo $module->name;?>
<?php echo html::a($removeLink, "<i class='icon icon-sm icon-close'></i>", '', "class='text-muted'");?>
</div>
<?php else:?>
<div class="title" title='<?php echo $project->name?>'><?php echo $project->name;?></div>
<?php endif;?>
</div>
<div class="btn-toolbar pull-left">
<?php if(common::hasPriv('project', 'story')) echo html::a($this->createLink('project', 'story', "project=$project->id"), "<span class='text'>{$lang->project->story}</span>", '', "class='btn btn-link btn-active-text'");?>
<?php if(common::hasPriv('project', 'storykanban')) echo html::a($this->createLink('project', 'storykanban', "project=$project->id"), "<span class='text'>{$lang->project->kanban}</span>", '', "class='btn btn-link'");?>
<?php if(common::hasPriv('project', 'story')) echo html::a($this->createLink('project', 'story', "projectID=$project->id"), "<span class='text'>{$lang->story->allStories}</span><span class='label label-light label-badge'>{$pager->recTotal}</span>", '', "class='btn btn-link btn-active-text'");?>
<?php if(common::hasPriv('project', 'storykanban')) echo html::a($this->createLink('project', 'storykanban', "projectID=$project->id"), "<span class='text'>{$lang->project->kanban}</span>", '', "class='btn btn-link'");?>
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->product->searchStory;?></a>
</div>
<div class="btn-toolbar pull-right">
<div class='btn-group'>
<?php
common::printIcon('story', 'export', "productID=$productID&orderBy=id_desc", '', 'button', '', '', 'export');
$this->lang->story->create = $this->lang->project->createStory;
if($productID and !$this->loadModel('story')->checkForceReview())
{
echo "<div class='btn-group' id='createActionMenu'>";
common::printIcon('story', 'create', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id");
$misc = common::hasPriv('story', 'batchCreate') ? '' : "disabled";
$link = common::hasPriv('story', 'batchCreate') ? $this->createLink('story', 'batchCreate', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id") : '#';
echo "<button type='button' class='btn btn-link dropdown-toggle {$misc}' data-toggle='dropdown'>";
echo "<span class='caret'></span>";
echo '</button>';
echo "<ul class='dropdown-menu pull-right'>";
echo "<li>" . html::a($link, $lang->story->batchCreate, '', "class='$misc'") . "</li>";
echo '</ul>';
echo '</div>';
}
common::printLink('story', 'export', "productID=$productID&orderBy=id_desc", "<i class='icon icon-export'> </i>" . $lang->story->export, '', "class='btn btn-link export'");
if(commonModel::isTutorialMode())
{
@@ -68,12 +59,17 @@
}
echo '</div>';
}
$this->lang->story->create = $this->lang->project->createStory;
if($productID and !$this->loadModel('story')->checkForceReview())
{
common::printLink('story', 'batchCreate', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id", "<i class='icon icon-plus'> </i>" . $lang->story->batchCreate, '', "class='btn btn-secondary'");
common::printLink('story', 'create', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id", "<i class='icon icon-plus'> </i>" . $lang->story->create, '', "class='btn btn-primary'");
}
?>
</div>
</div>
</div>
<div id='queryBox' class='show'></div>
<div id="mainContent" class="main-row">
<div class='side-col' id='sidebar'>
<div class="cell">
@@ -81,6 +77,7 @@
</div>
</div>
<div class="main-col">
<div class="cell" id="queryBox"></div>
<form class='main-table table-story' method='post' data-ride='table' id='projectStoryForm'>
<div class="table-header">
<div class="table-statistic"><?php echo $summary;?></div>
@@ -106,7 +103,7 @@
<?php if($canOrder):?>
<th class='w-80px'> <?php common::printOrderLink('order', $orderBy, $vars, $lang->project->updateOrder);?></th>
<?php endif;?>
<th class='w-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th class='c-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th> <?php common::printOrderLink('title', $orderBy, $vars, $lang->story->title);?></th>
<th class='w-user'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='w-80px'> <?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
@@ -116,7 +113,7 @@
<th title='<?php echo $lang->story->taskCount?>' class='w-30px'><?php echo $lang->story->taskCountAB;?></th>
<th title='<?php echo $lang->story->bugCount?>' class='w-30px'><?php echo $lang->story->bugCountAB;?></th>
<th title='<?php echo $lang->story->caseCount?>' class='w-30px'><?php echo $lang->story->caseCountAB;?></th>
<th class='w-160px'><?php echo $lang->actions;?></th>
<th class='c-actions-3 text-center'><?php echo $lang->actions;?></th>
</tr>
</thead>
<tbody id='storyTableList' class='sortable'>
@@ -126,14 +123,12 @@
$totalEstimate += $story->estimate;
?>
<tr id="story<?php echo $story->id;?>" data-id='<?php echo $story->id;?>' data-order='<?php echo $story->order ?>' data-estimate='<?php echo $story->estimate?>' data-cases='<?php echo zget($storyCases, $story->id, 0)?>'>
<td class='c-id'>
<div class="checkbox-primary">
<?php if($canBatchEdit or $canBatchClose):?>
<input type='checkbox' name='storyIDList[<?php echo $story->id;?>]' value='<?php echo $story->id;?>' />
<label></label>
<?php endif;?>
<?php printf('%03d', $story->id);?>
</div>
<td class='cell-id'>
<?php if($canBatchEdit or $canBatchClose):?>
<?php echo html::checkbox('storyIDList', array($story->id => sprintf('%03d', $story->id)));?>
<?php else:?>
<?php printf('%03d', $story->id);?>
<?php endif;?>
</td>
<?php if($canOrder):?>
<td class='sort-handler'><i class='icon-move'></i></td>
+2 -2
View File
@@ -15,8 +15,8 @@
<div class="title" title='<?php echo $project->name?>'><?php echo $project->name;?></div>
</div>
<div class="btn-toolbar pull-left">
<?php if(common::hasPriv('project', 'story')) echo html::a($this->createLink('project', 'story', "project=$project->id"), "<span class='text'>{$lang->project->story}</span>", '', "class='btn btn-link'");?>
<?php if(common::hasPriv('project', 'storykanban')) echo html::a($this->createLink('project', 'storykanban', "project=$project->id"), "<span class='text'>{$lang->project->kanban}</span>", '', "class='btn btn-link btn-active-text'");?>
<?php if(common::hasPriv('project', 'story')) echo html::a($this->createLink('project', 'story', "projectID=$project->id"), "<span class='text'>{$lang->story->allStories}</span>", '', "class='btn btn-link'");?>
<?php if(common::hasPriv('project', 'storykanban')) echo html::a($this->createLink('project', 'storykanban', "projectID=$project->id"), "<span class='text'>{$lang->project->kanban}</span>", '', "class='btn btn-link btn-active-text'");?>
</div>
<div class="btn-toolbar pull-right">
<div class='btn-group'>
-6
View File
@@ -84,12 +84,6 @@ js::set('browseType', $browseType);
}
}
common::printLink('project', 'kanban', "projectID=$projectID", $lang->project->kanban, '', "id='kanbanTab' class='btn btn-link'");
if($project->type == 'sprint' or $project->type == 'waterfall')
{
common::printLink('project', 'burn', "project=$projectID", $lang->project->burn, '', "id='burnTab' class='btn btn-link'");
}
common::printLink('project', 'tree', "projectID=$projectID", $lang->project->tree, '', "id='treeTab' class='btn btn-link'");
echo "<div class='btn-group'>";
$groupBy = isset($groupBy) ? $groupBy : '';
$current = zget($lang->project->groups, isset($groupBy) ? $groupBy : '', '');
+8 -5
View File
@@ -23,6 +23,7 @@ $lang->story->batchClose = 'Batch Close';
$lang->story->activate = 'Activate';
$lang->story->delete = "Delete";
$lang->story->view = "Story Details";
$lang->story->setting = "设置";
$lang->story->tasks = "Linked Task";
$lang->story->bugs = "Linked Bug";
$lang->story->cases = "Linked Case";
@@ -93,6 +94,8 @@ $lang->story->colorTag = 'Color Tag';
$lang->story->files = 'Files';
$lang->story->copy = "Duplicate a Story";
$lang->story->total = "Total Stories";
$lang->story->allStories = 'All';
$lang->story->unclosed = 'Unclosed';
$lang->story->ditto = 'Ditto';
$lang->story->dittoNotice = 'This Story does not belong to the same Product as the last Story does!';
@@ -152,11 +155,11 @@ $lang->story->sourceList['tester'] = 'QA Team';
$lang->story->sourceList['bug'] = 'Bug';
$lang->story->sourceList['other'] = 'Other';
$lang->story->priList[] = '';
$lang->story->priList[3] = '3';
$lang->story->priList[1] = '1';
$lang->story->priList[2] = '2';
$lang->story->priList[4] = '4';
$lang->story->priList[] = '';
$lang->story->priList[3] = '3';
$lang->story->priList[1] = '1';
$lang->story->priList[2] = '2';
$lang->story->priList[4] = '4';
$lang->story->legendBasicInfo = 'Basic Info';
$lang->story->legendLifeTime = 'Story Life ';
+6 -5
View File
@@ -94,6 +94,7 @@ $lang->story->colorTag = '颜色标签';
$lang->story->files = '附件';
$lang->story->copy = "复制需求";
$lang->story->total = '总需求';
$lang->story->allStories = '所有需求';
$lang->story->unclosed = '未关闭';
$lang->story->ditto = '同上';
@@ -154,11 +155,11 @@ $lang->story->sourceList['tester'] = '测试人员';
$lang->story->sourceList['bug'] = 'Bug';
$lang->story->sourceList['other'] = '其他';
$lang->story->priList[] = '';
$lang->story->priList[3] = '3';
$lang->story->priList[1] = '1';
$lang->story->priList[2] = '2';
$lang->story->priList[4] = '4';
$lang->story->priList[] = '';
$lang->story->priList[3] = '3';
$lang->story->priList[1] = '1';
$lang->story->priList[2] = '2';
$lang->story->priList[4] = '4';
$lang->story->legendBasicInfo = '基本信息';
$lang->story->legendLifeTime = '需求的一生';
+7 -5
View File
@@ -94,6 +94,8 @@ $lang->story->colorTag = '顏色標籤';
$lang->story->files = '附件';
$lang->story->copy = "複製需求";
$lang->story->total = '總需求';
$lang->story->allStories = '所有需求';
$lang->story->unclosed = '未關閉';
$lang->story->ditto = '同上';
$lang->story->dittoNotice = '該需求與上一需求不屬於同一產品!';
@@ -153,11 +155,11 @@ $lang->story->sourceList['tester'] = '測試人員';
$lang->story->sourceList['bug'] = 'Bug';
$lang->story->sourceList['other'] = '其他';
$lang->story->priList[] = '';
$lang->story->priList[3] = '3';
$lang->story->priList[1] = '1';
$lang->story->priList[2] = '2';
$lang->story->priList[4] = '4';
$lang->story->priList[] = '';
$lang->story->priList[3] = '3';
$lang->story->priList[1] = '1';
$lang->story->priList[2] = '2';
$lang->story->priList[4] = '4';
$lang->story->legendBasicInfo = '基本信息';
$lang->story->legendLifeTime = '需求的一生';
+2 -2
View File
@@ -55,8 +55,8 @@
<?php endforeach;?>
<tr>
<td colspan='5' class='text-center'>
<?php echo html::submitButton();?>
<?php echo html::backButton();?>
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
</td>
</tr>
</table>
+2 -1
View File
@@ -92,7 +92,8 @@
<tfoot>
<tr>
<td colspan="<?php echo count($visibleFields) + 3?>" class="text-center">
<?php echo html::submitButton($lang->save, '', 'btn btn-wide btn-primary') . '&nbsp;' . html::backButton('', '', "btn btn-wide");?>
<?php echo html::submitButton($lang->save, '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', "btn btn-wide btn-gray");?>
</td>
</tr>
</tfoot>
+8 -3
View File
@@ -45,12 +45,12 @@ foreach(explode(',', $showFields) as $field)
<?php endif;?>
<th class='w-150px'><?php echo $lang->story->module;?></th>
<th class='w-150px<?php echo zget($visibleFields, 'plan', ' hidden')?>'><?php echo $lang->story->planAB;?></th>
<th class='w-150px'> <?php echo $lang->story->title;?> <span class='required'></span></th>
<th class='w-150px'><?php echo $lang->story->title;?> <span class='required'></span></th>
<th class='w-50px<?php echo zget($visibleFields, 'estimate', ' hidden')?>'> <?php echo $lang->story->estimateAB;?></th>
<th class='w-70px<?php echo zget($visibleFields, 'pri', ' hidden')?>'> <?php echo $lang->priAB;?></th>
<th class='w-100px<?php echo zget($visibleFields, 'assignedTo', ' hidden')?>'> <?php echo $lang->story->assignedTo;?></th>
<th class='w-100px<?php echo zget($visibleFields, 'source', ' hidden')?>'> <?php echo $lang->story->source;?></th>
<th class='w-80px'> <?php echo $lang->story->status;?></th>
<th class='w-80px'><?php echo $lang->story->status;?></th>
<th class='w-100px<?php echo zget($visibleFields, 'stage', ' hidden')?>'> <?php echo $lang->story->stageAB;?></th>
<th class='w-130px<?php echo zget($visibleFields, 'closedBy', ' hidden')?>'><?php echo $lang->story->closedBy;?></th>
<th class='w-100px<?php echo zget($visibleFields, 'closedReason', ' hidden')?>'> <?php echo $lang->story->closedReason;?></th>
@@ -132,7 +132,12 @@ foreach(explode(',', $showFields) as $field)
<?php endforeach;?>
</tbody>
<tfoot>
<tr><td colspan='<?php echo count($visibleFields) + ($branchProduct ? 3 : 2);?>' class='text-center'><?php echo html::submitButton();?></td></tr>
<tr>
<td colspan='<?php echo count($visibleFields) + ($branchProduct ? 3 : 2);?>' class='text-center'>
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
</td>
</tr>
</tfoot>
</table>
</form>
+9 -7
View File
@@ -109,13 +109,15 @@ $lang->task->lblPri = 'P';
$lang->task->lblHour = '(h)';
$lang->task->deniedNotice = '此任務只允許由團隊第一人開始。';
$lang->task->ditto = '同上';
$lang->task->dittoNotice = "該任務與上一任務不屬於同一項目!";
$lang->task->selectAllUser = '全部';
$lang->task->noStory = '無需求';
$lang->task->noAssigned = '未指派';
$lang->task->noFinished = '未完成';
$lang->task->noClosed = '未關閉';
$lang->task->ditto = '同上';
$lang->task->dittoNotice = "該任務與上一任務不屬於同一項目!";
$lang->task->selectAllUser = '全部';
$lang->task->noStory = '無需求';
$lang->task->noAssigned = '未指派';
$lang->task->noFinished = '未完成';
$lang->task->noClosed = '未關閉';
$lang->task->yesterdayFinished = '昨日完成';
$lang->task->allTasks = '總任務';
$lang->task->statusList[''] = '';
$lang->task->statusList['wait'] = '未開始';
+7 -2
View File
@@ -166,7 +166,10 @@
<td colspan='3'><?php echo html::radio('after', $lang->task->afterChoices, $this->config->global->flow == 'onlyTask' || !empty($task->id) ? 'toTaskList' : 'continueAdding');?></td>
</tr>
<tr>
<td colspan='4' class='text-center'><?php echo html::submitButton('', '', 'btn btn-primary btn-wide') . html::backButton('', '', 'btn btn-gray btn-wide');?></td>
<td colspan='4' class='text-center'>
<?php echo html::submitButton('', '', 'btn btn-primary btn-wide');?>
<?php echo html::backButton('', '', 'btn btn-gray btn-wide');?>
</td>
</tr>
</table>
@@ -196,7 +199,9 @@
</tr>
<?php endfor;?>
<tr>
<td colspan='3' class='text-center'><?php echo html::a('javascript:void(0)', $lang->confirm, '', "class='btn btn-primary' data-dismiss='modal'") ?></td>
<td colspan='3' class='text-center'>
<?php echo html::a('javascript:void(0)', $lang->confirm, '', "class='btn btn-primary' data-dismiss='modal'");?>
</td>
</tr>
</table>
</div>
+1 -1
View File
@@ -190,7 +190,7 @@
<?php
echo html::submitButton($lang->save, '', 'btn btn-wide btn-primary');
echo ' &nbsp; ';
echo html::backButton($lang->goback, '', 'btn btn-wide');
echo html::backButton($lang->goback, '', 'btn btn-wide btn-gray');
?>
</td>
</tr>
+1 -1
View File
@@ -138,7 +138,7 @@
<div class="row form-group form-actions">
<div class="col-sm-offset-2 col-sm-10">
<?php echo html::submitButton('', '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', 'btn btn-wide');?>
<?php echo html::backButton('', '', 'btn btn-wide btn-gray');?>
</div>
</div>
</form>
+1 -1
View File
@@ -829,7 +829,7 @@ class treeModel extends model
{
$projectID = $extra['projectID'];
$productID = $extra['productID'];
return html::a(helper::createLink('project', 'story', "root={$projectID}&orderBy=&type=byModule&param={$module->id}"), $module->name, '_self', "id='module{$module->id}'");
return html::a(helper::createLink('project', 'story', "projectID={$projectID}&orderBy=&type=byModule&param={$module->id}"), $module->name, '_self', "id='module{$module->id}'");
}
/**
+2 -1
View File
@@ -102,7 +102,8 @@
<tfoot>
<tr>
<td colspan="<?php echo count($visibleFields) + 6?>" class="text-center">
<?php echo html::submitButton($lang->save, '', 'btn btn-wide btn-primary') . '&nbsp;' . html::backButton('', '', "btn btn-wide");?>
<?php echo html::submitButton($lang->save, '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', "btn btn-wide btn-gray");?>
</td>
</tr>
</tfoot>
+2 -1
View File
@@ -94,7 +94,8 @@
<tfoot>
<tr>
<td colspan="<?php echo count($visibleFields) + 4;?>" class="text-center">
<?php echo html::submitButton($lang->save, '', 'btn btn-wide btn-primary') . '&nbsp;' . html::backButton('', '', "btn btn-wide");?>
<?php echo html::submitButton($lang->save, '', 'btn btn-wide btn-primary');?>
<?php echo html::backButton('', '', "btn btn-wide btn-gray");?>
</td>
</tr>
</tfoot>