Merge branch 'master' of http://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -56,8 +56,8 @@ class baseHelper
|
||||
* @param string|array $vars the params passed to the method, can be array('key' => 'value') or key1=value1&key2=value2) or key1=value1&key2=value2
|
||||
* @param string $viewType the view type
|
||||
* @param bool $onlyBody pass onlyBody=yes to the link thus the app can control the header and footer hide or show..
|
||||
* @param bool $projectID set project id in to session.
|
||||
* @param bool $removeProject if true, remove project param.
|
||||
* @param bool $projectID set project id in to session.
|
||||
* @param bool $removeProject if true, remove project param.
|
||||
* @static
|
||||
* @access public
|
||||
* @return string the link string.
|
||||
@@ -173,8 +173,8 @@ class baseHelper
|
||||
global $config, $lang;
|
||||
|
||||
if(!$projectID || $removeProject) return $link;
|
||||
$isProject = (zget($lang->navGroup, $moduleName) == 'project');
|
||||
if(!$isProject and $moduleName != 'program') return $link;
|
||||
$app = zget($lang->navGroup, $moduleName);
|
||||
if($app != 'project' and $app != 'execution') return $link;
|
||||
|
||||
$link .= strpos($link, '?') === false ? "?project=$projectID" : "&project=$projectID";
|
||||
return $link;
|
||||
|
||||
@@ -73,7 +73,7 @@ $lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Release';
|
||||
$lang->action->objectTypes['program'] = 'Program';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['execution'] = $lang->execution->common;
|
||||
$lang->action->objectTypes['execution'] = $lang->executionCommon;
|
||||
$lang->action->objectTypes['task'] = 'Aufgabe';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['job'] = 'Job';
|
||||
|
||||
@@ -73,7 +73,7 @@ $lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Release';
|
||||
$lang->action->objectTypes['program'] = 'Program';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['execution'] = $lang->execution->common;
|
||||
$lang->action->objectTypes['execution'] = $lang->executionCommon;
|
||||
$lang->action->objectTypes['task'] = 'Task';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['job'] = 'Job';
|
||||
|
||||
@@ -73,7 +73,7 @@ $lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Release';
|
||||
$lang->action->objectTypes['program'] = 'Program';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['execution'] = $lang->execution->common;
|
||||
$lang->action->objectTypes['execution'] = $lang->executionCommon;
|
||||
$lang->action->objectTypes['task'] = 'Tâche';
|
||||
$lang->action->objectTypes['build'] = 'Build';
|
||||
$lang->action->objectTypes['job'] = 'Job';
|
||||
|
||||
@@ -73,7 +73,7 @@ $lang->action->objectTypes['productplan'] = 'Plan';
|
||||
$lang->action->objectTypes['release'] = 'Phát hành';
|
||||
$lang->action->objectTypes['program'] = 'Program';
|
||||
$lang->action->objectTypes['project'] = 'Project';
|
||||
$lang->action->objectTypes['execution'] = $lang->execution->common;
|
||||
$lang->action->objectTypes['execution'] = $lang->executionCommon;
|
||||
$lang->action->objectTypes['task'] = 'Nhiệm vụ';
|
||||
$lang->action->objectTypes['build'] = 'Bản dựng';
|
||||
$lang->action->objectTypes['job'] = 'Job';
|
||||
|
||||
@@ -73,7 +73,7 @@ $lang->action->objectTypes['productplan'] = '计划';
|
||||
$lang->action->objectTypes['release'] = '发布';
|
||||
$lang->action->objectTypes['program'] = '项目集';
|
||||
$lang->action->objectTypes['project'] = '项目';
|
||||
$lang->action->objectTypes['execution'] = $lang->execution->common;
|
||||
$lang->action->objectTypes['execution'] = $lang->executionCommon;
|
||||
$lang->action->objectTypes['task'] = '任务';
|
||||
$lang->action->objectTypes['build'] = '版本';
|
||||
$lang->action->objectTypes['job'] = '构建';
|
||||
|
||||
@@ -73,7 +73,7 @@ $lang->action->objectTypes['productplan'] = '計劃';
|
||||
$lang->action->objectTypes['release'] = '發佈';
|
||||
$lang->action->objectTypes['program'] = '項目集';
|
||||
$lang->action->objectTypes['project'] = '項目';
|
||||
$lang->action->objectTypes['execution'] = $lang->execution->common;
|
||||
$lang->action->objectTypes['execution'] = $lang->executionCommon;
|
||||
$lang->action->objectTypes['task'] = '任務';
|
||||
$lang->action->objectTypes['build'] = '版本';
|
||||
$lang->action->objectTypes['job'] = '構建';
|
||||
|
||||
+29
-15
@@ -396,12 +396,13 @@ class actionModel extends model
|
||||
}
|
||||
elseif(($actionName == 'opened' or $actionName == 'managed' or $actionName == 'edited') and ($objectType == 'execution' || $objectType == 'project'))
|
||||
{
|
||||
$this->app->loadLang('executon');
|
||||
$linkedProducts = $this->dao->select('id,name')->from(TABLE_PRODUCT)->where('id')->in($action->extra)->fetchPairs('id', 'name');
|
||||
$action->extra = '';
|
||||
if($linkedProducts)
|
||||
{
|
||||
foreach($linkedProducts as $productID => $productName) $linkedProducts[$productID] = html::a(helper::createLink('product', 'browse', "productID=$productID"), "#{$productID} {$productName}");
|
||||
$action->extra = sprintf($this->lang->project->action->extra, '<strong>' . join(', ', $linkedProducts) . '</strong>');
|
||||
$action->extra = sprintf($this->lang->execution->action->extra, '<strong>' . join(', ', $linkedProducts) . '</strong>');
|
||||
}
|
||||
}
|
||||
$action->history = isset($histories[$actionID]) ? $histories[$actionID] : array();
|
||||
@@ -645,7 +646,7 @@ class actionModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getDynamic($account = 'all', $period = 'all', $orderBy = 'date_desc', $pager = null, $productID = 'all', $executionID = 'all', $date = '', $direction = 'next')
|
||||
public function getDynamic($account = 'all', $period = 'all', $orderBy = 'date_desc', $pager = null, $productID = 'all', $projectID = 'all', $date = '', $direction = 'next')
|
||||
{
|
||||
/* Computer the begin and end date of a period. */
|
||||
$beginAndEnd = $this->computeBeginAndEnd($period);
|
||||
@@ -653,20 +654,33 @@ class actionModel extends model
|
||||
|
||||
/* Build has priv condition. */
|
||||
$condition = 1;
|
||||
if($productID == 'all') $products = $this->app->user->view->products;
|
||||
if($executionID == 'all') $executions = $this->app->user->view->sprints;
|
||||
if($productID == 'all') $products = $this->app->user->view->products;
|
||||
if($projectID == 'all') $projects = $this->app->user->view->projects;
|
||||
|
||||
if($productID == 'all' or $executionID == 'all')
|
||||
{
|
||||
$executionCondition = $executionID == 'all' ? "execution " . helper::dbIN($executions) : '';
|
||||
$productCondition = $productID == 'all' ? "INSTR('," . $products . ",', product) > 0" : '';
|
||||
if(is_numeric($productID)) $productCondition = "product like'%,$productID,%' or product='$productID'";
|
||||
if(is_numeric($executionID)) $executionCondition = "execution='$executionID'";
|
||||
$projectCondition = $projectID == 'all' ? "project " . helper::dbIN($projects) : '';
|
||||
$productCondition = $productID == 'all' ? "INSTR('," . $products . ",', product) > 0" : '';
|
||||
if(is_numeric($productID)) $productCondition = "product like'%,$productID,%' or product='$productID'";
|
||||
if(is_numeric($projectID)) $projectCondition = "project='$projectID'";
|
||||
|
||||
$condition = "(product =',0,' AND execution = '0')";
|
||||
if($executionCondition) $condition .= ' OR ' . $executionCondition;
|
||||
if($productCondition) $condition .= ' OR ' . $productCondition;
|
||||
if($this->app->user->admin) $condition = 1;
|
||||
$condition = "(product =',0,' AND project = '0')";
|
||||
if($projectCondition) $condition .= ' OR ' . $projectCondition;
|
||||
if($productCondition) $condition .= ' OR ' . $productCondition;
|
||||
if($this->app->user->admin) $condition = 1;
|
||||
}
|
||||
|
||||
/* If is project, select its related. */
|
||||
$executions = array();
|
||||
$products = array();
|
||||
if(is_numeric($projectID))
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if(isset($project->type) and $project->type == 'project')
|
||||
{
|
||||
$executions = $this->loadModel('execution')->getPairs($projectID);
|
||||
$products = $this->loadModel('product')->getProductPairsByProject($projectID);
|
||||
}
|
||||
}
|
||||
|
||||
$this->loadModel('doc');
|
||||
@@ -683,12 +697,12 @@ class actionModel extends model
|
||||
->beginIF($date)->andWhere('date' . ($direction == 'next' ? '<' : '>') . "'{$date}'")->fi()
|
||||
->beginIF($account != 'all')->andWhere('actor')->eq($account)->fi()
|
||||
->beginIF(is_numeric($productID))->andWhere('product')->like("%,$productID,%")->fi()
|
||||
->beginIF(is_numeric($executionID))->andWhere('execution')->eq($executionID)->fi()
|
||||
->beginIF(is_numeric($projectID))->andWhere('execution')->eq($projectID)->fi()
|
||||
->beginIF(!empty($executions))->markLeft()->orWhere('execution')->in($executions)->fi()->markRight()
|
||||
->beginIF(!empty($products))->markLeft()->orWhere('product')->in($products)->fi()->markRight()
|
||||
->beginIF($productID == 'notzero')->andWhere('product')->gt(0)->andWhere('product')->notlike('%,0,%')->fi()
|
||||
->beginIF($executionID == 'notzero')->andWhere('execution')->gt(0)->fi()
|
||||
->beginIF($executionID == 'all' or $productID == 'all')->andWhere("IF((objectType!= 'doc' && objectType!= 'doclib'), ($condition), '1=1')")->fi()
|
||||
->beginIF($projectID == 'notzero')->andWhere('execution')->gt(0)->fi()
|
||||
->beginIF($projectID == 'all' or $productID == 'all')->andWhere("IF((objectType!= 'doc' && objectType!= 'doclib'), ($condition), '1=1')")->fi()
|
||||
->beginIF($docs and !$this->app->user->admin)->andWhere("IF(objectType != 'doc', '1=1', objectID " . helper::dbIN($docs) . ")")->fi()
|
||||
->beginIF($libs and !$this->app->user->admin)->andWhere("IF(objectType != 'doclib', '1=1', objectID " . helper::dbIN(array_keys($libs)) . ') ')->fi()
|
||||
->beginIF($actionCondition)->andWhere("($actionCondition)")->fi()
|
||||
|
||||
+46
-40
@@ -213,17 +213,17 @@ class block extends control
|
||||
$blocks = $this->block->getBlockList($module, $type);
|
||||
|
||||
$commonField = 'common';
|
||||
if($module == 'program')
|
||||
if($module == 'project')
|
||||
{
|
||||
$program = $this->loadModel('project')->getByID($this->session->project);
|
||||
$commonField = $program->model . 'common';
|
||||
$project = $this->loadModel('project')->getByID($this->session->project);
|
||||
$commonField = $project->model . 'common';
|
||||
}
|
||||
|
||||
/* Replace the block Title saved in the database. */
|
||||
if($module == 'project')
|
||||
if($module == 'execution')
|
||||
{
|
||||
$projectBlock = array();
|
||||
foreach($this->lang->block->default['project'] as $block) $projectBlock[$block['block']] = $block['title'];
|
||||
foreach($this->lang->block->default['execution'] as $block) $projectBlock[$block['block']] = $block['title'];
|
||||
foreach($blocks as $block) $block->title = $projectBlock[$block->block];
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ class block extends control
|
||||
continue;
|
||||
}
|
||||
|
||||
$block->params = json_decode($block->params);
|
||||
$block->params = json_decode($block->params);
|
||||
if(isset($block->params->num) and !isset($block->params->count)) $block->params->count = $block->params->num;
|
||||
|
||||
$blockID = $block->block;
|
||||
@@ -436,17 +436,17 @@ class block extends control
|
||||
$dashboard = $this->get->dashboard;
|
||||
|
||||
/* Create a project block. */
|
||||
if($dashboard == 'program')
|
||||
if($dashboard == 'project')
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($this->session->project);
|
||||
$model = $project->model;
|
||||
}
|
||||
|
||||
/* Edit a project block. */
|
||||
if($id and $block->module == 'program')
|
||||
if($id and $block->module == 'project')
|
||||
{
|
||||
$model = $block->type;
|
||||
$dashboard = 'program';
|
||||
$dashboard = 'project';
|
||||
}
|
||||
|
||||
$blocks = $this->block->getAvailableBlocks($module, $dashboard, $model);
|
||||
@@ -640,7 +640,7 @@ class block extends control
|
||||
->andWhere('t3.status')->ne('done')
|
||||
->andWhere('t3.deleted')->eq(0)
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->beginIF($projectID)->andWhere('t2.PRJ')->eq($projectID)->fi()
|
||||
->beginIF($projectID)->andWhere('t2.project')->eq($projectID)->fi()
|
||||
->orderBy($this->params->orderBy)
|
||||
->beginIF($this->viewType != 'json')->limit((int)$this->params->count)->fi()
|
||||
->fetchAll();
|
||||
@@ -649,7 +649,7 @@ class block extends control
|
||||
{
|
||||
$cases = $this->dao->findByOpenedBy($this->app->user->account)->from(TABLE_CASE)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->beginIF($projectID)->andWhere('PRJ')->eq($projectID)->fi()
|
||||
->beginIF($projectID)->andWhere('project')->eq($projectID)->fi()
|
||||
->orderBy($this->params->orderBy)
|
||||
->beginIF($this->viewType != 'json')->limit((int)$this->params->count)->fi()
|
||||
->fetchAll();
|
||||
@@ -679,7 +679,7 @@ class block extends control
|
||||
->leftJoin(TABLE_PROJECT)->alias('t4')->on('t1.project=t4.id')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t5')->on('t1.project=t5.project')
|
||||
->where('t1.deleted')->eq('0')
|
||||
->beginIF($projectID)->andWhere('t1.PRJ')->eq($projectID)->fi()
|
||||
->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.product')->in($this->app->user->view->products)->fi()
|
||||
->andWhere('t1.product = t5.product')
|
||||
->beginIF($this->params->type != 'all')->andWhere('t1.status')->eq($this->params->type)->fi()
|
||||
@@ -740,7 +740,7 @@ class block extends control
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->leftJoin(TABLE_BUILD)->alias('t3')->on('t1.build=t3.id')
|
||||
->where('t1.deleted')->eq('0')
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('t1.PRJ')->eq((int)$this->session->project)->fi()
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('t1.project')->eq((int)$this->session->project)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.product')->in($this->app->user->view->products)->fi()
|
||||
->orderBy('t1.id desc')
|
||||
->beginIF($this->viewType != 'json')->limit((int)$this->params->count)->fi()
|
||||
@@ -757,14 +757,16 @@ class block extends control
|
||||
{
|
||||
$this->session->set('buildList', $this->app->getURI(true));
|
||||
$this->app->loadLang('build');
|
||||
$this->view->builds = $this->dao->select('t1.*, t2.name as productName')->from(TABLE_BUILD)->alias('t1')
|
||||
|
||||
$builds = $this->dao->select('t1.*, t2.name as productName')->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->where('t1.deleted')->eq('0')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.project')->in($this->app->user->view->projects)->fi()
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('t1.PRJ')->eq((int)$this->session->project)->fi()
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('t1.project')->eq((int)$this->session->project)->fi()
|
||||
->orderBy('t1.id desc')
|
||||
->beginIF($this->viewType != 'json')->limit((int)$this->params->count)->fi()
|
||||
->fetchAll();
|
||||
$this->view->builds = $builds;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -773,9 +775,9 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProgramBlock()
|
||||
public function printProjectBlock()
|
||||
{
|
||||
$this->app->loadLang('project');
|
||||
$this->app->loadLang('execution');
|
||||
$this->app->loadLang('task');
|
||||
$count = isset($this->params->count) ? $this->params->count : 15;
|
||||
$type = isset($this->params->type) ? $this->params->type : 'all';
|
||||
@@ -833,7 +835,7 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProgramStatisticBlock()
|
||||
public function printProjectStatisticBlock()
|
||||
{
|
||||
if(!empty($this->params->type) and preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) die();
|
||||
|
||||
@@ -857,22 +859,22 @@ class block extends control
|
||||
|
||||
$today = helper::today();
|
||||
if(isset($this->config->maxVersion)) $monday = date('Ymd', strtotime($this->loadModel('weekly')->getThisMonday($today)));
|
||||
$tasks = $this->dao->select("PRJ,
|
||||
$tasks = $this->dao->select("project,
|
||||
sum(consumed) as totalConsumed,
|
||||
sum(if(status != 'cancel' and status != 'closed', `left`, 0)) as totalLeft")
|
||||
->from(TABLE_TASK)
|
||||
->where('PRJ')->in(array_keys($projects))
|
||||
->where('project')->in(array_keys($projects))
|
||||
->andWhere('deleted')->eq(0)
|
||||
->andWhere('parent')->lt(1)
|
||||
->groupBy('PRJ')
|
||||
->fetchAll('PRJ');
|
||||
->groupBy('project')
|
||||
->fetchAll('project');
|
||||
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
if($project->model == 'scrum')
|
||||
{
|
||||
$project->progress = $project->allStories == 0 ? 0 : round($project->doneStories / $project->allStories, 3) * 100;
|
||||
$project->executions = $this->loadModel('execution')->getStats($projectID, 'all', 0, 0, 30, 'id_asc');
|
||||
$project->executions = $this->project->getStats($projectID, 'all', 0, 0, 30, 'id_asc');
|
||||
}
|
||||
elseif($project->model == 'waterfall' and isset($this->config->maxVersion))
|
||||
{
|
||||
@@ -1034,7 +1036,7 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProjectStatisticBlock()
|
||||
public function printExecutionStatisticBlock()
|
||||
{
|
||||
if(!empty($this->params->type) and preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) die();
|
||||
|
||||
@@ -1176,7 +1178,7 @@ class block extends control
|
||||
$task = $this->dao->select("
|
||||
sum(consumed) as totalConsumed,
|
||||
sum(if(status != 'cancel' and status != 'closed', `left`, 0)) as totalLeft")
|
||||
->from(TABLE_TASK)->where('PRJ')->eq($this->session->project)
|
||||
->from(TABLE_TASK)->where('project')->eq($this->session->project)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->andWhere('parent')->lt(1)
|
||||
->fetch();
|
||||
@@ -1251,9 +1253,9 @@ class block extends control
|
||||
$budget = $this->loadModel('workestimation')->getBudget($projectID);
|
||||
if(empty($budget)) $budget = new stdclass();
|
||||
|
||||
$this->view->people = $this->dao->select('sum(people) as people')->from(TABLE_DURATIONESTIMATION)->where('PRJ')->eq($this->session->project)->fetch('people');
|
||||
$this->view->people = $this->dao->select('sum(people) as people')->from(TABLE_DURATIONESTIMATION)->where('project')->eq($this->session->project)->fetch('people');
|
||||
$this->view->members = count($members) ? count($members) - 1 : 0;
|
||||
$this->view->consumed = $this->dao->select('sum(cast(consumed as decimal(10,2))) as consumed')->from(TABLE_TASK)->where('PRJ')->eq($projectID)->andWhere('deleted')->eq(0)->andWhere('parent')->lt(1)->fetch('consumed');
|
||||
$this->view->consumed = $this->dao->select('sum(cast(consumed as decimal(10,2))) as consumed')->from(TABLE_TASK)->where('project')->eq($projectID)->andWhere('deleted')->eq(0)->andWhere('parent')->lt(1)->fetch('consumed');
|
||||
$this->view->budget = $budget;
|
||||
}
|
||||
|
||||
@@ -1305,6 +1307,7 @@ class block extends control
|
||||
public function printScrumOverviewBlock()
|
||||
{
|
||||
$projectID = $this->session->project;
|
||||
$this->app->loadLang('execution');
|
||||
$totalData = $this->loadModel('project')->getOverviewList('byId', $projectID, 'id_desc', 1);
|
||||
|
||||
$this->view->totalData = $totalData;
|
||||
@@ -1319,12 +1322,14 @@ class block extends control
|
||||
*/
|
||||
public function printScrumListBlock()
|
||||
{
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
if(!empty($this->params->type) and preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) die();
|
||||
$count = isset($this->params->count) ? (int)$this->params->count : 15;
|
||||
$type = isset($this->params->type) ? $this->params->type : 'all';
|
||||
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init(0, $count, 1);
|
||||
$this->view->executionStats = $this->loadModel('execution')->getStats($this->session->project, $type, 0, 0, 30, 'id_desc', $pager);
|
||||
$this->app->loadLang('execution');
|
||||
$this->view->executionStats = $this->loadModel('project')->getStats($this->session->project, $type, 0, 0, 30, 'id_desc', $pager);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1394,15 +1399,15 @@ class block extends control
|
||||
{
|
||||
$projectID = $this->session->project;
|
||||
|
||||
$executions = $this->loadModel('project')->getExecutionPairs($projectID);
|
||||
$executions = $this->loadModel('execution')->getPairs($projectID);
|
||||
$products = $this->loadModel('product')->getProductPairsByProject($projectID);
|
||||
$count = isset($this->params->count) ? (int)$this->params->count : 10;
|
||||
|
||||
$actions = array();
|
||||
$actions = $this->dao->select('*')->from(TABLE_ACTION)
|
||||
->where('project')->eq($projectID)
|
||||
->beginIF(!empty($executions))->markLeft()->orWhere('project')->in(array_keys($executions))->fi()->markRight()
|
||||
->beginIF(!empty($products))->markLeft()->orWhere('product')->in(array_keys($products))->fi()->markRight()
|
||||
->where('objectType')->eq('project')
|
||||
->andWhere('objectID')->eq($projectID)
|
||||
->beginIF(!empty($executions))->markLeft()->orWhere('execution')->in(array_keys($executions))->fi()->markRight()
|
||||
->orderBy('date_desc')
|
||||
->limit($count)
|
||||
->fetchAll();
|
||||
@@ -1461,7 +1466,7 @@ class block extends control
|
||||
->leftJoin(TABLE_PROJECT)->alias('t4')->on('t1.project=t4.id')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t5')->on('t1.project=t5.project')
|
||||
->where('t1.deleted')->eq('0')
|
||||
->andWhere('t1.PRJ')->eq($this->session->project)->fi()
|
||||
->andWhere('t1.project')->eq($this->session->project)->fi()
|
||||
->andWhere('t1.product = t5.product')
|
||||
->beginIF($status != 'all')->andWhere('t1.status')->eq($status)->fi()
|
||||
->orderBy('t1.id desc')
|
||||
@@ -1585,7 +1590,7 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProjectOverviewBlock()
|
||||
public function printExecutionOverviewBlock()
|
||||
{
|
||||
$projectID = $this->view->block->module == 'my' ? 0 : (int)$this->session->project;
|
||||
$executions = $this->loadModel('execution')->getList($projectID);
|
||||
@@ -1620,7 +1625,7 @@ class block extends control
|
||||
{
|
||||
$casePairs = $this->dao->select('lastRunResult, COUNT(*) AS count')->from(TABLE_CASE)
|
||||
->where('1=1')
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('PRJ')->eq((int)$this->session->project)->fi()
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('project')->eq((int)$this->session->project)->fi()
|
||||
->groupBy('lastRunResult')
|
||||
->fetchPairs();
|
||||
|
||||
@@ -1649,7 +1654,7 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProjectBlock()
|
||||
public function printExecutionBlock()
|
||||
{
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
if(!empty($this->params->type) and preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) die();
|
||||
@@ -1658,7 +1663,7 @@ class block extends control
|
||||
$pager = pager::init(0, $count, 1);
|
||||
|
||||
$projectID = $this->view->block->module == 'my' ? 0 : (int)$this->session->project;
|
||||
$this->view->executionStats = $this->loadModel('execution')->getStats($projectID, $status, 0, 0, 30, 'id_asc', $pager);
|
||||
$this->view->executionStats = $this->loadModel('project')->getStats($projectID, $status, 0, 0, 30, 'id_asc', $pager);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1685,7 +1690,7 @@ class block extends control
|
||||
$this->app->loadClass('date');
|
||||
$this->app->loadLang('todo');
|
||||
$stmt = $this->dao->select('*')->from(TABLE_TODO)
|
||||
->where("(assignedTo = '{$this->app->user->account}' or (assignedTo = '' and account='{$this->app->user->account}'))")
|
||||
->where("(assignedTo = '{$this->app->user->account}' or (account='{$this->app->user->account}'))")
|
||||
->andWhere('cycle')->eq(0)
|
||||
->orderBy('`date`');
|
||||
if(isset($params->todoNum)) $stmt->limit($params->todoNum);
|
||||
@@ -1708,6 +1713,7 @@ class block extends control
|
||||
if(isset($hasViewPriv['task']))
|
||||
{
|
||||
$this->app->loadLang('task');
|
||||
$this->app->loadLang('execution');
|
||||
$stmt = $this->dao->select('*')->from(TABLE_TASK)
|
||||
->where('assignedTo')->eq($this->app->user->account)
|
||||
->andWhere('deleted')->eq('0')
|
||||
@@ -1803,7 +1809,7 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printProgramTeamBlock()
|
||||
public function printProjectTeamBlock()
|
||||
{
|
||||
$count = isset($this->params->count) ? $this->params->count : 15;
|
||||
$status = isset($this->params->type) ? $this->params->type : 'all';
|
||||
|
||||
@@ -337,7 +337,7 @@ $lang->block->availableBlocks->issue = 'My Issues';
|
||||
|
||||
$lang->block->moduleList['program'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = $lang->execution->common;
|
||||
$lang->block->moduleList['project'] = $lang->executionCommon;
|
||||
$lang->block->moduleList['qa'] = 'QA';
|
||||
$lang->block->moduleList['todo'] = 'Todos';
|
||||
|
||||
@@ -377,9 +377,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Release';
|
||||
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->execution->common . ' Statistik';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->execution->common . ' Übersicht';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->execution->common . ' Liste';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->executionCommon . ' Statistik';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->executionCommon . ' Übersicht';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->executionCommon . ' Liste';
|
||||
$lang->block->modules['project']->availableBlocks->task = 'Aufgaben';
|
||||
$lang->block->modules['project']->availableBlocks->build = 'Build';
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@ $lang->block->availableBlocks->issue = 'My Issues';
|
||||
|
||||
$lang->block->moduleList['program'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = $lang->execution->common;
|
||||
$lang->block->moduleList['project'] = $lang->executionCommon;
|
||||
$lang->block->moduleList['qa'] = 'Test';
|
||||
$lang->block->moduleList['todo'] = 'Todo';
|
||||
|
||||
@@ -377,9 +377,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Release';
|
||||
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->execution->common . ' Statistics';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->execution->common . ' Overview';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->execution->common . ' List';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->executionCommon . ' Statistics';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->executionCommon . ' Overview';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->executionCommon . ' List';
|
||||
$lang->block->modules['project']->availableBlocks->task = 'Task';
|
||||
$lang->block->modules['project']->availableBlocks->build = 'Build';
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@ $lang->block->availableBlocks->issue = 'My Issues';
|
||||
|
||||
$lang->block->moduleList['program'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = $lang->execution->common;
|
||||
$lang->block->moduleList['project'] = $lang->executionCommon;
|
||||
$lang->block->moduleList['qa'] = 'Test';
|
||||
$lang->block->moduleList['todo'] = 'Todo';
|
||||
|
||||
@@ -377,9 +377,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Release';
|
||||
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->execution->common . ' Statistiques';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->execution->common . " Vue d'ensemble";
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->execution->common . ' Liste';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->executionCommon . ' Statistiques';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->executionCommon . " Vue d'ensemble";
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->executionCommon . ' Liste';
|
||||
$lang->block->modules['project']->availableBlocks->task = 'Tâches';
|
||||
$lang->block->modules['project']->availableBlocks->build = 'Build';
|
||||
|
||||
|
||||
@@ -337,7 +337,7 @@ $lang->block->availableBlocks->issue = 'My Issues';
|
||||
|
||||
$lang->block->moduleList['program'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = $lang->execution->common;
|
||||
$lang->block->moduleList['project'] = $lang->executionCommon;
|
||||
$lang->block->moduleList['qa'] = 'QA';
|
||||
$lang->block->moduleList['todo'] = 'Việc làm';
|
||||
|
||||
@@ -377,9 +377,9 @@ $lang->block->modules['product']->availableBlocks->release = 'Phát hành';
|
||||
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->execution->common . ' thống';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->execution->common . ' xem';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->execution->common . ' danh sách';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->executionCommon . ' thống';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->executionCommon . ' xem';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->executionCommon . ' danh sách';
|
||||
$lang->block->modules['project']->availableBlocks->task = 'Nhiệm vụ';
|
||||
$lang->block->modules['project']->availableBlocks->build = 'Bản dựng';
|
||||
|
||||
|
||||
+150
-151
@@ -42,7 +42,7 @@ $lang->block->leftToday = '今天剩余工作总计';
|
||||
$lang->block->myTask = '我的任务';
|
||||
$lang->block->myStory = "我的{$lang->SRCommon}";
|
||||
$lang->block->myBug = '我的BUG';
|
||||
$lang->block->myProject = '未关闭的' . $lang->executionCommon;
|
||||
$lang->block->myExecution = '未关闭的' . $lang->executionCommon;
|
||||
$lang->block->myProduct = '未关闭的' . $lang->productCommon;
|
||||
$lang->block->delayed = '已延期';
|
||||
$lang->block->noData = '当前统计类型下暂无数据';
|
||||
@@ -59,9 +59,9 @@ $lang->block->resolvedRisks = '解决的风险数';
|
||||
$lang->block->createdIssues = '创建的问题数';
|
||||
$lang->block->resolvedIssues = '解决的问题数';
|
||||
$lang->block->createdDocs = '创建的文档数';
|
||||
$lang->block->allProject = '所有' . $lang->executionCommon;
|
||||
$lang->block->doingProject = '进行中的' . $lang->executionCommon;
|
||||
$lang->block->finishProject = '累积' . $lang->executionCommon;
|
||||
$lang->block->allExecution = '所有' . $lang->executionCommon;
|
||||
$lang->block->doingExecution = '进行中的' . $lang->executionCommon;
|
||||
$lang->block->finishExecution = '累积' . $lang->executionCommon;
|
||||
$lang->block->estimatedHours = '预计';
|
||||
$lang->block->consumedHours = '已消耗';
|
||||
$lang->block->time = '第';
|
||||
@@ -98,71 +98,71 @@ $lang->block->spent = '已花费';
|
||||
$lang->block->budget = '预算';
|
||||
$lang->block->left = '剩余';
|
||||
|
||||
$lang->block->default['waterfall']['program']['1']['title'] = '项目周报';
|
||||
$lang->block->default['waterfall']['program']['1']['block'] = 'waterfallreport';
|
||||
$lang->block->default['waterfall']['program']['1']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['1']['grid'] = 8;
|
||||
$lang->block->default['waterfall']['project']['1']['title'] = '项目周报';
|
||||
$lang->block->default['waterfall']['project']['1']['block'] = 'waterfallreport';
|
||||
$lang->block->default['waterfall']['project']['1']['source'] = 'project';
|
||||
$lang->block->default['waterfall']['project']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['2']['title'] = '估算';
|
||||
$lang->block->default['waterfall']['program']['2']['block'] = 'waterfallestimate';
|
||||
$lang->block->default['waterfall']['program']['2']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['2']['grid'] = 4;
|
||||
$lang->block->default['waterfall']['project']['2']['title'] = '估算';
|
||||
$lang->block->default['waterfall']['project']['2']['block'] = 'waterfallestimate';
|
||||
$lang->block->default['waterfall']['project']['2']['source'] = 'project';
|
||||
$lang->block->default['waterfall']['project']['2']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['3']['title'] = "项目计划";
|
||||
$lang->block->default['waterfall']['program']['3']['block'] = 'waterfallgantt';
|
||||
$lang->block->default['waterfall']['program']['3']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['3']['grid'] = 8;
|
||||
$lang->block->default['waterfall']['project']['3']['title'] = "项目计划";
|
||||
$lang->block->default['waterfall']['project']['3']['block'] = 'waterfallgantt';
|
||||
$lang->block->default['waterfall']['project']['3']['source'] = 'project';
|
||||
$lang->block->default['waterfall']['project']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['4']['title'] = '到目前为止项目进展趋势图';
|
||||
$lang->block->default['waterfall']['program']['4']['block'] = 'waterfallprogress';
|
||||
$lang->block->default['waterfall']['program']['4']['grid'] = 4;
|
||||
$lang->block->default['waterfall']['project']['4']['title'] = '到目前为止项目进展趋势图';
|
||||
$lang->block->default['waterfall']['project']['4']['block'] = 'waterfallprogress';
|
||||
$lang->block->default['waterfall']['project']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['title'] = '项目问题';
|
||||
$lang->block->default['waterfall']['program']['5']['block'] = 'waterfallissue';
|
||||
$lang->block->default['waterfall']['program']['5']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['5']['grid'] = 8;
|
||||
$lang->block->default['waterfall']['project']['5']['title'] = '项目问题';
|
||||
$lang->block->default['waterfall']['project']['5']['block'] = 'waterfallissue';
|
||||
$lang->block->default['waterfall']['project']['5']['source'] = 'project';
|
||||
$lang->block->default['waterfall']['project']['5']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['count'] = '15';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['waterfall']['project']['5']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['project']['5']['params']['count'] = '15';
|
||||
$lang->block->default['waterfall']['project']['5']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['waterfall']['program']['6']['title'] = '最新动态';
|
||||
$lang->block->default['waterfall']['program']['6']['block'] = 'projectdynamic';
|
||||
$lang->block->default['waterfall']['program']['6']['grid'] = 4;
|
||||
$lang->block->default['waterfall']['program']['6']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['project']['6']['title'] = '最新动态';
|
||||
$lang->block->default['waterfall']['project']['6']['block'] = 'projectdynamic';
|
||||
$lang->block->default['waterfall']['project']['6']['grid'] = 4;
|
||||
$lang->block->default['waterfall']['project']['6']['source'] = 'project';
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['title'] = '项目风险';
|
||||
$lang->block->default['waterfall']['program']['7']['block'] = 'waterfallrisk';
|
||||
$lang->block->default['waterfall']['program']['7']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['7']['grid'] = 8;
|
||||
$lang->block->default['waterfall']['project']['7']['title'] = '项目风险';
|
||||
$lang->block->default['waterfall']['project']['7']['block'] = 'waterfallrisk';
|
||||
$lang->block->default['waterfall']['project']['7']['source'] = 'project';
|
||||
$lang->block->default['waterfall']['project']['7']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['count'] = '15';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['waterfall']['project']['7']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['project']['7']['params']['count'] = '15';
|
||||
$lang->block->default['waterfall']['project']['7']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['1']['title'] = '项目整体情况';
|
||||
$lang->block->default['scrum']['program']['1']['block'] = 'scrumoverview';
|
||||
$lang->block->default['scrum']['program']['1']['grid'] = 8;
|
||||
$lang->block->default['scrum']['project']['1']['title'] = '项目整体情况';
|
||||
$lang->block->default['scrum']['project']['1']['block'] = 'scrumoverview';
|
||||
$lang->block->default['scrum']['project']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['2']['title'] = $lang->executionCommon . '列表';
|
||||
$lang->block->default['scrum']['program']['2']['block'] = 'scrumlist';
|
||||
$lang->block->default['scrum']['program']['2']['grid'] = 8;
|
||||
$lang->block->default['scrum']['project']['2']['title'] = $lang->executionCommon . '列表';
|
||||
$lang->block->default['scrum']['project']['2']['block'] = 'scrumlist';
|
||||
$lang->block->default['scrum']['project']['2']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['3']['title'] = '待测版本';
|
||||
$lang->block->default['scrum']['program']['3']['block'] = 'scrumtest';
|
||||
$lang->block->default['scrum']['program']['3']['grid'] = 8;
|
||||
$lang->block->default['scrum']['project']['3']['title'] = '待测版本';
|
||||
$lang->block->default['scrum']['project']['3']['block'] = 'scrumtest';
|
||||
$lang->block->default['scrum']['project']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['3']['params']['type'] = 'wait';
|
||||
$lang->block->default['scrum']['program']['3']['params']['count'] = '15';
|
||||
$lang->block->default['scrum']['program']['3']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['scrum']['project']['3']['params']['type'] = 'wait';
|
||||
$lang->block->default['scrum']['project']['3']['params']['count'] = '15';
|
||||
$lang->block->default['scrum']['project']['3']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['4']['title'] = $lang->executionCommon . '总览';
|
||||
$lang->block->default['scrum']['program']['4']['block'] = 'sprint';
|
||||
$lang->block->default['scrum']['program']['4']['grid'] = 4;
|
||||
$lang->block->default['scrum']['project']['4']['title'] = $lang->executionCommon . '总览';
|
||||
$lang->block->default['scrum']['project']['4']['block'] = 'sprint';
|
||||
$lang->block->default['scrum']['project']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['5']['title'] = '最新动态';
|
||||
$lang->block->default['scrum']['program']['5']['block'] = 'projectdynamic';
|
||||
$lang->block->default['scrum']['program']['5']['grid'] = 4;
|
||||
$lang->block->default['scrum']['project']['5']['title'] = '最新动态';
|
||||
$lang->block->default['scrum']['project']['5']['block'] = 'projectdynamic';
|
||||
$lang->block->default['scrum']['project']['5']['grid'] = 4;
|
||||
|
||||
$lang->block->default['product']['1']['title'] = $lang->productCommon . '统计';
|
||||
$lang->block->default['product']['1']['block'] = 'statistic';
|
||||
@@ -190,39 +190,39 @@ $lang->block->default['product']['4']['params']['count'] = 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->executionCommon . '统计';
|
||||
$lang->block->default['project']['1']['block'] = 'statistic';
|
||||
$lang->block->default['project']['1']['grid'] = 8;
|
||||
$lang->block->default['execution']['1']['title'] = $lang->executionCommon . '统计';
|
||||
$lang->block->default['execution']['1']['block'] = 'statistic';
|
||||
$lang->block->default['execution']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['project']['1']['params']['type'] = 'all';
|
||||
$lang->block->default['project']['1']['params']['count'] = '20';
|
||||
$lang->block->default['execution']['1']['params']['type'] = 'all';
|
||||
$lang->block->default['execution']['1']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['project']['2']['title'] = $lang->executionCommon . '总览';
|
||||
$lang->block->default['project']['2']['block'] = 'overview';
|
||||
$lang->block->default['project']['2']['grid'] = 4;
|
||||
$lang->block->default['execution']['2']['title'] = $lang->executionCommon . '总览';
|
||||
$lang->block->default['execution']['2']['block'] = 'overview';
|
||||
$lang->block->default['execution']['2']['grid'] = 4;
|
||||
|
||||
$lang->block->default['project']['3']['title'] = '未关闭的' . $lang->executionCommon;
|
||||
$lang->block->default['project']['3']['block'] = 'list';
|
||||
$lang->block->default['project']['3']['grid'] = 8;
|
||||
$lang->block->default['execution']['3']['title'] = '未关闭的' . $lang->executionCommon;
|
||||
$lang->block->default['execution']['3']['block'] = 'list';
|
||||
$lang->block->default['execution']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['project']['3']['params']['count'] = 15;
|
||||
$lang->block->default['project']['3']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['3']['params']['type'] = 'undone';
|
||||
$lang->block->default['execution']['3']['params']['count'] = 15;
|
||||
$lang->block->default['execution']['3']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['execution']['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['execution']['4']['title'] = '指派给我的任务';
|
||||
$lang->block->default['execution']['4']['block'] = 'task';
|
||||
$lang->block->default['execution']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['project']['4']['params']['count'] = 15;
|
||||
$lang->block->default['project']['4']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['project']['4']['params']['type'] = 'assignedTo';
|
||||
$lang->block->default['execution']['4']['params']['count'] = 15;
|
||||
$lang->block->default['execution']['4']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['execution']['4']['params']['type'] = 'assignedTo';
|
||||
|
||||
$lang->block->default['project']['5']['title'] = '版本列表';
|
||||
$lang->block->default['project']['5']['block'] = 'build';
|
||||
$lang->block->default['project']['5']['grid'] = 8;
|
||||
$lang->block->default['execution']['5']['title'] = '版本列表';
|
||||
$lang->block->default['execution']['5']['block'] = 'build';
|
||||
$lang->block->default['execution']['5']['grid'] = 8;
|
||||
|
||||
$lang->block->default['project']['5']['params']['count'] = 15;
|
||||
$lang->block->default['project']['5']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['execution']['5']['params']['count'] = 15;
|
||||
$lang->block->default['execution']['5']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['qa']['1']['title'] = '测试统计';
|
||||
$lang->block->default['qa']['1']['block'] = 'statistic';
|
||||
@@ -277,7 +277,7 @@ $lang->block->default['full']['my']['3']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['4']['title'] = '项目统计';
|
||||
$lang->block->default['full']['my']['4']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['4']['source'] = 'program';
|
||||
$lang->block->default['full']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['4']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['5']['title'] = '我的贡献';
|
||||
@@ -287,7 +287,7 @@ $lang->block->default['full']['my']['5']['grid'] = 4;
|
||||
|
||||
$lang->block->default['full']['my']['6']['title'] = '我近期参与的项目';
|
||||
$lang->block->default['full']['my']['6']['block'] = 'recentproject';
|
||||
$lang->block->default['full']['my']['6']['source'] = 'program';
|
||||
$lang->block->default['full']['my']['6']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['6']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['7']['title'] = '指派给我';
|
||||
@@ -303,13 +303,13 @@ $lang->block->default['full']['my']['7']['params']['issueNum'] = '20';
|
||||
$lang->block->default['full']['my']['7']['params']['storyNum'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['8']['title'] = '项目人力投入';
|
||||
$lang->block->default['full']['my']['8']['block'] = 'programteam';
|
||||
$lang->block->default['full']['my']['8']['source'] = 'program';
|
||||
$lang->block->default['full']['my']['8']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['8']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['8']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['9']['title'] = '项目列表';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'program';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'program';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['9']['params']['orderBy'] = 'id_desc';
|
||||
@@ -320,33 +320,32 @@ $lang->block->type = '类型';
|
||||
$lang->block->orderBy = '排序';
|
||||
|
||||
$lang->block->availableBlocks = new stdclass();
|
||||
$lang->block->availableBlocks->todo = '我的待办';
|
||||
$lang->block->availableBlocks->task = '我的任务';
|
||||
$lang->block->availableBlocks->bug = '我的Bug';
|
||||
$lang->block->availableBlocks->case = '我的用例';
|
||||
$lang->block->availableBlocks->story = "我的{$lang->SRCommon}";
|
||||
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
|
||||
$lang->block->availableBlocks->execution = $lang->executionCommon . '列表';
|
||||
$lang->block->availableBlocks->plan = "计划列表";
|
||||
$lang->block->availableBlocks->release = '发布列表';
|
||||
$lang->block->availableBlocks->build = '版本列表';
|
||||
$lang->block->availableBlocks->testtask = '测试版本列表';
|
||||
$lang->block->availableBlocks->risk = '我的风险';
|
||||
$lang->block->availableBlocks->issue = '我的问题';
|
||||
|
||||
$lang->block->availableBlocks->todo = '我的待办';
|
||||
$lang->block->availableBlocks->task = '我的任务';
|
||||
$lang->block->availableBlocks->bug = '我的Bug';
|
||||
$lang->block->availableBlocks->case = '我的用例';
|
||||
$lang->block->availableBlocks->story = "我的{$lang->SRCommon}";
|
||||
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
|
||||
$lang->block->availableBlocks->project = $lang->executionCommon . '列表';
|
||||
$lang->block->availableBlocks->plan = "计划列表";
|
||||
$lang->block->availableBlocks->release = '发布列表';
|
||||
$lang->block->availableBlocks->build = '版本列表';
|
||||
$lang->block->availableBlocks->testtask = '测试版本列表';
|
||||
$lang->block->availableBlocks->risk = '我的风险';
|
||||
$lang->block->availableBlocks->issue = '我的问题';
|
||||
$lang->block->moduleList['project'] = '项目';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['execution'] = $lang->executionCommon;
|
||||
$lang->block->moduleList['qa'] = '测试';
|
||||
$lang->block->moduleList['todo'] = '待办';
|
||||
|
||||
$lang->block->moduleList['program'] = '项目';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = $lang->execution->common;
|
||||
$lang->block->moduleList['qa'] = '测试';
|
||||
$lang->block->moduleList['todo'] = '待办';
|
||||
|
||||
$lang->block->modules['program'] = new stdclass();
|
||||
$lang->block->modules['program']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['program']->availableBlocks->program = '项目列表';
|
||||
$lang->block->modules['program']->availableBlocks->recentproject = '近期项目';
|
||||
$lang->block->modules['program']->availableBlocks->statistic = '项目统计';
|
||||
$lang->block->modules['program']->availableBlocks->programteam = '项目人力投入';
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->project = '项目列表';
|
||||
$lang->block->modules['project']->availableBlocks->recentproject = '近期项目';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = '项目统计';
|
||||
$lang->block->modules['project']->availableBlocks->projectteam = '项目人力投入';
|
||||
|
||||
$lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
@@ -375,13 +374,13 @@ $lang->block->modules['product']->availableBlocks->story = "{$lang->SRCommon
|
||||
$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->statistic = $lang->execution->common . '统计';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->execution->common . '总览';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->execution->common . '列表';
|
||||
$lang->block->modules['project']->availableBlocks->task = '任务列表';
|
||||
$lang->block->modules['project']->availableBlocks->build = '版本列表';
|
||||
$lang->block->modules['execution'] = new stdclass();
|
||||
$lang->block->modules['execution']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['execution']->availableBlocks->statistic = $lang->executionCommon . '统计';
|
||||
$lang->block->modules['execution']->availableBlocks->overview = $lang->executionCommon . '总览';
|
||||
$lang->block->modules['execution']->availableBlocks->list = $lang->executionCommon . '列表';
|
||||
$lang->block->modules['execution']->availableBlocks->task = '任务列表';
|
||||
$lang->block->modules['execution']->availableBlocks->build = '版本列表';
|
||||
|
||||
$lang->block->modules['qa'] = new stdclass();
|
||||
$lang->block->modules['qa']->availableBlocks = new stdclass();
|
||||
@@ -403,11 +402,11 @@ $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->execution = array();
|
||||
$lang->block->orderByList->execution['id_asc'] = 'ID 递增';
|
||||
$lang->block->orderByList->execution['id_desc'] = 'ID 递减';
|
||||
$lang->block->orderByList->execution['status_asc'] = '状态正序';
|
||||
$lang->block->orderByList->execution['status_desc'] = '状态倒序';
|
||||
|
||||
$lang->block->orderByList->task = array();
|
||||
$lang->block->orderByList->task['id_asc'] = 'ID 递增';
|
||||
@@ -478,15 +477,15 @@ $lang->block->typeList->product['closed'] = '已关闭';
|
||||
$lang->block->typeList->product['all'] = '全部';
|
||||
$lang->block->typeList->product['involved'] = '我参与';
|
||||
|
||||
$lang->block->typeList->program['undone'] = '未完成';
|
||||
$lang->block->typeList->program['doing'] = '进行中';
|
||||
$lang->block->typeList->program['all'] = '全部';
|
||||
$lang->block->typeList->program['involved'] = '我参与的';
|
||||
|
||||
$lang->block->typeList->project['undone'] = '未完成';
|
||||
$lang->block->typeList->project['doing'] = '进行中';
|
||||
$lang->block->typeList->project['all'] = '全部';
|
||||
$lang->block->typeList->project['involved'] = '我参与';
|
||||
$lang->block->typeList->project['involved'] = '我参与的';
|
||||
|
||||
$lang->block->typeList->execution['undone'] = '未完成';
|
||||
$lang->block->typeList->execution['doing'] = '进行中';
|
||||
$lang->block->typeList->execution['all'] = '全部';
|
||||
$lang->block->typeList->execution['involved'] = '我参与';
|
||||
|
||||
$lang->block->typeList->scrum['undone'] = '未完成';
|
||||
$lang->block->typeList->scrum['doing'] = '进行中';
|
||||
@@ -499,27 +498,27 @@ $lang->block->typeList->testtask['blocked'] = '阻塞版本';
|
||||
$lang->block->typeList->testtask['done'] = '已测版本';
|
||||
$lang->block->typeList->testtask['all'] = '全部';
|
||||
|
||||
$lang->block->modules['program']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['program']->moreLinkList->recentproject = 'program|prjbrowse|';
|
||||
$lang->block->modules['program']->moreLinkList->statistic = 'program|prjbrowse|';
|
||||
$lang->block->modules['program']->moreLinkList->project = 'program|prjbrowse|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmireport = 'weekly|index|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmiestimate = 'workestimation|index|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmiissue = 'issue|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmirisk = 'risk|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumlist = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumtest = 'testtask|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumproduct = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->sprint = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->projectdynamic = 'company|dynamic|';
|
||||
$lang->block->modules['project']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
|
||||
$lang->block->modules['project']->moreLinkList->cmmiestimate = 'workestimation|index|';
|
||||
$lang->block->modules['project']->moreLinkList->cmmiissue = 'issue|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->cmmirisk = 'risk|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->scrumlist = 'project|all|';
|
||||
$lang->block->modules['project']->moreLinkList->scrumtest = 'testtask|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->scrumproduct = 'product|all|';
|
||||
$lang->block->modules['project']->moreLinkList->sprint = 'project|all|';
|
||||
$lang->block->modules['project']->moreLinkList->projectdynamic = 'company|dynamic|';
|
||||
|
||||
$lang->block->modules['product']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['product']->moreLinkList->list = 'product|all|';
|
||||
$lang->block->modules['product']->moreLinkList->story = 'my|story|type=%s';
|
||||
|
||||
$lang->block->modules['project']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['project']->moreLinkList->list = 'project|all|status=%s&project=';
|
||||
$lang->block->modules['project']->moreLinkList->task = 'my|task|type=%s';
|
||||
$lang->block->modules['execution']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['execution']->moreLinkList->list = 'execution|all|status=%s&executionID=';
|
||||
$lang->block->modules['execution']->moreLinkList->task = 'my|task|type=%s';
|
||||
|
||||
$lang->block->modules['qa']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['qa']->moreLinkList->bug = 'my|bug|type=%s';
|
||||
@@ -541,9 +540,9 @@ $lang->block->welcomeList['19:00'] = '%s,晚上好!';
|
||||
$lang->block->gridOptions[8] = '左侧';
|
||||
$lang->block->gridOptions[4] = '右侧';
|
||||
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('管理员', '维护公司', '添加用户', '维护权限');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . '经理', '创建' . $lang->productCommon, '维护模块', "维护计划", "维护{$lang->SRCommon}", '创建发布');
|
||||
$lang->block->flowchart['project'] = array($lang->executionCommon . '经理', '创建' . $lang->executionCommon, '维护团队', '关联' . $lang->productCommon, "关联{$lang->SRCommon}", '分解任务');
|
||||
$lang->block->flowchart['dev'] = array('研发人员', '领取任务和Bug', '更新状态', '完成任务和Bug');
|
||||
$lang->block->flowchart['tester'] = array('测试人员', '撰写用例', '执行用例', '提交Bug', '验证Bug', '关闭Bug');
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('管理员', '维护公司', '添加用户', '维护权限');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . '经理', '创建' . $lang->productCommon, '维护模块', "维护计划", "维护{$lang->SRCommon}", '创建发布');
|
||||
$lang->block->flowchart['execution'] = array($lang->executionCommon . '经理', '创建' . $lang->executionCommon, '维护团队', '关联' . $lang->productCommon, "关联{$lang->SRCommon}", '分解任务');
|
||||
$lang->block->flowchart['dev'] = array('研发人员', '领取任务和Bug', '更新状态', '完成任务和Bug');
|
||||
$lang->block->flowchart['tester'] = array('测试人员', '撰写用例', '执行用例', '提交Bug', '验证Bug', '关闭Bug');
|
||||
|
||||
@@ -337,7 +337,7 @@ $lang->block->availableBlocks->issue = '我的問題';
|
||||
|
||||
$lang->block->moduleList['program'] = '項目';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = $lang->execution->common;
|
||||
$lang->block->moduleList['project'] = $lang->executionCommon;
|
||||
$lang->block->moduleList['qa'] = '測試';
|
||||
$lang->block->moduleList['todo'] = '待辦';
|
||||
|
||||
@@ -377,9 +377,9 @@ $lang->block->modules['product']->availableBlocks->release = '發佈列表';
|
||||
|
||||
$lang->block->modules['project'] = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->execution->common . '統計';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->execution->common . '總覽';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->execution->common . '列表';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = $lang->executionCommon . '統計';
|
||||
$lang->block->modules['project']->availableBlocks->overview = $lang->executionCommon . '總覽';
|
||||
$lang->block->modules['project']->availableBlocks->list = $lang->executionCommon . '列表';
|
||||
$lang->block->modules['project']->availableBlocks->task = '任務列表';
|
||||
$lang->block->modules['project']->availableBlocks->build = '版本列表';
|
||||
|
||||
|
||||
@@ -220,16 +220,14 @@ class blockModel extends model
|
||||
{
|
||||
$flow = isset($this->config->global->flow) ? $this->config->global->flow : 'full';
|
||||
$account = $this->app->user->account;
|
||||
if($module == 'program')
|
||||
if($module == 'project')
|
||||
{
|
||||
$blocks = $this->lang->block->default[$type]['program'];
|
||||
$projectID = $this->session->PRJ;
|
||||
$project = $this->loadModel('program')->getPRJByID($projectID);
|
||||
$blocks = $this->lang->block->default[$type]['project'];
|
||||
|
||||
/* Mark project block has init. */
|
||||
$this->loadModel('setting')->setItem("$account.$module.{$project->model}common.blockInited", true);
|
||||
$this->loadModel('setting')->setItem("$account.$module.{$type}common.blockInited", true);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$blocks = $module == 'my' ? $this->lang->block->default[$flow][$module] : $this->lang->block->default[$module];
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
?>
|
||||
<tr>
|
||||
<td class='c-id-xs'><?php echo sprintf('%03d', $bug->id);?></td>
|
||||
<td class='c-name' style='color: <?php echo $bug->color?>' title='<?php echo $bug->title?>'><?php echo html::a($this->createLink('bug', 'view', "bugID=$bug->id", '', '', $bug->PRJ), $bug->title)?></td>
|
||||
<td class='c-name' style='color: <?php echo $bug->color?>' title='<?php echo $bug->title?>'><?php echo html::a($this->createLink('bug', 'view', "bugID=$bug->id", '', '', $bug->project), $bug->title)?></td>
|
||||
<?php if($longBlock):?>
|
||||
<td class='c-severity'>
|
||||
<?php if($hasCustomSeverity):?>
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* The project block view file of block module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package block
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php if(empty($executionStats)): ?>
|
||||
<div class='empty-tip'><?php common::printLink('project', 'create', '', "<i class='icon-plus'></i> " . $lang->project->create, '', "class='btn btn-primary'")?></div>
|
||||
<?php else:?>
|
||||
<div class="panel-body has-table scrollbar-hover">
|
||||
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter block-projects tablesorter'>
|
||||
<thead>
|
||||
<tr class='text-center'>
|
||||
<th class='c-name text-left'><?php echo $lang->execution->name;?></th>
|
||||
<th class="c-date"><?php echo $lang->execution->end;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<?php $thClass = common::checkNotCN() ? 'w-85px' : 'c-hours';?>
|
||||
<th class="c-status"><?php echo $lang->statusAB;?></th>
|
||||
<th class='<?php echo $thClass?>'><?php echo $lang->execution->totalEstimate;?></th>
|
||||
<th class="c-hours"><?php echo $lang->execution->totalConsumed;?></th>
|
||||
<th class="c-hours"><?php echo $lang->execution->totalLeft;?></th>
|
||||
<?php endif;?>
|
||||
<th class="c-progress"><?php echo $lang->execution->progress;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<th><?php echo $lang->execution->burn;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-center">
|
||||
<?php $id = 0; ?>
|
||||
<?php foreach($executionStats as $execution):?>
|
||||
<?php
|
||||
$appid = isset($_GET['entry']) ? "class='app-btn text-center' data-id='{$this->get->entry}'" : "class='text-center'";
|
||||
$viewLink = $this->createLink('execution', 'task', 'executionID=' . $execution->id);
|
||||
?>
|
||||
<tr data-url='<?php echo empty($sso) ? $viewLink : $sso . $sign . 'referer=' . base64_encode($viewLink); ?>' <?php echo $appid?>>
|
||||
<td class='c-name text-left' title='<?php echo $execution->name;?>'><nobr><?php echo html::a($viewLink, $execution->name, '', "title='$execution->name'");?></nobr></td>
|
||||
<td class="c-date"><?php echo $execution->end;?></td>
|
||||
<?php if($longBlock):?>
|
||||
<td class="w-70px">
|
||||
<?php if(isset($execution->delay)):?>
|
||||
<span class="status-project status-delayed" title='<?php echo $lang->execution->delayed;?>'><?php echo $lang->execution->delayed;?></span>
|
||||
<?php else:?>
|
||||
<?php $statusName = $this->processStatus('project', $execution);?>
|
||||
<span class="status-project status-<?php echo $execution->status?>" title='<?php echo $statusName;?>'><?php echo $statusName;?></span>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalEstimate . ' ' . $lang->execution->workHour;?>"><?php echo $execution->hours->totalEstimate . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalConsumed . ' ' . $lang->execution->workHour;?>"><?php echo $execution->hours->totalConsumed . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalLeft . ' ' . $lang->execution->workHour;?>"><?php echo $execution->hours->totalLeft . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<?php endif;?>
|
||||
<td class="c-progress">
|
||||
<div class="progress progress-text-left">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $execution->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->hours->progress;?>%">
|
||||
<span class="progress-text"><?php echo $execution->hours->progress;?>%</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<?php if($longBlock):?>
|
||||
<td id='spark-<?php echo $id++?>' class='no-padding text-left sparkline' values='<?php echo join(',', $execution->burns);?>'></td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
+2
-2
@@ -16,9 +16,9 @@
|
||||
<div class="panel-body table-row">
|
||||
<div class="col-4 text-middle text-center">
|
||||
<div class="tile">
|
||||
<div class="tile-title"><?php echo $lang->project->allProject;?></div>
|
||||
<div class="tile-title"><?php echo $lang->execution->allExecution;?></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', 'type=all');?>"><?php echo $lang->project->viewAll;?> <span class="label label-badge label-icon"><i class="icon icon-arrow-right"></i></span></a>
|
||||
<a class="btn btn-primary btn-circle btn-icon-right btn-sm" href="<?php echo $this->createLink('project', 'all', 'type=all');?>"><?php echo $lang->execution->viewAll;?> <span class="label label-badge label-icon"><i class="icon icon-arrow-right"></i></span></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-8 text-middle">
|
||||
+76
-117
@@ -55,21 +55,9 @@ html[lang="en"] .product-info .type-info {color: #A6AAB8; text-align: center; po
|
||||
.block-statistic.block-sm .nav-secondary > li.active > a.btn-view {width: auto; left: 0; right: 0;}
|
||||
.block-statistic.block-sm .nav-secondary > li.active > a.btn-view > i {display: none;}
|
||||
.block-statistic.block-sm .nav-secondary > li.active > a.btn-view:hover {cursor: pointer; background: rgba(0,0,0,.1)}
|
||||
.block-statistic .program-info .info span+span{margin-left: 15px}
|
||||
.block-statistic .project-info{margin-top: 25px}
|
||||
.block-statistic .project-info .col-xs-5, .block-statistic .project-info .col-xs-7{margin-top: 8px}
|
||||
.block-statistic .project-info .col-xs-5{padding-left: 0px;}
|
||||
|
||||
.status-count{margin:auto}
|
||||
.status-count tr:first-child td:last-child{color:#000;font-weight:bold}
|
||||
|
||||
.block-statistic .progress-group{margin-top: 20px; margin-bottom: 10px; height: 65px;}
|
||||
.block-statistic .weekly-title{font-weight: bold; font-size:14px; color: #3C4253;}
|
||||
.block-statistic .weekly-small{font-size:12px; color: #838A9D;}
|
||||
.block-statistic .weekly-progress {font-weight: bold; font-size:24px;}
|
||||
.block-statistic .weekly-name{font-size:14px; color: #838A9D;}
|
||||
.block-statistic .weekly-value{font-size:14px;}
|
||||
.block-statistic .col-6 .stage{margin-left: 10px}
|
||||
</style>
|
||||
<script>
|
||||
<?php $blockNavId = 'nav-' . uniqid(); ?>
|
||||
@@ -86,17 +74,17 @@ $(function()
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
var $projectLi = $('#activeProject');
|
||||
if($projectLi.length)
|
||||
var $executionLi = $('#activeExecution');
|
||||
if($executionLi.length)
|
||||
{
|
||||
var projectLi = $projectLi[0];
|
||||
$(".col ul.nav").animate({scrollTop: projectLi.offsetTop}, "slow");
|
||||
var executionLi = $executionLi[0];
|
||||
$(".col ul.nav").animate({scrollTop: executionLi.offsetTop}, "slow");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<div class="panel-body">
|
||||
<div class="table-row">
|
||||
<?php if(empty($projects)):?>
|
||||
<?php if(empty($executions)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->block->noData;?></span></p>
|
||||
</div>
|
||||
@@ -104,139 +92,110 @@ $(function()
|
||||
<div class="col col-nav">
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover" id='<?php echo $blockNavId;?>'>
|
||||
<li class='switch-icon prev'><a><i class='icon icon-arrow-left'></i></a></li>
|
||||
<?php $selected = key($projects);?>
|
||||
<?php foreach($projects as $project):?>
|
||||
<li <?php if($project->id == $selected) echo "class='active' id='activeProject'";?> projectID='<?php echo $project->id;?>'>
|
||||
<a href="###" data-target="#tab3Content<?php echo $project->id;?>" data-toggle="tab"><?php echo $project->name;?></a>
|
||||
<?php echo html::a(helper::createLink('program', 'index', "projectID=$project->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view' title={$lang->project->index}");?>
|
||||
<?php $selected = key($executions);?>
|
||||
<?php $selected = !isset($executions[$selected]) ? key($executions) : $selected;?>
|
||||
<?php foreach($executions as $execution):?>
|
||||
<li <?php if($execution->id == $selected) echo "class='active' id='activeExecution'";?> executionID='<?php echo $execution->id;?>'>
|
||||
<a href="###" data-target="#tab3Content<?php echo $execution->id;?>" data-toggle="tab" title='<?php echo $execution->name;?>'><?php echo $execution->name;?></a>
|
||||
<?php echo html::a(helper::createLink('project', 'task', "executionID=$execution->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view' title={$lang->execution->task}");?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
<li class='switch-icon next'><a><i class='icon icon-arrow-right'></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col tab-content">
|
||||
<?php foreach($projects as $project):?>
|
||||
<div class="tab-pane fade<?php if($project->id == $selected) echo ' active in';?>" id="tab3Content<?php echo $project->id;?>">
|
||||
<?php foreach($executions as $execution):?>
|
||||
<div class="tab-pane fade<?php if($execution->id == $selected) echo ' active in';?>" id="tab3Content<?php echo $execution->id;?>">
|
||||
<div class="table-row">
|
||||
<?php if($project->model == 'scrum'):?>
|
||||
<div class="col-5 text-middle text-center">
|
||||
<div class="progress-pie inline-block space" data-value="<?php echo $project->progress;?>" data-doughnut-size="84">
|
||||
<div class="progress-pie inline-block space" data-value="<?php echo $execution->progress;?>" data-doughnut-size="84">
|
||||
<canvas width="120" height="120"></canvas>
|
||||
<div class="progress-info">
|
||||
<small><?php echo $lang->story->common . $lang->project->doneStories;?></small>
|
||||
<strong><?php echo $project->doneStories;?></strong>
|
||||
<small><?php echo $lang->task->statusList['done'];?></small>
|
||||
<strong><?php echo $execution->progress;?><small><?php echo $lang->percent;?></small></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-row text-center small text-muted with-padding">
|
||||
<div class="col-4 text-bottom">
|
||||
<div><?php echo $lang->project->allStories;?></div>
|
||||
<div><?php echo $project->allStories;?></div>
|
||||
<div><?php echo $lang->execution->totalEstimate;?></div>
|
||||
<div><?php echo (float)$execution->totalEstimate;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="label label-dot label-primary"></span>
|
||||
<div><?php echo $lang->project->doneStories;?></div>
|
||||
<div><?php echo $project->doneStories;?></div>
|
||||
<div><?php echo $lang->execution->totalConsumed;?></div>
|
||||
<div><?php echo (float)$execution->totalConsumed;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="label label-dot label-pale"></span>
|
||||
<div><?php echo $lang->project->leftStories;?></div>
|
||||
<div><?php echo $project->leftStories;?></div>
|
||||
<div><?php echo $lang->execution->totalLeft;?></div>
|
||||
<div><?php echo (float)$execution->totalLeft;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="project-info">
|
||||
<h4><?php echo $lang->project->allInput;?></h4>
|
||||
<div class='info'>
|
||||
<span><i class='icon icon-group'></i> <?php echo sprintf($lang->project->membersUnit, $project->teamCount);?></span>
|
||||
<span><i class='icon icon-clock'></i> <?php echo sprintf($lang->project->hoursUnit, $project->estimate);?></span>
|
||||
<span><i class='icon icon-cost'></i> <?php echo $project->budget . ' ' . zget($lang->project->unitList, $project->budgetUnit);?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="project-info">
|
||||
<?php $i = 0;?>
|
||||
<h4><?php echo $lang->project->lastIteration;?></h4>
|
||||
<?php foreach($project->executions as $execution):?>
|
||||
<?php $i ++;?>
|
||||
<?php if($i > 3) break;?>
|
||||
<div class='col-xs-5'><?php echo $execution->name;?></div>
|
||||
<div class='col-xs-7'>
|
||||
<div class='progress progress-text-left'>
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $execution->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->hours->progress;?>%">
|
||||
<span class='progress-text'><?php echo $execution->hours->progress . '%';?></span>
|
||||
</div>
|
||||
<div class="product-info">
|
||||
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->task->yesterdayFinished;?></span> <strong><?php echo $execution->yesterdayFinished;?></strong></div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $execution->taskProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->taskProgress;?>%">
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class="col-6">
|
||||
<div class='table-row text-left weekly-row with-padding'>
|
||||
<span class='weekly-title'><?php echo $lang->project->weekly;?></span>
|
||||
<span class='stage text-muted'><?php echo $project->current;?></span>
|
||||
</div>
|
||||
<div class='progress-group col-10 center-block'>
|
||||
<div class='progress-num text-center'>
|
||||
<div class='weekly-title'><?php echo $lang->project->PRJProgress;?></div>
|
||||
<div class='weekly-progress'><?php echo $project->progress . '%';?></div>
|
||||
</div>
|
||||
<div class='progress'>
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="82" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->progress;?>%"></div>
|
||||
<div class="type-info">
|
||||
<div class="type-label">
|
||||
<table class='status-count'>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->task->allTasks;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->totalTasks) ? 0 : html::a($this->createLink('project', 'task', "executionID={$execution->id}&status=all"), $execution->totalTasks);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->task->noFinished;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->undoneTasks) ? 0 : html::a($this->createLink('project', 'task', "executionID={$execution->id}&status=undone"), $execution->undoneTasks);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-row text-center small with-padding col-10 center-block">
|
||||
<div class="col-4 text-bottom">
|
||||
<div class='weekly-name'><?php echo $lang->project->pv;?></div>
|
||||
<div class='weekly-value'><?php echo $project->pv;?></div>
|
||||
<div class="product-info">
|
||||
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->story->released;?></span> <strong><?php echo $execution->releasedStories;?></strong></div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $execution->storyProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->storyProgress;?>%"></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->ev;?></div>
|
||||
<div class='weekly-value'><?php echo $project->ev;?></div>
|
||||
<div class="type-info">
|
||||
<div class="type-label">
|
||||
<table class='status-count'>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->story->total;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->totalStories) ? 0 : html::a($this->createLink('project', 'story', "executionID={$execution->id}&orderBy=order_desc&type=all"), $execution->totalStories);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->story->unclosed;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->unclosedStories) ? 0 : html::a($this->createLink('project', 'story', "executionID={$execution->id}&orderBy=order_desc&type=unclosed"), $execution->unclosedStories);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->sv;?></div>
|
||||
<div class='weekly-value'><?php echo $project->sv;?></div>
|
||||
</div>
|
||||
<div class="product-info">
|
||||
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->bug->yesterdayResolved;?></span> <strong><?php echo $execution->yesterdayResolved;?></strong></div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $execution->bugProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->bugProgress;?>%">
|
||||
</div>
|
||||
</div>
|
||||
<div class="type-info">
|
||||
<div class="type-label">
|
||||
<table class='status-count'>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->bug->allBugs;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->totalBugs) ? 0 : html::a($this->createLink('project', 'bug', "executionID={$execution->id}&orderBy=status,id_desc&build=0&type=all"), $execution->totalBugs);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->bug->unResolved;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->activeBugs) ? 0 : html::a($this->createLink('project', 'bug', "executionID={$execution->id}&orderBy=status,id_desc&build=0&type=unresolved"), $execution->activeBugs);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-6'>
|
||||
<div class='table-row weekly-row with-padding'>
|
||||
<div class='col-4 text-center'>
|
||||
<span class='weekly-title'><?php echo $lang->project->allInput;?></span>
|
||||
</div>
|
||||
<div class='col-8'></div>
|
||||
</div>
|
||||
<div class='progress-group'>
|
||||
<div class="table-row text-center small with-padding">
|
||||
<div class="col-4 text-bottom">
|
||||
<div class='weekly-name'><?php echo $lang->project->PRJPM;?></div>
|
||||
<div class='weekly-value'><?php echo $project->PM ? zget($users, $project->PM) : $lang->project->emptyPM;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->teamCount;?></div>
|
||||
<div class='weekly-value'><?php echo $project->teamCount;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->PRJBudget;?></div>
|
||||
<div class='weekly-value'><?php echo $project->budget;?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-row text-center small with-padding">
|
||||
<div class="col-4 text-bottom">
|
||||
<div class='weekly-name'><?php echo $lang->project->ac;?></div>
|
||||
<div class='weekly-value'><?php echo $project->ac;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->cv;?></div>
|
||||
<div class='weekly-value'><?php echo $project->cv;?></div>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
+6
-7
@@ -8,13 +8,12 @@ $maxConsumed = 0;
|
||||
<div class='panel-body'>
|
||||
<div class='table-row'>
|
||||
<div class='table-col chart-titles'>
|
||||
<div class='chart-col-title strong'><span><?php echo $lang->project->name;?></span></div>
|
||||
<?php foreach($projects as $project):?>
|
||||
<?php
|
||||
$maxTeamCount = max($maxTeamCount, $project->teamCount);
|
||||
$maxConsumed = max($maxConsumed, $project->consumed);
|
||||
?>
|
||||
<div class='chart-title text-ellipsis' title="<?php echo $project->name;?>"><span><?php echo $project->name;?></span></div>
|
||||
<div class='chart-title text-ellipsis'><span><?php echo $project->name;?></span></div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
<div class='table-col chart-rows'>
|
||||
@@ -37,7 +36,7 @@ $maxConsumed = 0;
|
||||
<div class='chart-col-item'>
|
||||
<div class='progress'>
|
||||
<div class='progress-bar' style='width: <?php echo $maxConsumed ? (100 * $project->consumed / $maxConsumed) : 0; ?>%'>
|
||||
<div class='progress-text' title="<?php echo $project->consumed . $lang->execution->workHour;?>"><?php echo $project->consumed . $lang->execution->workHourUnit;?></div>
|
||||
<div class='progress-text'><?php echo $project->consumed;?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -48,7 +47,7 @@ $maxConsumed = 0;
|
||||
</div>
|
||||
<style>
|
||||
.block-projectteam .panel-body {margin-top: -10px}
|
||||
.chart-titles {width: 110px; padding-right: 10px; position: relative; z-index: 1}
|
||||
.chart-titles {width: 110px; padding-right: 10px; padding-top: 30px; position: relative; z-index: 1}
|
||||
.chart-rows {position: relative; z-index: 0}
|
||||
.chart-title {width: 100px; line-height: 20px; padding: 5px 0; height: 30px}
|
||||
.chart-title > span {background: #fff}
|
||||
@@ -56,10 +55,10 @@ $maxConsumed = 0;
|
||||
.project-team, .project-consumed {padding: 0}
|
||||
.project-team {border-right: 1px solid #e5e8ec}
|
||||
.project-team > .chart-col-title {text-align: right}
|
||||
.chart-col-item {height: 30px; padding: 5px 0}
|
||||
.chart-col-item {height: 30px; padding: 5px 0; position: relative}
|
||||
.chart-col-text {width: 50px; position: absolute; top: 5px; line-height: 20px; left: 0}
|
||||
.project-team .chart-col-item {padding-left: 50px}
|
||||
.project-team .chart-col-item:before {content: ' '; z-index: 0; left: -100px; top: 14px; right: 0; border-top: 1px dotted #e5e8ec}
|
||||
.project-team .chart-col-item {padding-left: 50px; position: relative}
|
||||
.project-team .chart-col-item:before {position: absolute; content: ' '; z-index: 0; left: -100px; top: 14px; right: 0; border-top: 1px dotted #e5e8ec}
|
||||
.project-consumed .chart-col-item {padding-right: 50px}
|
||||
.chart-col-item .progress {background: none; border-radius: 0; overflow: visible; margin: 6px 0 0 0; position: relative; z-index: 1}
|
||||
.chart-col-item .progress > .progress-bar {border-radius: 0; position: relative; min-width: 1px}
|
||||
@@ -1,50 +0,0 @@
|
||||
<?php if(empty($projects)): ?>
|
||||
<div class='empty-tip'><?php echo $lang->block->emptyTip;?></div>
|
||||
<?php else:?>
|
||||
<style>
|
||||
.block-programs .c-pri {width: 45px;text-align: center;}
|
||||
.block-programs .c-status {width: 80px;}
|
||||
</style>
|
||||
<div class='panel-body has-table scrollbar-hover'>
|
||||
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter block-programs <?php if(!$longBlock) echo 'block-sm';?>'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-name w-100px'><?php echo $lang->project->name;?></th>
|
||||
<th class='w-100px'><?php echo $lang->program->PM;?></th>
|
||||
<th class='w-80px'><?php echo $lang->program->status;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<th class='w-60px'><?php echo $lang->program->teamCount;?></th>
|
||||
<th class='w-90px text-right'><?php echo $lang->task->consumed;?></th>
|
||||
<th class='w-80px text-right'><?php echo $lang->program->budget;?></th>
|
||||
<th class='w-80px'><?php echo $lang->project->leftStories;?></th>
|
||||
<th class='w-80px'><?php echo $lang->project->leftTasks;?></th>
|
||||
<th class='w-80px'><?php echo $lang->project->leftBugs;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($projects as $project):?>
|
||||
<?php
|
||||
$viewLink = $this->createLink('program', 'index', "programID={$project->id}");
|
||||
?>
|
||||
<tr>
|
||||
<td title='<?php echo $project->name?>'><?php echo html::a($viewLink, $project->name);?></td>
|
||||
<td><?php echo zget($users, $project->PM, $project->PM)?></td>
|
||||
<td class='c-status'>
|
||||
<span class="status-program status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status);?></span>
|
||||
</td>
|
||||
<?php if($longBlock):?>
|
||||
<td class='text-center'><?php echo $project->teamCount;?></td>
|
||||
<td class='text-right' title="<?php echo $project->consumed . ' ' . $lang->execution->workHour;?>"><?php echo $project->consumed . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<?php $programBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $project->budget >= 10000 ? number_format($project->budget / 10000, 1) . $this->lang->program->tenThousand : number_format((float)$project->budget, 1);?>
|
||||
<td class='text-right'><?php echo $project->budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $programBudget : $lang->project->future;?></td>
|
||||
<td class='text-center'><?php echo $project->leftStories;?></td>
|
||||
<td class='text-center'><?php echo $project->leftTasks;?></td>
|
||||
<td class='text-center'><?php echo $project->leftBugs;?></td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
@@ -1,72 +1,49 @@
|
||||
<?php
|
||||
/**
|
||||
* The project block view file of block module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package block
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php if(empty($executionStats)): ?>
|
||||
<div class='empty-tip'><?php common::printLink('project', 'create', '', "<i class='icon-plus'></i> " . $lang->project->create, '', "class='btn btn-primary'")?></div>
|
||||
<?php if(empty($projects)): ?>
|
||||
<div class='empty-tip'><?php echo $lang->block->emptyTip;?></div>
|
||||
<?php else:?>
|
||||
<div class="panel-body has-table scrollbar-hover">
|
||||
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter block-projects tablesorter'>
|
||||
<style>
|
||||
.block-programs .c-pri {width: 45px;text-align: center;}
|
||||
.block-programs .c-status {width: 80px;}
|
||||
</style>
|
||||
<div class='panel-body has-table scrollbar-hover'>
|
||||
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter block-programs <?php if(!$longBlock) echo 'block-sm';?>'>
|
||||
<thead>
|
||||
<tr class='text-center'>
|
||||
<th class='c-name text-left'><?php echo $lang->project->name;?></th>
|
||||
<th class="c-date"><?php echo $lang->project->end;?></th>
|
||||
<tr>
|
||||
<th class='c-name w-100px'><?php echo $lang->project->name;?></th>
|
||||
<th class='w-100px'><?php echo $lang->program->PM;?></th>
|
||||
<th class='w-80px'><?php echo $lang->program->status;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<?php $thClass = common::checkNotCN() ? 'w-85px' : 'c-hours';?>
|
||||
<th class="c-status"><?php echo $lang->statusAB;?></th>
|
||||
<th class='<?php echo $thClass?>'><?php echo $lang->project->totalEstimate;?></th>
|
||||
<th class="c-hours"><?php echo $lang->project->totalConsumed;?></th>
|
||||
<th class="c-hours"><?php echo $lang->project->totalLeft;?></th>
|
||||
<?php endif;?>
|
||||
<th class="c-progress"><?php echo $lang->project->progress;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<th><?php echo $lang->project->burn;?></th>
|
||||
<th class='w-60px'><?php echo $lang->program->teamCount;?></th>
|
||||
<th class='w-90px text-right'><?php echo $lang->task->consumed;?></th>
|
||||
<th class='w-80px text-right'><?php echo $lang->program->budget;?></th>
|
||||
<th class='w-80px'><?php echo $lang->project->leftStories;?></th>
|
||||
<th class='w-80px'><?php echo $lang->project->leftTasks;?></th>
|
||||
<th class='w-80px'><?php echo $lang->project->leftBugs;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-center">
|
||||
<?php $id = 0; ?>
|
||||
<?php foreach($executionStats as $execution):?>
|
||||
<tbody>
|
||||
<?php foreach($projects as $project):?>
|
||||
<?php
|
||||
$appid = isset($_GET['entry']) ? "class='app-btn text-center' data-id='{$this->get->entry}'" : "class='text-center'";
|
||||
$viewLink = $this->createLink('project', 'task', 'project=' . $execution->id);
|
||||
$viewLink = $this->createLink('program', 'index', "programID={$project->id}");
|
||||
?>
|
||||
<tr data-url='<?php echo empty($sso) ? $viewLink : $sso . $sign . 'referer=' . base64_encode($viewLink); ?>' <?php echo $appid?>>
|
||||
<td class='c-name text-left' title='<?php echo $execution->name;?>'><nobr><?php echo html::a($this->createLink('project', 'task', 'project=' . $execution->id), $execution->name, '', "title='$execution->name'");?></nobr></td>
|
||||
<td class="c-date"><?php echo $execution->end;?></td>
|
||||
<?php if($longBlock):?>
|
||||
<td class="w-70px">
|
||||
<?php if(isset($execution->delay)):?>
|
||||
<span class="status-project status-delayed" title='<?php echo $lang->project->delayed;?>'><?php echo $lang->project->delayed;?></span>
|
||||
<?php else:?>
|
||||
<?php $statusName = $this->processStatus('project', $execution);?>
|
||||
<span class="status-project status-<?php echo $execution->status?>" title='<?php echo $statusName;?>'><?php echo $statusName;?></span>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalEstimate . ' ' . $lang->project->workHour;?>"><?php echo $execution->hours->totalEstimate . ' ' . $lang->project->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalConsumed . ' ' . $lang->project->workHour;?>"><?php echo $execution->hours->totalConsumed . ' ' . $lang->project->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalLeft . ' ' . $lang->project->workHour;?>"><?php echo $execution->hours->totalLeft . ' ' . $lang->project->workHourUnit;?></td>
|
||||
<?php endif;?>
|
||||
<td class="c-progress">
|
||||
<div class="progress progress-text-left">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $execution->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->hours->progress;?>%">
|
||||
<span class="progress-text"><?php echo $execution->hours->progress;?>%</span>
|
||||
</div>
|
||||
</div>
|
||||
<tr>
|
||||
<td title='<?php echo $project->name?>'><?php echo html::a($viewLink, $project->name);?></td>
|
||||
<td><?php echo zget($users, $project->PM, $project->PM)?></td>
|
||||
<td class='c-status'>
|
||||
<span class="status-program status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status);?></span>
|
||||
</td>
|
||||
<?php if($longBlock):?>
|
||||
<td id='spark-<?php echo $id++?>' class='no-padding text-left sparkline' values='<?php echo join(',', $execution->burns);?>'></td>
|
||||
<td class='text-center'><?php echo $project->teamCount;?></td>
|
||||
<td class='text-right' title="<?php echo $project->consumed . ' ' . $lang->execution->workHour;?>"><?php echo $project->consumed . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<?php $programBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $project->budget >= 10000 ? number_format($project->budget / 10000, 1) . $this->lang->program->tenThousand : number_format((float)$project->budget, 1);?>
|
||||
<td class='text-right'><?php echo $project->budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $programBudget : $lang->project->future;?></td>
|
||||
<td class='text-center'><?php echo $project->leftStories;?></td>
|
||||
<td class='text-center'><?php echo $project->leftTasks;?></td>
|
||||
<td class='text-center'><?php echo $project->leftBugs;?></td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -55,9 +55,21 @@ html[lang="en"] .product-info .type-info {color: #A6AAB8; text-align: center; po
|
||||
.block-statistic.block-sm .nav-secondary > li.active > a.btn-view {width: auto; left: 0; right: 0;}
|
||||
.block-statistic.block-sm .nav-secondary > li.active > a.btn-view > i {display: none;}
|
||||
.block-statistic.block-sm .nav-secondary > li.active > a.btn-view:hover {cursor: pointer; background: rgba(0,0,0,.1)}
|
||||
.block-statistic .program-info .info span+span{margin-left: 15px}
|
||||
.block-statistic .project-info{margin-top: 25px}
|
||||
.block-statistic .project-info .col-xs-5, .block-statistic .project-info .col-xs-7{margin-top: 8px}
|
||||
.block-statistic .project-info .col-xs-5{padding-left: 0px;}
|
||||
|
||||
.status-count{margin:auto}
|
||||
.status-count tr:first-child td:last-child{color:#000;font-weight:bold}
|
||||
|
||||
.block-statistic .progress-group{margin-top: 20px; margin-bottom: 10px; height: 65px;}
|
||||
.block-statistic .weekly-title{font-weight: bold; font-size:14px; color: #3C4253;}
|
||||
.block-statistic .weekly-small{font-size:12px; color: #838A9D;}
|
||||
.block-statistic .weekly-progress {font-weight: bold; font-size:24px;}
|
||||
.block-statistic .weekly-name{font-size:14px; color: #838A9D;}
|
||||
.block-statistic .weekly-value{font-size:14px;}
|
||||
.block-statistic .col-6 .stage{margin-left: 10px}
|
||||
</style>
|
||||
<script>
|
||||
<?php $blockNavId = 'nav-' . uniqid(); ?>
|
||||
@@ -74,17 +86,17 @@ $(function()
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
var $executionLi = $('#activeExecution');
|
||||
if($executionLi.length)
|
||||
var $projectLi = $('#activeProject');
|
||||
if($projectLi.length)
|
||||
{
|
||||
var executionLi = $executionLi[0];
|
||||
$(".col ul.nav").animate({scrollTop: executionLi.offsetTop}, "slow");
|
||||
var projectLi = $projectLi[0];
|
||||
$(".col ul.nav").animate({scrollTop: projectLi.offsetTop}, "slow");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<div class="panel-body">
|
||||
<div class="table-row">
|
||||
<?php if(empty($executions)):?>
|
||||
<?php if(empty($projects)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->block->noData;?></span></p>
|
||||
</div>
|
||||
@@ -92,110 +104,139 @@ $(function()
|
||||
<div class="col col-nav">
|
||||
<ul class="nav nav-stacked nav-secondary scrollbar-hover" id='<?php echo $blockNavId;?>'>
|
||||
<li class='switch-icon prev'><a><i class='icon icon-arrow-left'></i></a></li>
|
||||
<?php $selected = key($executions);?>
|
||||
<?php $selected = !isset($executions[$selected]) ? key($executions) : $selected;?>
|
||||
<?php foreach($executions as $execution):?>
|
||||
<li <?php if($execution->id == $selected) echo "class='active' id='activeExecution'";?> executionID='<?php echo $execution->id;?>'>
|
||||
<a href="###" data-target="#tab3Content<?php echo $execution->id;?>" data-toggle="tab" title='<?php echo $execution->name;?>'><?php echo $execution->name;?></a>
|
||||
<?php echo html::a(helper::createLink('project', 'task', "executionID=$execution->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view' title={$lang->project->task}");?>
|
||||
<?php $selected = key($projects);?>
|
||||
<?php foreach($projects as $project):?>
|
||||
<li <?php if($project->id == $selected) echo "class='active' id='activeProject'";?> projectID='<?php echo $project->id;?>'>
|
||||
<a href="###" data-target="#tab3Content<?php echo $project->id;?>" data-toggle="tab"><?php echo $project->name;?></a>
|
||||
<?php echo html::a(helper::createLink('program', 'index', "projectID=$project->id"), "<i class='icon-arrow-right text-primary'></i>", '', "class='btn-view' title={$lang->project->index}");?>
|
||||
</li>
|
||||
<?php endforeach;?>
|
||||
<li class='switch-icon next'><a><i class='icon icon-arrow-right'></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col tab-content">
|
||||
<?php foreach($executions as $execution):?>
|
||||
<div class="tab-pane fade<?php if($execution->id == $selected) echo ' active in';?>" id="tab3Content<?php echo $execution->id;?>">
|
||||
<?php foreach($projects as $project):?>
|
||||
<div class="tab-pane fade<?php if($project->id == $selected) echo ' active in';?>" id="tab3Content<?php echo $project->id;?>">
|
||||
<div class="table-row">
|
||||
<?php if($project->model == 'scrum'):?>
|
||||
<div class="col-5 text-middle text-center">
|
||||
<div class="progress-pie inline-block space" data-value="<?php echo $execution->progress;?>" data-doughnut-size="84">
|
||||
<div class="progress-pie inline-block space" data-value="<?php echo $project->progress;?>" data-doughnut-size="84">
|
||||
<canvas width="120" height="120"></canvas>
|
||||
<div class="progress-info">
|
||||
<small><?php echo $lang->task->statusList['done'];?></small>
|
||||
<strong><?php echo $execution->progress;?><small><?php echo $lang->percent;?></small></strong>
|
||||
<small><?php echo $lang->story->common . $lang->project->doneStories;?></small>
|
||||
<strong><?php echo $project->doneStories;?></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-row text-center small text-muted with-padding">
|
||||
<div class="col-4 text-bottom">
|
||||
<div><?php echo $lang->project->totalEstimate;?></div>
|
||||
<div><?php echo (float)$execution->totalEstimate;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
|
||||
<div><?php echo $lang->project->allStories;?></div>
|
||||
<div><?php echo $project->allStories;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="label label-dot label-primary"></span>
|
||||
<div><?php echo $lang->project->totalConsumed;?></div>
|
||||
<div><?php echo (float)$execution->totalConsumed;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
|
||||
<div><?php echo $lang->project->doneStories;?></div>
|
||||
<div><?php echo $project->doneStories;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<span class="label label-dot label-pale"></span>
|
||||
<div><?php echo $lang->project->totalLeft;?></div>
|
||||
<div><?php echo (float)$execution->totalLeft;?> <span class="muted"><?php echo $lang->task->hour;?></span></div>
|
||||
<div><?php echo $lang->project->leftStories;?></div>
|
||||
<div><?php echo $project->leftStories;?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="product-info">
|
||||
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->task->yesterdayFinished;?></span> <strong><?php echo $execution->yesterdayFinished;?></strong></div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $execution->taskProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->taskProgress;?>%">
|
||||
</div>
|
||||
</div>
|
||||
<div class="type-info">
|
||||
<div class="type-label">
|
||||
<table class='status-count'>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->task->allTasks;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->totalTasks) ? 0 : html::a($this->createLink('project', 'task', "executionID={$execution->id}&status=all"), $execution->totalTasks);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->task->noFinished;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->undoneTasks) ? 0 : html::a($this->createLink('project', 'task', "executionID={$execution->id}&status=undone"), $execution->undoneTasks);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="project-info">
|
||||
<h4><?php echo $lang->project->allInput;?></h4>
|
||||
<div class='info'>
|
||||
<span><i class='icon icon-group'></i> <?php echo sprintf($lang->project->membersUnit, $project->teamCount);?></span>
|
||||
<span><i class='icon icon-clock'></i> <?php echo sprintf($lang->project->hoursUnit, $project->estimate);?></span>
|
||||
<span><i class='icon icon-cost'></i> <?php echo $project->budget . ' ' . zget($lang->project->unitList, $project->budgetUnit);?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-info">
|
||||
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->story->released;?></span> <strong><?php echo $execution->releasedStories;?></strong></div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $execution->storyProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->storyProgress;?>%"></div>
|
||||
</div>
|
||||
<div class="type-info">
|
||||
<div class="type-label">
|
||||
<table class='status-count'>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->story->total;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->totalStories) ? 0 : html::a($this->createLink('project', 'story', "executionID={$execution->id}&orderBy=order_desc&type=all"), $execution->totalStories);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->story->unclosed;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->unclosedStories) ? 0 : html::a($this->createLink('project', 'story', "executionID={$execution->id}&orderBy=order_desc&type=unclosed"), $execution->unclosedStories);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="project-info">
|
||||
<?php $i = 0;?>
|
||||
<h4><?php echo $lang->project->lastIteration;?></h4>
|
||||
<?php foreach($project->executions as $execution):?>
|
||||
<?php $i ++;?>
|
||||
<?php if($i > 3) break;?>
|
||||
<div class='col-xs-5'><?php echo $execution->name;?></div>
|
||||
<div class='col-xs-7'>
|
||||
<div class='progress progress-text-left'>
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $execution->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->hours->progress;?>%">
|
||||
<span class='progress-text'><?php echo $execution->hours->progress . '%';?></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class="col-6">
|
||||
<div class='table-row text-left weekly-row with-padding'>
|
||||
<span class='weekly-title'><?php echo $lang->project->weekly;?></span>
|
||||
<span class='stage text-muted'><?php echo $project->current;?></span>
|
||||
</div>
|
||||
<div class='progress-group col-10 center-block'>
|
||||
<div class='progress-num text-center'>
|
||||
<div class='weekly-title'><?php echo $lang->project->progress;?></div>
|
||||
<div class='weekly-progress'><?php echo $project->progress . '%';?></div>
|
||||
</div>
|
||||
<div class='progress'>
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="82" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $project->progress;?>%"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="product-info">
|
||||
<div class="progress-info"><i class="icon icon-check-circle text-success icon-sm"></i> <span class="text-muted"><?php echo $lang->bug->yesterdayResolved;?></span> <strong><?php echo $execution->yesterdayResolved;?></strong></div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar" role="progressbar" aria-valuenow="<?php echo $execution->bugProgress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->bugProgress;?>%">
|
||||
</div>
|
||||
<div class="table-row text-center small with-padding col-10 center-block">
|
||||
<div class="col-4 text-bottom">
|
||||
<div class='weekly-name'><?php echo $lang->project->pv;?></div>
|
||||
<div class='weekly-value'><?php echo $project->pv;?></div>
|
||||
</div>
|
||||
<div class="type-info">
|
||||
<div class="type-label">
|
||||
<table class='status-count'>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->bug->allBugs;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->totalBugs) ? 0 : html::a($this->createLink('project', 'bug', "executionID={$execution->id}&orderBy=status,id_desc&build=0&type=all"), $execution->totalBugs);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->bug->unResolved;?> :</td>
|
||||
<td class='text-left'><?php echo empty($execution->activeBugs) ? 0 : html::a($this->createLink('project', 'bug', "executionID={$execution->id}&orderBy=status,id_desc&build=0&type=unresolved"), $execution->activeBugs);?></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->ev;?></div>
|
||||
<div class='weekly-value'><?php echo $project->ev;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->sv;?></div>
|
||||
<div class='weekly-value'><?php echo $project->sv;?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='col-6'>
|
||||
<div class='table-row weekly-row with-padding'>
|
||||
<div class='col-4 text-center'>
|
||||
<span class='weekly-title'><?php echo $lang->project->allInput;?></span>
|
||||
</div>
|
||||
<div class='col-8'></div>
|
||||
</div>
|
||||
<div class='progress-group'>
|
||||
<div class="table-row text-center small with-padding">
|
||||
<div class="col-4 text-bottom">
|
||||
<div class='weekly-name'><?php echo $lang->project->PM;?></div>
|
||||
<div class='weekly-value'><?php echo $project->PM ? zget($users, $project->PM) : $lang->project->emptyPM;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->teamCount;?></div>
|
||||
<div class='weekly-value'><?php echo $project->teamCount;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->budget;?></div>
|
||||
<div class='weekly-value'><?php echo $project->budget;?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-row text-center small with-padding">
|
||||
<div class="col-4 text-bottom">
|
||||
<div class='weekly-name'><?php echo $lang->project->ac;?></div>
|
||||
<div class='weekly-value'><?php echo $project->ac;?></div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class='weekly-name'><?php echo $lang->project->cv;?></div>
|
||||
<div class='weekly-value'><?php echo $project->cv;?></div>
|
||||
</div>
|
||||
<div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
|
||||
@@ -8,12 +8,13 @@ $maxConsumed = 0;
|
||||
<div class='panel-body'>
|
||||
<div class='table-row'>
|
||||
<div class='table-col chart-titles'>
|
||||
<div class='chart-col-title strong'><span><?php echo $lang->project->name;?></span></div>
|
||||
<?php foreach($projects as $project):?>
|
||||
<?php
|
||||
$maxTeamCount = max($maxTeamCount, $project->teamCount);
|
||||
$maxConsumed = max($maxConsumed, $project->consumed);
|
||||
?>
|
||||
<div class='chart-title text-ellipsis'><span><?php echo $project->name;?></span></div>
|
||||
<div class='chart-title text-ellipsis' title="<?php echo $project->name;?>"><span><?php echo $project->name;?></span></div>
|
||||
<?php endforeach;?>
|
||||
</div>
|
||||
<div class='table-col chart-rows'>
|
||||
@@ -36,7 +37,7 @@ $maxConsumed = 0;
|
||||
<div class='chart-col-item'>
|
||||
<div class='progress'>
|
||||
<div class='progress-bar' style='width: <?php echo $maxConsumed ? (100 * $project->consumed / $maxConsumed) : 0; ?>%'>
|
||||
<div class='progress-text'><?php echo $project->consumed;?></div>
|
||||
<div class='progress-text' title="<?php echo $project->consumed . $lang->execution->workHour;?>"><?php echo $project->consumed . $lang->execution->workHourUnit;?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -47,7 +48,7 @@ $maxConsumed = 0;
|
||||
</div>
|
||||
<style>
|
||||
.block-projectteam .panel-body {margin-top: -10px}
|
||||
.chart-titles {width: 110px; padding-right: 10px; padding-top: 30px; position: relative; z-index: 1}
|
||||
.chart-titles {width: 110px; padding-right: 10px; position: relative; z-index: 1}
|
||||
.chart-rows {position: relative; z-index: 0}
|
||||
.chart-title {width: 100px; line-height: 20px; padding: 5px 0; height: 30px}
|
||||
.chart-title > span {background: #fff}
|
||||
@@ -55,10 +56,10 @@ $maxConsumed = 0;
|
||||
.project-team, .project-consumed {padding: 0}
|
||||
.project-team {border-right: 1px solid #e5e8ec}
|
||||
.project-team > .chart-col-title {text-align: right}
|
||||
.chart-col-item {height: 30px; padding: 5px 0; position: relative}
|
||||
.chart-col-item {height: 30px; padding: 5px 0}
|
||||
.chart-col-text {width: 50px; position: absolute; top: 5px; line-height: 20px; left: 0}
|
||||
.project-team .chart-col-item {padding-left: 50px; position: relative}
|
||||
.project-team .chart-col-item:before {position: absolute; content: ' '; z-index: 0; left: -100px; top: 14px; right: 0; border-top: 1px dotted #e5e8ec}
|
||||
.project-team .chart-col-item {padding-left: 50px}
|
||||
.project-team .chart-col-item:before {content: ' '; z-index: 0; left: -100px; top: 14px; right: 0; border-top: 1px dotted #e5e8ec}
|
||||
.project-consumed .chart-col-item {padding-right: 50px}
|
||||
.chart-col-item .progress {background: none; border-radius: 0; overflow: visible; margin: 6px 0 0 0; position: relative; z-index: 1}
|
||||
.chart-col-item .progress > .progress-bar {border-radius: 0; position: relative; min-width: 1px}
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
<?php if($longBlock):?>
|
||||
<?php $thClass = common::checkNotCN() ? 'w-85px' : 'c-hours';?>
|
||||
<th class="c-status"><?php echo $lang->statusAB;?></th>
|
||||
<th class='<?php echo $thClass?>'><?php echo $lang->project->totalEstimate;?></th>
|
||||
<th class="c-hours"><?php echo $lang->project->totalConsumed;?></th>
|
||||
<th class="c-hours"><?php echo $lang->project->totalLeft;?></th>
|
||||
<th class='<?php echo $thClass?>'><?php echo $lang->execution->totalEstimate;?></th>
|
||||
<th class="c-hours"><?php echo $lang->execution->totalConsumed;?></th>
|
||||
<th class="c-hours"><?php echo $lang->execution->totalLeft;?></th>
|
||||
<?php endif;?>
|
||||
<th class="c-progress"><?php echo $lang->project->progress;?></th>
|
||||
<th class="c-progress"><?php echo $lang->execution->progress;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<th><?php echo $lang->project->burn;?></th>
|
||||
<th><?php echo $lang->execution->burn;?></th>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -37,23 +37,23 @@
|
||||
<?php foreach($executionStats as $execution):?>
|
||||
<?php
|
||||
$appid = isset($_GET['entry']) ? "class='app-btn text-center' data-id='{$this->get->entry}'" : "class='text-center'";
|
||||
$viewLink = $this->createLink('project', 'task', 'project=' . $execution->id);
|
||||
$viewLink = $this->createLink('execution', 'task', 'executionID=' . $execution->id);
|
||||
?>
|
||||
<tr data-url='<?php echo empty($sso) ? $viewLink : $sso . $sign . 'referer=' . base64_encode($viewLink); ?>' <?php echo $appid?>>
|
||||
<td class='c-name text-left' title='<?php echo $execution->name;?>'><nobr><?php echo html::a($this->createLink('project', 'task', 'project=' . $execution->id), $execution->name, '', "title='$execution->name'");?></nobr></td>
|
||||
<td class='c-name text-left' title='<?php echo $execution->name;?>'><nobr><?php echo html::a($viewLink, $execution->name, '', "title='$execution->name'");?></nobr></td>
|
||||
<td class="c-date"><?php echo $execution->end;?></td>
|
||||
<?php if($longBlock):?>
|
||||
<td class="w-70px">
|
||||
<?php if(isset($execution->delay)):?>
|
||||
<span class="status-project status-delayed" title='<?php echo $lang->project->delayed;?>'><?php echo $lang->project->delayed;?></span>
|
||||
<span class="status-project status-delayed" title='<?php echo $lang->execution->delayed;?>'><?php echo $lang->execution->delayed;?></span>
|
||||
<?php else:?>
|
||||
<?php $statusName = $this->processStatus('project', $execution);?>
|
||||
<span class="status-project status-<?php echo $execution->status?>" title='<?php echo $statusName;?>'><?php echo $statusName;?></span>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalEstimate . ' ' . $lang->project->workHour;?>"><?php echo $execution->hours->totalEstimate . ' ' . $lang->project->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalConsumed . ' ' . $lang->project->workHour;?>"><?php echo $execution->hours->totalConsumed . ' ' . $lang->project->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalLeft . ' ' . $lang->project->workHour;?>"><?php echo $execution->hours->totalLeft . ' ' . $lang->project->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalEstimate . ' ' . $lang->execution->workHour;?>"><?php echo $execution->hours->totalEstimate . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalConsumed . ' ' . $lang->execution->workHour;?>"><?php echo $execution->hours->totalConsumed . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<td class="c-hours" title="<?php echo $execution->hours->totalLeft . ' ' . $lang->execution->workHour;?>"><?php echo $execution->hours->totalLeft . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<?php endif;?>
|
||||
<td class="c-progress">
|
||||
<div class="progress progress-text-left">
|
||||
|
||||
@@ -37,18 +37,18 @@
|
||||
</div>
|
||||
<div class="col-4 tile">
|
||||
<div class="overview-title"><i class="icon icon-clock"></i> <?php echo $lang->block->consumedHours;?></div>
|
||||
<div class="tile-amount" title="<?php echo $totalData[$projectID]->consumed . $lang->project->workHour;?>">
|
||||
<?php echo $totalData[$projectID]->consumed ? html::a($this->createLink('project', 'index', 'locate=no'), $totalData[$projectID]->consumed . $lang->project->workHourUnit) : 0;?>
|
||||
<div class="tile-amount" title="<?php echo $totalData[$projectID]->consumed . $lang->execution->workHour;?>">
|
||||
<?php echo $totalData[$projectID]->consumed ? html::a($this->createLink('project', 'index', 'locate=no'), $totalData[$projectID]->consumed . $lang->execution->workHourUnit) : 0;?>
|
||||
</div>
|
||||
<div class="tile-info">
|
||||
<span class="extra-tips"><?php echo $lang->block->estimatedHours . ' ' . $totalData[$projectID]->estimate . $lang->project->workHour;?></span>
|
||||
<span class="extra-tips"><?php echo $lang->block->estimatedHours . ' ' . $totalData[$projectID]->estimate . $lang->execution->workHour;?></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 tile">
|
||||
<div class="overview-title"><i class="icon icon-cost"></i> <?php echo $lang->block->spent;?></div>
|
||||
<div class="tile-amount">¥0</div>
|
||||
<div class="tile-info">
|
||||
<?php $budget = $totalData[$projectID]->budget != 0 ? zget($lang->program->currencySymbol, $totalData[$projectID]->budgetUnit) . number_format($totalData[$projectID]->budget, 2) : $lang->program->future;?>
|
||||
<?php $budget = $totalData[$projectID]->budget != 0 ? zget($lang->project->currencySymbol, $totalData[$projectID]->budgetUnit) . number_format($totalData[$projectID]->budget, 2) : $lang->program->future;?>
|
||||
<span class="extra-tips"><?php echo $lang->block->budget . ' ' . $budget;?></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="panel-body table-row">
|
||||
<div class="col-4 text-middle text-center">
|
||||
<div class="tile">
|
||||
<div class="tile-title"><?php echo $lang->block->allProject;?></div>
|
||||
<div class="tile-title"><?php echo $lang->block->allExecution;?></div>
|
||||
<?php $projectLink = $this->createLink('project', 'all', 'status=all')?>
|
||||
<div class="tile-amount"><?php echo $summary->total ? html::a($projectLink, $summary->total) : 0;?></div>
|
||||
</div>
|
||||
@@ -30,13 +30,13 @@
|
||||
<span class="bar" style="height: <?php echo $progress->doing * 100;?>%">
|
||||
<span class="value"><?php echo $summary->doing;?></span>
|
||||
</span>
|
||||
<span class="title"><?php echo $lang->block->doingProject;?></span>
|
||||
<span class="title"><?php echo $lang->block->doingExecution;?></span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="bar" style="height: <?php echo $progress->closed * 100;?>%">
|
||||
<span class="value"><?php echo $summary->closed;?></span>
|
||||
</span>
|
||||
<span class="title"><?php echo $lang->block->finishProject;?></span>
|
||||
<span class="title"><?php echo $lang->block->finishExecution;?></span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -44,9 +44,9 @@
|
||||
<tr>
|
||||
<td class='c-id-xs'><?php echo sprintf('%03d', $task->id);?></td>
|
||||
<td class='c-pri <?php if($longBlock) echo "c-pri-long"?>'><span class='label-pri label-pri-<?php echo $task->pri;?>' title='<?php echo zget($lang->task->priList, $task->pri, $task->pri)?>'><?php echo zget($lang->task->priList, $task->pri, $task->pri)?></span></td>
|
||||
<td class='c-name' style='color: <?php echo $task->color?>' title='<?php echo $task->name?>'><?php echo html::a($this->createLink('task', 'view', "taskID=$task->id", '', '', $task->PRJ), $task->name)?></td>
|
||||
<td class='c-name' style='color: <?php echo $task->color?>' title='<?php echo $task->name?>'><?php echo html::a($this->createLink('task', 'view', "taskID=$task->id", '', '', $task->project), $task->name)?></td>
|
||||
<?php if($longBlock):?>
|
||||
<td class='c-estimate text-center' title="<?php echo $task->estimate . ' ' . $lang->project->workHour;?>"><?php echo $task->estimate . ' ' . $lang->project->workHourUnit;?></td>
|
||||
<td class='c-estimate text-center' title="<?php echo $task->estimate . ' ' . $lang->execution->workHour;?>"><?php echo $task->estimate . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<td class='c-deadline'><?php if(substr($task->deadline, 0, 4) > 0) echo $task->deadline;?></td>
|
||||
<?php endif;?>
|
||||
<?php $status = $this->processStatus('task', $task);?>
|
||||
|
||||
+39
-47
@@ -116,11 +116,6 @@ $lang->workingHour = 'Stunde';
|
||||
|
||||
$lang->sprintCommon = $lang->iterationCommon . '/Phase';
|
||||
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->common = 'Execution';
|
||||
$lang->execution->sprint = 'Iteration';
|
||||
$lang->execution->stage = 'Phase';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = 'Status';
|
||||
@@ -162,7 +157,7 @@ $lang->dividerMenu = ',qa,report,admin,';
|
||||
/* Program set menu. */
|
||||
$lang->program = new stdclass();
|
||||
$lang->program->menu = new stdclass();
|
||||
$lang->program->menu->index = 'Home|program|index|';
|
||||
$lang->program->menu->index = 'Dashboard|program|index|';
|
||||
$lang->program->menu->browse = array('link' => 'Program|program|browse|', 'alias' => 'create,edit,group,managepriv,manageview,managemembers');
|
||||
|
||||
$lang->project = new stdclass();
|
||||
@@ -191,10 +186,11 @@ $lang->personnel->menu->whitelist = array('link' => "Whitelist|personnel|whitel
|
||||
/* Scrum menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->home = 'Dashboard|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
@@ -203,7 +199,6 @@ $lang->product->viewMenu->roadmap = 'Roadmap|product|roadmap|productID=%s';
|
||||
$lang->product->viewMenu->project = "Project|product|project|status=all&productID=%s";
|
||||
$lang->product->viewMenu->track = array('link' => "Track|story|track|productID=%s");
|
||||
$lang->product->viewMenu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
$lang->product->viewMenu->dynamic = 'Dynamic|product|dynamic|productID=%s';
|
||||
$lang->product->viewMenu->set = array('link' => 'Setting|product|view|productID=%s', 'subModule' => 'tree,branch', 'alias' => 'edit');
|
||||
|
||||
@@ -252,7 +247,7 @@ $lang->searchObjects['caselib'] = 'Case Library';
|
||||
$lang->searchObjects['testreport'] = 'Test-Bericht';
|
||||
$lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['execution'] = $lang->executionCommon;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchTips = 'ID (strg+g)';
|
||||
|
||||
@@ -332,50 +327,50 @@ $lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
$lang->product->dividerMenu = ',plan,project,dashboard,';
|
||||
$lang->product->dividerMenu = ',requirement,set,';
|
||||
|
||||
$lang->story = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
|
||||
/* Project menu settings. */
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->task = array('link' => 'Aufgabenliste|project|task|projectID=%s', 'subModule' => 'task,grouptask,tree', 'alias' => 'grouptask,importtask,importbug,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => 'Burn|project|burn|projectID=%s');
|
||||
$lang->project->menu->view = array('link' => 'View|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->bug = array('link' => 'Bug|project|bug|projectID=%s');
|
||||
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = array('link' => 'Test Aufgabe|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->project->menu->doc = array('link' => 'Dok|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => 'Team|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->more = array('link' => 'More|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->task = array('link' => 'Aufgabenliste|execution|task|executionID=%s', 'subModule' => 'task,grouptask,tree', 'alias' => 'grouptask,importtask,importbug,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->kanban = array('link' => 'Kanban|execution|kanban|executionID=%s');
|
||||
$lang->execution->menu->burn = array('link' => 'Burn|execution|burn|executionID=%s');
|
||||
$lang->execution->menu->view = array('link' => 'View|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->story = array('link' => 'Story|execution|story|executionID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->execution->menu->bug = array('link' => 'Bug|execution|bug|executionID=%s');
|
||||
$lang->execution->menu->build = array('link' => 'Build|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->menu->testtask = array('link' => 'Test Aufgabe|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->menu->doc = array('link' => 'Dok|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
||||
$lang->execution->menu->product = $lang->productCommon . '|execution|manageproducts|executionID=%s';
|
||||
$lang->execution->menu->team = array('link' => 'Team|execution|team|executionID=%s', 'alias' => 'managemembers');
|
||||
$lang->execution->menu->more = array('link' => 'More|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->project->subMenu = new stdclass();
|
||||
$lang->project->subMenu->view = new stdclass();
|
||||
$lang->project->subMenu->view->groupTask = 'Gruppenansicht|project|grouptask|projectID=%s';
|
||||
$lang->project->subMenu->view->tree = 'Baumansicht|project|tree|projectID=%s';
|
||||
$lang->execution->subMenu = new stdclass();
|
||||
$lang->execution->subMenu->view = new stdclass();
|
||||
$lang->execution->subMenu->view->groupTask = 'Gruppenansicht|execution|grouptask|executionID=%s';
|
||||
$lang->execution->subMenu->view->tree = 'Baumansicht|execution|tree|executionID=%s';
|
||||
|
||||
$lang->project->subMenu->qa = new stdclass();
|
||||
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->subMenu->qa->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->subMenu->qa->testtask = array('link' => 'Test Aufgabe|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->subMenu->qa = new stdclass();
|
||||
$lang->execution->subMenu->qa->bug = 'Bug|execution|bug|executionID=%s';
|
||||
$lang->execution->subMenu->qa->build = array('link' => 'Build|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->subMenu->qa->testtask = array('link' => 'Test Aufgabe|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
|
||||
$lang->project->subMenu->more = new stdclass();
|
||||
$lang->project->subMenu->more->whitelist = array('link' => 'Whitelist|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->project->subMenu->more->action = array('link' => 'Verlauf|project|dynamic|projectID=%s');
|
||||
$lang->project->subMenu->more->view = array('link' => 'Übersicht|project|view|projectID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->subMenu->more = new stdclass();
|
||||
$lang->execution->subMenu->more->whitelist = array('link' => 'Whitelist|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->execution->subMenu->more->action = array('link' => 'Verlauf|execution|dynamic|executionID=%s');
|
||||
$lang->execution->subMenu->more->view = array('link' => 'Übersicht|execution|view|executionID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
|
||||
$lang->project->dividerMenu = ',project,programplan,projectbuild,story,doc,other,';
|
||||
$lang->execution->dividerMenu = ',execution,programplan,executionbuild,story,doc,other,';
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
$lang->task->menu = $lang->execution->menu;
|
||||
$lang->build->menu = $lang->execution->menu;
|
||||
|
||||
/* QA视图菜单设置。*/
|
||||
$lang->qa = new stdclass();
|
||||
@@ -637,7 +632,6 @@ $lang->navGroup->story = 'product';
|
||||
$lang->navGroup->tree = 'product';
|
||||
|
||||
$lang->navGroup->project = 'project';
|
||||
$lang->navGroup->task = 'project';
|
||||
$lang->navGroup->qa = 'project';
|
||||
$lang->navGroup->bug = 'project';
|
||||
$lang->navGroup->doc = 'project';
|
||||
@@ -668,6 +662,9 @@ $lang->navGroup->compile = 'project';
|
||||
$lang->navGroup->report = 'project';
|
||||
$lang->navGroup->measrecord = 'project';
|
||||
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'project';
|
||||
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
@@ -913,8 +910,8 @@ $lang->scrum->subMenu->other->stakeholder = array('link' => 'Stakeholder|stakeho
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|project|view|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|project|manageProducts|project={PROJECT}', 'alias' => 'manageproducts');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->members = array('link' => 'Member|project|manageMembers|project={PROJECT}', 'alias' => 'managemembers');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->whitelist = array('link' => 'White List|project|whitelist|project={PROJECT}', 'subModule' => 'personnel');
|
||||
|
||||
/* Waterfall menu. */
|
||||
@@ -970,11 +967,6 @@ $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|
|
||||
$lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
$lang->noMenuModule[] = 'task';
|
||||
}
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'execution', 'task', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
+39
-47
@@ -116,11 +116,6 @@ $lang->workingHour = 'Hours';
|
||||
|
||||
$lang->sprintCommon = $lang->iterationCommon . '/Phase';
|
||||
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->common = 'Execution';
|
||||
$lang->execution->sprint = 'Iteration';
|
||||
$lang->execution->stage = 'Phase';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = 'Status';
|
||||
@@ -162,7 +157,7 @@ $lang->dividerMenu = ',qa,report,admin,';
|
||||
/* Program set menu. */
|
||||
$lang->program = new stdclass();
|
||||
$lang->program->menu = new stdclass();
|
||||
//$lang->program->menu->index = 'Home|program|index|';
|
||||
//$lang->program->menu->index = 'Dashboard|program|index|';
|
||||
$lang->program->menu->browse = array('link' => 'Program|program|browse|');
|
||||
|
||||
$lang->project = new stdclass();
|
||||
@@ -191,10 +186,11 @@ $lang->personnel->menu->whitelist = array('link' => "Whitelist|personnel|whitel
|
||||
/* Scrum menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->home = 'Dashboard|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
@@ -203,7 +199,6 @@ $lang->product->viewMenu->roadmap = 'Roadmap|product|roadmap|productID=%s';
|
||||
$lang->product->viewMenu->project = "Project|product|project|status=all&productID=%s";
|
||||
$lang->product->viewMenu->track = array('link' => "Track|story|track|productID=%s");
|
||||
$lang->product->viewMenu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
$lang->product->viewMenu->dynamic = 'Dynamic|product|dynamic|productID=%s';
|
||||
$lang->product->viewMenu->set = array('link' => 'Setting|product|view|productID=%s', 'subModule' => 'tree,branch', 'alias' => 'edit');
|
||||
|
||||
@@ -252,7 +247,7 @@ $lang->searchObjects['caselib'] = 'Case Library';
|
||||
$lang->searchObjects['testreport'] = 'Test Report';
|
||||
$lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['execution'] = $lang->executionCommon;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchTips = 'ID (ctrl+g)';
|
||||
|
||||
@@ -332,50 +327,50 @@ $lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
$lang->product->dividerMenu = ',plan,project,dashboard,';
|
||||
$lang->product->dividerMenu = ',requirement,set,';
|
||||
|
||||
$lang->story = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
|
||||
/* Project menu settings. */
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->task = array('link' => 'Task|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => 'Burndown|project|burn|projectID=%s');
|
||||
$lang->project->menu->view = array('link' => 'View|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => 'Story|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->bug = array('link' => 'Bug|project|bug|projectID=%s');
|
||||
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = array('link' => 'Request|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->project->menu->doc = array('link' => 'Doc|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => 'Team|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->more = array('link' => 'More|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->task = array('link' => 'Task|execution|task|executionID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->execution->menu->kanban = array('link' => 'Kanban|execution|kanban|executionID=%s');
|
||||
$lang->execution->menu->burn = array('link' => 'Burndown|execution|burn|executionID=%s');
|
||||
$lang->execution->menu->view = array('link' => 'View|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->story = array('link' => 'Story|execution|story|executionID=%s', 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->execution->menu->bug = array('link' => 'Bug|execution|bug|executionID=%s');
|
||||
$lang->execution->menu->build = array('link' => 'Build|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->menu->testtask = array('link' => 'Request|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->menu->doc = array('link' => 'Doc|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
||||
$lang->execution->menu->product = $lang->productCommon . '|execution|manageproducts|executionID=%s';
|
||||
$lang->execution->menu->team = array('link' => 'Team|execution|team|executionID=%s', 'alias' => 'managemembers');
|
||||
$lang->execution->menu->more = array('link' => 'More|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->project->subMenu = new stdclass();
|
||||
$lang->project->subMenu->view = new stdclass();
|
||||
$lang->project->subMenu->view->groupTask = 'Group View|project|grouptask|projectID=%s';
|
||||
$lang->project->subMenu->view->tree = 'Tree View|project|tree|projectID=%s';
|
||||
$lang->execution->subMenu = new stdclass();
|
||||
$lang->execution->subMenu->view = new stdclass();
|
||||
$lang->execution->subMenu->view->groupTask = 'Group View|execution|grouptask|executionID=%s';
|
||||
$lang->execution->subMenu->view->tree = 'Tree View|execution|tree|executionID=%s';
|
||||
|
||||
$lang->project->subMenu->qa = new stdclass();
|
||||
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->subMenu->qa->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->subMenu->qa->testtask = array('link' => 'Request|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->subMenu->qa = new stdclass();
|
||||
$lang->execution->subMenu->qa->bug = 'Bug|execution|bug|executionID=%s';
|
||||
$lang->execution->subMenu->qa->build = array('link' => 'Build|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->subMenu->qa->testtask = array('link' => 'Request|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
|
||||
$lang->project->subMenu->more = new stdclass();
|
||||
$lang->project->subMenu->more->whitelist = array('link' => 'Whitelist|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->project->subMenu->more->action = array('link' => 'Dynamics|project|dynamic|projectID=%s');
|
||||
$lang->project->subMenu->more->view = array('link' => 'Overview|project|view|projectID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->subMenu->more = new stdclass();
|
||||
$lang->execution->subMenu->more->whitelist = array('link' => 'Whitelist|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->execution->subMenu->more->action = array('link' => 'Dynamics|execution|dynamic|executionID=%s');
|
||||
$lang->execution->subMenu->more->view = array('link' => 'Overview|execution|view|executionID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
|
||||
$lang->project->dividerMenu = ',project,programplan,projectbuild,story,doc,other,';
|
||||
$lang->execution->dividerMenu = ',execution,programplan,executionbuild,story,doc,other,';
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
$lang->task->menu = $lang->execution->menu;
|
||||
$lang->build->menu = $lang->execution->menu;
|
||||
|
||||
/* QA menu settings. */
|
||||
$lang->qa = new stdclass();
|
||||
@@ -636,7 +631,6 @@ $lang->navGroup->story = 'product';
|
||||
$lang->navGroup->tree = 'product';
|
||||
|
||||
$lang->navGroup->project = 'project';
|
||||
$lang->navGroup->task = 'project';
|
||||
$lang->navGroup->qa = 'project';
|
||||
$lang->navGroup->bug = 'project';
|
||||
$lang->navGroup->doc = 'project';
|
||||
@@ -667,6 +661,9 @@ $lang->navGroup->compile = 'project';
|
||||
$lang->navGroup->report = 'project';
|
||||
$lang->navGroup->measrecord = 'project';
|
||||
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'project';
|
||||
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
@@ -912,8 +909,8 @@ $lang->scrum->subMenu->other->stakeholder = array('link' => '干系人|stakehold
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|project|view|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|project|manageProducts|project={PROJECT}', 'alias' => 'manageproducts');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->members = array('link' => 'Member|project|manageMembers|project={PROJECT}', 'alias' => 'managemembers');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->whitelist = array('link' => 'White List|project|whitelist|project={PROJECT}', 'subModule' => 'personnel');
|
||||
|
||||
/* Waterfall menu. */
|
||||
@@ -969,11 +966,6 @@ $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|
|
||||
$lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
$lang->noMenuModule[] = 'task';
|
||||
}
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'execution', 'task', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
+39
-47
@@ -116,11 +116,6 @@ $lang->workingHour = 'Heures';
|
||||
|
||||
$lang->sprintCommon = $lang->iterationCommon . '/Phase';
|
||||
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->common = 'Execution';
|
||||
$lang->execution->sprint = 'Iteration';
|
||||
$lang->execution->stage = 'Phase';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = 'Statut';
|
||||
@@ -162,7 +157,7 @@ $lang->dividerMenu = ',qa,report,admin,';
|
||||
/* Program set menu. */
|
||||
$lang->program = new stdclass();
|
||||
$lang->program->menu = new stdclass();
|
||||
$lang->program->menu->index = 'Home|program|index|';
|
||||
$lang->program->menu->index = 'Dashboard|program|index|';
|
||||
$lang->program->menu->browse = array('link' => 'Program|program|browse|', 'alias' => 'create,edit,group,managepriv,manageview,managemembers');
|
||||
|
||||
$lang->project = new stdclass();
|
||||
@@ -191,10 +186,11 @@ $lang->personnel->menu->whitelist = array('link' => "Whitelist|personnel|whitel
|
||||
/* Scrum menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->home = 'Dashboard|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
@@ -203,7 +199,6 @@ $lang->product->viewMenu->roadmap = 'Roadmap|product|roadmap|productID=%s';
|
||||
$lang->product->viewMenu->project = "Project|product|project|status=all&productID=%s";
|
||||
$lang->product->viewMenu->track = array('link' => "Track|story|track|productID=%s");
|
||||
$lang->product->viewMenu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
$lang->product->viewMenu->dynamic = 'Dynamic|product|dynamic|productID=%s';
|
||||
$lang->product->viewMenu->set = array('link' => 'Setting|product|view|productID=%s', 'subModule' => 'tree,branch', 'alias' => 'edit');
|
||||
|
||||
@@ -252,7 +247,7 @@ $lang->searchObjects['caselib'] = 'Case Library';
|
||||
$lang->searchObjects['testreport'] = 'CR de Test';
|
||||
$lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['execution'] = $lang->executionCommon;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchTips = 'ID (ctrl+g)';
|
||||
|
||||
@@ -332,50 +327,50 @@ $lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
$lang->product->dividerMenu = ',plan,project,dashboard,';
|
||||
$lang->product->dividerMenu = ',requirement,set,';
|
||||
|
||||
$lang->story = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
|
||||
/* Project menu settings. */
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->task = array('link' => 'Tâche|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => 'Atterrissage|project|burn|projectID=%s');
|
||||
$lang->project->menu->view = array('link' => 'View|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => "Story|project|story|projectID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->bug = array('link' => 'Bug|project|bug|projectID=%s');
|
||||
$lang->project->menu->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = array('link' => 'Recette|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->project->menu->doc = array('link' => 'Doc|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => 'Equipe|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->more = array('link' => 'More|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->task = array('link' => 'Tâche|execution|task|executionID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->execution->menu->kanban = array('link' => 'Kanban|execution|kanban|executionID=%s');
|
||||
$lang->execution->menu->burn = array('link' => 'Atterrissage|execution|burn|executionID=%s');
|
||||
$lang->execution->menu->view = array('link' => 'View|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->story = array('link' => "Story|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->execution->menu->bug = array('link' => 'Bug|execution|bug|executionID=%s');
|
||||
$lang->execution->menu->build = array('link' => 'Build|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->menu->testtask = array('link' => 'Recette|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->menu->doc = array('link' => 'Doc|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
||||
$lang->execution->menu->product = $lang->productCommon . '|execution|manageproducts|executionID=%s';
|
||||
$lang->execution->menu->team = array('link' => 'Equipe|execution|team|executionID=%s', 'alias' => 'managemembers');
|
||||
$lang->execution->menu->more = array('link' => 'More|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->project->subMenu = new stdclass();
|
||||
$lang->project->subMenu->view = new stdclass();
|
||||
$lang->project->subMenu->view->groupTask = 'Vision Groupée|project|grouptask|projectID=%s';
|
||||
$lang->project->subMenu->view->tree = 'Arborescence|project|tree|projectID=%s';
|
||||
$lang->execution->subMenu = new stdclass();
|
||||
$lang->execution->subMenu->view = new stdclass();
|
||||
$lang->execution->subMenu->view->groupTask = 'Vision Groupée|execution|grouptask|executionID=%s';
|
||||
$lang->execution->subMenu->view->tree = 'Arborescence|execution|tree|executionID=%s';
|
||||
|
||||
$lang->project->subMenu->qa = new stdclass();
|
||||
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->subMenu->qa->build = array('link' => 'Build|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->subMenu->qa->testtask = array('link' => 'Recette|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->subMenu->qa = new stdclass();
|
||||
$lang->execution->subMenu->qa->bug = 'Bug|execution|bug|executionID=%s';
|
||||
$lang->execution->subMenu->qa->build = array('link' => 'Build|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->subMenu->qa->testtask = array('link' => 'Recette|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
|
||||
$lang->project->subMenu->more = new stdclass();
|
||||
$lang->project->subMenu->more->whitelist = array('link' => 'Whitelist|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->project->subMenu->more->action = array('link' => 'Historique|project|dynamic|projectID=%s');
|
||||
$lang->project->subMenu->more->view = array('link' => "Vue d'ensemble|project|view|projectID=%s", 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->subMenu->more = new stdclass();
|
||||
$lang->execution->subMenu->more->whitelist = array('link' => 'Whitelist|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->execution->subMenu->more->action = array('link' => 'Historique|execution|dynamic|executionID=%s');
|
||||
$lang->execution->subMenu->more->view = array('link' => "Vue d'ensemble|execution|view|executionID=%s", 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
|
||||
$lang->project->dividerMenu = ',project,programplan,projectbuild,story,doc,other,';
|
||||
$lang->execution->dividerMenu = ',execution,programplan,executionbuild,story,doc,other,';
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
$lang->task->menu = $lang->execution->menu;
|
||||
$lang->build->menu = $lang->execution->menu;
|
||||
|
||||
/* QA menu settings. */
|
||||
$lang->qa = new stdclass();
|
||||
@@ -636,7 +631,6 @@ $lang->navGroup->story = 'product';
|
||||
$lang->navGroup->tree = 'product';
|
||||
|
||||
$lang->navGroup->project = 'project';
|
||||
$lang->navGroup->task = 'project';
|
||||
$lang->navGroup->qa = 'project';
|
||||
$lang->navGroup->bug = 'project';
|
||||
$lang->navGroup->doc = 'project';
|
||||
@@ -667,6 +661,9 @@ $lang->navGroup->compile = 'project';
|
||||
$lang->navGroup->report = 'project';
|
||||
$lang->navGroup->measrecord = 'project';
|
||||
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
@@ -912,8 +909,8 @@ $lang->scrum->subMenu->other->stakeholder = array('link' => 'Stakeholder|stakeho
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|project|view|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|project|manageProducts|project={PROJECT}', 'alias' => 'manageproducts');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->members = array('link' => 'Member|project|manageMembers|project={PROJECT}', 'alias' => 'managemembers');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->whitelist = array('link' => 'White List|project|whitelist|project={PROJECT}', 'subModule' => 'personnel');
|
||||
|
||||
/* Waterfall menu. */
|
||||
@@ -969,11 +966,6 @@ $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|
|
||||
$lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
$lang->noMenuModule[] = 'task';
|
||||
}
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'execution', 'task', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
@@ -60,19 +60,19 @@ $lang->my->menuOrder[55] = 'contacts';
|
||||
$lang->todo->menuOrder = $lang->my->menuOrder;
|
||||
|
||||
/* product menu order. */
|
||||
$lang->product->menuOrder[5] = 'requirement';
|
||||
$lang->product->menuOrder[5] = 'dashboard';
|
||||
$lang->product->menuOrder[10] = 'story';
|
||||
$lang->product->menuOrder[15] = 'plan';
|
||||
$lang->product->menuOrder[30] = 'project';
|
||||
$lang->product->menuOrder[20] = 'release';
|
||||
$lang->product->menuOrder[25] = 'roadmap';
|
||||
$lang->product->menuOrder[30] = 'project';
|
||||
$lang->product->menuOrder[30] = 'requirement';
|
||||
$lang->product->menuOrder[35] = 'track';
|
||||
$lang->product->menuOrder[40] = 'doc';
|
||||
$lang->product->menuOrder[45] = 'dashboard';
|
||||
$lang->product->menuOrder[50] = 'dynamic';
|
||||
$lang->product->menuOrder[55] = 'setting';
|
||||
$lang->product->menuOrder[60] = 'create';
|
||||
$lang->product->menuOrder[65] = 'all';
|
||||
$lang->product->menuOrder[45] = 'dynamic';
|
||||
$lang->product->menuOrder[50] = 'setting';
|
||||
$lang->product->menuOrder[55] = 'create';
|
||||
$lang->product->menuOrder[60] = 'all';
|
||||
|
||||
$lang->story->menuOrder = $lang->product->menuOrder;
|
||||
$lang->productplan->menuOrder = $lang->product->menuOrder;
|
||||
@@ -80,20 +80,21 @@ $lang->release->menuOrder = $lang->product->menuOrder;
|
||||
$lang->branch->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* project menu order. */
|
||||
$lang->project->menuOrder[5] = 'task';
|
||||
$lang->project->menuOrder[10] = 'kanban';
|
||||
$lang->project->menuOrder[15] = 'burn';
|
||||
$lang->project->menuOrder[20] = 'view';
|
||||
$lang->project->menuOrder[25] = 'story';
|
||||
$lang->project->menuOrder[30] = 'bug';
|
||||
$lang->project->menuOrder[35] = 'build';
|
||||
$lang->project->menuOrder[40] = 'testtask';
|
||||
$lang->project->menuOrder[45] = 'doc';
|
||||
$lang->project->menuOrder[50] = 'product';
|
||||
$lang->project->menuOrder[55] = 'team';
|
||||
$lang->project->menuOrder[60] = 'more';
|
||||
$lang->task->menuOrder = $lang->project->menuOrder;
|
||||
$lang->build->menuOrder = $lang->project->menuOrder;
|
||||
$lang->execution->menuOrder[5] = 'task';
|
||||
$lang->execution->menuOrder[10] = 'kanban';
|
||||
$lang->execution->menuOrder[15] = 'burn';
|
||||
$lang->execution->menuOrder[20] = 'view';
|
||||
$lang->execution->menuOrder[25] = 'story';
|
||||
$lang->execution->menuOrder[30] = 'bug';
|
||||
$lang->execution->menuOrder[35] = 'build';
|
||||
$lang->execution->menuOrder[40] = 'testtask';
|
||||
$lang->execution->menuOrder[45] = 'doc';
|
||||
$lang->execution->menuOrder[50] = 'product';
|
||||
$lang->execution->menuOrder[55] = 'team';
|
||||
$lang->execution->menuOrder[60] = 'more';
|
||||
|
||||
$lang->task->menuOrder = $lang->execution->menuOrder;
|
||||
$lang->build->menuOrder = $lang->execution->menuOrder;
|
||||
|
||||
/* qa menu order. */
|
||||
$lang->qa->menuOrder[5] = 'product';
|
||||
|
||||
+39
-47
@@ -116,11 +116,6 @@ $lang->workingHour = 'giờ';
|
||||
|
||||
$lang->sprintCommon = $lang->iterationCommon . '/Phase';
|
||||
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->common = 'Execution';
|
||||
$lang->execution->sprint = 'Iteration';
|
||||
$lang->execution->stage = 'Phase';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = 'Tình trạng';
|
||||
@@ -162,7 +157,7 @@ $lang->dividerMenu = ',qa,report,admin,';
|
||||
/* Program set menu. */
|
||||
$lang->program = new stdclass();
|
||||
$lang->program->menu = new stdclass();
|
||||
$lang->program->menu->index = 'Home|program|index|';
|
||||
$lang->program->menu->index = 'Dashboard|program|index|';
|
||||
$lang->program->menu->browse = array('link' => 'Program|program|browse|', 'alias' => 'create,edit,group,managepriv,manageview,managemembers');
|
||||
|
||||
$lang->project = new stdclass();
|
||||
@@ -191,10 +186,11 @@ $lang->personnel->menu->whitelist = array('link' => "Whitelist|personnel|whitel
|
||||
/* Scrum menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->home = 'Home|product|index|';
|
||||
$lang->product->menu->home = 'Dashboard|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "Plan|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
@@ -203,7 +199,6 @@ $lang->product->viewMenu->roadmap = 'Roadmap|product|roadmap|productID=%s';
|
||||
$lang->product->viewMenu->project = "Project|product|project|status=all&productID=%s";
|
||||
$lang->product->viewMenu->track = array('link' => "Track|story|track|productID=%s");
|
||||
$lang->product->viewMenu->doc = array('link' => 'Doc|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->viewMenu->dashboard = array('link' => 'Dashboard|product|dashboard|productID=%s');
|
||||
$lang->product->viewMenu->dynamic = 'Dynamic|product|dynamic|productID=%s';
|
||||
$lang->product->viewMenu->set = array('link' => 'Setting|product|view|productID=%s', 'subModule' => 'tree,branch', 'alias' => 'edit');
|
||||
|
||||
@@ -252,7 +247,7 @@ $lang->searchObjects['caselib'] = 'Thư viện tình huống';
|
||||
$lang->searchObjects['testreport'] = 'Test báo cáo';
|
||||
$lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['execution'] = $lang->executionCommon;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchTips = 'ID (ctrl+g)';
|
||||
|
||||
@@ -332,50 +327,50 @@ $lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
$lang->product->dividerMenu = ',plan,project,dashboard,';
|
||||
$lang->product->dividerMenu = ',requirement,set,';
|
||||
|
||||
$lang->story = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
|
||||
/* Project menu settings. */
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->task = array('link' => 'Nhiệm vụ|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->project->menu->kanban = array('link' => 'Kanban|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => 'Burndown|project|burn|projectID=%s');
|
||||
$lang->project->menu->view = array('link' => 'View|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => "Câu chuyện|project|story|projectID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->bug = array('link' => 'Bug|project|bug|projectID=%s');
|
||||
$lang->project->menu->build = array('link' => 'Bản dựng|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = array('link' => 'Yêu cầu|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->project->menu->doc = array('link' => 'Tài liệu|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => 'Đội nhóm|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->more = array('link' => 'More|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->task = array('link' => 'Nhiệm vụ|execution|task|executionID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->execution->menu->kanban = array('link' => 'Kanban|execution|kanban|executionID=%s');
|
||||
$lang->execution->menu->burn = array('link' => 'Burndown|execution|burn|executionID=%s');
|
||||
$lang->execution->menu->view = array('link' => 'View|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->story = array('link' => "Câu chuyện|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->execution->menu->bug = array('link' => 'Bug|execution|bug|executionID=%s');
|
||||
$lang->execution->menu->build = array('link' => 'Bản dựng|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->menu->testtask = array('link' => 'Yêu cầu|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->menu->doc = array('link' => 'Tài liệu|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
||||
$lang->execution->menu->product = $lang->productCommon . '|execution|manageproducts|executionID=%s';
|
||||
$lang->execution->menu->team = array('link' => 'Đội nhóm|execution|team|executionID=%s', 'alias' => 'managemembers');
|
||||
$lang->execution->menu->more = array('link' => 'More|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->project->subMenu = new stdclass();
|
||||
$lang->project->subMenu->view = new stdclass();
|
||||
$lang->project->subMenu->view->groupTask = 'Xem theo nhóm|project|grouptask|projectID=%s';
|
||||
$lang->project->subMenu->view->tree = 'Xem theo cây|project|tree|projectID=%s';
|
||||
$lang->execution->subMenu = new stdclass();
|
||||
$lang->execution->subMenu->view = new stdclass();
|
||||
$lang->execution->subMenu->view->groupTask = 'Xem theo nhóm|execution|grouptask|executionID=%s';
|
||||
$lang->execution->subMenu->view->tree = 'Xem theo cây|execution|tree|executionID=%s';
|
||||
|
||||
$lang->project->subMenu->qa = new stdclass();
|
||||
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->subMenu->qa->build = array('link' => 'Bản dựng|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->subMenu->qa->testtask = array('link' => 'Yêu cầu|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->subMenu->qa = new stdclass();
|
||||
$lang->execution->subMenu->qa->bug = 'Bug|execution|bug|executionID=%s';
|
||||
$lang->execution->subMenu->qa->build = array('link' => 'Bản dựng|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->subMenu->qa->testtask = array('link' => 'Yêu cầu|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
|
||||
$lang->project->subMenu->more = new stdclass();
|
||||
$lang->project->subMenu->more->whitelist = array('link' => 'Whitelist|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->project->subMenu->more->action = array('link' => 'Lịch sử|project|dynamic|projectID=%s');
|
||||
$lang->project->subMenu->more->view = array('link' => 'Tổng quan|project|view|projectID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->subMenu->more = new stdclass();
|
||||
$lang->execution->subMenu->more->whitelist = array('link' => 'Whitelist|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->execution->subMenu->more->action = array('link' => 'Lịch sử|execution|dynamic|executionID=%s');
|
||||
$lang->execution->subMenu->more->view = array('link' => 'Tổng quan|execution|view|executionID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
|
||||
$lang->project->dividerMenu = ',project,programplan,projectbuild,story,doc,other,';
|
||||
$lang->execution->dividerMenu = ',execution,programplan,executionbuild,story,doc,other,';
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
$lang->task->menu = $lang->execution->menu;
|
||||
$lang->build->menu = $lang->execution->menu;
|
||||
|
||||
/* QA menu settings. */
|
||||
$lang->qa = new stdclass();
|
||||
@@ -636,7 +631,6 @@ $lang->navGroup->story = 'product';
|
||||
$lang->navGroup->tree = 'product';
|
||||
|
||||
$lang->navGroup->project = 'project';
|
||||
$lang->navGroup->task = 'project';
|
||||
$lang->navGroup->qa = 'project';
|
||||
$lang->navGroup->bug = 'project';
|
||||
$lang->navGroup->doc = 'project';
|
||||
@@ -667,6 +661,9 @@ $lang->navGroup->compile = 'project';
|
||||
$lang->navGroup->report = 'project';
|
||||
$lang->navGroup->measrecord = 'project';
|
||||
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
@@ -912,8 +909,8 @@ $lang->scrum->subMenu->other->stakeholder = array('link' => 'Stakeholder|stakeho
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|project|view|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|project|manageProducts|project={PROJECT}', 'alias' => 'manageproducts');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->members = array('link' => 'Member|project|manageMembers|project={PROJECT}', 'alias' => 'managemembers');
|
||||
$lang->scrum->setMenu->group = array('link' => 'Priv Group|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->whitelist = array('link' => 'White List|project|whitelist|project={PROJECT}', 'subModule' => 'personnel');
|
||||
|
||||
/* Waterfall menu. */
|
||||
@@ -969,11 +966,6 @@ $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|
|
||||
$lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
$lang->noMenuModule[] = 'task';
|
||||
}
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'execution', 'task', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
@@ -116,11 +116,6 @@ $lang->workingHour = '工时';
|
||||
|
||||
$lang->sprintCommon = $lang->iterationCommon . '/阶段';
|
||||
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->common = '执行';
|
||||
$lang->execution->sprint = '迭代';
|
||||
$lang->execution->stage = '阶段';
|
||||
|
||||
$lang->idAB = 'ID';
|
||||
$lang->priAB = 'P';
|
||||
$lang->statusAB = '状态';
|
||||
@@ -162,7 +157,7 @@ $lang->dividerMenu = ',qa,report,admin,';
|
||||
/* Program set menu. */
|
||||
$lang->program = new stdclass();
|
||||
$lang->program->menu = new stdclass();
|
||||
//$lang->program->menu->index = '主页|program|index|';
|
||||
//$lang->program->menu->index = '仪表盘|program|index|';
|
||||
$lang->program->menu->browse = array('link' => '项目集|program|browse|');
|
||||
|
||||
$lang->project = new stdclass();
|
||||
@@ -191,10 +186,11 @@ $lang->personnel->menu->whitelist = array('link' => "白名单|personnel|whitel
|
||||
/* Scrum menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->home = '主页|product|index|';
|
||||
$lang->product->menu->home = '仪表盘|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit,manageline');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->dashboard = array('link' => '仪表盘|product|dashboard|productID=%s');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "计划|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
@@ -203,7 +199,6 @@ $lang->product->viewMenu->roadmap = '路线图|product|roadmap|productID=%s'
|
||||
$lang->product->viewMenu->project = "项目|product|project|status=all&productID=%s";
|
||||
$lang->product->viewMenu->track = array('link' => "矩阵|story|track|productID=%s");
|
||||
$lang->product->viewMenu->doc = array('link' => '文档|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->viewMenu->dashboard = array('link' => '仪表盘|product|dashboard|productID=%s');
|
||||
$lang->product->viewMenu->dynamic = '动态|product|dynamic|productID=%s';
|
||||
$lang->product->viewMenu->set = array('link' => '设置|product|view|productID=%s', 'subModule' => 'tree,branch', 'alias' => 'edit');
|
||||
|
||||
@@ -252,7 +247,7 @@ $lang->searchObjects['caselib'] = '用例库';
|
||||
$lang->searchObjects['testreport'] = '测试报告';
|
||||
$lang->searchObjects['program'] = '项目集';
|
||||
$lang->searchObjects['project'] = '项目';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['execution'] = $lang->executionCommon;
|
||||
$lang->searchObjects['user'] = '用户';
|
||||
$lang->searchTips = '编号(ctrl+g)';
|
||||
|
||||
@@ -332,50 +327,50 @@ $lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
$lang->product->dividerMenu = ',plan,project,dashboard,';
|
||||
$lang->product->dividerMenu = ',requirement,set,';
|
||||
|
||||
$lang->story = new stdclass();
|
||||
|
||||
$lang->story->menu = $lang->product->menu;
|
||||
|
||||
/* 项目视图菜单设置。*/
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->menu = new stdclass();
|
||||
|
||||
$lang->project->menu->task = array('link' => '任务|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->project->menu->kanban = array('link' => '看板|project|kanban|projectID=%s');
|
||||
$lang->project->menu->burn = array('link' => '燃尽图|project|burn|projectID=%s');
|
||||
$lang->project->menu->view = array('link' => '视图|project|grouptask|projectID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->project->menu->story = array('link' => "{$lang->SRCommon}|project|story|projectID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->project->menu->bug = array('link' => 'Bug|project|bug|projectID=%s');
|
||||
$lang->project->menu->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->menu->testtask = array('link' => '测试单|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->project->menu->doc = array('link' => '文档|doc|objectLibs|type=project&objectID=%s&from=project', 'subModule' => 'doc');
|
||||
$lang->project->menu->product = $lang->productCommon . '|project|manageproducts|projectID=%s';
|
||||
$lang->project->menu->team = array('link' => '团队|project|team|projectID=%s', 'alias' => 'managemembers');
|
||||
$lang->project->menu->more = array('link' => '更多|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->task = array('link' => '任务|execution|task|executionID=%s', 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->execution->menu->kanban = array('link' => '看板|execution|kanban|executionID=%s');
|
||||
$lang->execution->menu->burn = array('link' => '燃尽图|execution|burn|executionID=%s');
|
||||
$lang->execution->menu->view = array('link' => '视图|execution|grouptask|executionID=%s', 'alias' => 'grouptask,tree', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->story = array('link' => "{$lang->SRCommon}|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'linkstory,storykanban');
|
||||
$lang->execution->menu->bug = array('link' => 'Bug|execution|bug|executionID=%s');
|
||||
$lang->execution->menu->build = array('link' => '版本|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->menu->testtask = array('link' => '测试单|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->menu->doc = array('link' => '文档|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
|
||||
$lang->execution->menu->product = $lang->productCommon . '|execution|manageproducts|executionID=%s';
|
||||
$lang->execution->menu->team = array('link' => '团队|execution|team|executionID=%s', 'alias' => 'managemembers');
|
||||
$lang->execution->menu->more = array('link' => '更多|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->project->subMenu = new stdclass();
|
||||
$lang->project->subMenu->view = new stdclass();
|
||||
$lang->project->subMenu->view->groupTask = '分组视图|project|grouptask|projectID=%s';
|
||||
$lang->project->subMenu->view->tree = '树状图|project|tree|projectID=%s';
|
||||
$lang->execution->subMenu = new stdclass();
|
||||
$lang->execution->subMenu->view = new stdclass();
|
||||
$lang->execution->subMenu->view->groupTask = '分组视图|execution|grouptask|executionID=%s';
|
||||
$lang->execution->subMenu->view->tree = '树状图|execution|tree|executionID=%s';
|
||||
|
||||
$lang->project->subMenu->qa = new stdclass();
|
||||
$lang->project->subMenu->qa->bug = 'Bug|project|bug|projectID=%s';
|
||||
$lang->project->subMenu->qa->build = array('link' => '版本|project|build|projectID=%s', 'subModule' => 'build');
|
||||
$lang->project->subMenu->qa->testtask = array('link' => '测试单|project|testtask|projectID=%s', 'subModule' => 'testreport,testtask');
|
||||
$lang->execution->subMenu->qa = new stdclass();
|
||||
$lang->execution->subMenu->qa->bug = 'Bug|execution|bug|executionID=%s';
|
||||
$lang->execution->subMenu->qa->build = array('link' => '版本|execution|build|executionID=%s', 'subModule' => 'build');
|
||||
$lang->execution->subMenu->qa->testtask = array('link' => '测试单|execution|testtask|executionID=%s', 'subModule' => 'testreport,testtask');
|
||||
|
||||
$lang->project->subMenu->more = new stdclass();
|
||||
$lang->project->subMenu->more->whitelist = array('link' => '白名单|project|whitelist|projectID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->project->subMenu->more->action = array('link' => '动态|project|dynamic|projectID=%s');
|
||||
$lang->project->subMenu->more->view = array('link' => '概况|project|view|projectID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->subMenu->more = new stdclass();
|
||||
$lang->execution->subMenu->more->whitelist = array('link' => '白名单|execution|whitelist|executionID=%s', 'subModule' => 'personnel', 'alias' => 'addwhitelist');
|
||||
$lang->execution->subMenu->more->action = array('link' => '动态|execution|dynamic|executionID=%s');
|
||||
$lang->execution->subMenu->more->view = array('link' => '概况|execution|view|executionID=%s', 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
|
||||
$lang->project->dividerMenu = ',project,programplan,projectbuild,story,doc,other,';
|
||||
$lang->execution->dividerMenu = ',execution,programplan,executionbuild,story,doc,other,';
|
||||
|
||||
$lang->task = new stdclass();
|
||||
$lang->build = new stdclass();
|
||||
$lang->task->menu = $lang->project->menu;
|
||||
$lang->build->menu = $lang->project->menu;
|
||||
$lang->task->menu = $lang->execution->menu;
|
||||
$lang->build->menu = $lang->execution->menu;
|
||||
|
||||
/* QA视图菜单设置。*/
|
||||
$lang->qa = new stdclass();
|
||||
@@ -636,7 +631,6 @@ $lang->navGroup->story = 'product';
|
||||
$lang->navGroup->tree = 'product';
|
||||
|
||||
$lang->navGroup->project = 'project';
|
||||
$lang->navGroup->task = 'project';
|
||||
$lang->navGroup->qa = 'project';
|
||||
$lang->navGroup->bug = 'project';
|
||||
$lang->navGroup->doc = 'project';
|
||||
@@ -667,6 +661,9 @@ $lang->navGroup->compile = 'project';
|
||||
$lang->navGroup->report = 'project';
|
||||
$lang->navGroup->measrecord = 'project';
|
||||
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
|
||||
$lang->navGroup->sqlbuilder = 'system';
|
||||
$lang->navGroup->auditcl = 'system';
|
||||
$lang->navGroup->cmcl = 'system';
|
||||
@@ -912,8 +909,8 @@ $lang->scrum->subMenu->other->stakeholder = array('link' => '干系人|stakehold
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => '概况|project|view|project={PROJECT}', 'alias' => 'edit');
|
||||
$lang->scrum->setMenu->products = array('link' => '产品|project|manageProducts|project={PROJECT}', 'alias' => 'manageproducts');
|
||||
$lang->scrum->setMenu->group = array('link' => '权限|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->members = array('link' => '团队|project|manageMembers|project={PROJECT}', 'alias' => 'managemembers');
|
||||
$lang->scrum->setMenu->group = array('link' => '权限|project|group|project={PROJECT}', 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->setMenu->whitelist = array('link' => '白名单|project|whitelist|project={PROJECT}', 'subModule' => 'personnel');
|
||||
|
||||
/* Waterfall menu. */
|
||||
@@ -969,11 +966,6 @@ $lang->stakeholder->menu->list = array('link' => '干系人列表|stakeholder|b
|
||||
$lang->stakeholder->menu->issue = array('link' => '问题管理|stakeholder|issue|');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
$lang->noMenuModule[] = 'task';
|
||||
}
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'execution', 'task', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
@@ -117,7 +117,7 @@ $lang->workingHour = '工時';
|
||||
$lang->sprintCommon = $lang->iterationCommon . '/階段';
|
||||
|
||||
$lang->execution = new stdclass();
|
||||
$lang->execution->common = '執行';
|
||||
$lang->executionCommon = '執行';
|
||||
$lang->execution->sprint = '迭代';
|
||||
$lang->execution->stage = '階段';
|
||||
|
||||
@@ -162,7 +162,7 @@ $lang->dividerMenu = ',qa,report,admin,';
|
||||
/* Program set menu. */
|
||||
$lang->program = new stdclass();
|
||||
$lang->program->menu = new stdclass();
|
||||
//$lang->program->menu->index = '主頁|program|index|';
|
||||
//$lang->program->menu->index = '儀錶盤|program|index|';
|
||||
$lang->program->menu->browse = array('link' => '項目集|program|browse|');
|
||||
|
||||
$lang->project = new stdclass();
|
||||
@@ -191,10 +191,11 @@ $lang->personnel->menu->putinto = array('link' => "投入人員|personnel|put
|
||||
/* Scrum menu. */
|
||||
$lang->product = new stdclass();
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->home = '主頁|product|index|';
|
||||
$lang->product->menu->home = '儀錶盤|product|index|';
|
||||
$lang->product->menu->list = array('link' => $lang->productCommon . '|product|all|', 'alias' => 'create,batchedit,manageline');
|
||||
|
||||
$lang->product->viewMenu = new stdclass();
|
||||
$lang->product->viewMenu->dashboard = array('link' => '儀表盤|product|dashboard|productID=%s');
|
||||
if($config->URAndSR) $lang->product->viewMenu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->viewMenu->plan = array('link' => "計劃|productplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
@@ -203,7 +204,6 @@ $lang->product->viewMenu->roadmap = '路線圖|product|roadmap|productID=%s'
|
||||
$lang->product->viewMenu->project = "項目|product|project|status=all&productID=%s";
|
||||
$lang->product->viewMenu->track = array('link' => "矩陣|story|track|productID=%s");
|
||||
$lang->product->viewMenu->doc = array('link' => '文檔|doc|objectLibs|type=product&objectID=%s&from=product', 'subModule' => 'doc');
|
||||
$lang->product->viewMenu->dashboard = array('link' => '儀表盤|product|dashboard|productID=%s');
|
||||
$lang->product->viewMenu->dynamic = '動態|product|dynamic|productID=%s';
|
||||
$lang->product->viewMenu->set = array('link' => '設置|product|view|productID=%s', 'subModule' => 'tree,branch', 'alias' => 'edit');
|
||||
|
||||
@@ -252,7 +252,7 @@ $lang->searchObjects['caselib'] = '用例庫';
|
||||
$lang->searchObjects['testreport'] = '測試報告';
|
||||
$lang->searchObjects['program'] = '項目集';
|
||||
$lang->searchObjects['project'] = '項目';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['execution'] = $lang->executionCommon;
|
||||
$lang->searchObjects['user'] = '用戶';
|
||||
$lang->searchTips = '編號(ctrl+g)';
|
||||
|
||||
@@ -332,7 +332,7 @@ $lang->my->dividerMenu = ',myProject,team,';
|
||||
$lang->todo = new stdclass();
|
||||
$lang->todo->menu = $lang->my->menu;
|
||||
|
||||
$lang->product->dividerMenu = ',plan,project,dashboard,';
|
||||
$lang->product->dividerMenu = ',requirement,set,';
|
||||
|
||||
$lang->story = new stdclass();
|
||||
|
||||
|
||||
+27
-10
@@ -452,13 +452,13 @@ class commonModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Init submenu for program menu.
|
||||
* Init submenu for project menu.
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public static function initProgramSubmenu()
|
||||
public static function initProjectSubmenu()
|
||||
{
|
||||
global $lang, $app;
|
||||
$moduleName = $app->getModuleName();
|
||||
@@ -784,6 +784,11 @@ class commonModel extends model
|
||||
$lang->product->menu = $lang->product->setMenu;
|
||||
self::processMenuVars($lang->product->menu);
|
||||
}
|
||||
if($moduleName == 'qa' and $group == 'project')
|
||||
{
|
||||
unset($lang->qa->menu->testsuite);
|
||||
unset($lang->qa->menu->caselib);
|
||||
}
|
||||
|
||||
if(!isset($lang->$moduleName->menu))
|
||||
{
|
||||
@@ -2357,9 +2362,21 @@ EOD;
|
||||
$lang->menu = $lang->feedback->menu;
|
||||
$lang->menuOrder = $lang->feedback->menuOrder;
|
||||
}
|
||||
if($group == 'execution')
|
||||
{
|
||||
$lang->menu = $lang->execution->menu;
|
||||
$lang->menuOrder = $lang->execution->menuOrder;
|
||||
}
|
||||
if($group == 'project')
|
||||
{
|
||||
$lang->menu = $config->systemMode == 'new' ? self::getProgramMainMenu($moduleName) : $lang->project->menu;
|
||||
if($config->systemMode == 'classic' or $methodName == 'browse')
|
||||
{
|
||||
$lang->menu = $lang->project->menu;
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->menu = self::getProjectMainMenu($moduleName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2399,21 +2416,21 @@ EOD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get program main menu by model.
|
||||
* Get project main menu by model.
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @static
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public static function getProgramMainMenu($moduleName)
|
||||
public static function getProjectMainMenu($moduleName)
|
||||
{
|
||||
global $app, $lang, $dbh, $config;
|
||||
$program = $dbh->query("SELECT * FROM " . TABLE_PROGRAM . " WHERE `id` = '{$app->session->project}'")->fetch();
|
||||
if(empty($program)) return;
|
||||
$project = $dbh->query("SELECT * FROM " . TABLE_PROJECT . " WHERE `id` = '{$app->session->project}'")->fetch();
|
||||
if(empty($project)) return;
|
||||
|
||||
self::initProgramSubmenu();
|
||||
if($program->model == 'scrum')
|
||||
self::initProjectSubmenu();
|
||||
if($project->model == 'scrum')
|
||||
{
|
||||
$lang->menuOrder = $lang->scrum->menuOrder;
|
||||
|
||||
@@ -2422,7 +2439,7 @@ EOD;
|
||||
return self::processMenuVars($lang->menu->scrum);
|
||||
}
|
||||
|
||||
if($program->model == 'waterfall')
|
||||
if($project->model == 'waterfall')
|
||||
{
|
||||
$lang->project->dividerMenu = str_replace(',project,', ',', $lang->project->dividerMenu);
|
||||
$lang->release->menu = new stdclass();
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<?php
|
||||
foreach($lang->custom->object as $object => $name)
|
||||
{
|
||||
if(strpos('story|todo|block', $object) !== false) echo "<span class='divider'></span>";
|
||||
if(strpos('execution|product', $object) !== false) common::printLink('custom', $object, "", "<span class='text'>{$lang->custom->$object}</span>", '', "class='btn btn-link' id='{$object}Tab'");
|
||||
if(strpos('execution|product', $object) === false) common::printLink('custom', 'set', "module=$object&field=" . key($lang->custom->{$object}->fields), "<span class='text'>{$name}</span>", '', "class='btn btn-link' id='{$object}Tab'");
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ class datatableModel extends model
|
||||
$title = (isset($col->name) and $col->name) ? "title='$col->name'" : $title;
|
||||
if($id == 'id' and (int)$width < 90) $width = '90px';
|
||||
$width = "data-width='$width' style='width:$width'";
|
||||
$align = ($id == 'actions' || $id == 'progress') ? 'text-center' : '';
|
||||
$align = $id == 'actions' ? 'text-center' : '';
|
||||
|
||||
echo "<th data-flex='$fixed' $width class='c-$id $align' $title>";
|
||||
if($id == 'actions')
|
||||
|
||||
@@ -1078,7 +1078,7 @@ class docModel extends model
|
||||
$productOrderLibs[$productID]['name'] = $productName;
|
||||
$productOrderLibs[$productID]['status'] = $product->status;
|
||||
foreach($productLibs[$productID] as $libID => $libName) $productOrderLibs[$productID]['libs'][$libID] = $libName;
|
||||
if(isset($hasProject[$productID]) and $hasLibsPriv) $productOrderLibs[$productID]['libs']['project'] = $this->lang->doclib->project;
|
||||
if(isset($hasProject[$productID]) and $hasLibsPriv) $productOrderLibs[$productID]['libs']['project'] = $this->lang->doclib->execution;
|
||||
if($hasFilesPriv) $productOrderLibs[$productID]['libs']['files'] = $this->lang->doclib->files;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class execution extends control
|
||||
|
||||
if(!in_array($this->methodName, array('computeburn', 'ajaxgetrecentexecutions')))
|
||||
{
|
||||
$this->executions = $this->execution->getPairs($this->session->project, 'all', 'nocode');
|
||||
$this->executions = $this->execution->getPairs(0, 'all', 'nocode');
|
||||
if(!$this->executions and $this->methodName != 'index' and $this->methodName != 'create' and $this->app->getViewType() != 'mhtml') $this->locate($this->createLink('execution', 'create'));
|
||||
}
|
||||
$this->objectType = $this->config->systemMode == 'classic' ? 'project' : 'execution';
|
||||
@@ -282,7 +282,7 @@ class execution extends control
|
||||
if(empty($groupBy))$groupBy = 'story';
|
||||
if(($groupBy == 'story') and ($execution->type == 'ops'))$groupBy = 'status';
|
||||
$sort = $this->loadModel('common')->appendOrder($groupBy);
|
||||
$tasks = $this->loadModel('task')->getTasks($executionID, $productID = 0, $status = 'all', $modules = 0, $sort);
|
||||
$tasks = $this->loadModel('task')->getExecutionTasks($executionID, $productID = 0, $status = 'all', $modules = 0, $sort);
|
||||
$groupBy = str_replace('`', '', $groupBy);
|
||||
$taskLang = $this->lang->task;
|
||||
$groupByList = array();
|
||||
@@ -738,7 +738,7 @@ class execution extends control
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
$stories = $this->story->getStories($executionID, 0, 0, $sort, $type, $param, 'story', '', $pager);
|
||||
$stories = $this->story->getExecutionStories($executionID, 0, 0, $sort, $type, $param, 'story', '', $pager);
|
||||
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story', false);
|
||||
$users = $this->user->getPairs('noletter');
|
||||
@@ -790,21 +790,21 @@ class execution extends control
|
||||
|
||||
/* Get execution's product. */
|
||||
$productID = 0;
|
||||
$productPairs = $this->loadModel('product')->getProductPairsByExecution($executionID);
|
||||
$productPairs = $this->loadModel('product')->getProductPairsByProject($executionID);
|
||||
if($productPairs) $productID = key($productPairs);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->title = $title;
|
||||
$this->view->position = $position;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->execution = $execution;
|
||||
$this->view->execution = $execution;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->allPlans = $allPlans;
|
||||
$this->view->summary = $this->product->summary($stories);
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->type = $this->session->executionStoryBrowseType;
|
||||
$this->view->param = $param;
|
||||
$this->view->moduleTree = $this->loadModel('tree')->getStoryTreeMenu($executionID, $startModuleID = 0, array('treeModel', 'createExecutionStoryLink'));
|
||||
$this->view->moduleTree = $this->loadModel('tree')->getProjectStoryTreeMenu($executionID, $startModuleID = 0, array('treeModel', 'createExecutionStoryLink'));
|
||||
$this->view->tabID = 'story';
|
||||
$this->view->storyTasks = $storyTasks;
|
||||
$this->view->storyBugs = $storyBugs;
|
||||
@@ -857,7 +857,7 @@ class execution extends control
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
$sort = $this->loadModel('common')->appendOrder($orderBy);
|
||||
$bugs = $this->bug->getBugs($executionID, $build, $type, $param, $sort, '', $pager);
|
||||
$bugs = $this->bug->getExecutionBugs($executionID, $build, $type, $param, $sort, '', $pager);
|
||||
$users = $this->user->getPairs('noletter');
|
||||
|
||||
/* team member pairs. */
|
||||
@@ -917,7 +917,7 @@ class execution extends control
|
||||
$type = strtolower($type);
|
||||
$queryID = ($type == 'bysearch') ? (int)$param : 0;
|
||||
$actionURL = $this->createLink('execution', 'build', "executionID=$executionID&type=bysearch&queryID=myQueryID");
|
||||
$this->execution->buildExecutionBuildSearchForm($products, $queryID, $actionURL, 'execution');
|
||||
$this->project->buildProjectBuildSearchForm($products, $queryID, $actionURL, 'execution');
|
||||
|
||||
/* Get builds. */
|
||||
if($type == 'bysearch')
|
||||
@@ -926,7 +926,7 @@ class execution extends control
|
||||
}
|
||||
else
|
||||
{
|
||||
$builds = $this->loadModel('build')->getBuilds((int)$executionID, $type, $param);
|
||||
$builds = $this->loadModel('build')->getExecutionBuilds((int)$executionID, $type, $param);
|
||||
}
|
||||
|
||||
/* Set execution builds. */
|
||||
@@ -978,7 +978,7 @@ class execution extends control
|
||||
|
||||
$productTasks = array();
|
||||
|
||||
$tasks = $this->testtask->getTasks($executionID, $orderBy, $pager);
|
||||
$tasks = $this->testtask->getExecutionTasks($executionID, $orderBy, $pager);
|
||||
foreach($tasks as $key => $task) $productTasks[$task->product][] = $task;
|
||||
|
||||
$this->view->title = $this->executions[$executionID] . $this->lang->colon . $this->lang->testtask->common;
|
||||
@@ -1306,7 +1306,7 @@ class execution extends control
|
||||
$position[] = $this->lang->execution->edit;
|
||||
|
||||
$allProducts = array(0 => '');
|
||||
$executionProsucts = $this->execution->getProducts($execution->execution);
|
||||
$executionProsucts = $this->execution->getProducts($execution->project);
|
||||
foreach($executionProsucts as $product) $allProducts[$product->id] = $product->name;
|
||||
|
||||
$linkedProducts = $this->execution->getProducts($execution->id);
|
||||
@@ -1316,7 +1316,7 @@ class execution extends control
|
||||
$unmodifiableProducts = array();
|
||||
foreach($linkedProducts as $productID => $linkedProduct)
|
||||
{
|
||||
$executionStories = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('execution')->eq($executionID)->andWhere('product')->eq($productID)->fetchAll('story');
|
||||
$executionStories = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('project')->eq($executionID)->andWhere('product')->eq($productID)->fetchAll('story');
|
||||
if(!empty($executionStories)) array_push($unmodifiableProducts, $productID);
|
||||
}
|
||||
|
||||
@@ -1718,8 +1718,8 @@ class execution extends control
|
||||
$this->execution->setMenu($this->executions, $executionID);
|
||||
$execution = $this->loadModel('execution')->getById($executionID);
|
||||
$tasks = $this->execution->getKanbanTasks($executionID, "id");
|
||||
$bugs = $this->loadModel('bug')->getBugs($executionID);
|
||||
$stories = $this->loadModel('story')->getStories($executionID, 0, 0, $orderBy);
|
||||
$bugs = $this->loadModel('bug')->getExecutionBugs($executionID);
|
||||
$stories = $this->loadModel('story')->getExecutionStories($executionID, 0, 0, $orderBy);
|
||||
|
||||
/* Determines whether an object is editable. */
|
||||
$canBeChanged = common::canModify('execution', $execution);
|
||||
@@ -2031,7 +2031,7 @@ class execution extends control
|
||||
$position[] = html::a($browseExecutionLink, $execution->name);
|
||||
$position[] = $this->lang->execution->manageProducts;
|
||||
|
||||
$allProducts = $this->product->getProductPairsByExecution($execution->execution);
|
||||
$allProducts = $this->product->getProductPairsByProject($execution->project);
|
||||
$linkedProducts = $this->execution->getProducts($execution->id);
|
||||
$linkedBranches = array();
|
||||
|
||||
@@ -2039,7 +2039,7 @@ class execution extends control
|
||||
$unmodifiableProducts = array();
|
||||
foreach($linkedProducts as $productID => $linkedProduct)
|
||||
{
|
||||
$executionStories = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('execution')->eq($executionID)->andWhere('product')->eq($productID)->fetchAll('story');
|
||||
$executionStories = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('project')->eq($executionID)->andWhere('product')->eq($productID)->fetchAll('story');
|
||||
if(!empty($executionStories)) array_push($unmodifiableProducts, $productID);
|
||||
}
|
||||
|
||||
@@ -2353,12 +2353,12 @@ class execution extends control
|
||||
public function dynamic($executionID = 0, $type = 'today', $param = '', $recTotal = 0, $date = '', $direction = 'next')
|
||||
{
|
||||
/* Save session. */
|
||||
$uri = $this->app->getURI(true);
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('productList', $uri);
|
||||
$this->session->set('productPlanList', $uri);
|
||||
$this->session->set('releaseList', $uri);
|
||||
$this->session->set('storyList', $uri);
|
||||
$this->session->set('executionList', $uri);
|
||||
$this->session->set('executionList', $uri);
|
||||
$this->session->set('taskList', $uri);
|
||||
$this->session->set('buildList', $uri);
|
||||
$this->session->set('bugList', $uri);
|
||||
@@ -2403,8 +2403,8 @@ class execution extends control
|
||||
$this->view->position[] = html::a($this->createLink('execution', 'browse', "executionID=$executionID"), $execution->name);
|
||||
$this->view->position[] = $this->lang->execution->dynamic;
|
||||
|
||||
$this->view->userIdPairs = $this->loadModel('user')->getPairs('noletter|nodeleted|useid');
|
||||
$this->view->accountPairs = $this->user->getPairs('noletter|nodeleted');
|
||||
$this->view->userIdPairs = $this->execution->getTeamMemberPairs($executionID, 'nodeleted|useid');
|
||||
$this->view->accountPairs = $this->loadModel('user')->getPairs('noletter|nodeleted');
|
||||
|
||||
/* Assign. */
|
||||
$this->view->executionID = $executionID;
|
||||
@@ -2481,12 +2481,12 @@ class execution extends control
|
||||
{
|
||||
$execution = $this->execution->getByID($executionID);
|
||||
|
||||
$this->view->link = $this->execution->getLink($module, $method, $extra);
|
||||
$this->view->link = $this->execution->getLink($module, $method, $extra);
|
||||
$this->view->executionID = $executionID;
|
||||
$this->view->module = $module;
|
||||
$this->view->method = $method;
|
||||
$this->view->extra = $extra;
|
||||
$this->view->executions = $this->execution->getsByExecution($execution->execution);
|
||||
$this->view->module = $module;
|
||||
$this->view->method = $method;
|
||||
$this->view->extra = $extra;
|
||||
$this->view->executions = $this->execution->getByProject($execution->project);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -2558,10 +2558,10 @@ class execution extends control
|
||||
$idList = explode(',', trim($this->post->storys, ','));
|
||||
$orderBy = $this->post->orderBy;
|
||||
|
||||
$order = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('story')->in($idList)->andWhere('execution')->eq($executionID)->orderBy('order_asc')->fetch('order');
|
||||
$order = $this->dao->select('*')->from(TABLE_PROJECTSTORY)->where('story')->in($idList)->andWhere('project')->eq($executionID)->orderBy('order_asc')->fetch('order');
|
||||
foreach($idList as $storyID)
|
||||
{
|
||||
$this->dao->update(TABLE_PROJECTSTORY)->set('`order`')->eq($order)->where('story')->eq($storyID)->andWhere('execution')->eq($executionID)->exec();
|
||||
$this->dao->update(TABLE_PROJECTSTORY)->set('`order`')->eq($order)->where('story')->eq($storyID)->andWhere('project')->eq($executionID)->exec();
|
||||
$order++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->project->common = $lang->executionCommon;
|
||||
$lang->project->allProjects = 'Alle';
|
||||
$lang->project->allExecutions = 'Alle';
|
||||
$lang->project->id = $lang->executionCommon . ' ID';
|
||||
$lang->project->type = 'Typ';
|
||||
$lang->project->name = 'Name';
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->execution->common = $lang->executionCommon;
|
||||
$lang->execution->allProjects = 'All ' . $lang->executionCommon . 's';
|
||||
$lang->executionCommon = $lang->executionCommon;
|
||||
$lang->execution->allExecutions = 'All ' . $lang->executionCommon . 's';
|
||||
$lang->execution->id = $lang->executionCommon . ' ID';
|
||||
$lang->execution->type = 'Type';
|
||||
$lang->execution->name = "{$lang->executionCommon} Name";
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->project->common = $lang->executionCommon;
|
||||
$lang->project->allProjects = 'Tous les ' . $lang->executionCommon . 's';
|
||||
$lang->project->allExecutions = 'Tous les ' . $lang->executionCommon . 's';
|
||||
$lang->project->id = $lang->executionCommon . ' ID';
|
||||
$lang->project->type = 'Type';
|
||||
$lang->project->name = "Nom du {$lang->executionCommon}";
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
/* Fields. */
|
||||
$lang->project->common = $lang->executionCommon;
|
||||
$lang->project->allProjects = 'Tất cả ' . $lang->executionCommon;
|
||||
$lang->project->allExecutions = 'Tất cả ' . $lang->executionCommon;
|
||||
$lang->project->id = 'ID '.$lang->executionCommon;
|
||||
$lang->project->type = 'Loại';
|
||||
$lang->project->name = "Tên {$lang->executionCommon}";
|
||||
|
||||
@@ -10,8 +10,9 @@
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
/* 字段列表。*/
|
||||
$lang->executionCommon = $lang->executionCommon;
|
||||
$lang->execution->common = $lang->executionCommon . '视图';
|
||||
$lang->execution->allProjects = '所有' . $lang->executionCommon;
|
||||
$lang->execution->allExecution = '所有' . $lang->executionCommon;
|
||||
$lang->execution->id = $lang->executionCommon . '编号';
|
||||
$lang->execution->type = $lang->executionCommon . '类型';
|
||||
$lang->execution->name = $lang->executionCommon . '名称';
|
||||
|
||||
+44
-35
@@ -62,9 +62,9 @@ class executionModel extends model
|
||||
*/
|
||||
public function setMenu($executions, $executionID, $buildID = 0, $extra = '')
|
||||
{
|
||||
$project = $this->getByID($this->session->project);
|
||||
if(empty($executions))
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($this->session->project);
|
||||
if($project->model == 'waterfall')
|
||||
{
|
||||
if(($this->app->moduleName == 'programplan' && $this->app->methodName != 'create') || $this->app->moduleName == 'execution') die(js::locate(helper::createLink('programplan', 'create', "projectID=$project->id")));
|
||||
@@ -77,12 +77,10 @@ class executionModel extends model
|
||||
|
||||
if(!$executionID and $this->session->execution) $executionID = $this->session->execution;
|
||||
if(!$executionID or !in_array($executionID, array_keys($executions))) $executionID = key($executions);
|
||||
|
||||
$this->session->set('execution', $executionID);
|
||||
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
|
||||
/* Unset story, bug, build and testtask if type is ops. */
|
||||
$execution = $this->getByID($executionID);
|
||||
if($execution and $execution->lifetime == 'ops')
|
||||
{
|
||||
unset($this->lang->execution->menu->story);
|
||||
@@ -93,7 +91,7 @@ class executionModel extends model
|
||||
}
|
||||
|
||||
/* Hide story and qa menu when execution is story or design type. */
|
||||
if($execution and ($execution->attribute == 'story' || $execution->attribute == 'design'))
|
||||
if($execution and ($execution->attribute == 'story' or $execution->attribute == 'design'))
|
||||
{
|
||||
unset($this->lang->execution->menu->story);
|
||||
unset($this->lang->execution->menu->qa);
|
||||
@@ -278,6 +276,7 @@ class executionModel extends model
|
||||
if(empty($executionID) and isset($this->config->execution->lastExecution) and isset($executions[$this->config->execution->lastExecution]))
|
||||
{
|
||||
$this->session->set('execution', $this->config->execution->lastExecution);
|
||||
$this->setProjectSession($this->session->execution);
|
||||
return $this->session->execution;
|
||||
}
|
||||
|
||||
@@ -295,9 +294,23 @@ class executionModel extends model
|
||||
$this->session->set('execution', key($executions));
|
||||
if($executionID && strpos(",{$this->app->user->view->sprints},", ",{$this->session->execution},") === false) $this->accessDenied();
|
||||
}
|
||||
|
||||
$this->setProjectSession($this->session->execution);
|
||||
return $this->session->execution;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set project into session.
|
||||
*
|
||||
* @param int $executionID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setProjectSession($executionID)
|
||||
{
|
||||
$execution = $this->getByID($executionID);
|
||||
$this->session->set('project', $execution->project);
|
||||
}
|
||||
/**
|
||||
* Create a execution.
|
||||
*
|
||||
@@ -821,7 +834,7 @@ class executionModel extends model
|
||||
if($type == 'create' or $oldExecution->grade == 1)
|
||||
{
|
||||
$oldPercentTotal = $this->dao->select('SUM(t2.percent) as total')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution=t2.id')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->eq($this->post->products[0])
|
||||
->andWhere('t2.type')->eq('stage')
|
||||
->andWhere('t2.grade')->eq(1)
|
||||
@@ -883,7 +896,7 @@ class executionModel extends model
|
||||
/* Order by status's content whether or not done */
|
||||
$executions = $this->dao->select('*, IF(INSTR("done,closed", status) < 2, 0, 1) AS isDone, INSTR("doing,wait,suspended,closed", status) AS sortStatus')->from(TABLE_EXECUTION)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF(!$projectID && $type == 'all' && $this->config->systemMode == 'new')->andWhere('type')->in('stage,sprint')->fi()
|
||||
->beginIF($type == 'all' && $this->config->systemMode == 'new')->andWhere('type')->in('stage,sprint')->fi()
|
||||
->beginIF($projectID && $this->config->systemMode == 'new')->andWhere('project')->eq($projectID)->fi()
|
||||
->beginIF($type != 'all' && $this->config->systemMode == 'new')->andWhere('type')->eq($type)->fi()
|
||||
->beginIF(strpos($mode, 'withdelete') === false)->andWhere('deleted')->eq(0)->fi()
|
||||
@@ -941,7 +954,7 @@ class executionModel extends model
|
||||
if($productID != 0)
|
||||
{
|
||||
return $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution = t2.id')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project= t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->beginIF($projectID)->andWhere('t2.project')->eq($projectID)->fi()
|
||||
->beginIF($type == 'all')->andWhere('t2.type')->in('sprint,stage,kanban')->fi()
|
||||
@@ -987,7 +1000,7 @@ class executionModel extends model
|
||||
if($productID != 0)
|
||||
{
|
||||
return $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution = t2.id')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project= t2.id')
|
||||
->leftJoin(TABLE_TEAM)->alias('t3')->on('t3.root=t2.id')
|
||||
->where('t1.product')->eq($productID)
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
@@ -1067,7 +1080,7 @@ class executionModel extends model
|
||||
if(isset($project->model) and $project->model == 'waterfall')
|
||||
{
|
||||
$executionList = array();
|
||||
$executionProducts = $this->dao->select('t1.execution,t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
$executionProducts = $this->dao->select('t1.project,t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->where('project')->in(array_keys($executions))
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
@@ -1219,7 +1232,7 @@ class executionModel extends model
|
||||
$products = array_keys($products);
|
||||
return $this->dao->select('t1.id, t1.name')->from(TABLE_EXECUTION)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')
|
||||
->on('t1.id = t2.execution')
|
||||
->on('t1.id = t2.project')
|
||||
->where('t2.product')->in($products)
|
||||
->andWhere('t1.id')->ne((int)$executionID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
@@ -1270,7 +1283,7 @@ class executionModel extends model
|
||||
public function getProductGroupList()
|
||||
{
|
||||
$list = $this->dao->select('t1.id, t1.name,t1.status, t2.product')->from(TABLE_EXECUTION)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.execution')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.project')
|
||||
->where('t1.deleted')->eq(0)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
|
||||
->fetchGroup('product');
|
||||
@@ -1433,7 +1446,7 @@ class executionModel extends model
|
||||
{
|
||||
$managers = $this->dao->select('PO,QD,RD')->from(TABLE_PRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.product')
|
||||
->where('t2.execution')->eq($executionID)
|
||||
->where('t2.project')->eq($executionID)
|
||||
->fetch();
|
||||
if($managers) return $managers;
|
||||
|
||||
@@ -1554,7 +1567,7 @@ class executionModel extends model
|
||||
$this->config->product->search['fields']['title'] = str_replace($this->lang->SRCommon, $this->lang->SRCommon, $this->lang->story->title);
|
||||
$this->config->product->search['actionURL'] = $actionURL;
|
||||
$this->config->product->search['queryID'] = $queryID;
|
||||
$this->config->product->search['params']['product']['values'] = $productPairs + array('all' => $this->lang->product->allProductsOfExecution);
|
||||
$this->config->product->search['params']['product']['values'] = $productPairs + array('all' => $this->lang->product->allProductsOfProject);
|
||||
$this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getForProducts($products);
|
||||
$this->config->product->search['params']['module']['values'] = $modules;
|
||||
unset($this->lang->story->statusList['draft']);
|
||||
@@ -1608,9 +1621,9 @@ class executionModel extends model
|
||||
public function updateProducts($executionID, $products = '')
|
||||
{
|
||||
$this->loadModel('user');
|
||||
$products = isset($_POST['products']) ? $_POST['products'] : $products;
|
||||
$oldExecutionProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('execution')->eq((int)$executionID)->fetchGroup('product', 'branch');
|
||||
$this->dao->delete()->from(TABLE_PROJECTPRODUCT)->where('execution')->eq((int)$executionID)->exec();
|
||||
$products = isset($_POST['products']) ? $_POST['products'] : $products;
|
||||
$oldExecutionProducts = $this->dao->select('*')->from(TABLE_PROJECTPRODUCT)->where('project')->eq((int)$executionID)->fetchGroup('product', 'branch');
|
||||
$this->dao->delete()->from(TABLE_PROJECTPRODUCT)->where('project')->eq((int)$executionID)->exec();
|
||||
$members = array_keys($this->getTeamMembers($executionID));
|
||||
if(empty($products))
|
||||
{
|
||||
@@ -1636,7 +1649,7 @@ class executionModel extends model
|
||||
}
|
||||
|
||||
$data = new stdclass();
|
||||
$data->execution = $executionID;
|
||||
$data->project = $executionID;
|
||||
$data->product = $productID;
|
||||
$data->branch = $branch;
|
||||
$data->plan = isset($plans[$productID]) ? $plans[$productID] : $oldPlan;
|
||||
@@ -1644,10 +1657,6 @@ class executionModel extends model
|
||||
$existedProducts[$productID] = true;
|
||||
}
|
||||
|
||||
/* Delete the execution linked products that is not linked with the execution. */
|
||||
$executions = $this->dao->select('id')->from(TABLE_EXECUTION)->where('execution')->eq((int)$executionID)->fetchPairs('id');
|
||||
$this->dao->delete()->from(TABLE_PROJECTPRODUCT)->where('execution')->in($executions)->andWhere('product')->notin($products)->exec();
|
||||
|
||||
$oldProductKeys = array_keys($oldExecutionProducts);
|
||||
$needUpdate = array_merge(array_diff($oldProductKeys, $products), array_diff($products, $oldProductKeys));
|
||||
if($needUpdate) $this->user->updateUserView($needUpdate, 'product', $members);
|
||||
@@ -1667,10 +1676,10 @@ class executionModel extends model
|
||||
if(empty($products)) return array();
|
||||
|
||||
$execution = $this->getById($toExecution);
|
||||
$executions = $this->dao->select('t1.product, t1.execution')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution=t2.id')
|
||||
$executions = $this->dao->select('t1.product, t1.project')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->in(array_keys($products))
|
||||
->andWhere('t2.execution')->eq($execution->execution)
|
||||
->andWhere('t2.project')->eq($execution->execution)
|
||||
->fetchGroup('execution');
|
||||
$branches = str_replace(',', "','", $branches);
|
||||
|
||||
@@ -1769,7 +1778,7 @@ class executionModel extends model
|
||||
{
|
||||
$storyCount = $this->dao->select('count(t2.story) as storyCount')->from(TABLE_STORY)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECTSTORY)->alias('t2')->on('t1.id = t2.story')
|
||||
->where('t2.execution')->eq($executionID)
|
||||
->where('t2.project')->eq($executionID)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->fetch('storyCount');
|
||||
|
||||
@@ -2318,7 +2327,7 @@ class executionModel extends model
|
||||
{
|
||||
$teamMember = $this->dao->select('t1.id, t2.account')->from(TABLE_EXECUTION)->alias('t1')
|
||||
->leftJoin(TABLE_TEAM)->alias('t2')->on('t1.id = t2.root')
|
||||
->where('t1.execution')->eq($sprint->execution)
|
||||
->where('t1.project')->eq($sprint->project)
|
||||
->andWhere('t1.type')->eq($sprint->type)
|
||||
->andWhere('t2.account')->eq($account)
|
||||
->fetch();
|
||||
@@ -2373,10 +2382,10 @@ class executionModel extends model
|
||||
->orWhere('status')->eq('closed')
|
||||
->groupBy('execution')
|
||||
->fetchAll('execution');
|
||||
$storyPoints = $this->dao->select('t1.execution, sum(t2.estimate) AS `storyPoint`')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
$storyPoints = $this->dao->select('t1.project, sum(t2.estimate) AS `storyPoint`')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t2.product = t3.id')
|
||||
->where('t1.execution')->in(array_keys($executions))
|
||||
->where('t1.project')->in(array_keys($executions))
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->andWhere('t2.status')->ne('closed')
|
||||
->andWhere('t2.stage')->in('wait,planned,executioned,developing')
|
||||
@@ -2803,7 +2812,7 @@ class executionModel extends model
|
||||
$this->config->bug->search['actionURL'] = $actionURL;
|
||||
$this->config->bug->search['queryID'] = $queryID;
|
||||
unset($this->config->bug->search['fields']['execution']);
|
||||
$this->config->bug->search['params']['product']['values'] = $productPairs + array('all' => $this->lang->product->allProductsOfExecution);
|
||||
$this->config->bug->search['params']['product']['values'] = $productPairs + array('all' => $this->lang->product->allProductsOfProject);
|
||||
$this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getForProducts($products);
|
||||
$this->config->bug->search['params']['module']['values'] = $modules;
|
||||
$this->config->bug->search['params']['openedBuild']['values'] = $builds;
|
||||
@@ -2837,7 +2846,7 @@ class executionModel extends model
|
||||
{
|
||||
$this->config->execution->search['actionURL'] = $actionURL;
|
||||
$this->config->execution->search['queryID'] = $queryID;
|
||||
$this->config->execution->search['params']['execution']['values'] = array(''=>'', $executionID => $executions[$executionID], 'all' => $this->lang->execution->allExecution);
|
||||
$this->config->execution->search['params']['execution']['values'] = array(''=>'', $executionID => $executions[$executionID], 'all' => $this->lang->execution->allExecutions);
|
||||
|
||||
$showAllModule = isset($this->config->execution->task->allModule) ? $this->config->execution->task->allModule : '';
|
||||
$this->config->execution->search['params']['module']['values'] = $this->loadModel('tree')->getTaskOptionMenu($executionID, 0, 0, $showAllModule ? 'allModule' : '');
|
||||
@@ -3152,7 +3161,7 @@ class executionModel extends model
|
||||
{
|
||||
$stories = $this->dao->select('t2.*, t1.version as taskVersion')->from(TABLE_PROJECTSTORY)->alias('t1')
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
->where('t1.execution')->eq((int)$executionID)
|
||||
->where('t1.project')->eq((int)$executionID)
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->orderBy('t1.`order`_desc')
|
||||
->fetchAll();
|
||||
@@ -3435,7 +3444,7 @@ class executionModel extends model
|
||||
->where('t1.type')->in('stage,sprint')
|
||||
->andWhere('t2.account')->eq($this->app->user->account)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.execution')->in($this->app->user->view->executions)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.project')->in($this->app->user->view->projects)->fi()
|
||||
->andWhere('t1.status')->ne('closed')
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->orderBy('execution_desc, id_desc')
|
||||
@@ -3480,9 +3489,9 @@ class executionModel extends model
|
||||
*/
|
||||
public function getStageLinkProductPairs($stageIdList = array())
|
||||
{
|
||||
$productpairs = $this->dao->select('t1.execution, t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
$productpairs = $this->dao->select('t1.project, t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->where('t1.execution')->in($stageIdList)
|
||||
->where('t1.project')->in($stageIdList)
|
||||
->fetchPairs('execution', 'name');
|
||||
return $productpairs;
|
||||
}
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
foreach($userIdPairs as $userID => $name)
|
||||
{
|
||||
if(!$userID) continue;
|
||||
$searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $userID, '') . '"') : '';
|
||||
echo html::a($this->createLink('execution', 'dynamic', "productID=$executionID&type=account¶m=$userID"), $name);
|
||||
$searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $name, '') . '"') : '';
|
||||
echo html::a($this->createLink('execution', 'dynamic', "productID=$executionID&type=account¶m=$userID"), $name, '', $searchKey);
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
<?php
|
||||
if($isSprint)
|
||||
{
|
||||
echo html::select('lifetime', $lang->project->lifeTimeList, $execution->lifetime, "class='form-control' onchange='showLifeTimeTips()'");
|
||||
echo html::select('lifetime', $lang->execution->lifeTimeList, $execution->lifetime, "class='form-control' onchange='showLifeTimeTips()'");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
<?php if($execution->deleted):?>
|
||||
<span class='label label-danger label-outline'><?php echo $lang->execution->deleted;?></span>
|
||||
<?php endif; ?>
|
||||
<span class="label label-primary label-outline"><?php echo zget($lang->program->PRJLifeTimeList, $execution->lifetime);?></span>
|
||||
<span class="label label-primary label-outline"><?php echo zget($lang->execution->lifeTimeList, $execution->lifetime);?></span>
|
||||
<?php if(isset($execution->delay)):?>
|
||||
<span class="label label-danger label-outline"><?php echo $lang->execution->delayed;?></span>
|
||||
<?php else:?>
|
||||
|
||||
@@ -14,7 +14,7 @@ $lang->my->testCase = 'Meine Fälle';
|
||||
$lang->my->story = 'Meine Storys';
|
||||
$lang->my->createProgram = 'Create Program';
|
||||
$lang->my->project = "My Projects";
|
||||
$lang->my->execution = "My {$lang->execution->common}s";
|
||||
$lang->my->execution = "My {$lang->executionCommon}s";
|
||||
$lang->my->issue = 'My Issues';
|
||||
$lang->my->risk = 'My Risks';
|
||||
$lang->my->profile = 'Meine Profil';
|
||||
@@ -44,7 +44,7 @@ $lang->my->myExecutions = 'My Stage/Sprint/Iteration';
|
||||
$lang->my->name = 'Name';
|
||||
$lang->my->code = 'Code';
|
||||
$lang->my->projects = 'Project';
|
||||
$lang->my->executions = "{$lang->execution->common}";
|
||||
$lang->my->executions = "{$lang->executionCommon}";
|
||||
|
||||
$lang->my->executionMenu = new stdclass();
|
||||
$lang->my->executionMenu->undone = 'Undone';
|
||||
|
||||
@@ -14,7 +14,7 @@ $lang->my->testCase = 'My Cases';
|
||||
$lang->my->story = 'My Stories';
|
||||
$lang->my->createProgram = 'Create Program';
|
||||
$lang->my->project = "My Projects";
|
||||
$lang->my->execution = "My {$lang->execution->common}s";
|
||||
$lang->my->execution = "My {$lang->executionCommon}s";
|
||||
$lang->my->issue = 'My Issues';
|
||||
$lang->my->risk = 'My Risks';
|
||||
$lang->my->profile = 'My Profile';
|
||||
@@ -44,7 +44,7 @@ $lang->my->myExecutions = "My Stage/Sprint/Iteration";
|
||||
$lang->my->name = 'Name';
|
||||
$lang->my->code = 'Code';
|
||||
$lang->my->projects = 'Project';
|
||||
$lang->my->executions = $lang->execution->common;
|
||||
$lang->my->executions = $lang->executionCommon;
|
||||
|
||||
$lang->my->executionMenu = new stdclass();
|
||||
$lang->my->executionMenu->undone = 'Undone';
|
||||
|
||||
@@ -14,7 +14,7 @@ $lang->my->testCase = 'Mes CasTests';
|
||||
$lang->my->story = 'Mes Stories';
|
||||
$lang->my->createProgram = 'Create Program';
|
||||
$lang->my->project = "My Projects";
|
||||
$lang->my->execution = "My {$lang->execution->common}s";
|
||||
$lang->my->execution = "My {$lang->executionCommon}s";
|
||||
$lang->my->issue = 'My Issues';
|
||||
$lang->my->risk = 'My Risks';
|
||||
$lang->my->profile = 'Mon Profil';
|
||||
@@ -44,7 +44,7 @@ $lang->my->myExecutions = 'My Stage/Sprint/Iteration';
|
||||
$lang->my->name = 'Name';
|
||||
$lang->my->code = 'Code';
|
||||
$lang->my->projects = 'Project';
|
||||
$lang->my->executions = $lang->execution->common;
|
||||
$lang->my->executions = $lang->executionCommon;
|
||||
|
||||
$lang->my->executionMenu = new stdclass();
|
||||
$lang->my->executionMenu->undone = 'Undone';
|
||||
|
||||
@@ -14,7 +14,7 @@ $lang->my->testCase = 'Tình huống của bạn';
|
||||
$lang->my->story = 'Câu chuyện của bạn';
|
||||
$lang->my->createProgram = 'Create Program';
|
||||
$lang->my->project = "My Projects";
|
||||
$lang->my->execution = "My {$lang->execution->common}s";
|
||||
$lang->my->execution = "My {$lang->executionCommon}s";
|
||||
$lang->my->issue = 'My Issues';
|
||||
$lang->my->risk = 'My Risks';
|
||||
$lang->my->profile = 'Hồ sơ của bạn';
|
||||
@@ -44,7 +44,7 @@ $lang->my->myExecutions = "My Stage/Sprint/Iteration";
|
||||
$lang->my->name = 'Name';
|
||||
$lang->my->code = 'Code';
|
||||
$lang->my->projects = 'Project';
|
||||
$lang->my->executions = $lang->execution->common;
|
||||
$lang->my->executions = $lang->executionCommon;
|
||||
|
||||
$lang->my->executionMenu = new stdclass();
|
||||
$lang->my->executionMenu->undone = 'Undone';
|
||||
|
||||
@@ -16,7 +16,7 @@ $lang->my->testCase = '我的用例';
|
||||
$lang->my->story = "我的{$lang->SRCommon}";
|
||||
$lang->my->createProgram = '添加项目';
|
||||
$lang->my->project = "我的项目";
|
||||
$lang->my->execution = "我的{$lang->execution->common}";
|
||||
$lang->my->execution = "我的{$lang->executionCommon}";
|
||||
$lang->my->issue = '我的问题';
|
||||
$lang->my->risk = '我的风险';
|
||||
$lang->my->profile = '我的档案';
|
||||
@@ -46,7 +46,7 @@ $lang->my->myExecutions = "我参与的阶段/冲刺/迭代";
|
||||
$lang->my->name = '名称';
|
||||
$lang->my->code = '代号';
|
||||
$lang->my->projects = '所属项目';
|
||||
$lang->my->executions = '所属' . $lang->execution->common;
|
||||
$lang->my->executions = '所属' . $lang->executionCommon;
|
||||
|
||||
$lang->my->executionMenu = new stdclass();
|
||||
$lang->my->executionMenu->undone = '未结束';
|
||||
|
||||
@@ -14,7 +14,7 @@ $lang->my->testCase = '我的用例';
|
||||
$lang->my->story = "我的{$lang->SRCommon}";
|
||||
$lang->my->createProgram = '添加項目';
|
||||
$lang->my->project = "我的項目";
|
||||
$lang->my->execution = "我的{$lang->execution->common}";
|
||||
$lang->my->execution = "我的{$lang->executionCommon}";
|
||||
$lang->my->issue = '我的問題';
|
||||
$lang->my->risk = '我的風險';
|
||||
$lang->my->profile = '我的檔案';
|
||||
@@ -44,7 +44,7 @@ $lang->my->myExecutions = "我參與的階段/衝刺/迭代";
|
||||
$lang->my->name = '名稱';
|
||||
$lang->my->code = '代號';
|
||||
$lang->my->projects = '所屬項目';
|
||||
$lang->my->executions = '所屬' . $lang->execution->common;
|
||||
$lang->my->executions = '所屬' . $lang->executionCommon;
|
||||
|
||||
$lang->my->executionMenu = new stdclass();
|
||||
$lang->my->executionMenu->undone = '未結束';
|
||||
|
||||
@@ -70,8 +70,8 @@
|
||||
<td><?php echo $execution->hours;?></td>
|
||||
<td><?php echo $execution->assignedToMeTasks;?></td>
|
||||
<td>
|
||||
<div class='progress-pie' data-doughnut-size='80' data-color='#00da88' 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>
|
||||
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' 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>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<div class='input-group space w-200px'>
|
||||
<span class='input-group-addon'><?php echo $lang->project->selectDept?></span>
|
||||
<?php echo html::select('dept', $depts, $deptID, "class='form-control chosen' onchange='setDeptUsers(this)' data-placeholder='{$lang->project->selectDeptTitle}'");?>
|
||||
<span class='input-group-addon'><?php echo $lang->execution->selectDept?></span>
|
||||
<?php echo html::select('dept', $depts, $deptID, "class='form-control chosen' onchange='setDeptUsers(this)' data-placeholder='{$lang->execution->selectDeptTitle}'");?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -27,19 +27,19 @@ foreach($products as $product)
|
||||
{
|
||||
$objectID = ($product->type != 'platform' && $module == 'branch' && $method == 'manage') ? $productID : $product->id;
|
||||
$linkHtml = $this->product->setParamsForLink($module, $link, $projectID, $product->id);
|
||||
$myProductsHtml .= html::a($linkHtml, html::icon($lang->icons['product']) . ' ' . $productName, '', "class='text-important' title='{$productName}' data-key='" . zget($productsPinYin, $product->name, '') . "' data-group='$openApp'");
|
||||
$myProductsHtml .= html::a($linkHtml, $productName, '', "class='text-important' title='{$productName}' data-key='" . zget($productsPinYin, $product->name, '') . "' data-group='$openApp'");
|
||||
}
|
||||
else if($product->status == 'normal' and !($product->PO == $this->app->user->account))
|
||||
{
|
||||
$objectID = ($product->type != 'platform' && $module == 'branch' && $method == 'manage') ? $productID : $product->id;
|
||||
$linkHtml = $this->product->setParamsForLink($module, $link, $projectID, $product->id);
|
||||
$normalProductsHtml .= html::a($linkHtml, html::icon($lang->icons['product']) . ' ' . $productName, '', "title='{$productName}' data-key='" . zget($productsPinYin, $product->name, '') . "' data-group='$openApp'");
|
||||
$normalProductsHtml .= html::a($linkHtml, $productName, '', "title='{$productName}' data-key='" . zget($productsPinYin, $product->name, '') . "' data-group='$openApp'");
|
||||
}
|
||||
else if($product->status == 'closed')
|
||||
{
|
||||
$objectID = ($product->type != 'platform' && $module == 'branch' && $method == 'manage') ? $productID : $product->id;
|
||||
$linkHtml = $this->product->setParamsForLink($module, $link, $projectID, $objectID);
|
||||
$closedProductsHtml .= html::a($linkHtml, html::icon($lang->icons['product']) . ' ' . $productName, '', "title='{$productName}' class='closed' data-key='" . zget($productsPinYin, $product->name, '') . "' data-group='$openApp'");
|
||||
$closedProductsHtml .= html::a($linkHtml, $productName, '', "title='{$productName}' class='closed' data-key='" . zget($productsPinYin, $product->name, '') . "' data-group='$openApp'");
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -65,8 +65,8 @@
|
||||
<td class="text-center" title="<?php echo $project->hours->totalEstimate . ' ' . $lang->project->workHour;?>"><?php echo $project->hours->totalEstimate . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<td class="text-center" title="<?php echo $project->hours->totalConsumed . ' ' . $lang->project->workHour;?>"><?php echo $project->hours->totalConsumed . ' ' . $lang->execution->workHourUnit;?></td>
|
||||
<td>
|
||||
<div class='progress-pie' data-doughnut-size='80' data-color='#00da88' data-value='<?php echo $project->hours->progress;?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
||||
<div class='progress-info'><?php echo $project->hours->progress;?>%</div>
|
||||
<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='<?php echo $project->hours->progress;?>' data-width='24' data-height='24' data-back-color='#e8edf3'>
|
||||
<div class='progress-info'><?php echo $project->hours->progress;?></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<td title='<?php echo $modules[$story->module]?>' class='text-left'><?php echo $modules[$story->module];?></td>
|
||||
<td class='text-left nobr' title='<?php echo $story->title?>'>
|
||||
<?php
|
||||
if($story->parent > 0) echo "<span class='label'>{$lang->story->childrenAB}</span>";
|
||||
if($story->parent > 0) echo "<span class='label label-badge label-light' title={$lang->story->children}>{$lang->story->childrenAB}</span>";
|
||||
echo html::a($this->createLink('story', 'view', "storyID=$story->id", '', true), $story->title, '', "data-toggle='modal' data-type='iframe' data-width='90%'");
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
<td class='text-left nobr'><?php echo zget($modulePairs, $story->module, '');?></td>
|
||||
<td class='text-left nobr' title='<?php echo $story->title?>'>
|
||||
<?php
|
||||
if($story->parent > 0) echo "<span class='label'>{$lang->story->childrenAB}</span>";
|
||||
if($story->parent > 0) echo "<span class='label label-badge label-light' title={$lang->story->children}>{$lang->story->childrenAB}</span>";
|
||||
echo html::a($viewLink , $story->title);
|
||||
?>
|
||||
</td>
|
||||
|
||||
@@ -198,6 +198,7 @@ class project extends control
|
||||
*/
|
||||
public function browse($programID = 0, $browseType = 'doing', $param = 0, $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
{
|
||||
$this->lang->noMenuModule[] = 'project';
|
||||
if($this->session->moreProjectLink) $this->lang->project->mainMenuAction = html::a($this->session->moreProjectLink, '<i class="icon icon-back"></i> ' . $this->lang->goback, '', "class='btn btn-link'");
|
||||
$this->app->session->set('projectBrowse', $this->app->getURI(true));
|
||||
$this->loadModel('datatable');
|
||||
|
||||
@@ -221,12 +221,11 @@ class projectModel extends model
|
||||
->fetchAll('project');
|
||||
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$this->loadModel('execution');
|
||||
foreach($projects as $projectID => $project)
|
||||
{
|
||||
$orderBy = $project->model == 'waterfall' ? 'id_asc' : 'id_desc';
|
||||
$pager = $project->model == 'waterfall' ? null : new pager(0, 1, 1);
|
||||
$project->executions = $this->execution->getStats($projectID, 'undone', 0, 0, 30, $orderBy, $pager);
|
||||
$project->executions = $this->getStats($projectID, 'undone', 0, 0, 30, $orderBy, $pager);
|
||||
$project->teamCount = isset($teams[$projectID]) ? $teams[$projectID]->count : 0;
|
||||
$project->estimate = isset($estimates[$projectID]) ? round($estimates[$projectID]->estimate, 2) : 0;
|
||||
$project->parentName = $this->getParentName($project->parent);
|
||||
@@ -1131,7 +1130,7 @@ class projectModel extends model
|
||||
echo $project->hours->totalLeft . ' ' . $this->lang->execution->workHourUnit;
|
||||
break;
|
||||
case 'progress':
|
||||
echo "<div class='progress-pie' data-doughnut-size='80' data-color='#00da88' data-value='{$project->hours->progress}' data-width='24' data-height='24' data-back-color='#e8edf3'><div class='progress-info'>{$project->hours->progress}%</div></div>";
|
||||
echo "<div class='progress-pie' data-doughnut-size='90' data-color='#00da88' data-value='{$project->hours->progress}' data-width='24' data-height='24' data-back-color='#e8edf3'><div class='progress-info'>{$project->hours->progress}</div></div>";
|
||||
break;
|
||||
case 'actions':
|
||||
if($project->status == 'wait' || $project->status == 'suspended') common::printIcon('project', 'start', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);
|
||||
@@ -1344,7 +1343,7 @@ class projectModel extends model
|
||||
$begin = $executions[$executionID]->begin;
|
||||
$end = $executions[$executionID]->end;
|
||||
if(helper::isZeroDate($begin)) $begin = $executions[$executionID]->openedDate;
|
||||
$executionBurns = $this->processBurnData($executionBurns, $itemCounts, $begin, $end);
|
||||
$executionBurns = $this->loadModel('execution')->processBurnData($executionBurns, $itemCounts, $begin, $end);
|
||||
|
||||
/* Shorter names. */
|
||||
foreach($executionBurns as $executionBurn)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</div>
|
||||
<div class='col-sm-4'>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon'><?php echo $lang->execution->common;?></span>
|
||||
<span class='input-group-addon'><?php echo $lang->executionCommon;?></span>
|
||||
<?php echo html::select('execution', $executions, $execution, "class='form-control chosen' onchange='changeParams(this)'");?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -87,12 +87,12 @@ $lang->search->modules['testreport'] = 'Testing Report';
|
||||
$lang->search->modules['productplan'] = 'Plan';
|
||||
$lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['execution'] = 'Execution';
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
$lang->search->objectTypeList['stage'] = $lang->execution->stage;
|
||||
$lang->search->objectTypeList['stage'] = 'stage';
|
||||
$lang->search->objectTypeList['sprint'] = $lang->executionCommon;
|
||||
$lang->search->objectTypeList['commonIssue'] = 'Issue';
|
||||
$lang->search->objectTypeList['stakeholderIssue'] = 'Stakeholder Issue';
|
||||
|
||||
@@ -87,12 +87,12 @@ $lang->search->modules['testreport'] = 'Testing Report';
|
||||
$lang->search->modules['productplan'] = 'Plan';
|
||||
$lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['execution'] = 'Execution';
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
$lang->search->objectTypeList['stage'] = $lang->execution->stage;
|
||||
$lang->search->objectTypeList['stage'] = 'stage';
|
||||
$lang->search->objectTypeList['sprint'] = $lang->executionCommon;
|
||||
$lang->search->objectTypeList['commonIssue'] = 'Issue';
|
||||
$lang->search->objectTypeList['stakeholderIssue'] = 'Stakeholder Issue';
|
||||
|
||||
@@ -87,12 +87,12 @@ $lang->search->modules['testreport'] = 'Testing Report';
|
||||
$lang->search->modules['productplan'] = 'Plan';
|
||||
$lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['execution'] = 'Execution';
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
$lang->search->objectTypeList['stage'] = $lang->execution->stage;
|
||||
$lang->search->objectTypeList['stage'] = 'stage';
|
||||
$lang->search->objectTypeList['sprint'] = $lang->executionCommon;
|
||||
$lang->search->objectTypeList['commonIssue'] = 'Issue';
|
||||
$lang->search->objectTypeList['stakeholderIssue'] = 'Stakeholder Issue';
|
||||
|
||||
@@ -87,12 +87,12 @@ $lang->search->modules['testreport'] = 'Báo cáo Test';
|
||||
$lang->search->modules['productplan'] = 'Kế hoạch';
|
||||
$lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['execution'] = 'Execution';
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
$lang->search->objectTypeList['stage'] = $lang->execution->stage;
|
||||
$lang->search->objectTypeList['stage'] = 'stage';
|
||||
$lang->search->objectTypeList['sprint'] = $lang->executionCommon;
|
||||
$lang->search->objectTypeList['commonIssue'] = 'Issue';
|
||||
$lang->search->objectTypeList['stakeholderIssue'] = 'Stakeholder Issue';
|
||||
|
||||
@@ -87,12 +87,12 @@ $lang->search->modules['testreport'] = '报告';
|
||||
$lang->search->modules['productplan'] = '计划';
|
||||
$lang->search->modules['program'] = '项目集';
|
||||
$lang->search->modules['project'] = '项目';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['execution'] = '执行';
|
||||
$lang->search->modules['story'] = '需求';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
$lang->search->objectTypeList['stage'] = $lang->execution->stage;
|
||||
$lang->search->objectTypeList['stage'] = '阶段';
|
||||
$lang->search->objectTypeList['sprint'] = $lang->executionCommon;
|
||||
$lang->search->objectTypeList['commonIssue'] = '问题';
|
||||
$lang->search->objectTypeList['stakeholderIssue'] = '干系人问题';
|
||||
|
||||
@@ -87,7 +87,7 @@ $lang->search->modules['testreport'] = '報告';
|
||||
$lang->search->modules['productplan'] = '計劃';
|
||||
$lang->search->modules['program'] = '項目集';
|
||||
$lang->search->modules['project'] = '項目';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['execution'] = $lang->executionCommon;
|
||||
$lang->search->modules['story'] = '需求';
|
||||
$lang->search->modules['issue'] = '問題';
|
||||
$lang->search->modules['risk'] = '風險';
|
||||
|
||||
@@ -284,7 +284,7 @@ class testtaskModel extends model
|
||||
return $this->dao->select('t1.*, t2.name AS buildName')
|
||||
->from(TABLE_TESTTASK)->alias('t1')
|
||||
->leftJoin(TABLE_BUILD)->alias('t2')->on('t1.build = t2.id')
|
||||
->where('t1.execution')->eq((int)$execution)
|
||||
->where('t1.execution')->eq((int)$executionID)
|
||||
->andWhere('t1.auto')->ne('unit')
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->orderBy($orderBy)
|
||||
|
||||
@@ -24,6 +24,7 @@ class todoModel extends model
|
||||
$objectType = $this->post->type;
|
||||
$hasObject = in_array($objectType, $this->config->todo->moduleList);
|
||||
|
||||
$idvalue = 0;
|
||||
if($hasObject && $objectType) $idvalue = $this->post->uid ? $this->post->$objectType : $this->post->idvalue;
|
||||
$todo = fixer::input('post')
|
||||
->add('account', $this->app->user->account)
|
||||
@@ -446,7 +447,7 @@ class todoModel extends model
|
||||
$begin = $end = $type;
|
||||
}
|
||||
|
||||
if($account == '') $account = $this->app->user->account;
|
||||
if(empty($account)) $account = $this->app->user->account;
|
||||
|
||||
$stmt = $this->dao->select('*')->from(TABLE_TODO)
|
||||
->where('1')
|
||||
@@ -476,10 +477,10 @@ class todoModel extends model
|
||||
if($todo->type == 'story') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_STORY)->fetch('title');
|
||||
if($todo->type == 'task') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_TASK)->fetch('name');
|
||||
if($todo->type == 'bug') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_BUG)->fetch('title');
|
||||
if($todo->type == 'issue') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_ISSUE)->fetch('title');
|
||||
if($todo->type == 'risk') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_RISK)->fetch('name');
|
||||
if($todo->type == 'review') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_REVIEW)->fetch('title');
|
||||
if($todo->type == 'testtask') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_TESTTASK)->fetch('name');
|
||||
if($todo->type == 'issue' && isset($this->config->maxVersion)) $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_ISSUE)->fetch('title');
|
||||
if($todo->type == 'risk' && isset($this->config->maxVersion)) $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_RISK)->fetch('name');
|
||||
if($todo->type == 'review' && isset($this->config->maxVersion)) $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_REVIEW)->fetch('title');
|
||||
$todo->begin = date::formatTime($todo->begin);
|
||||
$todo->end = date::formatTime($todo->end);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user