Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -2,3 +2,4 @@
|
||||
.branch-list > li {float: left; list-style: none; width: 50%; margin: 5px 0;}
|
||||
.data-basic.table-data tbody > tr > th {width: 80px;}
|
||||
.block-release .panel-body, .block-dynamic .panel-body {height: 224px; overflow: auto;}
|
||||
.block-release .panel-body .release-line > li > a > .info{min-height: 18px;}
|
||||
|
||||
@@ -1287,6 +1287,9 @@ class project extends control
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->projects, $project->id);
|
||||
|
||||
$actions = $this->dao->select('*')->from(TABLE_ACTION)->where('project')->eq("$projectID")->orderBy('date_desc')->limit(6)->fetchAll();
|
||||
if($actions) $this->loadModel('action')->transformActions($actions);
|
||||
|
||||
$this->view->title = $this->lang->project->view;
|
||||
$this->view->position[] = html::a($this->createLink('project', 'browse', "projectID=$projectID"), $project->name);
|
||||
$this->view->position[] = $this->view->title;
|
||||
@@ -1295,8 +1298,9 @@ class project extends control
|
||||
$this->view->products = $products;
|
||||
$this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($products));
|
||||
$this->view->groups = $this->loadModel('group')->getPairs();
|
||||
$this->view->actions = $this->loadModel('action')->getList('project', $projectID);
|
||||
$this->view->actions = $actions;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->builds = $this->loadModel('build')->getProjectBuilds((int)$projectID);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
.outer .main-side > fieldset {padding-right: 0px;}
|
||||
.data-basic > tbody > tr > th{width: 80px;}
|
||||
.block-release .panel-body, .block-dynamic .panel-body {height: 224px; overflow: auto;}
|
||||
.block-release .panel-body .release-line > li > a > .info{min-height: 18px;}
|
||||
|
||||
@@ -29,6 +29,8 @@ $lang->project->PO = 'PO';
|
||||
$lang->project->PM = 'PM';
|
||||
$lang->project->QD = 'QA Manager';
|
||||
$lang->project->RD = 'Release Manager';
|
||||
$lang->project->qa = 'Test';
|
||||
$lang->project->release = 'Release';
|
||||
$lang->project->acl = 'Access Control';
|
||||
$lang->project->teamname = 'Team Name';
|
||||
$lang->project->order = "Sort {$lang->projectCommon}";
|
||||
@@ -106,6 +108,7 @@ $lang->project->groupTask = 'View by Group';
|
||||
$lang->project->story = 'Stories';
|
||||
$lang->project->bug = 'Bugs';
|
||||
$lang->project->dynamic = 'Dynamic';
|
||||
$lang->project->latestDynamic = 'Latest Dynamic';
|
||||
$lang->project->build = 'Builds';
|
||||
$lang->project->testtask = 'Test Tasks';
|
||||
$lang->project->burn = 'Burndown';
|
||||
@@ -141,6 +144,8 @@ $lang->project->tree = 'Tree';
|
||||
$lang->project->storyKanban = 'Story Kanban';
|
||||
$lang->project->storySort = 'Sort Story';
|
||||
$lang->project->importPlanStory = 'Create ' . $lang->projectCommon . ' success!\nImport the stories with the plan?';
|
||||
$lang->project->iteration = 'Iteration';
|
||||
$lang->project->iterationInfo = 'Iteration %s times';
|
||||
|
||||
/* 分组浏览。*/
|
||||
$lang->project->allTasks = 'All';
|
||||
|
||||
@@ -22,6 +22,7 @@ $lang->project->to = '至';
|
||||
$lang->project->days = '可用工作日';
|
||||
$lang->project->day = '天';
|
||||
$lang->project->workHour = '工时';
|
||||
$lang->project->totalHours = '可用工时';
|
||||
$lang->project->status = $lang->projectCommon . '状态';
|
||||
$lang->project->desc = $lang->projectCommon . '描述';
|
||||
$lang->project->owner = '负责人';
|
||||
@@ -29,6 +30,8 @@ $lang->project->PO = $lang->productCommon . '负责人';
|
||||
$lang->project->PM = $lang->projectCommon . '负责人';
|
||||
$lang->project->QD = '测试负责人';
|
||||
$lang->project->RD = '发布负责人';
|
||||
$lang->project->qa = '测试';
|
||||
$lang->project->release = '发布';
|
||||
$lang->project->acl = '访问控制';
|
||||
$lang->project->teamname = '团队名称';
|
||||
$lang->project->order = $lang->projectCommon . '排序';
|
||||
@@ -106,6 +109,7 @@ $lang->project->groupTask = '分组浏览任务';
|
||||
$lang->project->story = '需求列表';
|
||||
$lang->project->bug = 'Bug列表';
|
||||
$lang->project->dynamic = '动态';
|
||||
$lang->project->latestDynamic = '最新动态';
|
||||
$lang->project->build = '版本列表';
|
||||
$lang->project->testtask = '测试任务';
|
||||
$lang->project->burn = '燃尽图';
|
||||
@@ -141,6 +145,8 @@ $lang->project->tree = '树状图';
|
||||
$lang->project->storyKanban = '需求看板';
|
||||
$lang->project->storySort = '需求排序';
|
||||
$lang->project->importPlanStory = '创建' . $lang->projectCommon . '成功!\n是否导入计划关联的相关需求?';
|
||||
$lang->project->iteration = '版本迭代';
|
||||
$lang->project->iterationInfo = '迭代%s次';
|
||||
|
||||
/* 分组浏览。*/
|
||||
$lang->project->allTasks = '所有';
|
||||
|
||||
@@ -12,26 +12,31 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div class='container mw-1400px'>
|
||||
<div id='titlebar'>
|
||||
<div class='heading'>
|
||||
<span class='prefix'><?php echo html::icon($lang->icons['project']);?> <strong><?php echo $project->id;?></strong></span>
|
||||
<strong><?php echo html::a($this->createLink('project', 'view', 'project=' . $project->id), $project->name, '_blank');?></strong>
|
||||
<small class='text-muted'> <?php echo $lang->project->start;?> <?php echo html::icon($lang->icons['start']);?></small>
|
||||
</div>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='prefix label-id'><strong><?php echo $project->id;?></strong></span>
|
||||
<?php echo html::a($this->createLink('project', 'view', 'project=' . $project->id), $project->name, '_blank');?>
|
||||
<small><?php echo $lang->arrow . $lang->project->start;?></small>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='form-condensed' method='post' target='hiddenwin'>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th class='text-left'><?php echo $lang->comment;?></th>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td><?php echo html::submitButton($lang->project->start) . html::linkButton($lang->goback, $this->session->taskList); ?></td>
|
||||
</tr>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->comment;?></th>
|
||||
<td><?php echo html::textarea('comment', '', "rows='6' class='form-control kindeditor' hidefocus='true'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td><?php echo html::submitButton($lang->project->start) . html::linkButton($lang->goback, $this->session->taskList); ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
<div class='main'><?php include '../../common/view/action.html.php';?></div>
|
||||
<hr class='small' />
|
||||
<div class='main'>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+190
-117
@@ -11,15 +11,197 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='titlebar'>
|
||||
<div class='heading'>
|
||||
<span class='prefix'><?php echo html::icon($lang->icons['project']);?> <strong><?php echo $project->id;?></strong></span>
|
||||
<strong><?php echo $project->name;?></strong>
|
||||
<?php if($project->deleted):?>
|
||||
<span class='label label-danger'><?php echo $lang->project->deleted;?></span>
|
||||
<?php endif; ?>
|
||||
<div class="main-row">
|
||||
<div class="col-8 main-col">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="panel block-release">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title"><?php echo $lang->project->iteration;?> <span class="label label-badge label-light"><?php echo sprintf($lang->project->iterationInfo, count($builds));?></span></div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="release-path">
|
||||
<ul class="release-line">
|
||||
<?php foreach($builds as $build):?>
|
||||
<?php $icon = !empty($build->flag) ? "<i class='icon icon-flag'></i>" : '';?>
|
||||
<li class="<?php echo end($build)->id == $build->id ? 'active' : '';?>">
|
||||
<a href="<?php echo $this->createLink('build', 'view', "buildID={$build->id}");?>">
|
||||
<span class="title"><?php echo $build->name;?></span>
|
||||
<span class="date"><?php echo $build->date;?></span>
|
||||
<span class="info"><?php echo $build->desc;?></span>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="panel block-dynamic">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title"><?php echo $lang->project->latestDynamic;?></div>
|
||||
<nav class="panel-actions nav nav-default">
|
||||
<li><a href="<?php echo $this->createLink('project', 'dynamic', "projectID=$project->id&type=all")?>" title="<?php echo $lang->more;?>">MORE</i></a></li>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<ul class="timeline timeline-tag-left">
|
||||
<?php $i = 1;?>
|
||||
<?php foreach($actions as $action):?>
|
||||
<?php $i++;?>
|
||||
<li <?php if($i % 3 == 0) echo "class='active'";?>>
|
||||
<div>
|
||||
<span class="timeline-tag"><?php echo $action->date;?></span>
|
||||
<span class="timeline-text"><?php echo zget($users, $action->actor) . ' ' . $action->actionLabel . $action->objectLabel . ' ' . html::a($action->objectLink, $action->objectName);?></span>
|
||||
</div>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<?php $blockHistory = true;?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 side-col">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="cell">
|
||||
<div class="detail">
|
||||
<h2 class="detail-title"><span class="label-id"><?php echo $project->id;?></span> <span class="label label-light label-outline"><?php echo $project->code;?></span> <?php echo $project->name;?></h2>
|
||||
<div class="detail-content article-content">
|
||||
<p>
|
||||
<span class="text-limit" data-limit-size="40"><?php echo $project->desc;?></span>
|
||||
<a class="text-primary text-limit-toggle small" data-text-expand="<?php echo $lang->expand;?>" data-text-collapse="<?php echo $lang->collapse;?>"></a>
|
||||
</p>
|
||||
<p>
|
||||
<?php if($project->deleted):?>
|
||||
<span class='label label-danger label-outline'><?php echo $lang->project->deleted;?></span>
|
||||
<?php endif; ?>
|
||||
<span class="label label-primary label-outline"><?php echo zget($lang->project->typeList, $project->type);?></span>
|
||||
<?php if(isset($project->delay)):?>
|
||||
<span class="label label-danger label-outline"><?php echo $lang->project->delayed;?></span>
|
||||
<?php else:?>
|
||||
<span class="label label-success label-outline"><?php echo zget($lang->project->statusList, $project->status);?></span>
|
||||
<?php endif;?>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><strong><?php echo $lang->project->lblStats;?></strong></div>
|
||||
<div class="detail-content">
|
||||
<table class='table table-data data-stats'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->totalHours;?></th>
|
||||
<td><em><?php echo $project->totalHours;?></em></td>
|
||||
<th><?php echo $lang->project->totalEstimate;?></th>
|
||||
<td><em><?php echo $project->totalEstimate;?></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->totalConsumed;?></th>
|
||||
<td><em><?php echo $project->totalConsumed;?></em></td>
|
||||
<th><?php echo $lang->project->totalLeft;?></th>
|
||||
<td><em><?php echo $project->totalLeft;?></em></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($this->config->global->flow != 'onlyTask'):?>
|
||||
<div class="detail">
|
||||
<div class="detail-title"><strong><?php echo $lang->project->owner;?></strong></div>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><i class="icon icon-person icon-sm"></i> <?php echo $lang->projectCommon;?></th>
|
||||
<td><em><?php echo zget($users, $project->PM);?></em></td>
|
||||
<th><i class="icon icon-person icon-sm"></i> <?php echo $lang->productCommon;?></th>
|
||||
<td><em><?php echo zget($users, $project->PO);?></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><i class="icon icon-person icon-sm"></i> <?php echo $lang->project->qa;?></th>
|
||||
<td><em><?php echo zget($users, $project->QD);?></em></td>
|
||||
<th><i class="icon icon-person icon-sm"></i> <?php echo $lang->project->release;?></th>
|
||||
<td><em><?php echo zget($users, $project->RD);?></em></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="detail">
|
||||
<div class="detail-title"><strong><?php echo $lang->project->basicInfo;?></strong></div>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data data-basic">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->beginAndEnd;?></th>
|
||||
<td><em><?php echo $project->begin . ' ~ ' . $project->end;?></em></td>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->days;?></th>
|
||||
<td><em><?php echo $project->days;?></em></td>
|
||||
</tr>
|
||||
<?php if($this->config->global->flow != 'onlyTask'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->products;?></th>
|
||||
<td>
|
||||
<em>
|
||||
<?php
|
||||
foreach($products as $productID => $product)
|
||||
{
|
||||
if($product->type !== 'normal')
|
||||
{
|
||||
$branchName = isset($branchGroups[$productID][$product->branch]) ? '/' . $branchGroups[$productID][$product->branch] : '';
|
||||
echo html::a($this->createLink('product', 'browse', "productID=$productID&branch=$product->branch"), $product->name . $branchName);
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a($this->createLink('product', 'browse', "productID=$productID"), $product->name);
|
||||
}
|
||||
echo '<br />';
|
||||
}
|
||||
?>
|
||||
</em>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->acl;?></th>
|
||||
<td><em><?php echo $lang->project->aclList[$project->acl];?></em></td>
|
||||
</tr>
|
||||
<?php if($project->acl == 'custom'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->whitelist;?></th>
|
||||
<td>
|
||||
<em>
|
||||
<?php
|
||||
$whitelist = explode(',', $project->whitelist);
|
||||
foreach($whitelist as $groupID) if(isset($groups[$groupID])) echo $groups[$groupID] . ' ';
|
||||
?>
|
||||
</em>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='actions'>
|
||||
</div>
|
||||
|
||||
<div id="mainActions">
|
||||
<nav class="container"></nav>
|
||||
<div class="btn-toolbar">
|
||||
<?php
|
||||
$params = "project=$project->id";
|
||||
$browseLink = $this->session->projectList ? $this->session->projectList : inlink('browse', "projectID=$project->id");
|
||||
@@ -50,113 +232,4 @@
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row-table'>
|
||||
<div class='col-main'>
|
||||
<div class='main'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->project->desc;?></legend>
|
||||
<div class='content'>
|
||||
<?php echo $project->desc;?>
|
||||
<div>
|
||||
<label><?php echo $lang->project->lblStats?></label>
|
||||
<?php printf($lang->project->stats, $project->totalHours, $project->totalEstimate, $project->totalConsumed, $project->totalLeft, 10)?>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div class='actions'> <?php if(!$project->deleted) echo $actionLinks;?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-side'>
|
||||
<div class='main main-side'>
|
||||
<fieldset>
|
||||
<legend><?php echo $lang->project->basicInfo?></legend>
|
||||
<table class='table table-data table-condensed table-borderless'>
|
||||
<tr>
|
||||
<th class='w-110px text-right strong'><?php echo $lang->project->name;?></th>
|
||||
<td><?php echo $project->name;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->code;?></th>
|
||||
<td><?php echo $project->code;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->beginAndEnd;?></th>
|
||||
<td><?php echo $project->begin . ' ~ ' . $project->end;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->days;?></th>
|
||||
<td><?php echo $project->days;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->type;?></th>
|
||||
<td><?php echo $lang->project->typeList[$project->type];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->status;?></th>
|
||||
<?php if(isset($project->delay)):?>
|
||||
<td class='delay'><?php echo $lang->project->delayed;?></td>
|
||||
<?php else:?>
|
||||
<td class='<?php echo $project->status;?>'><?php $lang->show($lang->project->statusList, $project->status);?></td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->PM;?></th>
|
||||
<td><?php echo zget($users, $project->PM, $project->PM);?></td>
|
||||
</tr>
|
||||
<?php if($this->config->global->flow != 'onlyTask'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->PO;?></th>
|
||||
<td><?php echo zget($users, $project->PO, $project->PO);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->QD;?></th>
|
||||
<td><?php echo zget($users, $project->QD, $project->QD);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->RD;?></th>
|
||||
<td><?php echo zget($users, $project->RD, $project->RD);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->products;?></th>
|
||||
<td>
|
||||
<?php
|
||||
foreach($products as $productID => $product)
|
||||
{
|
||||
if($product->type !== 'normal')
|
||||
{
|
||||
$branchName = isset($branchGroups[$productID][$product->branch]) ? '/' . $branchGroups[$productID][$product->branch] : '';
|
||||
echo html::a($this->createLink('product', 'browse', "productID=$productID&branch=$product->branch"), $product->name . $branchName);
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a($this->createLink('product', 'browse', "productID=$productID"), $product->name);
|
||||
}
|
||||
echo '<br />';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->acl;?></th>
|
||||
<td><?php echo $lang->project->aclList[$project->acl];?></td>
|
||||
</tr>
|
||||
<?php if($project->acl == 'custom'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->whitelist;?></th>
|
||||
<td>
|
||||
<?php
|
||||
$whitelist = explode(',', $project->whitelist);
|
||||
foreach($whitelist as $groupID) if(isset($groups[$groupID])) echo $groups[$groupID] . ' ';
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
Reference in New Issue
Block a user