* Add project overview block.
This commit is contained in:
@@ -242,7 +242,8 @@ class block extends control
|
||||
$block->actionLink = '';
|
||||
if($block->block == 'overview' && common::hasPriv('product', 'create'))
|
||||
{
|
||||
$block->actionLink = html::a($this->createLink('product', 'create'), "<i class='icon icon-plus'> </i>" . $this->lang->product->create, '', "class='btn'");
|
||||
if($module == 'product' && common::hasPriv('product', 'create')) $block->actionLink = html::a($this->createLink('product', 'create'), "<i class='icon icon-plus'> </i>" . $this->lang->product->create, '', "class='btn'");
|
||||
if($module == 'project' && common::hasPriv('project', 'create')) $block->actionLink = html::a($this->createLink('project', 'create'), "<i class='icon icon-sm icon-plus'> </i>" . $this->lang->project->create, '', "class='btn btn-sm'");
|
||||
}
|
||||
|
||||
if($this->block->isLongBlock($block))
|
||||
@@ -835,7 +836,20 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printOverviewBlock()
|
||||
public function printOverviewBlock($module = 'product')
|
||||
{
|
||||
$func = 'print' . ucfirst($module) . 'OverviewBlock';
|
||||
$this->view->module = $module;
|
||||
$this->$func();
|
||||
}
|
||||
|
||||
/**
|
||||
* Print product overview block.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProductOverviewBlock()
|
||||
{
|
||||
$normal = 0;
|
||||
$closed = 0;
|
||||
@@ -854,6 +868,39 @@ class block extends control
|
||||
$this->view->closed = $closed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print project overview block.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProjectOverviewBlock()
|
||||
{
|
||||
$projects = $this->loadModel('project')->getList();
|
||||
|
||||
$total = 0;
|
||||
foreach($projects as $project)
|
||||
{
|
||||
if(!$this->project->checkPriv($project)) continue;
|
||||
|
||||
if(!isset($overview[$project->status])) $overview[$project->status] = 0;
|
||||
$overview[$project->status]++;
|
||||
$total++;
|
||||
}
|
||||
|
||||
|
||||
$overviewPercent = array();
|
||||
foreach($this->lang->project->statusList as $statusKey => $statusName)
|
||||
{
|
||||
if(!isset($overview[$statusKey])) $overview[$statusKey] = 0;
|
||||
$overviewPercent[$statusKey] = round($overview[$statusKey] / $total, 2) * 100 . '%';
|
||||
}
|
||||
|
||||
$this->view->total = $total;
|
||||
$this->view->overview = $overview;
|
||||
$this->view->overviewPercent = $overviewPercent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print project block.
|
||||
*
|
||||
|
||||
@@ -83,21 +83,33 @@ $lang->block->default['product']['4']['params']['num'] = 15;
|
||||
$lang->block->default['product']['4']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['product']['4']['params']['type'] = 'assignedTo';
|
||||
|
||||
$lang->block->default['project']['1']['title'] = 'Active ' . $lang->projectCommon . 's';
|
||||
$lang->block->default['project']['1']['block'] = 'list';
|
||||
$lang->block->default['project']['1']['title'] = $lang->projectCommon . 'statistic';
|
||||
$lang->block->default['project']['1']['block'] = 'statistic';
|
||||
$lang->block->default['project']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['project']['1']['params']['num'] = 15;
|
||||
$lang->block->default['project']['1']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['1']['params']['type'] = 'undone';
|
||||
$lang->block->default['project']['1']['params']['type'] = 'noclosed';
|
||||
$lang->block->default['project']['1']['params']['num'] = 5;
|
||||
|
||||
$lang->block->default['project']['2']['title'] = 'My Tasks';
|
||||
$lang->block->default['project']['2']['block'] = 'task';
|
||||
$lang->block->default['project']['2']['title'] = $lang->projectCommon . 'overview';
|
||||
$lang->block->default['project']['2']['block'] = 'overview';
|
||||
$lang->block->default['project']['2']['grid'] = 4;
|
||||
|
||||
$lang->block->default['project']['2']['params']['num'] = 15;
|
||||
$lang->block->default['project']['2']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['2']['params']['type'] = 'assignedTo';
|
||||
$lang->block->default['project']['3']['title'] = 'Active ' . $lang->projectCommon . 's';
|
||||
$lang->block->default['project']['3']['block'] = 'list';
|
||||
$lang->block->default['project']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['project']['3']['params']['num'] = 15;
|
||||
$lang->block->default['project']['3']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['3']['params']['type'] = 'undone';
|
||||
|
||||
$lang->block->default['project']['4']['title'] = 'My Tasks';
|
||||
$lang->block->default['project']['4']['block'] = 'task';
|
||||
$lang->block->default['project']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['project']['4']['params']['num'] = 15;
|
||||
$lang->block->default['project']['4']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['4']['params']['type'] = 'assignedTo';
|
||||
|
||||
$lang->block->default['qa']['1']['title'] = 'My Bugs';
|
||||
$lang->block->default['qa']['1']['block'] = 'bug';
|
||||
@@ -232,6 +244,8 @@ $lang->block->modules['product']->availableBlocks->plan = 'Plans';
|
||||
$lang->block->modules['product']->availableBlocks->release = 'Releases';
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->projectCommon . 'statistic';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->projectCommon . 'overview';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . 'List';
|
||||
$lang->block->modules['project']->availableBlocks->task = 'Tasks';
|
||||
$lang->block->modules['project']->availableBlocks->build = 'Builds';
|
||||
|
||||
+26
-12
@@ -83,21 +83,33 @@ $lang->block->default['product']['4']['params']['num'] = 15;
|
||||
$lang->block->default['product']['4']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['product']['4']['params']['type'] = 'assignedTo';
|
||||
|
||||
$lang->block->default['project']['1']['title'] = '进行中的' . $lang->projectCommon;
|
||||
$lang->block->default['project']['1']['block'] = 'list';
|
||||
$lang->block->default['project']['1']['title'] = $lang->projectCommon . '统计';
|
||||
$lang->block->default['project']['1']['block'] = 'statistic';
|
||||
$lang->block->default['project']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['project']['1']['params']['num'] = 15;
|
||||
$lang->block->default['project']['1']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['1']['params']['type'] = 'undone';
|
||||
$lang->block->default['project']['1']['params']['type'] = 'noclosed';
|
||||
$lang->block->default['project']['1']['params']['num'] = 5;
|
||||
|
||||
$lang->block->default['project']['2']['title'] = '指派给我的任务';
|
||||
$lang->block->default['project']['2']['block'] = 'task';
|
||||
$lang->block->default['project']['2']['title'] = $lang->projectCommon . '总览';
|
||||
$lang->block->default['project']['2']['block'] = 'overview';
|
||||
$lang->block->default['project']['2']['grid'] = 4;
|
||||
|
||||
$lang->block->default['project']['2']['params']['num'] = 15;
|
||||
$lang->block->default['project']['2']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['2']['params']['type'] = 'assignedTo';
|
||||
$lang->block->default['project']['3']['title'] = '进行中的' . $lang->projectCommon;
|
||||
$lang->block->default['project']['3']['block'] = 'list';
|
||||
$lang->block->default['project']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['project']['3']['params']['num'] = 15;
|
||||
$lang->block->default['project']['3']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['3']['params']['type'] = 'undone';
|
||||
|
||||
$lang->block->default['project']['4']['title'] = '指派给我的任务';
|
||||
$lang->block->default['project']['4']['block'] = 'task';
|
||||
$lang->block->default['project']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['project']['4']['params']['num'] = 15;
|
||||
$lang->block->default['project']['4']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['4']['params']['type'] = 'assignedTo';
|
||||
|
||||
$lang->block->default['qa']['1']['title'] = '指派给我的Bug';
|
||||
$lang->block->default['qa']['1']['block'] = 'bug';
|
||||
@@ -232,9 +244,11 @@ $lang->block->modules['product']->availableBlocks->plan = '计划列表';
|
||||
$lang->block->modules['product']->availableBlocks->release = '发布列表';
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . '列表';
|
||||
$lang->block->modules['project']->availableBlocks->task = '任务列表';
|
||||
$lang->block->modules['project']->availableBlocks->build = '版本列表';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->projectCommon . '统计';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->projectCommon . '总览';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->projectCommon . '列表';
|
||||
$lang->block->modules['project']->availableBlocks->task = '任务列表';
|
||||
$lang->block->modules['project']->availableBlocks->build = '版本列表';
|
||||
$lang->block->modules['qa'] = new stdclass();
|
||||
$lang->block->modules['qa']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['qa']->availableBlocks->bug = 'Bug列表';
|
||||
|
||||
@@ -5,34 +5,9 @@
|
||||
* @copyright Copyright 2009-2018 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Gang Liu <liugang@cnezsoft.com>
|
||||
* @package block
|
||||
* @package block
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<style>
|
||||
.block-overview .status-list li + li {margin-top: 5px;}
|
||||
.block-overview .status-list li > strong {font-size: 16px;}
|
||||
.block-overview .panel-body {padding: 25px 0;}
|
||||
.progress-pie {position: relative;}
|
||||
.progress-pie .progress-info {position: absolute; width: 100%; height: 100%; left: 0; top: 0; text-align: center; padding-top: 25px;}
|
||||
.progress-pie .progress-info > small {display: block; color: #A6AAB8; line-height: 14px;}
|
||||
.progress-pie .progress-info > strong {display: block; font-size: 36px; line-height: 40px;}
|
||||
</style>
|
||||
<div class="panel-body table-row">
|
||||
<div class="col-6 text-middle text-center">
|
||||
<div class="progress-pie inline-block" data-value="72" data-doughnut-size="80">
|
||||
<canvas width="100" height="100" style="width: 100px; height: 100px;"></canvas>
|
||||
<div class="progress-info">
|
||||
<small><?php echo $lang->product->all;?></small>
|
||||
<strong><?php echo $total;?></strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 text-middle">
|
||||
<ul class="list-unstyled status-list">
|
||||
<li><span class="status-unclosed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['normal'];?></span> <strong><?php echo $normal;?></strong></li>
|
||||
<li><span class="status-closed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['closed'];?></span> <strong><?php echo $closed;?></strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<?php include "./{$module}overviewblock.html.php";?>
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* The overview block view file of block module of RanZhi.
|
||||
*
|
||||
* @copyright Copyright 2009-2018 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Gang Liu <liugang@cnezsoft.com>
|
||||
* @package block
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<style>
|
||||
.block-overview .status-list li + li {margin-top: 5px;}
|
||||
.block-overview .status-list li > strong {font-size: 16px;}
|
||||
.block-overview .panel-body {padding: 25px 0;}
|
||||
.progress-pie {position: relative;}
|
||||
.progress-pie .progress-info {position: absolute; width: 100%; height: 100%; left: 0; top: 0; text-align: center; padding-top: 25px;}
|
||||
.progress-pie .progress-info > small {display: block; color: #A6AAB8; line-height: 14px;}
|
||||
.progress-pie .progress-info > strong {display: block; font-size: 36px; line-height: 40px;}
|
||||
</style>
|
||||
<div class="panel-body table-row">
|
||||
<div class="col-6 text-middle text-center">
|
||||
<div class="progress-pie inline-block" data-value="72" data-doughnut-size="80">
|
||||
<canvas width="100" height="100" style="width: 100px; height: 100px;"></canvas>
|
||||
<div class="progress-info">
|
||||
<small><?php echo $lang->product->all;?></small>
|
||||
<strong><?php echo $total;?></strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 text-middle">
|
||||
<ul class="list-unstyled status-list">
|
||||
<li><span class="status-unclosed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['normal'];?></span> <strong><?php echo $normal;?></strong></li>
|
||||
<li><span class="status-closed"><span class="label label-dot"></span> <?php echo $lang->product->statusList['closed'];?></span> <strong><?php echo $closed;?></strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* The project overview block view file of block module of RanZhi.
|
||||
*
|
||||
* @copyright Copyright 2009-2018 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Tingting Dai <daitingting@xirangit.com>
|
||||
* @package block
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<div class="panel-body table-row">
|
||||
<div class="col-6 text-middle text-center">
|
||||
<div class="tile">
|
||||
<div class="tile-title"><?php echo $lang->project->allProject;?></div>
|
||||
<div class="tile-amount"><?php echo $total;?></div>
|
||||
<a class="btn btn-primary btn-circle btn-icon-right btn-sm" href="<?php echo $this->createLink('project', 'all');?>"><?php echo $lang->project->viewAll;?> <span class="label label-badge label-icon"><i class="icon icon-arrow-right"></i></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 text-middle">
|
||||
<ul class="status-bars">
|
||||
<?php foreach($lang->project->statusList as $statusKey => $statusName):?>
|
||||
<li>
|
||||
<span class="value"><?php echo $overview[$statusKey];?></span>
|
||||
<span class="bar" style="height: <?php echo $overviewPercent[$statusKey];?>"></span>
|
||||
<span class="title"><?php echo $statusName;?></span>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.block-overview .tile-amount {font-size: 48px; margin-bottom: 10px;}
|
||||
.nav > li > a.btn{color: #3c4353;}
|
||||
.nav > li > a.btn-sm{padding: 2px 8px; font-size: 12px; line-height: 1.5; border-radius: 4px;}
|
||||
</style>
|
||||
@@ -14,7 +14,7 @@
|
||||
<table class='table table-borderless table-hover table-fixed-head block-tasks <?php if(!$longBlock) echo 'block-sm';?>'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-id'><?php echo $lang->idAB?></th>
|
||||
<th class='c-id'><?php echo $lang->idAB;?></th>
|
||||
<th class='c-pri'><?php echo $lang->priAB?></th>
|
||||
<th class='c-name'> <?php echo $lang->task->name;?></th>
|
||||
<?php if($longBlock):?>
|
||||
@@ -36,7 +36,7 @@
|
||||
<td class='c-name' style='color: <?php echo $task->color?>' title='<?php echo $task->name?>'><?php echo $task->name?></td>
|
||||
<?php if($longBlock):?>
|
||||
<td class='c-estimate'><?php echo $task->estimate?></td>
|
||||
<td class='c-status'><?php if(substr($task->deadline, 0, 4) > 0) echo $task->deadline;?></td>
|
||||
<td class='c-deadline'><?php if(substr($task->deadline, 0, 4) > 0) echo $task->deadline;?></td>
|
||||
<?php endif;?>
|
||||
<td class='c-status' title='<?php echo zget($lang->task->statusList, $task->status)?>'>
|
||||
<span class="task-status-<?php echo $task->status?>">
|
||||
|
||||
@@ -146,6 +146,7 @@ $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->viewAll = 'View All';
|
||||
|
||||
/* 分组浏览。*/
|
||||
$lang->project->allTasks = 'All';
|
||||
|
||||
@@ -147,6 +147,7 @@ $lang->project->storySort = '需求排序';
|
||||
$lang->project->importPlanStory = '创建' . $lang->projectCommon . '成功!\n是否导入计划关联的相关需求?';
|
||||
$lang->project->iteration = '版本迭代';
|
||||
$lang->project->iterationInfo = '迭代%s次';
|
||||
$lang->project->viewAll = '查看所有';
|
||||
|
||||
/* 分组浏览。*/
|
||||
$lang->project->allTasks = '所有';
|
||||
|
||||
Reference in New Issue
Block a user