Merge branch 'master' of github.com:easysoft/zentaopms
This commit is contained in:
+1
-1
@@ -294,4 +294,4 @@ INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('
|
||||
ALTER TABLE `zt_block` ADD `type` char(30) NOT NULL AFTER `module`;
|
||||
ALTER TABLE `zt_block` ADD UNIQUE `account_module_type_order` (`account`, `module`, `type`, `order`), DROP INDEX `accountModuleOrder`;
|
||||
|
||||
INSERT INTO `zt_cron` (`id`, `m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type`, `buildin`, `status`, `lastTime`) VALUES (15, '1', '0', '*', '*', '*', 'moduleName=weekly&methodName=computeWeekly', '更新项目周报', 'system', 0, 'normal', '2020-08-27 10:07:53');
|
||||
INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type`, `buildin`, `status`, `lastTime`) VALUES ('1', '0', '*', '*', '*', 'moduleName=weekly&methodName=computeWeekly', '更新项目周报', 'system', 0, 'normal', '2020-08-27 10:07:53');
|
||||
|
||||
+2
-1
@@ -1462,7 +1462,8 @@ INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type
|
||||
('1', '1', '*', '*', '*', 'moduleName=todo&methodName=createCycle', '生成周期性待办', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
|
||||
('1', '0', '*', '*', '*', 'moduleName=ci&methodName=initQueue', '创建周期性任务', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
|
||||
('*/5', '*', '*', '*', '*', 'moduleName=ci&methodName=checkCompileStatus', '同步Jenkins任务状态', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
|
||||
('*/5', '*', '*', '*', '*', 'moduleName=ci&methodName=exec', '执行Jenkins任务', 'zentao', 1, 'normal', '0000-00-00 00:00:00');
|
||||
('*/5', '*', '*', '*', '*', 'moduleName=ci&methodName=exec', '执行Jenkins任务', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
|
||||
('1', '0', '*', '*', '*', 'moduleName=weekly&methodName=computeWeekly', '更新项目周报', 'system', 0, 'normal', '2020-08-27 10:07:53');
|
||||
|
||||
INSERT INTO `zt_group` (`id`, `name`, `role`, `desc`) VALUES
|
||||
(1, 'ADMIN', 'admin', 'for administrator'),
|
||||
|
||||
@@ -659,9 +659,6 @@ class actionModel extends model
|
||||
->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($this->config->global->flow == 'onlyStory')->andWhere('objectType')->notin('bug,build,project,task,taskcase,testreport,testsuite,testtask')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('objectType')->notin('product,productplan,release,story,testcase,testreport,testsuite')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTest')->andWhere('objectType')->notin('project,productplan,release,story,task')->fi()
|
||||
->beginIF(!empty($actionCondition))->andWhere("($actionCondition)")->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
@@ -774,9 +771,6 @@ class actionModel extends model
|
||||
return $actions = $this->dao->select('*')->from(TABLE_ACTION)
|
||||
->where($sql)
|
||||
->beginIF(!empty($actionCondition))->andWhere("($actionCondition)")->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyStory')->andWhere('objectType')->notin('bug,build,project,task,taskcase,testreport,testsuite,testtask')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('objectType')->notin('product,productplan,release,story,testcase,testreport,testsuite')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTest')->andWhere('objectType')->notin('project,productplan,release,story,task')->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
@@ -49,10 +49,6 @@ class block extends control
|
||||
if(!common::hasPriv($moduleKey, 'index')) unset($modules[$moduleKey]);
|
||||
}
|
||||
|
||||
if($this->config->global->flow == 'onlyTask' or $this->config->global->flow == 'onlyStory') unset($modules['qa']);
|
||||
if($this->config->global->flow == 'onlyTask' or $this->config->global->flow == 'onlyTest') unset($modules['product']);
|
||||
if($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest') unset($modules['project']);
|
||||
|
||||
$closedBlock = isset($this->config->block->closed) ? $this->config->block->closed : '';
|
||||
if(strpos(",$closedBlock,", ",|assigntome,") === false) $modules['assigntome'] = $this->lang->block->assignToMe;
|
||||
if(strpos(",$closedBlock,", ",|dynamic,") === false) $modules['dynamic'] = $this->lang->block->dynamic;
|
||||
@@ -227,10 +223,6 @@ class block extends control
|
||||
continue;
|
||||
}
|
||||
|
||||
if($this->config->global->flow == 'onlyStory' and $block->source != 'product' and $block->source != 'todo' and $block->block != 'dynamic') unset($blocks[$key]);
|
||||
if($this->config->global->flow == 'onlyTask' and $block->source != 'project' and $block->source != 'todo' and $block->block != 'dynamic') unset($blocks[$key]);
|
||||
if($this->config->global->flow == 'onlyTest' and $block->source != 'qa' and $block->source != 'todo' and $block->block != 'dynamic') unset($blocks[$key]);
|
||||
|
||||
$block->params = json_decode($block->params);
|
||||
$blockID = $block->block;
|
||||
$source = empty($block->source) ? 'common' : $block->source;
|
||||
|
||||
@@ -187,54 +187,6 @@ $lang->block->default['full']['my']['8']['source'] = 'product';
|
||||
$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['full']['my']['9']['source'] = 'qa';
|
||||
|
||||
$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1'];
|
||||
$lang->block->default['onlyTest']['my']['1']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['1']['grid'] = '8';
|
||||
$lang->block->default['onlyTest']['my']['2']['title'] = 'Verlauf';
|
||||
$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTest']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTest']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTest']['my']['3']['title'] = 'Meine Todos';
|
||||
$lang->block->default['onlyTest']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTest']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTest']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['onlyTest']['my']['4']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['project']['1'];
|
||||
$lang->block->default['onlyStory']['my']['1']['source'] = 'project';
|
||||
$lang->block->default['onlyStory']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['onlyStory']['my']['2']['title'] = 'Verlauf';
|
||||
$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyStory']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyStory']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyStory']['my']['3']['title'] = 'Meine Todos';
|
||||
$lang->block->default['onlyStory']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyStory']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyStory']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2'];
|
||||
$lang->block->default['onlyStory']['my']['4']['source'] = 'product';
|
||||
$lang->block->default['onlyStory']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1'];
|
||||
$lang->block->default['onlyTask']['my']['1']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['onlyTask']['my']['2']['title'] = 'Verlauf';
|
||||
$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTask']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTask']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTask']['my']['3']['title'] = 'Meine Todos';
|
||||
$lang->block->default['onlyTask']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTask']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTask']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2'];
|
||||
$lang->block->default['onlyTask']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->num = 'Number';
|
||||
$lang->block->type = 'Type';
|
||||
$lang->block->orderBy = 'Order by';
|
||||
|
||||
@@ -187,54 +187,6 @@ $lang->block->default['full']['my']['8']['source'] = 'product';
|
||||
$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['full']['my']['9']['source'] = 'qa';
|
||||
|
||||
$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1'];
|
||||
$lang->block->default['onlyTest']['my']['1']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['1']['grid'] = '8';
|
||||
$lang->block->default['onlyTest']['my']['2']['title'] = 'Historique';
|
||||
$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTest']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTest']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTest']['my']['3']['title'] = 'Mon Agenday';
|
||||
$lang->block->default['onlyTest']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTest']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTest']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['onlyTest']['my']['4']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['project']['1'];
|
||||
$lang->block->default['onlyStory']['my']['1']['source'] = 'project';
|
||||
$lang->block->default['onlyStory']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['onlyStory']['my']['2']['title'] = 'Historique';
|
||||
$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyStory']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyStory']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyStory']['my']['3']['title'] = 'Mon Agenda';
|
||||
$lang->block->default['onlyStory']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyStory']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyStory']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2'];
|
||||
$lang->block->default['onlyStory']['my']['4']['source'] = 'product';
|
||||
$lang->block->default['onlyStory']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1'];
|
||||
$lang->block->default['onlyTask']['my']['1']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['onlyTask']['my']['2']['title'] = 'Historique';
|
||||
$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTask']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTask']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTask']['my']['3']['title'] = 'Mon Agenda';
|
||||
$lang->block->default['onlyTask']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTask']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTask']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2'];
|
||||
$lang->block->default['onlyTask']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->num = 'Numéro';
|
||||
$lang->block->type = 'Type';
|
||||
$lang->block->orderBy = 'Trié par';
|
||||
|
||||
@@ -187,54 +187,6 @@ $lang->block->default['full']['my']['8']['source'] = 'product';
|
||||
$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['full']['my']['9']['source'] = 'qa';
|
||||
|
||||
$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1'];
|
||||
$lang->block->default['onlyTest']['my']['1']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['1']['grid'] = '8';
|
||||
$lang->block->default['onlyTest']['my']['2']['title'] = 'Lịch sử';
|
||||
$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTest']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTest']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTest']['my']['3']['title'] = 'Việc của bạn';
|
||||
$lang->block->default['onlyTest']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTest']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTest']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['onlyTest']['my']['4']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['project']['1'];
|
||||
$lang->block->default['onlyStory']['my']['1']['source'] = 'project';
|
||||
$lang->block->default['onlyStory']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['onlyStory']['my']['2']['title'] = 'Lịch sử';
|
||||
$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyStory']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyStory']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyStory']['my']['3']['title'] = 'Việc của bạn';
|
||||
$lang->block->default['onlyStory']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyStory']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyStory']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2'];
|
||||
$lang->block->default['onlyStory']['my']['4']['source'] = 'product';
|
||||
$lang->block->default['onlyStory']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1'];
|
||||
$lang->block->default['onlyTask']['my']['1']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['onlyTask']['my']['2']['title'] = 'Lịch sử';
|
||||
$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTask']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTask']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTask']['my']['3']['title'] = 'Việc của bạn';
|
||||
$lang->block->default['onlyTask']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTask']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTask']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2'];
|
||||
$lang->block->default['onlyTask']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->num = 'Số';
|
||||
$lang->block->type = 'Loại';
|
||||
$lang->block->orderBy = 'Order by';
|
||||
|
||||
@@ -187,54 +187,6 @@ $lang->block->default['full']['my']['8']['source'] = 'product';
|
||||
$lang->block->default['full']['my']['9'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['full']['my']['9']['source'] = 'qa';
|
||||
|
||||
$lang->block->default['onlyTest']['my']['1'] = $lang->block->default['qa']['1'];
|
||||
$lang->block->default['onlyTest']['my']['1']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['1']['grid'] = '8';
|
||||
$lang->block->default['onlyTest']['my']['2']['title'] = '最新動態';
|
||||
$lang->block->default['onlyTest']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTest']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTest']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTest']['my']['3']['title'] = '我的待辦';
|
||||
$lang->block->default['onlyTest']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTest']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTest']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTest']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTest']['my']['4'] = $lang->block->default['qa']['2'];
|
||||
$lang->block->default['onlyTest']['my']['4']['source'] = 'qa';
|
||||
$lang->block->default['onlyTest']['my']['4']['grid'] = '6';
|
||||
|
||||
$lang->block->default['onlyStory']['my']['1'] = $lang->block->default['product']['1'];
|
||||
$lang->block->default['onlyStory']['my']['1']['source'] = 'product';
|
||||
$lang->block->default['onlyStory']['my']['1']['grid'] = '8';
|
||||
$lang->block->default['onlyStory']['my']['2']['title'] = '最新動態';
|
||||
$lang->block->default['onlyStory']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyStory']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyStory']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyStory']['my']['3']['title'] = '我的待辦';
|
||||
$lang->block->default['onlyStory']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyStory']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyStory']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyStory']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyStory']['my']['4'] = $lang->block->default['product']['2'];
|
||||
$lang->block->default['onlyStory']['my']['4']['source'] = 'product';
|
||||
$lang->block->default['onlyStory']['my']['4']['grid'] = '4';
|
||||
|
||||
$lang->block->default['onlyTask']['my']['1'] = $lang->block->default['project']['1'];
|
||||
$lang->block->default['onlyTask']['my']['1']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['1']['grid'] = '8';
|
||||
$lang->block->default['onlyTask']['my']['2']['title'] = '最新動態';
|
||||
$lang->block->default['onlyTask']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['onlyTask']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['onlyTask']['my']['2']['source'] = '';
|
||||
$lang->block->default['onlyTask']['my']['3']['title'] = '我的待辦';
|
||||
$lang->block->default['onlyTask']['my']['3']['block'] = 'list';
|
||||
$lang->block->default['onlyTask']['my']['3']['grid'] = 6;
|
||||
$lang->block->default['onlyTask']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['onlyTask']['my']['3']['params']['num'] = '20';
|
||||
$lang->block->default['onlyTask']['my']['4'] = $lang->block->default['project']['2'];
|
||||
$lang->block->default['onlyTask']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['onlyTask']['my']['4']['grid'] = 6;
|
||||
|
||||
$lang->block->num = '數量';
|
||||
$lang->block->type = '類型';
|
||||
$lang->block->orderBy = '排序';
|
||||
|
||||
@@ -137,10 +137,6 @@ class blockModel extends model
|
||||
->andWhere('module')->eq($module)
|
||||
->andWhere('hidden')->eq(0)
|
||||
->beginIF($type)->andWhere('type')->eq($type)->fi()
|
||||
->beginIF($this->config->global->flow != 'full')->andWhere('block')->notin('flowchart')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyStory')->andWhere('source')->notin('project,qa')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('source')->notin('product,qa')->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyTest')->andWhere('source')->notin('product,project')->fi()
|
||||
->orderBy('`order`')
|
||||
->fetchAll('id');
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class="panel-body">
|
||||
<div id='cmmiGantt'>
|
||||
<?php if(count($products) > 2): ?>
|
||||
<?php if(count($products) >= 2): ?>
|
||||
<?php echo html::select('cmmiGanttProductID', $products, $productID, "class='form-control chosen'"); ?>
|
||||
<?php endif;?>
|
||||
<?php if(empty($plans['data'])): ?>
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
<ul class="nav nav-secondary">
|
||||
<?php $isFirstTab = true; ?>
|
||||
<?php foreach($hasViewPriv as $type => $bool):?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTask' && $type == 'task') continue;?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTest' && $type == 'bug') continue;?>
|
||||
<li<?php if($isFirstTab) {echo ' class="active"';}?>>
|
||||
<a data-tab href='#assigntomeTab-<?php echo $type;?>' onClick="changeLabel('<?php echo $type;?>')">
|
||||
<?php echo $lang->block->availableBlocks->$type;?>
|
||||
@@ -27,8 +25,6 @@
|
||||
<div class="tab-content">
|
||||
<?php $isFirstTab = true; ?>
|
||||
<?php foreach($hasViewPriv as $type => $bool):?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTask' && $type == 'task') continue;?>
|
||||
<?php if($config->global->flow != 'full' && $config->global->flow != 'onlyTest' && $type == 'bug') continue;?>
|
||||
<div class="tab-pane<?php if($isFirstTab) {echo ' active'; $isFirstTab = false;}?>" id="assigntomeTab-<?php echo $type?>">
|
||||
<?php include "{$type}block.html.php";?>
|
||||
</div>
|
||||
|
||||
@@ -154,7 +154,6 @@ $(function()
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($this->config->global->flow != 'onlyTask'): ?>
|
||||
<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 $project->releasedStories;?></strong></div>
|
||||
<div class="progress">
|
||||
@@ -196,7 +195,6 @@ $(function()
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
<div class="col col-right">
|
||||
<h4><small class="text-muted"><?php echo date(DT_DATE3)?></small> <?php echo $lang->block->leftToday?></h4>
|
||||
<div class="row tiles">
|
||||
<?php if($this->config->global->flow == 'full' or $this->config->global->flow == 'onlyTask'):?>
|
||||
<div class="col tile">
|
||||
<div class="tile-title"><?php echo $lang->block->myTask?></div>
|
||||
<div class="tile-amount"><?php echo empty($tasks) ? 0 : html::a($this->createLink('my', 'task', 'type=assignedTo'), (int)$tasks);?></div>
|
||||
@@ -54,8 +53,6 @@
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->global->flow == 'full' or $this->config->global->flow == 'onlyTest'):?>
|
||||
<div class="col tile">
|
||||
<div class="tile-title"><?php echo $lang->block->myBug?></div>
|
||||
<div class="tile-amount"><?php echo empty($bugs) ? 0 : html::a($this->createLink('my', 'bug', 'type=assignedTo'), (int)$bugs);?></div>
|
||||
@@ -65,13 +62,10 @@
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->global->flow == 'full' or $this->config->global->flow == 'onlyStory'):?>
|
||||
<div class="col tile">
|
||||
<div class="tile-title"><?php echo $lang->block->myStory?></div>
|
||||
<div class="tile-amount"><?php echo empty($stories) ? 0 : html::a($this->createLink('my', 'story', 'type=assignedTo'), (int)$stories);?></div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -46,17 +46,6 @@ $config->bug->custom->createFields = $config->bug->list->customCreateFields
|
||||
$config->bug->custom->batchCreateFields = 'project,deadline,steps,type,severity,os,browser';
|
||||
$config->bug->custom->batchEditFields = 'type,severity,pri,branch,assignedTo,deadline,status,resolvedBy,resolution';
|
||||
|
||||
if($config->global->flow == 'onlyTest')
|
||||
{
|
||||
$config->bug->list->allFields = str_replace(array('project, ', 'story, ', 'task,'), '', $config->bug->list->allFields);
|
||||
$config->bug->list->exportFields = str_replace(array('project, ', 'story, ', 'task,'), '', $config->bug->list->exportFields);
|
||||
|
||||
$config->bug->list->customCreateFields = str_replace(array('project,', 'story,', 'task,'), '', $config->bug->list->customCreateFields);
|
||||
$config->bug->list->customBatchCreateFields = str_replace('project,', '', $config->bug->list->customBatchCreateFields);
|
||||
|
||||
$config->bug->custom->batchCreateFields = str_replace('project,', '', $config->bug->custom->batchCreateFields);
|
||||
}
|
||||
|
||||
$config->bug->editor = new stdclass();
|
||||
$config->bug->editor->create = array('id' => 'steps', 'tools' => 'bugTools');
|
||||
$config->bug->editor->edit = array('id' => 'steps,comment', 'tools' => 'bugTools');
|
||||
@@ -113,14 +102,6 @@ $config->bug->search['fields']['closedDate'] = $lang->bug->closedDate;
|
||||
$config->bug->search['fields']['lastEditedDate'] = $lang->bug->lastEditedDateAB;
|
||||
$config->bug->search['fields']['deadline'] = $lang->bug->deadline;
|
||||
|
||||
if($config->global->flow == 'onlyTest')
|
||||
{
|
||||
unset($config->bug->search['fields']['project']);
|
||||
unset($config->bug->search['fields']['plan']);
|
||||
unset($config->bug->search['fields']['toTask']);
|
||||
unset($config->bug->search['fields']['toStory']);
|
||||
}
|
||||
|
||||
$config->bug->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->bug->search['params']['keywords'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->bug->search['params']['steps'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
|
||||
@@ -31,14 +31,6 @@ class bug extends control
|
||||
$this->loadModel('task');
|
||||
$this->view->products = $this->products = $this->product->getPairs('nocode');
|
||||
|
||||
if($this->config->global->flow == 'onlyTest')
|
||||
{
|
||||
$this->config->bug->list->customCreateFields = str_replace(array('project,', 'story,', 'task,'), '', $this->config->bug->list->customCreateFields);
|
||||
$this->config->bug->list->customBatchCreateFields = str_replace('project,', '', $this->config->bug->list->customBatchCreateFields);
|
||||
|
||||
$this->config->bug->custom->batchCreateFields = str_replace('project,', '', $this->config->bug->custom->batchCreateFields);
|
||||
}
|
||||
|
||||
if(empty($this->products)) die($this->locate($this->createLink('product', 'showErrorNone', "fromModule=bug")));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,43 +1,4 @@
|
||||
$(function()
|
||||
{
|
||||
if($('#bugList thead th.c-title').width() < 150) $('#bugList thead th.c-title').width(150);
|
||||
|
||||
if(flow == 'onlyTest')
|
||||
{
|
||||
$('#subNavbar > .nav li[data-id=' + browseType + ']').addClass('active');
|
||||
var $more = $('#subNavbar > .nav > li[data-id=more]');
|
||||
if($more.find('.dropdown-menu').children().length)
|
||||
{
|
||||
$more.find('.dropdown-menu').children().each(function()
|
||||
{
|
||||
if($(this).hasClass('active')) $more.addClass('active');
|
||||
});
|
||||
}
|
||||
|
||||
var navWidth = $('#subNavbar > .nav').width();
|
||||
var leftWidth = 0;
|
||||
var rightWidth = 0;
|
||||
|
||||
$rightNav = $('#subNavbar > .nav > li.right');
|
||||
rightLength = $rightNav.length;
|
||||
for(i = 0; i < rightLength; i++) rightWidth += $rightNav.eq(i).width();
|
||||
|
||||
var maxWidth = navWidth - $('#subNavbar > .nav > #bysearchTab').width() - rightWidth - 100;
|
||||
|
||||
$('#subNavbar > .nav > li:not(.right)').each(function()
|
||||
{
|
||||
if(leftWidth > maxWidth)
|
||||
{
|
||||
if($(this).attr('id') != 'moreMenus' && $(this).attr('id') != 'bysearchTab')
|
||||
{
|
||||
$('#subNavbar').removeClass('hidden');
|
||||
$('#subNavbar > ul').append($(this)[0]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
leftWidth += $(this).width();
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
@@ -495,7 +495,6 @@ function notice()
|
||||
var branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
var link = createLink('release', 'create', 'productID=' + $('#product').val() + '&branch=' + branch);
|
||||
if(typeof(flow) != 'undefined' && flow == 'onlyTest') link = createLink('build', 'create','projectID=' + $('#product').val());
|
||||
link += config.requestType == 'GET' ? '&onlybody=yes' : '?onlybody=yes';
|
||||
html += '<a href="' + link + '" data-toggle="modal" data-type="iframe" style="padding-right:5px">' + createBuild + '</a> ';
|
||||
html += '<a href="javascript:loadProductBuilds(' + $('#product').val() + ')">' + refresh + '</a>';
|
||||
|
||||
+2
-29
@@ -91,35 +91,8 @@ class bugModel extends model
|
||||
$this->lang->modulePageActions = $pageActions;
|
||||
foreach($this->lang->bug->menu as $key => $menu)
|
||||
{
|
||||
if($this->config->global->flow == 'full') $this->loadModel('qa')->setSubMenu('bug', $key, $productID);
|
||||
if($this->config->global->flow != 'onlyTest')
|
||||
{
|
||||
$replace = $productID;
|
||||
}
|
||||
else
|
||||
{
|
||||
$replace = array();
|
||||
$replace['productID'] = $productID;
|
||||
$replace['branch'] = $branch;
|
||||
$replace['param'] = $moduleID;
|
||||
|
||||
/* Replace for dropdown submenu. */
|
||||
if(isset($this->lang->bug->subMenu->$key))
|
||||
{
|
||||
$subMenu = common::createSubMenu($this->lang->bug->subMenu->$key, $replace);
|
||||
|
||||
/* Avoid the menu shaking when change it by js. */
|
||||
if(isset($subMenu[$browseType]))
|
||||
{
|
||||
$currentSubMenu = $subMenu[$browseType];
|
||||
$this->lang->bug->menu->more['link'] = "$currentSubMenu->text|" . implode('|', $currentSubMenu->link);
|
||||
}
|
||||
|
||||
if(!empty($subMenu)) $this->lang->bug->menu->{$key}['subMenu'] = $subMenu;
|
||||
}
|
||||
|
||||
if($this->app->getMethodName() != 'view') $this->lang->bug->menu->bysearch = "<a class='querybox-toggle' id='bysearchTab'><i class='icon icon-search muted'> </i>{$this->lang->bug->byQuery}</a>";
|
||||
}
|
||||
$this->loadModel('qa')->setSubMenu('bug', $key, $productID);
|
||||
$replace = $productID;
|
||||
common::setMenuVars($this->lang->bug->menu, $key, $replace);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,13 +11,6 @@
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php if($config->global->flow == 'onlyTest'):?>
|
||||
<style>
|
||||
.nav > li > .btn-group > a, .nav > li > .btn-group > a:hover, .nav > li > .btn-group > a:focus{background: #1a4f85; border-color: #164270;}
|
||||
.outer.with-side #featurebar {background: none; border: none; line-height: 0; margin: 0; min-height: 0; padding: 0; }
|
||||
#querybox #searchform{border-bottom: 1px solid #ddd; margin-bottom: 20px;}
|
||||
</style>
|
||||
<?php endif;?>
|
||||
<?php
|
||||
include '../../common/view/datatable.fix.html.php';
|
||||
js::set('browseType', $browseType);
|
||||
|
||||
@@ -60,7 +60,7 @@ js::set('flow', $config->global->flow);
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $showProject = (strpos(",$showFields,", ',project,') !== false && $config->global->flow != 'onlyTest');?>
|
||||
<?php $showProject = (strpos(",$showFields,", ',project,') !== false);?>
|
||||
<tr>
|
||||
<th><?php echo ($showProject) ? $lang->bug->project : $lang->bug->type;?></th>
|
||||
|
||||
@@ -111,7 +111,7 @@ js::set('flow', $config->global->flow);
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->global->flow != 'onlyTest' && $showProject):?>
|
||||
<?php if($showProject):?>
|
||||
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
|
||||
<?php $showBrowser = strpos(",$showFields,", ',browser,') !== false;?>
|
||||
<tr>
|
||||
@@ -228,7 +228,7 @@ js::set('flow', $config->global->flow);
|
||||
$showStory = strpos(",$showFields,", ',story,') !== false;
|
||||
$showTask = strpos(",$showFields,", ',task,') !== false;
|
||||
?>
|
||||
<?php if(($showStory or $showTask) and $this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if(($showStory or $showTask)):?>
|
||||
<tr>
|
||||
<th><?php echo ($showStory) ? $lang->bug->story : $lang->bug->task;?></th>
|
||||
<?php if($showStory):?>
|
||||
|
||||
@@ -112,14 +112,12 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->productplan;?></th>
|
||||
<td>
|
||||
<span id="planIdBox"><?php echo html::select('plan', $plans, $bug->plan, "class='form-control chosen'");?></span>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->type;?></th>
|
||||
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, "class='form-control chosen'"); ?></td>
|
||||
@@ -172,7 +170,6 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><?php echo $lang->bug->legendPrjStoryTask;?></div>
|
||||
<table class='table table-form'>
|
||||
@@ -193,7 +190,6 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><?php echo $lang->bug->legendLife;?></div>
|
||||
<table class='table table-form'>
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
common::printIcon('bug', 'close', $params, $bug, 'button', '', '', 'text-danger iframe showinonlybody', true);
|
||||
common::printIcon('bug', 'activate', $params, $bug, 'button', '', '', 'text-success iframe showinonlybody', true);
|
||||
|
||||
if($config->global->flow != 'onlyTest') common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', $lang->icons['story'], '', '', '', '', $lang->bug->toStory);
|
||||
common::printIcon('bug', 'toStory', "product=$bug->product&branch=$bug->branch&module=0&story=0&project=0&bugID=$bug->id", $bug, 'button', $lang->icons['story'], '', '', '', '', $lang->bug->toStory);
|
||||
common::printIcon('bug', 'createCase', $convertParams, $bug, 'button', 'sitemap');
|
||||
|
||||
echo $this->buildOperateMenu($bug, 'view');
|
||||
@@ -96,9 +96,7 @@
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='#legendBasicInfo' data-toggle='tab'><?php echo $lang->bug->legendBasicInfo;?></a></li>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<li><a href='#legendPrjStoryTask' data-toggle='tab'><?php echo $lang->bug->legendPrjStoryTask;?></a></li>
|
||||
<?php endif;?>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='legendBasicInfo'>
|
||||
@@ -229,7 +227,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class='tab-pane' id='legendPrjStoryTask'>
|
||||
<table class='table table-data'>
|
||||
<tbody>
|
||||
@@ -258,7 +255,6 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -356,7 +352,6 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php if($bug->toStory != 0):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->toStory;?></th>
|
||||
@@ -369,7 +364,6 @@
|
||||
<td><?php echo html::a($this->createLink('task', 'view', "taskID=$bug->toTask", '', true), "#$bug->toTask $bug->toTaskTitle", '', "class='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
+69
-120
@@ -39,45 +39,27 @@ class build extends control
|
||||
$this->loadModel('project');
|
||||
$this->loadModel('user');
|
||||
|
||||
if($this->config->global->flow == 'onlyTest')
|
||||
{
|
||||
$product = $this->loadModel('product')->getByID($projectID);
|
||||
$products = $this->product->getPairs();
|
||||
$this->product->setMenu($products, $projectID);
|
||||
$this->lang->build->menu = $this->lang->product->menu;
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $projectID);
|
||||
|
||||
$productGroups = array();
|
||||
$product->branch = 0;
|
||||
foreach($products as $productID => $name) $productGroups[$productID]['branch'] = 0;
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
|
||||
$this->view->title = $this->lang->build->create;
|
||||
$this->view->product = $product;
|
||||
$this->view->branches = ($product and $product->type == 'normal') ? array() : $this->loadModel('branch')->getPairs($projectID);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $projectID);
|
||||
/* Assign. */
|
||||
$project = $this->loadModel('project')->getById($projectID);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
$productGroups = $this->project->getProducts($projectID);
|
||||
$productID = $productID ? $productID : key($productGroups);
|
||||
$products = array();
|
||||
foreach($productGroups as $product) $products[$product->id] = $product->name;
|
||||
|
||||
/* Assign. */
|
||||
$project = $this->loadModel('project')->getById($projectID);
|
||||
|
||||
$productGroups = $this->project->getProducts($projectID);
|
||||
$productID = $productID ? $productID : key($productGroups);
|
||||
$products = array();
|
||||
foreach($productGroups as $product) $products[$product->id] = $product->name;
|
||||
|
||||
$this->view->title = $project->name . $this->lang->colon . $this->lang->build->create;
|
||||
$this->view->position[] = html::a($this->createLink('project', 'task', "projectID=$projectID"), $project->name);
|
||||
$this->view->position[] = $this->lang->build->create;
|
||||
$this->view->product = isset($productGroups[$productID]) ? $productGroups[$productID] : '';
|
||||
$this->view->branches = (isset($productGroups[$productID]) and $productGroups[$productID]->type == 'normal') ? array() : $this->loadModel('branch')->getPairs($productID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
}
|
||||
$this->view->title = $project->name . $this->lang->colon . $this->lang->build->create;
|
||||
$this->view->position[] = html::a($this->createLink('project', 'task', "projectID=$projectID"), $project->name);
|
||||
$this->view->position[] = $this->lang->build->create;
|
||||
$this->view->product = isset($productGroups[$productID]) ? $productGroups[$productID] : '';
|
||||
$this->view->branches = (isset($productGroups[$productID]) and $productGroups[$productID]->type == 'normal') ? array() : $this->loadModel('branch')->getPairs($productID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->orderBy = $orderBy;
|
||||
|
||||
$this->view->products = $products;
|
||||
$this->view->lastBuild = $this->build->getLast($projectID);
|
||||
@@ -116,65 +98,46 @@ class build extends control
|
||||
|
||||
$build = $this->build->getById((int)$buildID);
|
||||
|
||||
if($this->config->global->flow == 'onlyTest')
|
||||
$this->loadModel('project');
|
||||
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
|
||||
/* Assign. */
|
||||
$project = $this->loadModel('project')->getById($build->project);
|
||||
if(empty($project))
|
||||
{
|
||||
$product = $this->loadModel('product')->getById($build->product);
|
||||
$products = $this->product->getPairs();
|
||||
$this->product->setMenu($products, $build->product);
|
||||
$this->lang->build->menu = $this->lang->product->menu;
|
||||
|
||||
$productGroups = array();
|
||||
$product->branch = 0;
|
||||
foreach($products as $productID => $name) $productGroups[$productID]['branch'] = 0;
|
||||
|
||||
$this->view->title = $this->lang->build->edit;
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
$this->view->product = $product;
|
||||
$this->view->branches = ($product and $product->type == 'normal') ? array() : $this->loadModel('branch')->getPairs($build->product);
|
||||
$project = new stdclass();
|
||||
$project->name = '';
|
||||
}
|
||||
else
|
||||
|
||||
$projects = $this->loadModel('product')->getProjectPairs($build->product, $build->branch, 'nodeleted');
|
||||
if(!isset($projects[$build->project])) $projects[$build->project] = $project->name;
|
||||
|
||||
$productGroups = $this->project->getProducts($build->project);
|
||||
|
||||
$this->loadModel('product');
|
||||
if(!isset($productGroups[$build->product]))
|
||||
{
|
||||
$this->loadModel('project');
|
||||
|
||||
/* Set menu. */
|
||||
$this->project->setMenu($this->project->getPairs(), $build->project);
|
||||
|
||||
/* Get stories and bugs. */
|
||||
$orderBy = 'status_asc, stage_asc, id_desc';
|
||||
|
||||
/* Assign. */
|
||||
$project = $this->loadModel('project')->getById($build->project);
|
||||
if(empty($project))
|
||||
{
|
||||
$project = new stdclass();
|
||||
$project->name = '';
|
||||
}
|
||||
|
||||
$projects = $this->loadModel('product')->getProjectPairs($build->product, $build->branch, 'nodeleted');
|
||||
if(!isset($projects[$build->project])) $projects[$build->project] = $project->name;
|
||||
|
||||
$productGroups = $this->project->getProducts($build->project);
|
||||
|
||||
$this->loadModel('product');
|
||||
if(!isset($productGroups[$build->product]))
|
||||
{
|
||||
$product = $this->product->getById($build->product);
|
||||
$product->branch = $build->branch;
|
||||
$productGroups[$build->product] = $product;
|
||||
}
|
||||
|
||||
$products = array();
|
||||
foreach($productGroups as $product) $products[$product->id] = $product->name;
|
||||
|
||||
$this->view->title = $project->name . $this->lang->colon . $this->lang->build->edit;
|
||||
$this->view->position[] = html::a($this->createLink('project', 'task', "projectID=$build->project"), $project->name);
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
$this->view->product = isset($productGroups[$build->product]) ? $productGroups[$build->product] : '';
|
||||
$this->view->branches = (isset($productGroups[$build->product]) and $productGroups[$build->product]->type == 'normal') ? array() : $this->loadModel('branch')->getPairs($build->product);
|
||||
$this->view->projects = $projects;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$product = $this->product->getById($build->product);
|
||||
$product->branch = $build->branch;
|
||||
$productGroups[$build->product] = $product;
|
||||
}
|
||||
|
||||
$products = array();
|
||||
foreach($productGroups as $product) $products[$product->id] = $product->name;
|
||||
|
||||
$this->view->title = $project->name . $this->lang->colon . $this->lang->build->edit;
|
||||
$this->view->position[] = html::a($this->createLink('project', 'task', "projectID=$build->project"), $project->name);
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
$this->view->product = isset($productGroups[$build->product]) ? $productGroups[$build->product] : '';
|
||||
$this->view->branches = (isset($productGroups[$build->product]) and $productGroups[$build->product]->type == 'normal') ? array() : $this->loadModel('branch')->getPairs($build->product);
|
||||
$this->view->projects = $projects;
|
||||
$this->view->orderBy = $orderBy;
|
||||
|
||||
$this->view->productGroups = $productGroups;
|
||||
$this->view->products = $products;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter', $build->builder);
|
||||
@@ -221,39 +184,26 @@ class build extends control
|
||||
->page($bugPager)
|
||||
->fetchAll();
|
||||
|
||||
if($this->config->global->flow == 'onlyTest')
|
||||
{
|
||||
$products = $this->loadModel('product')->getPairs();
|
||||
$this->product->setMenu($products, $build->product, $buildID);
|
||||
$this->lang->build->menu = $this->lang->product->menu;
|
||||
$storyPager = new pager($type == 'story' ? $recTotal : 0, $recPerPage, $type == 'story' ? $pageID : 1);
|
||||
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($build->stories)->andWhere('deleted')->eq(0)
|
||||
->beginIF($type == 'story')->orderBy($orderBy)->fi()
|
||||
->page($storyPager)
|
||||
->fetchAll('id');
|
||||
$stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in($build->stories)->andWhere('branch')->eq($build->branch)->fetchPairs('story', 'stage');
|
||||
foreach($stages as $storyID => $stage)$stories[$storyID]->stage = $stage;
|
||||
|
||||
$this->view->title = "BUILD #$build->id $build->name - " . $build->productName;
|
||||
$this->view->position[] = html::a($this->createLink('product', 'build', "productID=$build->product"), $build->productName);
|
||||
$this->view->position[] = $this->lang->build->view;
|
||||
}
|
||||
else
|
||||
{
|
||||
$storyPager = new pager($type == 'story' ? $recTotal : 0, $recPerPage, $type == 'story' ? $pageID : 1);
|
||||
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('id')->in($build->stories)->andWhere('deleted')->eq(0)
|
||||
->beginIF($type == 'story')->orderBy($orderBy)->fi()
|
||||
->page($storyPager)
|
||||
->fetchAll('id');
|
||||
$stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in($build->stories)->andWhere('branch')->eq($build->branch)->fetchPairs('story', 'stage');
|
||||
foreach($stages as $storyID => $stage)$stories[$storyID]->stage = $stage;
|
||||
$this->loadModel('project')->setMenu($this->project->getPairs(), $build->project, $buildID);
|
||||
$projects = $this->project->getPairs('empty');
|
||||
|
||||
$this->loadModel('project')->setMenu($this->project->getPairs(), $build->project, $buildID);
|
||||
$projects = $this->project->getPairs('empty');
|
||||
$this->view->title = "BUILD #$build->id $build->name - " . $projects[$build->project];
|
||||
$this->view->position[] = html::a($this->createLink('project', 'task', "projectID=$build->project"), $projects[$build->project]);
|
||||
$this->view->position[] = $this->lang->build->view;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->storyPager = $storyPager;
|
||||
|
||||
$this->view->title = "BUILD #$build->id $build->name - " . $projects[$build->project];
|
||||
$this->view->position[] = html::a($this->createLink('project', 'task', "projectID=$build->project"), $projects[$build->project]);
|
||||
$this->view->position[] = $this->lang->build->view;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->storyPager = $storyPager;
|
||||
|
||||
$generatedBugPager = new pager($type == 'generatedBug' ? $recTotal : 0, $recPerPage, $type == 'generatedBug' ? $pageID : 1);
|
||||
$this->view->generatedBugs = $this->bug->getProjectBugs($build->project, $build->id, '', 0, $type == 'generatedBug' ? $orderBy : 'status_desc,id_desc', '', $generatedBugPager);
|
||||
$this->view->generatedBugPager = $generatedBugPager;
|
||||
}
|
||||
$generatedBugPager = new pager($type == 'generatedBug' ? $recTotal : 0, $recPerPage, $type == 'generatedBug' ? $pageID : 1);
|
||||
$this->view->generatedBugs = $this->bug->getProjectBugs($build->project, $build->id, '', 0, $type == 'generatedBug' ? $orderBy : 'status_desc,id_desc', '', $generatedBugPager);
|
||||
$this->view->generatedBugPager = $generatedBugPager;
|
||||
|
||||
$this->executeHooks($buildID);
|
||||
|
||||
@@ -309,7 +259,6 @@ class build extends control
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
if($this->config->global->flow == 'onlyTest') die(js::locate($this->createLink('project', 'build', "productID=$build->product"), 'parent'));
|
||||
die(js::locate($this->createLink('project', 'build', "projectID=$build->project"), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
+19
-22
@@ -44,30 +44,27 @@ function loadURL(url, type)
|
||||
|
||||
$(function()
|
||||
{
|
||||
if(flow != 'onlyTest')
|
||||
if(link == 'true') showLink(buildID, type, param);
|
||||
var infoShowed = false;
|
||||
$('.nav.nav-tabs a[data-toggle="tab"]').on('shown.zui.tab', function(e)
|
||||
{
|
||||
if(link == 'true') showLink(buildID, type, param);
|
||||
var infoShowed = false;
|
||||
$('.nav.nav-tabs a[data-toggle="tab"]').on('shown.zui.tab', function(e)
|
||||
var href = $(e.target).attr('href');
|
||||
var tabPane = $(href + '.tab-pane');
|
||||
if(tabPane.size() == 0) return;
|
||||
var formID = tabPane.find('.linkBox').find('form:last');
|
||||
if(formID.size() == 0) formID = tabPane.find('form:last');
|
||||
|
||||
if(href == '#buildInfo' && !infoShowed)
|
||||
{
|
||||
var href = $(e.target).attr('href');
|
||||
var tabPane = $(href + '.tab-pane');
|
||||
if(tabPane.size() == 0) return;
|
||||
var formID = tabPane.find('.linkBox').find('form:last');
|
||||
if(formID.size() == 0) formID = tabPane.find('form:last');
|
||||
|
||||
if(href == '#buildInfo' && !infoShowed)
|
||||
var $tr = $('#buildInfo .detail-content .table-data tbody tr:first');
|
||||
width = $tr.width() - $tr.find('th').width();
|
||||
$('#buildInfo img').each(function()
|
||||
{
|
||||
var $tr = $('#buildInfo .detail-content .table-data tbody tr:first');
|
||||
width = $tr.width() - $tr.find('th').width();
|
||||
$('#buildInfo img').each(function()
|
||||
{
|
||||
if($(this).parent().prop('tagName').toLowerCase() == 'a') $(this).unwrap();
|
||||
setImageSize($(this), width, 0);
|
||||
});
|
||||
if($(this).parent().prop('tagName').toLowerCase() == 'a') $(this).unwrap();
|
||||
setImageSize($(this), width, 0);
|
||||
});
|
||||
|
||||
infoShowed = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
infoShowed = true;
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
@@ -208,8 +208,6 @@ class buildModel extends model
|
||||
->remove('resolvedBy,allchecker,files,labels,uid')
|
||||
->get();
|
||||
|
||||
if($this->config->global->flow == 'onlyTest') $build->project = 0;
|
||||
|
||||
$build = $this->loadModel('file')->processImgURL($build, $this->config->build->editor->create['id'], $this->post->uid);
|
||||
$this->dao->insert(TABLE_BUILD)->data($build)
|
||||
->autoCheck()
|
||||
@@ -244,7 +242,6 @@ class buildModel extends model
|
||||
->remove('allchecker,resolvedBy,files,labels,uid')
|
||||
->get();
|
||||
|
||||
if($this->config->global->flow == 'onlyTest') $this->config->build->edit->requiredFields = str_replace('project,', '', $this->config->build->edit->requiredFields);
|
||||
$build = $this->loadModel('file')->processImgURL($build, $this->config->build->editor->edit['id'], $this->post->uid);
|
||||
$this->dao->update(TABLE_BUILD)->data($build)
|
||||
->autoCheck()
|
||||
|
||||
@@ -43,12 +43,10 @@
|
||||
</td>
|
||||
<td><?php if($disabled) echo $lang->build->notice->changeProduct;?></td>
|
||||
</tr>
|
||||
<?php if($this->config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->build->project;?></th>
|
||||
<td id='projectsBox'><?php echo html::select('project', $projects, $build->project, "class='form-control chosen' required");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->build->name;?></th>
|
||||
<td><?php echo html::input('name', $build->name, "class='form-control' required");?></td>
|
||||
|
||||
@@ -59,28 +59,6 @@ tbody tr td:first-child input{display:none;}
|
||||
</div>
|
||||
</div>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<?php if($config->global->flow == 'onlyTest'):?>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><?php echo $lang->build->desc;?></div>
|
||||
<div class='detail-content article-content'><?php echo $build->desc;?></div>
|
||||
</div>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $build->files, 'fieldset' => 'true'));?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
<div id="mainActions" class='main-actions'>
|
||||
<nav class="container"></nav>
|
||||
<div class="btn-toolbar">
|
||||
<?php
|
||||
common::printBack($browseLink);
|
||||
if(!$build->deleted)
|
||||
{
|
||||
echo "<div class='divider'></div>";
|
||||
common::printIcon('build', 'edit', "buildID=$build->id", $build);
|
||||
common::printIcon('build', 'delete', "buildID=$build->id", $build, 'button', '', 'hiddenwin');
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class='tabs' id='tabsNav'>
|
||||
<?php $countStories = count($stories); $countBugs = count($bugs); $countGeneratedBugs = count($generatedBugs);?>
|
||||
<ul class='nav nav-tabs'>
|
||||
@@ -360,7 +338,6 @@ tbody tr td:first-child input{display:none;}
|
||||
<td style='word-break:break-all;'><?php echo html::a($build->filePath, $build->filePath, '_blank');?></td>
|
||||
</tr>
|
||||
<?php $this->printExtendFields($build, 'table', 'inForm=0');?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<tr>
|
||||
<th style="vertical-align:top"><?php echo $lang->build->desc;?></th>
|
||||
<td>
|
||||
@@ -371,24 +348,18 @@ tbody tr td:first-child input{display:none;}
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php echo $this->fetch('file', 'printFiles', array('files' => $build->files, 'fieldset' => 'true'));?>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/action.html.php';?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<?php js::set('param', helper::safe64Decode($param))?>
|
||||
<?php js::set('link', $link)?>
|
||||
<?php js::set('buildID', $build->id)?>
|
||||
<?php js::set('type', $type)?>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -41,24 +41,6 @@ class caselibModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
if($this->config->global->flow == 'onlyTest')
|
||||
{
|
||||
$modules = $this->loadModel('tree')->getModulePairs($libID, 'caselib');
|
||||
$moduleName = ($moduleID && isset($modules[$moduleID])) ? $modules[$moduleID] : $this->lang->tree->all;
|
||||
|
||||
if(!$isMobile)
|
||||
{
|
||||
$dropMenuLink = helper::createLink('tree', 'ajaxGetDropMenu', "objectID=$libID&module=caselib&method=browse");
|
||||
$selectHtml .= "<div class='btn-group'><button id='currentModule' data-toggle='dropdown' type='button' class='btn btn-limit'>{$moduleName} <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
|
||||
$selectHtml .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>';
|
||||
$selectHtml .= "</div></div>";
|
||||
}
|
||||
else
|
||||
{
|
||||
$selectHtml .= "<a id='currentModule' href=\"javascript:showSearchMenu('tree', '$libID', 'caselib', 'browse', '')\">{$moduleName} <span class='icon-caret-down'></span></a><div id='currentBranchDropMenu' class='hidden affix enter-from-bottom layer'></div>";
|
||||
}
|
||||
}
|
||||
|
||||
setCookie("lastCaseLib", $libID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
|
||||
|
||||
$pageNav = '';
|
||||
|
||||
@@ -19,7 +19,6 @@ js::set('confirmDelete', $lang->testcase->confirmDelete);
|
||||
js::set('batchDelete', $lang->testcase->confirmBatchDelete);
|
||||
js::set('flow', $config->global->flow);
|
||||
?>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
@@ -61,7 +60,6 @@ js::set('flow', $config->global->flow);
|
||||
<?php common::printLink('caselib', 'createCase', $params, "<i class='icon-plus'></i>" . $lang->testcase->create, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div id="mainContent" class="main-row fade">
|
||||
<div class="side-col" id="sidebar">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
@@ -218,13 +216,6 @@ js::set('flow', $config->global->flow);
|
||||
</div>
|
||||
<script>
|
||||
$('#module' + moduleID).addClass('active');
|
||||
<?php if($config->global->flow == 'full'):?>
|
||||
$('#<?php echo $this->session->libBrowseType?>Tab').addClass('btn-active-text').append(" <span class='label label-light label-badge'><?php echo $pager->recTotal;?></span>");
|
||||
<?php endif;?>
|
||||
if(flow == 'onlyTest')
|
||||
{
|
||||
$('#subNavbar > .nav > li').removeClass('active');
|
||||
$('#subNavbar > .nav > li[data-id=' + browseType + ']').addClass('active');
|
||||
}
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -692,243 +692,3 @@ $lang->icons['confirmStoryChange'] = 'search';
|
||||
$lang->icons['score'] = 'tint';
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
global $config;
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
{
|
||||
/* Remove project, report and qa module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->doc);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust search items. */
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
{
|
||||
/* Remove product, report and qa module. */
|
||||
unset($lang->menu->product);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[10]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Adjust sub menu of project module. */
|
||||
unset($lang->project->menu->story);
|
||||
unset($lang->project->menu->build);
|
||||
unset($lang->project->menu->qa);
|
||||
unset($lang->project->menu->product);
|
||||
unset($lang->project->menu->doc);
|
||||
|
||||
/* Remove sub menu of product module. */
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
{
|
||||
/* Remove project and test module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->qa);
|
||||
unset($lang->menu->report);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Remove sub menu of project module. */
|
||||
unset($lang->project->menu);
|
||||
unset($lang->project->menuOrder);
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->project->menu->list = array('alias' => '');
|
||||
|
||||
/* Add bug, testcase and testtask module. */
|
||||
$lang->menu->bug = 'Bug|bug|index';
|
||||
$lang->menu->testcase = 'Functional Test|testcase|index';
|
||||
$lang->menu->unit = 'Unit Test|testtask|browseUnits';
|
||||
$lang->menu->testsuite = 'Test Suite|testsuite|index';
|
||||
$lang->menu->testtask = 'Test Aufgaben|testtask|index';
|
||||
$lang->menu->caselib = 'Fall Bibliothek|caselib|browse';
|
||||
|
||||
$lang->menuOrder[6] = 'bug';
|
||||
$lang->menuOrder[7] = 'testcase';
|
||||
$lang->menuOrder[8] = 'unit';
|
||||
$lang->menuOrder[9] = 'testsuite';
|
||||
$lang->menuOrder[10] = 'testtask';
|
||||
$lang->menuOrder[11] = 'caselib';
|
||||
$lang->menuOrder[12] = 'product';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->all = 'Alle|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->unclosed = 'Öffnen|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'VonMirErstellt|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'MirZugeordnet|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'VonMirGelöst|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'ZuSchließen|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Ungelöst|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->more = array('link' => 'Mehr|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->bug->subMenu = new stdclass();
|
||||
$lang->bug->subMenu->more = new stdclass();
|
||||
$lang->bug->subMenu->more->unconfirmed = 'Unbestätigt|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->subMenu->more->assigntonull = 'Nicht zugeordnet|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = 'Wartend|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = 'Verschoben|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = 'Überfällig|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = 'Zu bestätigen|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->all = 'Alle|testcase|browse|productID=%s&branch=%s&browseType=all';
|
||||
$lang->testcase->menu->wait = 'Warten|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => 'Test Suite|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->testcase->subMenu = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite->create = 'Suite erstellen|testsuite|create|productID=%s';
|
||||
|
||||
$lang->testcase->menuOrder[5] = 'product';
|
||||
$lang->testcase->menuOrder[10] = 'all';
|
||||
$lang->testcase->menuOrder[15] = 'wait';
|
||||
$lang->testcase->menuOrder[20] = 'suite';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = 'Alle|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->wait = 'Warten|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->doing = 'In Arbeit|testtask|browse|productID=%s&branch=%s&type=%s,doing';
|
||||
$lang->testtask->menu->blocked = 'Blockiert|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
|
||||
$lang->testtask->menu->done = 'Erledigt|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->report = array('link' => 'Berichte|testreport|browse');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
|
||||
/* Adjust sub menu of caselib module. */
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->all = 'Alle|caselib|browse|libID=%s&browseType=all';
|
||||
$lang->caselib->menu->wait = 'Warten|caselib|browse|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->view = 'Anzeige|caselib|view|libID=%s';
|
||||
|
||||
$lang->caselib->menuOrder[5] = 'lib';
|
||||
$lang->caselib->menuOrder[10] = 'all';
|
||||
$lang->caselib->menuOrder[15] = 'wait';
|
||||
$lang->caselib->menuOrder[20] = 'view';
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->story);
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->release);
|
||||
unset($lang->product->menu->dynamic);
|
||||
unset($lang->product->menu->plan);
|
||||
unset($lang->product->menu->roadmap);
|
||||
unset($lang->product->menu->doc);
|
||||
unset($lang->product->menu->module);
|
||||
unset($lang->product->menu->index);
|
||||
|
||||
$lang->product->menu->build = array('link' => 'Build|product|build', 'subModule' => 'build');
|
||||
|
||||
$lang->product->menuOrder[5] = 'build';
|
||||
$lang->product->menuOrder[10] = 'view';
|
||||
$lang->product->menuOrder[15] = 'order';
|
||||
|
||||
$lang->build->menu = $lang->product->menu;
|
||||
$lang->build->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->caselib = 'caselib';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
$lang->menugroup->build = 'product';
|
||||
|
||||
/* Adjust search objects. */
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
@@ -815,326 +815,3 @@ $lang->icons['confirmStoryChange'] = 'search';
|
||||
$lang->icons['score'] = 'tint';
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
global $config;
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
{
|
||||
/* Remove project, report and qa module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->doc);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust search items. */
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
{
|
||||
/* Remove product, report and qa module. */
|
||||
unset($lang->menu->product);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[10]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Adjust sub menu of project module. */
|
||||
unset($lang->project->menu->story);
|
||||
unset($lang->project->menu->build);
|
||||
unset($lang->project->menu->qa);
|
||||
unset($lang->project->menu->product);
|
||||
unset($lang->project->menu->doc);
|
||||
|
||||
/* Remove sub menu of product module. */
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
{
|
||||
/* Remove project and test module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->qa);
|
||||
unset($lang->menu->report);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Remove sub menu of project module. */
|
||||
unset($lang->project->menu);
|
||||
unset($lang->project->menuOrder);
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->project->menu->list = array('alias' => '');
|
||||
|
||||
/* Add bug, testcase and testtask module. */
|
||||
$lang->menu->bug = 'Bug|bug|index';
|
||||
$lang->menu->testcase = 'Functional Test|testcase|index';
|
||||
$lang->menu->unit = 'Unit Test|testtask|browseUnits';
|
||||
$lang->menu->testsuite = 'Suite|testsuite|index';
|
||||
$lang->menu->testtask = 'Request|testtask|index';
|
||||
$lang->menu->caselib = 'Case Library|caselib|browse';
|
||||
|
||||
$lang->menuOrder[6] = 'bug';
|
||||
$lang->menuOrder[7] = 'testcase';
|
||||
$lang->menuOrder[8] = 'unit';
|
||||
$lang->menuOrder[9] = 'testsuite';
|
||||
$lang->menuOrder[10] = 'testtask';
|
||||
$lang->menuOrder[11] = 'caselib';
|
||||
$lang->menuOrder[12] = 'product';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->unclosed = 'Unclosed|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'ReportedByMe|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'AssignedToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'ResolvedByMe|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'ToBeClosed|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Active|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->more = array('link' => 'More|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->bug->subMenu = new stdclass();
|
||||
$lang->bug->subMenu->more = new stdclass();
|
||||
$lang->bug->subMenu->more->unconfirmed = 'Unconfirmed|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->subMenu->more->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = 'Stalled|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = 'Postponed|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = 'ToBeConfirmed|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->all = 'All|testcase|browse|productID=%s&branch=%s&browseType=all';
|
||||
$lang->testcase->menu->wait = 'Waiting|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => 'Suite|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->testcase->subMenu = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite->create = 'Create Suite|testsuite|create|productID=%s';
|
||||
|
||||
$lang->testcase->menuOrder[5] = 'product';
|
||||
$lang->testcase->menuOrder[10] = 'all';
|
||||
$lang->testcase->menuOrder[15] = 'wait';
|
||||
$lang->testcase->menuOrder[20] = 'suite';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = 'All|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->wait = 'Waiting|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->doing = 'Doing|testtask|browse|productID=%s&branch=%s&type=%s,doing';
|
||||
$lang->testtask->menu->blocked = 'Blocked|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
|
||||
$lang->testtask->menu->done = 'Done|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->report = array('link' => 'Report|testreport|browse');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
|
||||
/* Adjust sub menu of caselib module. */
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->all = 'All|caselib|browse|libID=%s&browseType=all';
|
||||
$lang->caselib->menu->wait = 'Waiting|caselib|browse|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->view = 'View|caselib|view|libID=%s';
|
||||
|
||||
$lang->caselib->menuOrder[5] = 'lib';
|
||||
$lang->caselib->menuOrder[10] = 'all';
|
||||
$lang->caselib->menuOrder[15] = 'wait';
|
||||
$lang->caselib->menuOrder[20] = 'view';
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->story);
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->release);
|
||||
unset($lang->product->menu->dynamic);
|
||||
unset($lang->product->menu->plan);
|
||||
unset($lang->product->menu->roadmap);
|
||||
unset($lang->product->menu->doc);
|
||||
unset($lang->product->menu->module);
|
||||
unset($lang->product->menu->index);
|
||||
|
||||
$lang->product->menu->build = array('link' => 'Build|product|build', 'subModule' => 'build');
|
||||
|
||||
$lang->product->menuOrder[5] = 'build';
|
||||
$lang->product->menuOrder[10] = 'view';
|
||||
$lang->product->menuOrder[15] = 'order';
|
||||
|
||||
$lang->build->menu = $lang->product->menu;
|
||||
$lang->build->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->caselib = 'caselib';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
$lang->menugroup->build = 'product';
|
||||
|
||||
/* Adjust search objects. */
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
/* Cmmi menu. */
|
||||
$lang->menu->cmmi = new stdclass();
|
||||
$lang->menu->cmmi->programindex = array('link' => 'Home|program|index|program={PROGRAM}');
|
||||
$lang->menu->cmmi->programplan = array('link' => 'Programplan|programplan|browse|program={PROGRAM}', 'subModule' => 'programplan');
|
||||
$lang->menu->cmmi->project = array('link' => $lang->projectCommon . '|project|task|projectID={PROJECT}', 'subModule' => ',project,task,');
|
||||
$lang->menu->cmmi->weekly = array('link' => 'Weekly|weekly|index|program={PROGRAM}', 'subModule' => ',milestone,');
|
||||
$lang->menu->cmmi->doc = array('link' => 'Doc|doc|index|program={PROGRAM}');
|
||||
$lang->menu->cmmi->product = array('link' => 'Story|product|browse|product={PRODUCT}&branch=&browseType=unclosed&queryID=0&storyType=requirement', 'subModule' => ',story,');
|
||||
$lang->menu->cmmi->design = 'Design|design|browse|product={PRODUCT}';
|
||||
$lang->menu->cmmi->ci = 'Ci|repo|browse|';
|
||||
$lang->menu->cmmi->qa = array('link' => 'QA|bug|browse|product={PRODUCT}', 'subModule' => ',testcase,testtask,testsuite,testreport,caselib,');
|
||||
$lang->menu->cmmi->release = array('link' => 'Release|release|browse|product={PRODUCT}', 'subModule' => 'release');
|
||||
$lang->menu->cmmi->issue = 'Issue|issue|browse|';
|
||||
$lang->menu->cmmi->risk = 'Risk|risk|browse|';
|
||||
$lang->menu->cmmi->list = array('link' => 'More|workestimation|index|program={PROGRAM}', 'class' => 'dropdown dropdown-hover cmmi-list', 'subModule' => 'stakeholder,workestimation,durationestimation,budget,pssp,stakeholder');
|
||||
|
||||
/* Srcum menu. */
|
||||
$lang->menu->srcum = new stdclass();
|
||||
$lang->menu->srcum->programindex = array('link' => 'Home|program|index|program={PROGRAM}');
|
||||
|
||||
$lang->cmmi = new stdclass();
|
||||
$lang->cmmi->subMenu = new stdclass();
|
||||
$lang->cmmi->subMenu->list = new stdclass();
|
||||
$lang->cmmi->subMenu->list->workestimation = array('link' => 'Workestimation|workestimation|index|program=%s', 'subModule' => 'durationestimation,budget');
|
||||
$lang->cmmi->subMenu->list->program = 'Program|program|edit|';
|
||||
|
||||
$lang->cmmiproduct = new stdclass();
|
||||
$lang->workestimation = new stdclass();
|
||||
$lang->budget = new stdclass();
|
||||
$lang->programplan = new stdclass();
|
||||
$lang->review = new stdclass();
|
||||
$lang->weekly = new stdclass();
|
||||
$lang->milestone = new stdclass();
|
||||
$lang->design = new stdclass();
|
||||
$lang->auditplan = new stdclass();
|
||||
$lang->cm = new stdclass();
|
||||
$lang->nc = new stdclass();
|
||||
$lang->pssp = new stdclass();
|
||||
$lang->issue = new stdclass();
|
||||
$lang->risk = new stdclass();
|
||||
$lang->stakeholder = new stdclass();
|
||||
$lang->durationestimation = new stdclass();
|
||||
|
||||
$lang->workestimation->menu = new stdclass();
|
||||
$lang->budget->menu = new stdclass();
|
||||
$lang->programplan->menu = new stdclass();
|
||||
$lang->review->menu = new stdclass();
|
||||
$lang->weekly->menu = new stdclass();
|
||||
$lang->milestone->menu = new stdclass();
|
||||
$lang->cmmiproduct->menu = new stdclass();
|
||||
$lang->design->menu = new stdclass();
|
||||
$lang->auditplan->menu = new stdclass();
|
||||
$lang->cm->menu = new stdclass();
|
||||
$lang->pssp->menu = new stdclass();
|
||||
$lang->issue->menu = new stdclass();
|
||||
$lang->risk->menu = new stdclass();
|
||||
$lang->stakeholder->menu = new stdclass();
|
||||
$lang->durationestimation->menu = new stdclass();
|
||||
|
||||
$lang->workestimation->menu->index = 'Workestimation|workestimation|index|program={PROGRAM}';
|
||||
$lang->workestimation->menu->duration = array('link' => 'Durationestimation|durationestimation|index|program={PROGRAM}', 'subModule' => 'durationestimation');
|
||||
$lang->workestimation->menu->budget = array('link' => 'Budget|budget|summary|', 'subModule' => 'budget');
|
||||
|
||||
$lang->durationestimation->menu = $lang->workestimation->menu;
|
||||
$lang->budget->menu = $lang->workestimation->menu;
|
||||
|
||||
$lang->programplan->menu->gantt = array('link' => 'Gantt|programplan|browse|programID={PROGRAM}&productID={PRODUCT}&type=gantt');
|
||||
$lang->programplan->menu->lists = 'Stage|programplan|browse|programID={PROGRAM}&productID={PRODUCT}&type=lists';
|
||||
|
||||
$lang->weekly->menu->browse = 'Weekly|weekly|index|program={PROGRAM}';
|
||||
$lang->weekly->menu->issue = 'Milestone|milestone|index|program={PROGRAM}';
|
||||
|
||||
$lang->cmmiproduct->menu->plan = array('link' => 'Plan|productplan|browse|productID={PRODUCT}', 'subModule' => 'productplan');
|
||||
$lang->cmmiproduct->menu->requirement = 'User Story|product|browse|product={PRODUCT}&branch=&browseType=unclosed&queryID=0&storyType=requirement';
|
||||
$lang->cmmiproduct->menu->story = 'Software Story|product|browse|product={PRODUCT}&branch=&browseType=unclosed&queryID=0&storyType=story';
|
||||
$lang->cmmiproduct->menu->track = 'Track|story|track|product={PRODUCT}';
|
||||
|
||||
$lang->milestone->menu = $lang->weekly->menu;
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
|
||||
$lang->noMenuModule = array('my', 'todo', 'effort', 'program', 'report', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'holiday', 'custom', 'auditcl', 'subject', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search');
|
||||
$lang->haveMenuMethod = array('custom');
|
||||
|
||||
@@ -692,243 +692,3 @@ $lang->icons['confirmStoryChange'] = 'search';
|
||||
$lang->icons['score'] = 'tint';
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
global $config;
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
{
|
||||
/* Remove project, report and qa module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->doc);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust search items. */
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
{
|
||||
/* Remove product, report and qa module. */
|
||||
unset($lang->menu->product);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[10]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Adjust sub menu of project module. */
|
||||
unset($lang->project->menu->story);
|
||||
unset($lang->project->menu->build);
|
||||
unset($lang->project->menu->qa);
|
||||
unset($lang->project->menu->product);
|
||||
unset($lang->project->menu->doc);
|
||||
|
||||
/* Remove sub menu of product module. */
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
{
|
||||
/* Remove project and test module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->qa);
|
||||
unset($lang->menu->report);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Remove sub menu of project module. */
|
||||
unset($lang->project->menu);
|
||||
unset($lang->project->menuOrder);
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->project->menu->list = array('alias' => '');
|
||||
|
||||
/* Add bug, testcase and testtask module. */
|
||||
$lang->menu->bug = 'Bug|bug|index';
|
||||
$lang->menu->testcase = 'Tests Fonctionnels|testcase|index';
|
||||
$lang->menu->unit = 'Unité de Test|testtask|browseUnits';
|
||||
$lang->menu->testsuite = 'Cahier de Recette|testsuite|index';
|
||||
$lang->menu->testtask = 'Recette|testtask|index';
|
||||
$lang->menu->caselib = 'Library Recette|caselib|browse';
|
||||
|
||||
$lang->menuOrder[6] = 'bug';
|
||||
$lang->menuOrder[7] = 'testcase';
|
||||
$lang->menuOrder[8] = 'unit';
|
||||
$lang->menuOrder[9] = 'testsuite';
|
||||
$lang->menuOrder[10] = 'testtask';
|
||||
$lang->menuOrder[11] = 'caselib';
|
||||
$lang->menuOrder[12] = 'product';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->all = 'Tous|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->unclosed = 'Non Fermés|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'Détectés par Moi|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'Affectés à Moi|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'Résolus par Moi|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'A Fermer|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Actifs|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->more = array('link' => 'More|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->bug->subMenu = new stdclass();
|
||||
$lang->bug->subMenu->more = new stdclass();
|
||||
$lang->bug->subMenu->more->unconfirmed = 'Non confirmés|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->subMenu->more->assigntonull = 'Non affectés|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = 'Persistants|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = 'Reportés|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = 'Retard|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = 'A Confirmer|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->all = 'Tous|testcase|browse|productID=%s&branch=%s&browseType=all';
|
||||
$lang->testcase->menu->wait = 'En Attente|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => 'Cahier Recette|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->testcase->subMenu = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite->create = 'Rédiger Cahier de Recette|testsuite|create|productID=%s';
|
||||
|
||||
$lang->testcase->menuOrder[5] = 'product';
|
||||
$lang->testcase->menuOrder[10] = 'all';
|
||||
$lang->testcase->menuOrder[15] = 'wait';
|
||||
$lang->testcase->menuOrder[20] = 'suite';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = 'Toutes|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->wait = 'En Attente|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->doing = 'En Déroulement|testtask|browse|productID=%s&branch=%s&type=%s,doing';
|
||||
$lang->testtask->menu->blocked = 'Bloquées|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
|
||||
$lang->testtask->menu->done = 'Jouées|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->report = array('link' => 'Rapports|testreport|browse');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
|
||||
/* Adjust sub menu of caselib module. */
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->all = 'Toutes|caselib|browse|libID=%s&browseType=all';
|
||||
$lang->caselib->menu->wait = 'En Attente|caselib|browse|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->view = 'Vues|caselib|view|libID=%s';
|
||||
|
||||
$lang->caselib->menuOrder[5] = 'lib';
|
||||
$lang->caselib->menuOrder[10] = 'all';
|
||||
$lang->caselib->menuOrder[15] = 'wait';
|
||||
$lang->caselib->menuOrder[20] = 'view';
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->story);
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->release);
|
||||
unset($lang->product->menu->dynamic);
|
||||
unset($lang->product->menu->plan);
|
||||
unset($lang->product->menu->roadmap);
|
||||
unset($lang->product->menu->doc);
|
||||
unset($lang->product->menu->module);
|
||||
unset($lang->product->menu->index);
|
||||
|
||||
$lang->product->menu->build = array('link' => 'Build|product|build', 'subModule' => 'build');
|
||||
|
||||
$lang->product->menuOrder[5] = 'build';
|
||||
$lang->product->menuOrder[10] = 'view';
|
||||
$lang->product->menuOrder[15] = 'order';
|
||||
|
||||
$lang->build->menu = $lang->product->menu;
|
||||
$lang->build->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->caselib = 'caselib';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
$lang->menugroup->build = 'product';
|
||||
|
||||
/* Adjust search objects. */
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
@@ -692,243 +692,3 @@ $lang->icons['confirmStoryChange'] = 'search';
|
||||
$lang->icons['score'] = 'tint';
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
global $config;
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
{
|
||||
/* Remove project, report and qa module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->doc);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust search items. */
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
{
|
||||
/* Remove product, report and qa module. */
|
||||
unset($lang->menu->product);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[10]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Adjust sub menu of project module. */
|
||||
unset($lang->project->menu->story);
|
||||
unset($lang->project->menu->build);
|
||||
unset($lang->project->menu->qa);
|
||||
unset($lang->project->menu->product);
|
||||
unset($lang->project->menu->doc);
|
||||
|
||||
/* Remove sub menu of product module. */
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
{
|
||||
/* Remove project and test module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->qa);
|
||||
unset($lang->menu->report);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Remove sub menu of project module. */
|
||||
unset($lang->project->menu);
|
||||
unset($lang->project->menuOrder);
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->project->menu->list = array('alias' => '');
|
||||
|
||||
/* Add bug, testcase and testtask module. */
|
||||
$lang->menu->bug = 'Bug|bug|index';
|
||||
$lang->menu->testcase = 'Tình huống|testcase|index';
|
||||
$lang->menu->unit = 'Unit Test|testtask|browseUnits';
|
||||
$lang->menu->testsuite = 'Suite|testsuite|index';
|
||||
$lang->menu->testtask = 'Yêu cầu|testtask|index';
|
||||
$lang->menu->caselib = 'Thư viện tình huống|caselib|browse';
|
||||
|
||||
$lang->menuOrder[6] = 'bug';
|
||||
$lang->menuOrder[7] = 'testcase';
|
||||
$lang->menuOrder[8] = 'unit';
|
||||
$lang->menuOrder[9] = 'testsuite';
|
||||
$lang->menuOrder[10] = 'testtask';
|
||||
$lang->menuOrder[11] = 'caselib';
|
||||
$lang->menuOrder[12] = 'product';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->all = 'All|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->unclosed = 'Unclosed|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = 'ReportedByMe|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = 'AssignedToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = 'ResolvedByMe|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = 'ToBeClosed|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = 'Active|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->more = array('link' => 'Thêm|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->bug->subMenu = new stdclass();
|
||||
$lang->bug->subMenu->more = new stdclass();
|
||||
$lang->bug->subMenu->more->unconfirmed = 'Unconfirmed|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->subMenu->more->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = 'Stalled|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = 'Postponed|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = 'ToBeConfirmed|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s';
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->all = 'All|testcase|browse|productID=%s&branch=%s&browseType=all';
|
||||
$lang->testcase->menu->wait = 'Waiting|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => 'Suite|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->testcase->subMenu = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite->create = 'Tạo Suite|testsuite|create|productID=%s';
|
||||
|
||||
$lang->testcase->menuOrder[5] = 'product';
|
||||
$lang->testcase->menuOrder[10] = 'all';
|
||||
$lang->testcase->menuOrder[15] = 'wait';
|
||||
$lang->testcase->menuOrder[20] = 'suite';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = 'All|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->wait = 'Waiting|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->doing = 'Doing|testtask|browse|productID=%s&branch=%s&type=%s,doing';
|
||||
$lang->testtask->menu->blocked = 'Blocked|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
|
||||
$lang->testtask->menu->done = 'Done|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->report = array('link' => 'Báo cáo|testreport|browse');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
|
||||
/* Adjust sub menu of caselib module. */
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->all = 'All|caselib|browse|libID=%s&browseType=all';
|
||||
$lang->caselib->menu->wait = 'Waiting|caselib|browse|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->view = 'View|caselib|view|libID=%s';
|
||||
|
||||
$lang->caselib->menuOrder[5] = 'lib';
|
||||
$lang->caselib->menuOrder[10] = 'all';
|
||||
$lang->caselib->menuOrder[15] = 'wait';
|
||||
$lang->caselib->menuOrder[20] = 'view';
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->story);
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->release);
|
||||
unset($lang->product->menu->dynamic);
|
||||
unset($lang->product->menu->plan);
|
||||
unset($lang->product->menu->roadmap);
|
||||
unset($lang->product->menu->doc);
|
||||
unset($lang->product->menu->module);
|
||||
unset($lang->product->menu->index);
|
||||
|
||||
$lang->product->menu->build = array('link' => 'Bản dựng|product|build', 'subModule' => 'build');
|
||||
|
||||
$lang->product->menuOrder[5] = 'Bản dựng';
|
||||
$lang->product->menuOrder[10] = 'view';
|
||||
$lang->product->menuOrder[15] = 'order';
|
||||
|
||||
$lang->build->menu = $lang->product->menu;
|
||||
$lang->build->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->caselib = 'caselib';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
$lang->menugroup->build = 'product';
|
||||
|
||||
/* Adjust search objects. */
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
@@ -815,247 +815,6 @@ $lang->icons['score'] = 'tint';
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
global $config;
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
{
|
||||
/* Remove project, report and qa module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->doc);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust search items. */
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
{
|
||||
/* Remove product, report and qa module. */
|
||||
unset($lang->menu->product);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[10]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Adjust sub menu of project module. */
|
||||
unset($lang->project->menu->story);
|
||||
unset($lang->project->menu->build);
|
||||
unset($lang->project->menu->qa);
|
||||
unset($lang->project->menu->product);
|
||||
unset($lang->project->menu->doc);
|
||||
|
||||
/* Remove sub menu of product module. */
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
{
|
||||
/* Remove project and test module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->qa);
|
||||
unset($lang->menu->report);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Remove sub menu of project module. */
|
||||
unset($lang->project->menu);
|
||||
unset($lang->project->menuOrder);
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->project->menu->list = array('alias' => '');
|
||||
|
||||
/* Add bug, testcase and testtask module. */
|
||||
$lang->menu->bug = 'Bug|bug|index';
|
||||
$lang->menu->testcase = '功能测试|testcase|browse';
|
||||
$lang->menu->unit = '单元测试|testtask|browseUnits';
|
||||
$lang->menu->testsuite = '套件|testsuite|index';
|
||||
$lang->menu->testtask = '测试单|testtask|index';
|
||||
$lang->menu->caselib = '用例库|caselib|browse';
|
||||
|
||||
$lang->menuOrder[6] = 'bug';
|
||||
$lang->menuOrder[7] = 'testcase';
|
||||
$lang->menuOrder[8] = 'unit';
|
||||
$lang->menuOrder[9] = 'testsuite';
|
||||
$lang->menuOrder[10] = 'testtask';
|
||||
$lang->menuOrder[11] = 'caselib';
|
||||
$lang->menuOrder[12] = 'product';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->unclosed = '未关闭|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = '由我创建|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = '指派给我|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = '由我解决|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = '待关闭|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = '未解决|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->more = array('link' => '更多|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->bug->subMenu = new stdclass();
|
||||
$lang->bug->subMenu->more = new stdclass();
|
||||
$lang->bug->subMenu->more->unconfirmed = '未确认|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->subMenu->more->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = '久未处理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = '过期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = "{$lang->storyCommon}变动|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s";
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
|
||||
$lang->testcase->menu->wait = '待评审|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => '套件|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->testcase->subMenu = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite->create = '建套件|testsuite|create|productID=%s';
|
||||
|
||||
$lang->testcase->menuOrder[5] = 'product';
|
||||
$lang->testcase->menuOrder[10] = 'all';
|
||||
$lang->testcase->menuOrder[15] = 'wait';
|
||||
$lang->testcase->menuOrder[20] = 'suite';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = '所有|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->wait = '待测版本|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->doing = '测试中版本|testtask|browse|productID=%s&branch=%s&type=%s,doing';
|
||||
$lang->testtask->menu->blocked = '被阻塞版本|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
|
||||
$lang->testtask->menu->done = '已测版本|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->report = array('link' => '报告|testreport|browse', 'alias' => 'view,create,edit');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
|
||||
/* Adjust sub menu of caselib module. */
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->all = '所有|caselib|browse|libID=%s&browseType=all';
|
||||
$lang->caselib->menu->wait = '待评审|caselib|browse|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->view = '概况|caselib|view|libID=%s';
|
||||
|
||||
$lang->caselib->menuOrder[5] = 'lib';
|
||||
$lang->caselib->menuOrder[10] = 'all';
|
||||
$lang->caselib->menuOrder[15] = 'wait';
|
||||
$lang->caselib->menuOrder[20] = 'view';
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->story);
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->release);
|
||||
unset($lang->product->menu->dynamic);
|
||||
unset($lang->product->menu->plan);
|
||||
unset($lang->product->menu->roadmap);
|
||||
unset($lang->product->menu->doc);
|
||||
unset($lang->product->menu->module);
|
||||
unset($lang->product->menu->index);
|
||||
|
||||
$lang->product->menu->build = array('link' => '版本|product|build', 'subModule' => 'build');
|
||||
|
||||
$lang->product->menuOrder[5] = 'build';
|
||||
$lang->product->menuOrder[10] = 'view';
|
||||
$lang->product->menuOrder[15] = 'order';
|
||||
|
||||
$lang->build->menu = $lang->product->menu;
|
||||
$lang->build->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->caselib = 'caselib';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
$lang->menugroup->build = 'product';
|
||||
|
||||
/* Adjust search objects. */
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
/* Cmmi menu. */
|
||||
$lang->menu->cmmi = new stdclass();
|
||||
$lang->menu->cmmi->programindex = array('link' => '仪表盘|program|index|program={PROGRAM}');
|
||||
@@ -1087,6 +846,7 @@ $lang->workestimation = new stdclass();
|
||||
$lang->budget = new stdclass();
|
||||
$lang->programplan = new stdclass();
|
||||
$lang->review = new stdclass();
|
||||
$lang->weekly = new stdclass();
|
||||
$lang->milestone = new stdclass();
|
||||
$lang->design = new stdclass();
|
||||
$lang->auditplan = new stdclass();
|
||||
@@ -1102,6 +862,7 @@ $lang->workestimation->menu = new stdclass();
|
||||
$lang->budget->menu = new stdclass();
|
||||
$lang->programplan->menu = new stdclass();
|
||||
$lang->review->menu = new stdclass();
|
||||
$lang->weekly->menu = new stdclass();
|
||||
$lang->milestone->menu = new stdclass();
|
||||
$lang->cmmiproduct->menu = new stdclass();
|
||||
$lang->design->menu = new stdclass();
|
||||
|
||||
@@ -692,243 +692,3 @@ $lang->icons['confirmStoryChange'] = 'search';
|
||||
$lang->icons['score'] = 'tint';
|
||||
|
||||
include (dirname(__FILE__) . '/menuOrder.php');
|
||||
|
||||
global $config;
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyStory')
|
||||
{
|
||||
/* Remove project, report and qa module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->doc);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust search items. */
|
||||
unset($lang->searchObjects['bug']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['build']);
|
||||
unset($lang->searchObjects['testtask']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTask')
|
||||
{
|
||||
/* Remove product, report and qa module. */
|
||||
unset($lang->menu->product);
|
||||
unset($lang->menu->report);
|
||||
unset($lang->menu->qa);
|
||||
|
||||
unset($lang->menuOrder[10]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->bug);
|
||||
unset($lang->my->menu->testtask);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Adjust sub menu of project module. */
|
||||
unset($lang->project->menu->story);
|
||||
unset($lang->project->menu->build);
|
||||
unset($lang->project->menu->qa);
|
||||
unset($lang->project->menu->product);
|
||||
unset($lang->project->menu->doc);
|
||||
|
||||
/* Remove sub menu of product module. */
|
||||
unset($lang->product->menu);
|
||||
unset($lang->product->menuOrder);
|
||||
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['product']);
|
||||
unset($lang->searchObjects['testcase']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
unset($lang->searchObjects['testsuite']);
|
||||
unset($lang->searchObjects['caselib']);
|
||||
unset($lang->searchObjects['testreport']);
|
||||
}
|
||||
|
||||
if(isset($config->global->flow) and $config->global->flow == 'onlyTest')
|
||||
{
|
||||
/* Remove project and test module. */
|
||||
unset($lang->menu->project);
|
||||
unset($lang->menu->qa);
|
||||
unset($lang->menu->report);
|
||||
|
||||
unset($lang->menuOrder[15]);
|
||||
unset($lang->menuOrder[20]);
|
||||
unset($lang->menuOrder[35]);
|
||||
|
||||
/* Rename product module. */
|
||||
$lang->menu->product = "{$lang->productCommon}|product|index";
|
||||
|
||||
/* Adjust sub menu of my dashboard. */
|
||||
unset($lang->my->menu->task);
|
||||
unset($lang->my->menu->myProject);
|
||||
unset($lang->my->menu->story);
|
||||
|
||||
/* Remove sub menu of project module. */
|
||||
unset($lang->project->menu);
|
||||
unset($lang->project->menuOrder);
|
||||
$lang->project->menu = new stdclass();
|
||||
$lang->project->menu->list = array('alias' => '');
|
||||
|
||||
/* Add bug, testcase and testtask module. */
|
||||
$lang->menu->bug = 'Bug|bug|index';
|
||||
$lang->menu->testcase = '功能測試|testcase|browse';
|
||||
$lang->menu->unit = '單元測試|testtask|browseUnits';
|
||||
$lang->menu->testsuite = '套件|testsuite|index';
|
||||
$lang->menu->testtask = '測試單|testtask|index';
|
||||
$lang->menu->caselib = '用例庫|caselib|browse';
|
||||
|
||||
$lang->menuOrder[6] = 'bug';
|
||||
$lang->menuOrder[7] = 'testcase';
|
||||
$lang->menuOrder[8] = 'unit';
|
||||
$lang->menuOrder[9] = 'testsuite';
|
||||
$lang->menuOrder[10] = 'testtask';
|
||||
$lang->menuOrder[11] = 'caselib';
|
||||
$lang->menuOrder[12] = 'product';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->bug->menu = new stdclass();
|
||||
$lang->bug->menu->all = '所有|bug|browse|productID=%s&branch=%s&browseType=all¶m=%s';
|
||||
$lang->bug->menu->unclosed = '未關閉|bug|browse|productID=%s&branch=%s&browseType=unclosed¶m=%s';
|
||||
$lang->bug->menu->openedbyme = '由我創建|bug|browse|productID=%s&branch=%s&browseType=openedbyme¶m=%s';
|
||||
$lang->bug->menu->assigntome = '指派給我|bug|browse|productID=%s&branch=%s&browseType=assigntome¶m=%s';
|
||||
$lang->bug->menu->resolvedbyme = '由我解決|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme¶m=%s';
|
||||
$lang->bug->menu->toclosed = '待關閉|bug|browse|productID=%s&branch=%s&browseType=toclosed¶m=%s';
|
||||
$lang->bug->menu->unresolved = '未解決|bug|browse|productID=%s&branch=%s&browseType=unresolved¶m=%s';
|
||||
$lang->bug->menu->more = array('link' => '更多|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->bug->subMenu = new stdclass();
|
||||
$lang->bug->subMenu->more = new stdclass();
|
||||
$lang->bug->subMenu->more->unconfirmed = '未確認|bug|browse|productID=%s&branch=%s&browseType=unconfirmed¶m=%s';
|
||||
$lang->bug->subMenu->more->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull¶m=%s';
|
||||
$lang->bug->subMenu->more->longlifebugs = '久未處理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs¶m=%s';
|
||||
$lang->bug->subMenu->more->overduebugs = '過期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs¶m=%s';
|
||||
$lang->bug->subMenu->more->needconfirm = "{$lang->storyCommon}變動|bug|browse|productID=%s&branch=%s&browseType=needconfirm¶m=%s";
|
||||
|
||||
$lang->bug->menuOrder[5] = 'product';
|
||||
$lang->bug->menuOrder[10] = 'all';
|
||||
$lang->bug->menuOrder[15] = 'unclosed';
|
||||
$lang->bug->menuOrder[20] = 'openedbyme';
|
||||
$lang->bug->menuOrder[25] = 'assigntome';
|
||||
$lang->bug->menuOrder[30] = 'resolvedbyme';
|
||||
$lang->bug->menuOrder[35] = 'toclosed';
|
||||
$lang->bug->menuOrder[40] = 'unresolved';
|
||||
$lang->bug->menuOrder[45] = 'unconfirmed';
|
||||
$lang->bug->menuOrder[50] = 'assigntonull';
|
||||
$lang->bug->menuOrder[55] = 'longlifebugs';
|
||||
$lang->bug->menuOrder[60] = 'postponedbugs';
|
||||
$lang->bug->menuOrder[65] = 'overduebugs';
|
||||
$lang->bug->menuOrder[70] = 'needconfirm';
|
||||
|
||||
/* Adjust sub menu of testcase. */
|
||||
$lang->testcase->menu = new stdclass();
|
||||
$lang->testcase->menu->all = '所有|testcase|browse|productID=%s&branch=%s&browseType=all';
|
||||
$lang->testcase->menu->wait = '待評審|testcase|browse|productID=%s&branch=%s&browseType=wait';
|
||||
$lang->testcase->menu->bysuite = array('link' => '套件|testsuite|create|productID=%s', 'class' => 'dropdown dropdown-hover');
|
||||
|
||||
$lang->testcase->subMenu = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite = new stdclass();
|
||||
$lang->testcase->subMenu->bysuite->create = '建套件|testsuite|create|productID=%s';
|
||||
|
||||
$lang->testcase->menuOrder[5] = 'product';
|
||||
$lang->testcase->menuOrder[10] = 'all';
|
||||
$lang->testcase->menuOrder[15] = 'wait';
|
||||
$lang->testcase->menuOrder[20] = 'suite';
|
||||
|
||||
/* Adjust sub menu of bug module. */
|
||||
$lang->testsuite->menu = new stdclass();
|
||||
|
||||
$lang->testsuite->menuOrder[5] = 'product';
|
||||
|
||||
/* Adjust sub menu of testtask. */
|
||||
$lang->testtask->menu = new stdclass();
|
||||
$lang->testtask->menu->totalStatus = '所有|testtask|browse|productID=%s&branch=%s&type=%s,totalStatus';
|
||||
$lang->testtask->menu->wait = '待測版本|testtask|browse|productID=%s&branch=%s&type=%s,wait';
|
||||
$lang->testtask->menu->doing = '測試中版本|testtask|browse|productID=%s&branch=%s&type=%s,doing';
|
||||
$lang->testtask->menu->blocked = '被阻塞版本|testtask|browse|productID=%s&branch=%s&type=%s,blocked';
|
||||
$lang->testtask->menu->done = '已測版本|testtask|browse|productID=%s&branch=%s&type=%s,done';
|
||||
$lang->testtask->menu->report = array('link' => '報告|testreport|browse', 'alias' => 'view,create,edit');
|
||||
|
||||
$lang->testtask->menuOrder[5] = 'product';
|
||||
$lang->testtask->menuOrder[10] = 'scope';
|
||||
$lang->testtask->menuOrder[15] = 'totalStatus';
|
||||
$lang->testtask->menuOrder[20] = 'wait';
|
||||
$lang->testtask->menuOrder[25] = 'doing';
|
||||
$lang->testtask->menuOrder[30] = 'blocked';
|
||||
$lang->testtask->menuOrder[35] = 'done';
|
||||
$lang->testtask->menuOrder[40] = 'report';
|
||||
|
||||
$lang->testreport->menu = $lang->testtask->menu;
|
||||
$lang->testreport->menuOrder = $lang->testtask->menuOrder;
|
||||
|
||||
/* Adjust sub menu of caselib module. */
|
||||
$lang->caselib->menu = new stdclass();
|
||||
$lang->caselib->menu->all = '所有|caselib|browse|libID=%s&browseType=all';
|
||||
$lang->caselib->menu->wait = '待評審|caselib|browse|libID=%s&browseType=wait';
|
||||
$lang->caselib->menu->view = '概況|caselib|view|libID=%s';
|
||||
|
||||
$lang->caselib->menuOrder[5] = 'lib';
|
||||
$lang->caselib->menuOrder[10] = 'all';
|
||||
$lang->caselib->menuOrder[15] = 'wait';
|
||||
$lang->caselib->menuOrder[20] = 'view';
|
||||
|
||||
/* Adjust sub menu of product module. */
|
||||
unset($lang->product->menu->story);
|
||||
unset($lang->product->menu->project);
|
||||
unset($lang->product->menu->release);
|
||||
unset($lang->product->menu->dynamic);
|
||||
unset($lang->product->menu->plan);
|
||||
unset($lang->product->menu->roadmap);
|
||||
unset($lang->product->menu->doc);
|
||||
unset($lang->product->menu->module);
|
||||
unset($lang->product->menu->index);
|
||||
|
||||
$lang->product->menu->build = array('link' => '版本|product|build', 'subModule' => 'build');
|
||||
|
||||
$lang->product->menuOrder[5] = 'build';
|
||||
$lang->product->menuOrder[10] = 'view';
|
||||
$lang->product->menuOrder[15] = 'order';
|
||||
|
||||
$lang->build->menu = $lang->product->menu;
|
||||
$lang->build->menuOrder = $lang->product->menuOrder;
|
||||
|
||||
/* Adjust menu group. */
|
||||
$lang->menugroup->bug = 'bug';
|
||||
$lang->menugroup->testcase = 'testcase';
|
||||
$lang->menugroup->case = 'testcase';
|
||||
$lang->menugroup->testtask = 'testtask';
|
||||
$lang->menugroup->testsuite = 'testsuite';
|
||||
$lang->menugroup->caselib = 'caselib';
|
||||
$lang->menugroup->testreport = 'testtask';
|
||||
$lang->menugroup->build = 'product';
|
||||
|
||||
/* Adjust search objects. */
|
||||
unset($lang->searchObjects['story']);
|
||||
unset($lang->searchObjects['task']);
|
||||
unset($lang->searchObjects['release']);
|
||||
unset($lang->searchObjects['project']);
|
||||
unset($lang->searchObjects['productplan']);
|
||||
}
|
||||
|
||||
+3
-26
@@ -588,15 +588,6 @@ class commonModel extends model
|
||||
}
|
||||
if($module == $currentModule and ($method == $currentMethod or strpos(",$alias,", ",$currentMethod,") !== false)) $active = 'active';
|
||||
|
||||
/* Avoid user thinking the page is shaking when the menu toggle class 'active' */
|
||||
if($config->global->flow == 'onlyTest')
|
||||
{
|
||||
if($currentModule == 'bug' && $currentMethod == 'browse') $active = '';
|
||||
if($currentModule == 'testcase' && $currentMethod == 'browse') $active = '';
|
||||
if($currentModule == 'testtask' && $currentMethod == 'browse') $active = '';
|
||||
if($currentModule == 'caselib' && $currentMethod == 'browse') $active = '';
|
||||
}
|
||||
|
||||
$label = $menuItem->text;
|
||||
$subMenu = '';
|
||||
/* Print sub menus. */
|
||||
@@ -633,7 +624,7 @@ class commonModel extends model
|
||||
$subProgram .= '</ul>';
|
||||
}
|
||||
|
||||
if($config->global->flow != 'onlyTest' && $currentModule == strtolower($subModule) && $currentMethod == strtolower($subMethod)) $subActive = 'active';
|
||||
if($currentModule == strtolower($subModule) && $currentMethod == strtolower($subMethod)) $subActive = 'active';
|
||||
|
||||
$subMenu .= "<li class='$subActive' data-id='$subMenuItem->name'>" . html::a($subLink, $subLabel) . $subProgram . '</li>';
|
||||
}
|
||||
@@ -681,12 +672,7 @@ class commonModel extends model
|
||||
{
|
||||
$searchObject = $methodName;
|
||||
}
|
||||
if(empty($lang->searchObjects[$searchObject]))
|
||||
{
|
||||
$searchObject = 'bug';
|
||||
if($config->global->flow == 'onlyStory') $searchObject = 'story';
|
||||
if($config->global->flow == 'onlyTask') $searchObject = 'task';
|
||||
}
|
||||
if(empty($lang->searchObjects[$searchObject])) $searchObject = 'bug';
|
||||
|
||||
echo "<div id='searchbox'>";
|
||||
echo "<div class='input-group'>";
|
||||
@@ -787,15 +773,6 @@ class commonModel extends model
|
||||
}
|
||||
if($module == $currentModule and ($method == $currentMethod or strpos(",$alias,", ",$currentMethod,") !== false)) $active = 'active';
|
||||
|
||||
/* Avoid user thinking the page is shaking when the menu toggle class 'active' */
|
||||
if($config->global->flow == 'onlyTest')
|
||||
{
|
||||
if($currentModule == 'bug' && $currentMethod == 'browse') $active = '';
|
||||
if($currentModule == 'testcase' && $currentMethod == 'browse') $active = '';
|
||||
if($currentModule == 'testtask' && $currentMethod == 'browse') $active = '';
|
||||
if($currentModule == 'caselib' && $currentMethod == 'browse') $active = '';
|
||||
}
|
||||
|
||||
$label = $menuItem->text;
|
||||
$subMenu = '';
|
||||
/* Print sub menus. */
|
||||
@@ -816,7 +793,7 @@ class commonModel extends model
|
||||
|
||||
$subLink = helper::createLink($subModule, $subMethod, $subParams);
|
||||
|
||||
if($config->global->flow != 'onlyTest' && $currentModule == strtolower($subModule) && $currentMethod == strtolower($subMethod)) $subActive = 'active';
|
||||
if($currentModule == strtolower($subModule) && $currentMethod == strtolower($subMethod)) $subActive = 'active';
|
||||
|
||||
$subMenu .= "<li class='$subActive' data-id='$subMenuItem->name'>" . html::a($subLink, $subLabel) . '</li>';
|
||||
}
|
||||
|
||||
@@ -27,9 +27,7 @@
|
||||
<?php endforeach;?>
|
||||
<div class="input-control space w-150px"><?php echo html::select('account', $users, $account, 'onchange=changeUser(this.value) class="form-control chosen"');?></div>
|
||||
<div class="input-control space w-150px"><?php echo html::select('product', $products, $product, 'onchange=changeProduct(this.value) class="form-control chosen"');?></div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class="input-control space w-150px"><?php echo html::select('project', $projects, $project, 'onchange=changeProject(this.value) class="form-control chosen"'); ?></div>
|
||||
<?php endif;?>
|
||||
<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> <?php echo $lang->action->dynamic->search;?></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -555,9 +555,6 @@ class custom extends control
|
||||
public function ajaxGetMenu($module = 'main', $method = '', $type = '')
|
||||
{
|
||||
if($this->config->global->flow == 'full') $this->loadModel('project')->setMenu(array(), 0);
|
||||
if($this->config->global->flow == 'onlyTest') $this->loadModel('testcase')->setMenu(array(), 0);
|
||||
if($this->config->global->flow == 'onlyTest') $this->loadModel('bug')->setMenu(array(), 0);
|
||||
if($this->config->global->flow == 'onlyTask') $this->loadModel('project')->setMenu(array(), 0);
|
||||
if($type === 'all')
|
||||
{
|
||||
$menu = array();
|
||||
|
||||
@@ -134,9 +134,6 @@ $lang->custom->productProject->relation['1_2'] = 'Dự án - Sprint';
|
||||
$lang->custom->productProject->notice = 'Chọn một mô hình phù hợp với doanh nghiệp của bạn.';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Quản lý vòng đời ứng dụng';
|
||||
$lang->custom->workingList['onlyTest'] = 'Quản lý kiểm thử';
|
||||
$lang->custom->workingList['onlyStory'] = 'Quản lý câu chuyện';
|
||||
$lang->custom->workingList['onlyTask'] = 'Quản lý nhiệm vụ';
|
||||
|
||||
$lang->custom->menuTip = 'Click để hiện/ẩn menu. Kéo thả để chuyển vị trí hiển thị.';
|
||||
$lang->custom->saveFail = 'Lưu thất bại!';
|
||||
|
||||
@@ -134,9 +134,6 @@ $lang->custom->productProject->relation['1_2'] = '項目 - 衝刺';
|
||||
$lang->custom->productProject->notice = '請根據實際情況選擇適合自己團隊的概念。';
|
||||
|
||||
$lang->custom->workingList['full'] = '完整研發管理工具';
|
||||
$lang->custom->workingList['onlyTest'] = '測試管理工具';
|
||||
$lang->custom->workingList['onlyStory'] = "{$lang->storyCommon}管理工具";
|
||||
$lang->custom->workingList['onlyTask'] = '任務管理工具';
|
||||
|
||||
$lang->custom->menuTip = '點擊顯示或隱藏導航條目,拖拽來更改顯示順序。';
|
||||
$lang->custom->saveFail = '保存失敗!';
|
||||
|
||||
@@ -27,11 +27,9 @@
|
||||
<nav id='subNavbar'>
|
||||
<ul class='nav nav-default'></ul>
|
||||
</nav>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<nav id='mainMenu'>
|
||||
<ul class='nav nav-default'></ul>
|
||||
</nav>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<div class='text-left'>
|
||||
<?php if(common::hasPriv('custom', 'setPublic')):?>
|
||||
|
||||
@@ -109,12 +109,6 @@ $lang->doc->libIconList['custom'] = 'icon-folder-o';
|
||||
$lang->doc->systemLibs['product'] = $lang->productCommon . 'Dok Bibliothek';
|
||||
$lang->doc->systemLibs['project'] = $lang->projectCommon . 'Dok Bibliothek';
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']);
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']);
|
||||
|
||||
$lang->doc->aclList['open'] = 'Öffentlich';
|
||||
$lang->doc->aclList['custom'] = 'Eigene';
|
||||
$lang->doc->aclList['private'] = 'Privat';
|
||||
|
||||
@@ -109,12 +109,6 @@ $lang->doc->libIconList['custom'] = 'icon-folder-o';
|
||||
$lang->doc->systemLibs['product'] = $lang->productCommon;
|
||||
$lang->doc->systemLibs['project'] = $lang->projectCommon;
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']);
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']);
|
||||
|
||||
$lang->doc->aclList['open'] = 'Public';
|
||||
$lang->doc->aclList['custom'] = 'Custom';
|
||||
$lang->doc->aclList['private'] = 'Private';
|
||||
|
||||
@@ -109,12 +109,6 @@ $lang->doc->libIconList['custom'] = 'icon-folder-o';
|
||||
$lang->doc->systemLibs['product'] = $lang->productCommon;
|
||||
$lang->doc->systemLibs['project'] = $lang->projectCommon;
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']);
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']);
|
||||
|
||||
$lang->doc->aclList['open'] = 'Public';
|
||||
$lang->doc->aclList['custom'] = 'Person.';
|
||||
$lang->doc->aclList['private'] = 'Privé';
|
||||
|
||||
@@ -109,12 +109,6 @@ $lang->doc->libIconList['custom'] = 'icon-folder-o';
|
||||
$lang->doc->systemLibs['product'] = $lang->productCommon;
|
||||
$lang->doc->systemLibs['project'] = $lang->projectCommon;
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']);
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']);
|
||||
|
||||
$lang->doc->aclList['open'] = 'Công khai';
|
||||
$lang->doc->aclList['custom'] = 'Tùy biến';
|
||||
$lang->doc->aclList['private'] = 'Riêng tư';
|
||||
|
||||
@@ -109,12 +109,6 @@ $lang->doc->libIconList['custom'] = 'icon-folder-o';
|
||||
$lang->doc->systemLibs['product'] = $lang->productCommon;
|
||||
$lang->doc->systemLibs['project'] = $lang->projectCommon;
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']);
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']);
|
||||
|
||||
$lang->doc->aclList['open'] = '公开';
|
||||
$lang->doc->aclList['custom'] = '自定义';
|
||||
$lang->doc->aclList['private'] = '私有';
|
||||
|
||||
@@ -109,12 +109,6 @@ $lang->doc->libIconList['custom'] = 'icon-folder-o';
|
||||
$lang->doc->systemLibs['product'] = $lang->productCommon;
|
||||
$lang->doc->systemLibs['project'] = $lang->projectCommon;
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->systemLibs['project']);
|
||||
if($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') unset($lang->doc->libTypeList['project']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->systemLibs['product']);
|
||||
if($config->global->flow == 'onlyTask') unset($lang->doc->libTypeList['product']);
|
||||
|
||||
$lang->doc->aclList['open'] = '公開';
|
||||
$lang->doc->aclList['custom'] = '自定義';
|
||||
$lang->doc->aclList['private'] = '私有';
|
||||
|
||||
+18
-50
@@ -324,8 +324,6 @@ class docModel extends model
|
||||
{
|
||||
$docs = $this->dao->select('*')->from(TABLE_DOC)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('product')->eq(0)->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyStory' || $this->config->global->flow == 'onlyTest')->andWhere('project')->eq(0)->fi()
|
||||
->beginIF($libID)->andWhere('lib')->in($libID)->fi()
|
||||
->andWhere('lib')->in($allLibs)
|
||||
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
|
||||
@@ -338,8 +336,6 @@ class docModel extends model
|
||||
{
|
||||
$docs = $this->dao->select('*')->from(TABLE_DOC)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('product')->eq(0)->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyStory' || $this->config->global->flow == 'onlyTest')->andWhere('project')->eq(0)->fi()
|
||||
->andWhere('id')->in($docIdList)
|
||||
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
|
||||
->andWhere('lib')->in($allLibs)
|
||||
@@ -351,8 +347,6 @@ class docModel extends model
|
||||
{
|
||||
$docs = $this->dao->select('*')->from(TABLE_DOC)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('product')->eq(0)->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyStory' || $this->config->global->flow == 'onlyTest')->andWhere('project')->eq(0)->fi()
|
||||
->beginIF($libID)->andWhere('lib')->in($libID)->fi()
|
||||
->andWhere('lib')->in($allLibs)
|
||||
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
|
||||
@@ -425,8 +419,6 @@ class docModel extends model
|
||||
$docs = $this->dao->select('t1.*')->from(TABLE_DOC)->alias('t1')
|
||||
->leftJoin(TABLE_DOCCONTENT)->alias('t2')->on('t2.doc = t1.id')
|
||||
->where('t1.deleted')->eq(0)
|
||||
->beginIF($this->config->global->flow == 'onlyTask')->andWhere('product')->eq(0)->fi()
|
||||
->beginIF($this->config->global->flow == 'onlyStory' || $this->config->global->flow == 'onlyTest')->andWhere('project')->eq(0)->fi()
|
||||
->beginIF(!empty($docIdList))->andWhere('t1.id')->in($docIdList)->fi()
|
||||
->andWhere('t1.title', true)->like("%{$this->session->searchDoc}%")
|
||||
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
|
||||
@@ -1034,18 +1026,11 @@ class docModel extends model
|
||||
|
||||
$productIdList = array_keys($productLibs);
|
||||
$products = $this->dao->select('id,name,status')->from(TABLE_PRODUCT)->where('id')->in($productIdList)->andWhere('deleted')->eq('0')->orderBy('`order`_desc')->fetchAll();
|
||||
if($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest')
|
||||
{
|
||||
$hasProject = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$hasProject = $this->dao->select('DISTINCT t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->in($productIdList)
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->fetchPairs('product', 'product');
|
||||
}
|
||||
$hasProject = $this->dao->select('DISTINCT t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->in($productIdList)
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->fetchPairs('product', 'product');
|
||||
|
||||
$hasLibsPriv = common::hasPriv('doc', 'allLibs');
|
||||
$hasFilesPriv = common::hasPriv('doc', 'showFiles');
|
||||
@@ -1099,9 +1084,6 @@ class docModel extends model
|
||||
*/
|
||||
public function getLimitLibs($type, $limit = 0)
|
||||
{
|
||||
if($type == 'project' and ($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest')) return array();
|
||||
if($type == 'product' and $this->config->global->flow == 'onlyTask') return array();
|
||||
|
||||
if($type == 'product' or $type == 'project')
|
||||
{
|
||||
$nonzeroLibs = array();
|
||||
@@ -1157,19 +1139,12 @@ class docModel extends model
|
||||
$libGroups = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->andWhere($type)->in($idList)->orderBy('`order`, id')->fetchGroup($type, 'id');
|
||||
if($type == 'product')
|
||||
{
|
||||
if($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest')
|
||||
{
|
||||
$hasProject = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$hasProject = $this->dao->select('DISTINCT t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->in($idList)
|
||||
->beginIF(strpos($this->config->doc->custom->showLibs, 'unclosed') !== false)->andWhere('t2.status')->notin('done,closed')->fi()
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->fetchPairs('product', 'product');
|
||||
}
|
||||
$hasProject = $this->dao->select('DISTINCT t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->in($idList)
|
||||
->beginIF(strpos($this->config->doc->custom->showLibs, 'unclosed') !== false)->andWhere('t2.status')->notin('done,closed')->fi()
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->fetchPairs('product', 'product');
|
||||
}
|
||||
$buildGroups = array();
|
||||
foreach($libGroups as $objectID => $libs)
|
||||
@@ -1198,20 +1173,13 @@ class docModel extends model
|
||||
$objectLibs = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->andWhere($type)->eq($objectID)->orderBy('`order`, id')->fetchAll('id');
|
||||
if($type == 'product')
|
||||
{
|
||||
if($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest')
|
||||
{
|
||||
$hasProject = array();
|
||||
}
|
||||
else
|
||||
{
|
||||
$hasProject = $this->dao->select('DISTINCT t1.product, count(project) as projectCount')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->eq($objectID)
|
||||
->beginIF(strpos($this->config->doc->custom->showLibs, 'unclosed') !== false)->andWhere('t2.status')->notin('done,closed')->fi()
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->groupBy('product')
|
||||
->fetchPairs('product', 'projectCount');
|
||||
}
|
||||
$hasProject = $this->dao->select('DISTINCT t1.product, count(project) as projectCount')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->eq($objectID)
|
||||
->beginIF(strpos($this->config->doc->custom->showLibs, 'unclosed') !== false)->andWhere('t2.status')->notin('done,closed')->fi()
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->groupBy('product')
|
||||
->fetchPairs('product', 'projectCount');
|
||||
}
|
||||
|
||||
$libs = array();
|
||||
|
||||
@@ -19,16 +19,12 @@ $sideWidth = common::checkNotCN() ? '270' : '238';
|
||||
<div class="tabs">
|
||||
<ul class='nav nav-tabs'>
|
||||
<?php foreach($lang->doclib->tabList as $tabValue => $tabName):?>
|
||||
<?php if($this->config->global->flow == 'onlyTask' and $tabValue == 'product') continue;?>
|
||||
<?php if(($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest') and $tabValue == 'project') continue;?>
|
||||
<?php $activeClass = $tabValue == $type ? 'active' : '';?>
|
||||
<li class='<?php echo $activeClass;?>'><?php echo html::a("#{$tabValue}", $tabName, '', "data-tab");?></li>
|
||||
<?php endforeach;?>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
<?php foreach($lang->doclib->tabList as $tabValue => $tabName):?>
|
||||
<?php if($this->config->global->flow == 'onlyTask' and $tabValue == 'product') continue;?>
|
||||
<?php if(($this->config->global->flow == 'onlyStory' or $this->config->global->flow == 'onlyTest') and $tabValue == 'project') continue;?>
|
||||
<?php $activeClass = $tabValue == $type ? 'active' : '';?>
|
||||
<div class="tab-pane <?php echo $activeClass;?>" id="<?php echo "$tabValue";?>">
|
||||
<ul data-name="docsTree" data-ride="tree" data-initial-state="preserve" class="tree no-margin">
|
||||
|
||||
@@ -285,7 +285,7 @@ class group extends control
|
||||
$this->view->position = $position;
|
||||
$this->view->allUsers = $allUsers;
|
||||
$this->view->group = $group;
|
||||
$this->view->programs = $this->dao->select('id, name')->from(TABLE_PROJECT)->where('program')->eq(0)->andWhere('deleted')->eq(0)->fetchPairs();
|
||||
$this->view->programs = $this->dao->select('id, name')->from(TABLE_PROJECT)->where('program')->eq(0)->andWhere('deleted')->eq(0)->andWhere('isCat')->eq(0)->fetchPairs();
|
||||
$this->view->deptTree = $this->loadModel('dept')->getTreeMenu($rooteDeptID = 0, array('deptModel', 'createManagePgmAdminLink'), $groupID);
|
||||
$this->view->groupUsers = $groupUsers;
|
||||
$this->view->userPrograms = $userPrograms;
|
||||
|
||||
@@ -45,7 +45,6 @@ $lang->moduleOrder[93] = 'budget';
|
||||
|
||||
$lang->moduleOrder[95] = 'company';
|
||||
$lang->moduleOrder[97] = 'stage';
|
||||
$lang->moduleOrder[98] = 'weekly';
|
||||
$lang->moduleOrder[100] = 'dept';
|
||||
$lang->moduleOrder[105] = 'group';
|
||||
$lang->moduleOrder[110] = 'user';
|
||||
@@ -1034,12 +1033,6 @@ $lang->git->methodOrder[5] = 'diff';
|
||||
$lang->git->methodOrder[10] = 'cat';
|
||||
$lang->git->methodOrder[15] = 'apiSync';
|
||||
|
||||
/* Weekly. */
|
||||
$lang->resource->weekly = new stdclass();
|
||||
$lang->resource->weekly->index = 'index';
|
||||
|
||||
$lang->weekly->methodOrder[0] = 'index';
|
||||
|
||||
/* Stage. */
|
||||
$lang->resource->stage = new stdclass();
|
||||
$lang->resource->stage->browse = 'browse';
|
||||
@@ -1698,100 +1691,3 @@ $lang->changelog['12.3'][] = 'testtask-unitCases';
|
||||
$lang->changelog['12.3'][] = 'testtask-importUnitResult';
|
||||
$lang->changelog['12.3'][] = 'job-view';
|
||||
$lang->changelog['12.3'][] = 'ci-commitResult';
|
||||
|
||||
global $config;
|
||||
if($config->global->flow != 'full')
|
||||
{
|
||||
unset($lang->moduleOrder[10]);
|
||||
unset($lang->resource->qa);
|
||||
unset($lang->moduleOrder[50]);
|
||||
unset($lang->resource->report);
|
||||
unset($lang->moduleOrder[90]);
|
||||
}
|
||||
|
||||
if($config->global->flow == 'onlyStory' || $config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->resource->build);
|
||||
unset($lang->moduleOrder[45]);
|
||||
unset($lang->resource->bug);
|
||||
unset($lang->moduleOrder[55]);
|
||||
unset($lang->resource->testcase);
|
||||
unset($lang->moduleOrder[60]);
|
||||
unset($lang->resource->testtask);
|
||||
unset($lang->moduleOrder[65]);
|
||||
|
||||
unset($lang->resource->my->bug);
|
||||
unset($lang->resource->my->testTask);
|
||||
unset($lang->resource->my->testCase);
|
||||
}
|
||||
|
||||
if($config->global->flow == 'onlyStory' || $config->global->flow == 'onlyTest')
|
||||
{
|
||||
unset($lang->resource->project);
|
||||
unset($lang->moduleOrder[35]);
|
||||
unset($lang->resource->task);
|
||||
unset($lang->moduleOrder[40]);
|
||||
|
||||
unset($lang->resource->my->task);
|
||||
unset($lang->resource->my->project);
|
||||
|
||||
unset($lang->resource->product->project);
|
||||
}
|
||||
|
||||
if($config->global->flow == 'onlyTask' || $config->global->flow == 'onlyTest')
|
||||
{
|
||||
unset($lang->resource->story);
|
||||
unset($lang->moduleOrder[20]);
|
||||
unset($lang->resource->productplan);
|
||||
unset($lang->moduleOrder[25]);
|
||||
unset($lang->resource->release);
|
||||
unset($lang->moduleOrder[30]);
|
||||
|
||||
unset($lang->resource->my->story);
|
||||
}
|
||||
|
||||
if($config->global->flow == 'onlyStory')
|
||||
{
|
||||
unset($lang->resource->svn);
|
||||
unset($lang->moduleOrder[150]);
|
||||
unset($lang->resource->git);
|
||||
unset($lang->moduleOrder[155]);
|
||||
|
||||
unset($lang->resource->story->tasks);
|
||||
}
|
||||
|
||||
if($config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->resource->product);
|
||||
unset($lang->moduleOrder[15]);
|
||||
unset($lang->resource->bug);
|
||||
unset($lang->moduleOrder[55]);
|
||||
|
||||
unset($lang->resource->project->importbug);
|
||||
unset($lang->resource->project->story);
|
||||
unset($lang->resource->project->bug);
|
||||
unset($lang->resource->project->linkStory);
|
||||
unset($lang->resource->project->unlinkStory);
|
||||
unset($lang->resource->project->ajaxGetProducts);
|
||||
}
|
||||
|
||||
if($config->global->flow == 'onlyTest')
|
||||
{
|
||||
unset($lang->resource->product->browse);
|
||||
unset($lang->resource->product->roadmap);
|
||||
unset($lang->resource->product->dynamic);
|
||||
unset($lang->resource->product->ajaxGetProjects);
|
||||
unset($lang->resource->product->ajaxGetPlans);
|
||||
|
||||
unset($lang->resource->build->ajaxGetProjectBuilds);
|
||||
unset($lang->build->methodOrder[30]);
|
||||
|
||||
unset($lang->resource->bug->confirmStoryChange);
|
||||
unset($lang->bug->methodOrder[60]);
|
||||
|
||||
unset($lang->resource->testcase->confirmStoryChange);
|
||||
unset($lang->testcase->methodOrder[40]);
|
||||
|
||||
$lang->resource->product->build = 'build';
|
||||
$lang->product->methodOrder[5] = 'build';
|
||||
}
|
||||
|
||||
@@ -107,9 +107,6 @@ $lang->install->requestTypes['GET'] = 'GET';
|
||||
$lang->install->requestTypes['PATH_INFO'] = 'PATH_INFO';
|
||||
|
||||
$lang->install->workingList['full'] = 'Volles Development Management';
|
||||
$lang->install->workingList['onlyTest'] = 'Nur Test Management';
|
||||
$lang->install->workingList['onlyStory'] = 'Nur Story Management';
|
||||
$lang->install->workingList['onlyTask'] = 'Nur Task Management';
|
||||
|
||||
$lang->install->errorConnectDB = 'Verbindung zur Datenbank fehlgeschlagen. ';
|
||||
$lang->install->errorDBName = 'Datenbankname darf keinen Punkt enthalten';
|
||||
|
||||
@@ -107,9 +107,6 @@ $lang->install->requestTypes['GET'] = 'GET';
|
||||
$lang->install->requestTypes['PATH_INFO'] = 'PATH_INFO';
|
||||
|
||||
$lang->install->workingList['full'] = 'Application Lifecycle Management';
|
||||
$lang->install->workingList['onlyTest'] = 'Only Test Management';
|
||||
$lang->install->workingList['onlyStory'] = 'Only Story Management';
|
||||
$lang->install->workingList['onlyTask'] = 'Only Task Management';
|
||||
|
||||
$lang->install->errorConnectDB = 'Connection to the database Failed. ';
|
||||
$lang->install->errorDBName = 'Database name should exclude “.” ';
|
||||
|
||||
@@ -107,9 +107,6 @@ $lang->install->requestTypes['GET'] = 'GET';
|
||||
$lang->install->requestTypes['PATH_INFO'] = 'PATH_INFO';
|
||||
|
||||
$lang->install->workingList['full'] = 'Application Lifecycle Management';
|
||||
$lang->install->workingList['onlyTest'] = 'Seulement Test Management';
|
||||
$lang->install->workingList['onlyStory'] = 'Seulement Story Management';
|
||||
$lang->install->workingList['onlyTask'] = 'Seulement Task Management';
|
||||
|
||||
$lang->install->errorConnectDB = 'Echec de connexion à la base. ';
|
||||
$lang->install->errorDBName = 'Le nom de la base ne doit pas contenir de “.” ';
|
||||
|
||||
@@ -107,9 +107,6 @@ $lang->install->requestTypes['GET'] = 'GET';
|
||||
$lang->install->requestTypes['PATH_INFO'] = 'PATH_INFO';
|
||||
|
||||
$lang->install->workingList['full'] = 'Quản lý vòng đời ứng dụng';
|
||||
$lang->install->workingList['onlyTest'] = 'Chỉ Test Management';
|
||||
$lang->install->workingList['onlyStory'] = 'Chỉ Story Management';
|
||||
$lang->install->workingList['onlyTask'] = 'Chỉ Task Management';
|
||||
|
||||
$lang->install->errorConnectDB = 'Connection to the database Failed. ';
|
||||
$lang->install->errorDBName = 'Database name should exclude “.” ';
|
||||
|
||||
@@ -107,9 +107,6 @@ $lang->install->requestTypes['GET'] = '普通方式';
|
||||
$lang->install->requestTypes['PATH_INFO'] = '静态友好方式';
|
||||
|
||||
$lang->install->workingList['full'] = '完整研发管理工具';
|
||||
$lang->install->workingList['onlyTest'] = '测试管理工具';
|
||||
$lang->install->workingList['onlyStory'] = "需求管理工具";
|
||||
$lang->install->workingList['onlyTask'] = '任务管理工具';
|
||||
|
||||
$lang->install->errorConnectDB = '数据库连接失败 ';
|
||||
$lang->install->errorDBName = '数据库名不能含有 “.” ';
|
||||
|
||||
@@ -107,9 +107,6 @@ $lang->install->requestTypes['GET'] = '普通方式';
|
||||
$lang->install->requestTypes['PATH_INFO'] = '靜態友好方式';
|
||||
|
||||
$lang->install->workingList['full'] = '完整研發管理工具';
|
||||
$lang->install->workingList['onlyTest'] = '測試管理工具';
|
||||
$lang->install->workingList['onlyStory'] = "需求管理工具";
|
||||
$lang->install->workingList['onlyTask'] = '任務管理工具';
|
||||
|
||||
$lang->install->errorConnectDB = '資料庫連接失敗 ';
|
||||
$lang->install->errorDBName = '資料庫名不能含有 “.” ';
|
||||
|
||||
@@ -81,7 +81,7 @@ class issue extends control
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
*/
|
||||
public function batchCreate()
|
||||
{
|
||||
if($_POST)
|
||||
@@ -314,6 +314,13 @@ class issue extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* prepairParams
|
||||
*
|
||||
* @param int $issue
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function prepairParams($issue)
|
||||
{
|
||||
$this->loadModel('task');
|
||||
@@ -396,10 +403,11 @@ class issue extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Common actions of issue module.
|
||||
/**
|
||||
* commonAction
|
||||
*
|
||||
* @param int $issueID
|
||||
* @param int $object
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module English file 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: en.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = 'Issue';
|
||||
$lang->issue->browse = 'List';
|
||||
$lang->issue->resolvedBy = 'Resolved By';
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module zh-cn file 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: zh-cn.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = '项目问题';
|
||||
$lang->issue->browse = '问题列表';
|
||||
$lang->issue->resolvedBy = '解决者';
|
||||
|
||||
+18
-4
@@ -62,7 +62,6 @@ class issueModel extends model
|
||||
* @param string $owner
|
||||
* @param string $activityID
|
||||
* @param object $pager
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
@@ -94,7 +93,7 @@ class issueModel extends model
|
||||
$issueQuery = '';
|
||||
if($browseType == 'bysearch')
|
||||
{
|
||||
$query = $queryID ? $this->loadModel('search')->getQuery($queryID) : '';
|
||||
$query = $queryID ? $this->loadModel('search')->getQuery($queryID) : '';
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('issueQuery', $query->sql);
|
||||
@@ -120,11 +119,26 @@ class issueModel extends model
|
||||
return $issueList;
|
||||
}
|
||||
|
||||
/**
|
||||
* getActivityList
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getActivityList()
|
||||
{
|
||||
return $this->dao->select('id,name')->from(TABLE_ACTIVITY)->where('deleted')->eq('0')->orderBy('id_desc')->fetchPairs();
|
||||
}
|
||||
|
||||
/**
|
||||
* getBlockIssues
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param int $limit
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getBlockIssues($browseType = 'all', $limit = 15, $orderBy = 'id_desc')
|
||||
{
|
||||
$issueList = $this->dao->select('*')->from(TABLE_ISSUE)
|
||||
@@ -325,7 +339,7 @@ class issueModel extends model
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
* @return object
|
||||
*/
|
||||
public function resolve($issueID)
|
||||
{
|
||||
@@ -338,7 +352,7 @@ class issueModel extends model
|
||||
* Create task.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return object
|
||||
*/
|
||||
public function createTask()
|
||||
{
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The createbug view of issue 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 Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr class='bugTR storyTR'>
|
||||
<th class='w-110px'><?php echo $lang->bug->product;?></th>
|
||||
<td>
|
||||
@@ -25,7 +37,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php $showProject = (strpos(",$showFields,", ',project,') !== false && $config->global->flow != 'onlyTest');?>
|
||||
<?php $showProject = (strpos(",$showFields,", ',project,') !== false);?>
|
||||
<tr class='bugTR'>
|
||||
<th><?php echo ($showProject) ? $lang->bug->project : $lang->bug->type;?></th>
|
||||
|
||||
@@ -76,7 +88,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->global->flow != 'onlyTest' && $showProject):?>
|
||||
<?php if($showProject):?>
|
||||
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
|
||||
<?php $showBrowser = strpos(",$showFields,", ',browser,') !== false;?>
|
||||
<tr class='bugTR'>
|
||||
@@ -188,7 +200,7 @@
|
||||
$showStory = strpos(",$showFields,", ',story,') !== false;
|
||||
$showTask = strpos(",$showFields,", ',task,') !== false;
|
||||
?>
|
||||
<?php if(($showStory or $showTask) and $this->config->global->flow != 'onlyTest'):?>
|
||||
<?php if(($showStory or $showTask)):?>
|
||||
<tr class='bugTR'>
|
||||
<th><?php echo ($showStory) ? $lang->bug->story : $lang->bug->task;?></th>
|
||||
<?php if($showStory):?>
|
||||
@@ -262,14 +274,14 @@ $(function()
|
||||
|
||||
/**
|
||||
* Load all fields.
|
||||
*
|
||||
* @param int $productID
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAll(productID)
|
||||
{
|
||||
if(page == 'create')
|
||||
if(page == 'create')
|
||||
{
|
||||
loadProjectTeamMembers(productID);
|
||||
}
|
||||
@@ -294,8 +306,8 @@ function loadAll(productID)
|
||||
$('#taskIdBox').innerHTML = '<select id="task"></select>'; // Reset the task.
|
||||
$('#task').chosen();
|
||||
loadProductBranches(productID)
|
||||
loadProductModules(productID);
|
||||
loadProductProjects(productID);
|
||||
loadProductModules(productID);
|
||||
loadProductProjects(productID);
|
||||
loadProductBuilds(productID);
|
||||
loadProductplans(productID);
|
||||
loadProductStories(productID);
|
||||
@@ -304,7 +316,7 @@ function loadAll(productID)
|
||||
|
||||
/**
|
||||
* Load by branch.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -314,7 +326,7 @@ function loadBranch()
|
||||
$('#task').chosen();
|
||||
productID = $('#product').val();
|
||||
loadProductModules(productID);
|
||||
loadProductProjects(productID);
|
||||
loadProductProjects(productID);
|
||||
loadProductBuilds(productID);
|
||||
loadProductplans(productID);
|
||||
loadProductStories(productID);
|
||||
@@ -351,7 +363,7 @@ function loadAllBuilds(that)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Load all builds of the project.
|
||||
*
|
||||
* @param int $projectID
|
||||
@@ -391,7 +403,7 @@ function loadAllProjectBuilds(projectID, productID)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Load all builds of the product.
|
||||
*
|
||||
* @param int $productID
|
||||
@@ -402,7 +414,7 @@ function loadAllProductBuilds(productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
if(page == 'create')
|
||||
if(page == 'create')
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&type=all');
|
||||
$.get(link, function(data)
|
||||
@@ -431,8 +443,8 @@ function loadAllProductBuilds(productID)
|
||||
|
||||
/**
|
||||
* Load product's modules.
|
||||
*
|
||||
* @param int $productID
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -442,16 +454,16 @@ function loadProductModules(productID)
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=bug&branch=' + branch + '&rootModuleID=0&returnType=html&fieldID=&needManage=true');
|
||||
$('#moduleIdBox').load(link, function()
|
||||
{
|
||||
{
|
||||
$(this).find('select').chosen()
|
||||
if(typeof(bugModule) == 'string') $('#moduleIdBox').prepend("<span class='input-group-addon' style='border-left-width: 1px;'>" + bugModule + "</span>");
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product stories
|
||||
*
|
||||
* @param int $productID
|
||||
* Load product stories
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -464,9 +476,9 @@ function loadProductStories(productID)
|
||||
}
|
||||
|
||||
/**
|
||||
* Load projects of product.
|
||||
*
|
||||
* @param int $productID
|
||||
* Load projects of product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -480,8 +492,8 @@ function loadProductProjects(productID)
|
||||
|
||||
/**
|
||||
* Load product plans.
|
||||
*
|
||||
* @param productID $productID
|
||||
*
|
||||
* @param productID $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -494,9 +506,9 @@ function loadProductplans(productID)
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product builds.
|
||||
*
|
||||
* @param productID $productID
|
||||
* Load product builds.
|
||||
*
|
||||
* @param productID $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -527,8 +539,8 @@ function loadProductBuilds(productID)
|
||||
|
||||
/**
|
||||
* Load project related bugs and tasks.
|
||||
*
|
||||
* @param int $projectID
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -551,8 +563,8 @@ function loadProjectRelated(projectID)
|
||||
|
||||
/**
|
||||
* Load project tasks.
|
||||
*
|
||||
* @param projectID $projectID
|
||||
*
|
||||
* @param projectID $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -570,8 +582,8 @@ function loadProjectTasks(projectID)
|
||||
|
||||
/**
|
||||
* Load project stories.
|
||||
*
|
||||
* @param projectID $projectID
|
||||
*
|
||||
* @param projectID $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -585,8 +597,8 @@ function loadProjectStories(projectID)
|
||||
|
||||
/**
|
||||
* Load builds of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -613,7 +625,7 @@ function loadProjectBuilds(projectID)
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
|
||||
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
|
||||
|
||||
oldResolvedBuild = $('#resolvedBuild').val() ? $('#resolvedBuild').val() : 0;
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
|
||||
$('#resolvedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
@@ -622,9 +634,9 @@ function loadProjectBuilds(projectID)
|
||||
|
||||
/**
|
||||
* Set story field.
|
||||
*
|
||||
* @param moduleID $moduleID
|
||||
* @param productID $productID
|
||||
*
|
||||
* @param moduleID $moduleID
|
||||
* @param productID $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -644,8 +656,8 @@ function setStories(moduleID, productID)
|
||||
|
||||
/**
|
||||
* Load product branches.
|
||||
*
|
||||
* @param int $productID
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -666,8 +678,8 @@ function loadProductBranches(productID)
|
||||
|
||||
/**
|
||||
* Load team members of the project as assignedTo list.
|
||||
*
|
||||
* @param int $projectID
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -684,14 +696,14 @@ function loadAssignedTo(projectID)
|
||||
|
||||
/**
|
||||
* notice for create build.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function notice()
|
||||
{
|
||||
$('#buildBoxActions').empty().hide();
|
||||
if($('#openedBuild').find('option').length <= 1)
|
||||
if($('#openedBuild').find('option').length <= 1)
|
||||
{
|
||||
var html = '';
|
||||
if($('#project').length == 0 || $('#project').val() == '')
|
||||
@@ -699,7 +711,6 @@ function notice()
|
||||
var branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
var link = createLink('release', 'create', 'productID=' + $('#product').val() + '&branch=' + branch);
|
||||
if(typeof(flow) != 'undefined' && flow == 'onlyTest') link = createLink('build', 'create','projectID=' + $('#product').val());
|
||||
html += '<a href="' + link + '" target="_blank" style="padding-right:5px">' + createBuild + '</a> ';
|
||||
html += '<a href="javascript:loadProductBuilds(' + $('#product').val() + ')">' + refresh + '</a>';
|
||||
}
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The createrisk view of issue 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 Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr class="riskTR">
|
||||
<th><?php echo $lang->risk->name;?></th>
|
||||
<td>
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The createstory view of issue 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 Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr class='storyTR'>
|
||||
<th><?php echo $lang->story->reviewedBy;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, '', "class='form-control chosen'");?></td>
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The createtask view of issue 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 Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr class='taskTR'>
|
||||
<th><?php echo $lang->task->project;?></th>
|
||||
<td><?php echo html::select('project', $projects, $project->id, "class='form-control chosen' onchange='loadAll(this.value)'");?></td><td></td><td></td>
|
||||
@@ -41,7 +53,7 @@
|
||||
<th><?php echo $lang->task->status;?></th>
|
||||
<td><?php echo html::hidden('status', 'wait');?></td>
|
||||
</tr>
|
||||
<?php if($stories and $config->global->flow != 'onlyTask' and $project->type != 'ops'):?>
|
||||
<?php if($stories and $project->type != 'ops'):?>
|
||||
<tr id='testStoryBox' class='hidden'>
|
||||
<th><?php echo $lang->task->selectTestStory;?></th>
|
||||
<td colspan='3'>
|
||||
@@ -97,10 +109,8 @@
|
||||
<input type="hidden" class="colorpicker" id="color" name="color" value="" data-icon="color" data-wrapper="input-control-icon-right" data-update-color="#name" data-provide="colorpicker">
|
||||
</div>
|
||||
<?php echo html::input('name', $task->name, "class='form-control'");?>
|
||||
<?php if($config->global->flow != 'onlyTask'):?>
|
||||
<a href='javascript:copyStoryTitle();' id='copyButton' class='input-control-icon-right'><?php echo $lang->task->copyStoryTitle;?></a>
|
||||
<?php echo html::hidden("storyEstimate") . html::hidden("storyDesc") . html::hidden("storyPri");?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php if(strpos(",$showFields,", ',pri,') !== false): // begin print pri selector?>
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->task->pri;?></span>
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The resolve view of issue 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 Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses', '', '', '', '', '', $story->program);
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', '', '', 'iframe', true, '', '', $story->program);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list', '', '', '', '', '', '', $story->program);
|
||||
if($config->global->flow != 'onlyStory') common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
|
||||
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses', '', '', '', '', '', $story->program);
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', '', '', 'iframe', true, '', '', $story->program);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list', '', '', '', '', '', '', $story->program);
|
||||
if($config->global->flow != 'onlyStory') common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
|
||||
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -49,7 +49,6 @@ class product extends control
|
||||
*/
|
||||
public function index($locate = 'auto', $productID = 0, $status = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 10, $pageID = 1)
|
||||
{
|
||||
if($this->config->global->flow == 'onlyTest') $this->locate($this->createLink($this->moduleName, 'build'));
|
||||
if($locate == 'yes') $this->locate($this->createLink($this->moduleName, 'browse'));
|
||||
|
||||
if($this->app->getViewType() != 'mhtml') unset($this->lang->product->menu->index);
|
||||
@@ -254,7 +253,6 @@ class product extends control
|
||||
$this->executeHooks($productID);
|
||||
|
||||
$locate = $this->createLink($this->moduleName, 'browse', "productID=$productID");
|
||||
if(isset($this->config->global->flow) and $this->config->global->flow == 'onlyTest') $locate = $this->createLink($this->moduleName, 'build', "productID=$productID");
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locate));
|
||||
}
|
||||
|
||||
|
||||
@@ -312,8 +312,6 @@ class productModel extends model
|
||||
*/
|
||||
public function getProductsByProject($projectID)
|
||||
{
|
||||
if($this->config->global->flow == 'onlyTask') return array();
|
||||
|
||||
return $this->dao->select('t1.product, t2.name')
|
||||
->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('noProject', ($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') ? true : false);?>
|
||||
<?php js::set('noProject', false);?>
|
||||
<div id="mainContent" class="main-content">
|
||||
<div class="center-block">
|
||||
<div class="main-header">
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('noProject', ($config->global->flow == 'onlyStory' or $config->global->flow == 'onlyTest') ? true : false);?>
|
||||
<?php js::set('noProject', false);?>
|
||||
<div id="mainContent" class="main-content">
|
||||
<div class="center-block">
|
||||
<div class="main-header">
|
||||
|
||||
@@ -190,7 +190,6 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTest'):?>
|
||||
<div class="detail">
|
||||
<div class="detail-title"><strong><?php echo $lang->product->otherInfo;?></strong></div>
|
||||
<div class="detail-content">
|
||||
@@ -231,7 +230,6 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php $this->printExtendFields($product, 'div', "position=right&inForm=0&inCell=1");?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
<?php
|
||||
if(common::hasPriv('program', 'createguide')) echo html::a(helper::createLink('program', 'createguide', "projectID=©ProjectID=&planID=$plan->id"), '<i class="icon-plus"></i>', '', "class='btn' title='{$lang->project->create}' data-toggle='modal' data-type='ajax'");
|
||||
if(common::hasPriv('productplan', 'linkStory')) echo html::a(inlink('view', "planID=$plan->id&type=story&orderBy=id_desc&link=true"), '<i class="icon-link"></i>', '', "class='btn' title='{$lang->productplan->linkStory}'");
|
||||
if(common::hasPriv('productplan', 'linkBug') and $config->global->flow != 'onlyStory') echo html::a(inlink('view', "planID=$plan->id&type=bug&orderBy=id_desc&link=true"), '<i class="icon-bug"></i>', '', "class='btn' title='{$lang->productplan->linkBug}'");
|
||||
if(common::hasPriv('productplan', 'linkBug')) echo html::a(inlink('view', "planID=$plan->id&type=bug&orderBy=id_desc&link=true"), '<i class="icon-bug"></i>', '', "class='btn' title='{$lang->productplan->linkBug}'");
|
||||
common::printIcon('productplan', 'edit', "planID=$plan->id", $plan, 'list');
|
||||
if(common::hasPriv('productplan', 'create'))
|
||||
{
|
||||
|
||||
@@ -50,9 +50,7 @@
|
||||
<div class='tabs' id='tabsNav'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='<?php if($type == 'story') echo 'active'?>'><a href='#stories' data-toggle='tab'><?php echo html::icon($lang->icons['story'], 'text-primary') . ' ' . $lang->productplan->linkedStories;?></a></li>
|
||||
<?php if($config->global->flow != 'onlyStory'):?>
|
||||
<li class='<?php if($type == 'bug') echo 'active'?>'><a href='#bugs' data-toggle='tab'><?php echo html::icon($lang->icons['bug'], 'text-red') . ' ' . $lang->productplan->linkedBugs;?></a></li>
|
||||
<?php endif;?>
|
||||
<li><a href='#planInfo' data-toggle='tab'><?php echo html::icon($lang->icons['plan'], 'text-info') . ' ' . $lang->productplan->view;?></a></li>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
|
||||
@@ -1,12 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of programplan currentModule 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: control.php 5107 2013-07-12 01:46:12Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class programplan extends control
|
||||
{
|
||||
/**
|
||||
* __construct
|
||||
*
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($moduleName = '', $methodName = '')
|
||||
{
|
||||
parent::__construct($moduleName, $methodName);
|
||||
$this->app->loadLang('review');
|
||||
}
|
||||
|
||||
/**
|
||||
* Common action
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $productID
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function commonAction($programID, $productID = 0, $extra = '')
|
||||
{
|
||||
$products = $this->loadModel('product')->getPairs($programID);
|
||||
@@ -16,6 +43,17 @@ class programplan extends control
|
||||
$this->programplan->setMenu($programID, $productID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse programplans
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $productID
|
||||
* @param string $type
|
||||
* @param string $orderBy
|
||||
* @param int $baselineID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($programID = 0, $productID = 0, $type = 'gantt', $orderBy = 'id_asc', $baselineID = 0)
|
||||
{
|
||||
$this->app->loadLang('stage');
|
||||
@@ -59,6 +97,15 @@ class programplan extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a programplan
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $productID
|
||||
* @param int $planID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($programID = 0, $productID = 0, $planID = 0)
|
||||
{
|
||||
$this->commonAction($programID, $productID);
|
||||
@@ -92,6 +139,13 @@ class programplan extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a programplan
|
||||
*
|
||||
* @param int $planID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($planID = 0)
|
||||
{
|
||||
$plan = $this->programplan->getByID($planID);
|
||||
@@ -121,6 +175,14 @@ class programplan extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a programplan
|
||||
*
|
||||
* @param int $planID
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($planID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
@@ -141,6 +203,12 @@ class programplan extends control
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax custom
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxCustom()
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* The programplan module English file 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: en.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->programplan->common = 'Program Plan';
|
||||
|
||||
$lang->programplan->browse = 'Browse Program Plan';
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* The programplan module zh-cn file 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: zh-cn.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->programplan->common = '项目计划';
|
||||
|
||||
$lang->programplan->browse = '浏览阶段计划';
|
||||
|
||||
@@ -1,11 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of programplan 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: model.php 5079 2013-07-10 00:44:34Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class programplanModel extends model
|
||||
{
|
||||
/**
|
||||
* Set menu
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setMenu($programID, $productID)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get by id
|
||||
*
|
||||
* @param int $planID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($planID)
|
||||
{
|
||||
$plan = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($planID)->fetch();
|
||||
@@ -13,6 +40,13 @@ class programplanModel extends model
|
||||
return $this->processPlan($plan);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get projects by product
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getProjectsByProduct($productID)
|
||||
{
|
||||
$projects = $this->dao->select('project')->from(TABLE_PROJECTPRODUCT)->where('product')->eq($productID)->fetchPairs();
|
||||
@@ -20,6 +54,17 @@ class programplanModel extends model
|
||||
return $projects;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $productID
|
||||
* @param int $planID
|
||||
* @param string $type
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getList($programID = 0, $productID = 0, $planID = 0, $type = '', $orderBy = 'id_asc')
|
||||
{
|
||||
$projects = $this->getProjectsByProduct($productID);
|
||||
@@ -36,6 +81,13 @@ class programplanModel extends model
|
||||
return $this->processPlans($plans);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get by list
|
||||
*
|
||||
* @param array $idList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByList($idList = array())
|
||||
{
|
||||
$plans = $this->dao->select('*')->from(TABLE_PROJECT)
|
||||
@@ -46,6 +98,13 @@ class programplanModel extends model
|
||||
return $this->processPlans($plans);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get plan pairs for budget
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getPlanPairsForBudget($programID = 0)
|
||||
{
|
||||
$pairs = array();
|
||||
@@ -67,6 +126,15 @@ class programplanModel extends model
|
||||
return $pairs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get plans
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $productID
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getPlans($programID = 0, $productID = 0, $orderBy = 'id_asc')
|
||||
{
|
||||
$plans = $this->getList($programID, $productID, 0, 'all', $orderBy);
|
||||
@@ -82,6 +150,15 @@ class programplanModel extends model
|
||||
return $parents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get pairs
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $productID
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getPairs($programID, $productID = 0, $type = 'all')
|
||||
{
|
||||
$plans = $this->getPlans($programID, $productID);
|
||||
@@ -244,6 +321,13 @@ class programplanModel extends model
|
||||
return $returnJson ? json_encode($datas) : $datas;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get total percent
|
||||
*
|
||||
* @param int $plan
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function getTotalPercent($plan)
|
||||
{
|
||||
$plans = $this->getList($plan->program, $plan->product, $plan->parent);
|
||||
@@ -258,6 +342,13 @@ class programplanModel extends model
|
||||
return $totalPercent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process plans
|
||||
*
|
||||
* @param int $plans
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function processPlans($plans)
|
||||
{
|
||||
foreach($plans as $planID => $plan)
|
||||
@@ -268,6 +359,13 @@ class programplanModel extends model
|
||||
return $plans;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process plan
|
||||
*
|
||||
* @param int $plan
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function processPlan($plan)
|
||||
{
|
||||
$plan->setMilestone = true;
|
||||
@@ -302,12 +400,29 @@ class programplanModel extends model
|
||||
return $plan;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get duration
|
||||
*
|
||||
* @param int $begin
|
||||
* @param int $end
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function getDuration($begin, $end)
|
||||
{
|
||||
$duration = $this->loadModel('holiday')->getActualWorkingDays($begin, $end);
|
||||
return count($duration);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a plan
|
||||
*
|
||||
* @param int $programID
|
||||
* @param int $parentID
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function create($programID = 0, $parentID = 0, $productID = 0)
|
||||
{
|
||||
$data = (array)fixer::input('post')->get();
|
||||
@@ -482,6 +597,13 @@ class programplanModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a plan
|
||||
*
|
||||
* @param int $planID
|
||||
* @access public
|
||||
* @return bool|array
|
||||
*/
|
||||
public function update($planID = 0)
|
||||
{
|
||||
$oldPlan = $this->getByID($planID);
|
||||
@@ -563,6 +685,15 @@ class programplanModel extends model
|
||||
return common::createChanges($oldPlan, $plan);
|
||||
}
|
||||
|
||||
/**
|
||||
* Print cell
|
||||
*
|
||||
* @param int $col
|
||||
* @param int $plan
|
||||
* @param int $users
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function printCell($col, $plan, $users)
|
||||
{
|
||||
$id = $col->id;
|
||||
@@ -661,12 +792,28 @@ class programplanModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Is create task
|
||||
*
|
||||
* @param int $planID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function isCreateTask($planID)
|
||||
{
|
||||
$task = $this->dao->select('*')->from(TABLE_TASK)->where('project')->eq($planID)->limit(1)->fetch();
|
||||
return empty($task) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is clickable
|
||||
*
|
||||
* @param int $plan
|
||||
* @param int $action
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function isClickable($plan, $action)
|
||||
{
|
||||
$action = strtolower($action);
|
||||
@@ -676,6 +823,13 @@ class programplanModel extends model
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get milestones
|
||||
*
|
||||
* @param int $programID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getMilestones($programID = 0)
|
||||
{
|
||||
return $this->dao->select('id, name')->from(TABLE_PROJECT)
|
||||
@@ -687,6 +841,13 @@ class programplanModel extends model
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get milestone by product
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getMilestoneByProduct($productID)
|
||||
{
|
||||
return $this->dao->select('t1.id, t1.name')->from(TABLE_PROJECT)->alias('t1')
|
||||
@@ -699,12 +860,27 @@ class programplanModel extends model
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Is parent
|
||||
*
|
||||
* @param int $planID
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function isParent($planID)
|
||||
{
|
||||
$children = $this->dao->select('id')->from(TABLE_PROJECT)->where('parent')->eq($planID)->andWhere('deleted')->eq('0')->fetch();
|
||||
return empty($children) ? false : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parent stage list
|
||||
*
|
||||
* @param int $planID
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getParentStageList($planID, $productID)
|
||||
{
|
||||
$projects = $this->getProjectsByProduct($productID);
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse of programplan 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: browse.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<style>#dropMenu{z-index:99999;}</style>
|
||||
<?php js::set('browseType', $type);?>
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The create of programplan 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: create.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('browseType', $type);?>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit of programplan 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: edit.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php
|
||||
|
||||
@@ -1,3 +1,15 @@
|
||||
<?php
|
||||
/**
|
||||
* The gantt of programplan 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: gantt.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/ext/view/gantt.html.php';?>
|
||||
<style>
|
||||
#ganttView {height: 600px;}
|
||||
|
||||
@@ -1,4 +1,16 @@
|
||||
<?php
|
||||
/**
|
||||
* The list of programplan 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package programplan
|
||||
* @version $Id: list.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/datatable.fix.html.php';
|
||||
include '../../common/view/datatable.html.php';
|
||||
js::set('confirmDelete', $lang->programplan->confirmDelete);
|
||||
|
||||
@@ -122,12 +122,11 @@ class project extends control
|
||||
|
||||
/* Set browse type. */
|
||||
$browseType = strtolower($status);
|
||||
if($this->config->global->flow == 'onlyTask' and $browseType == 'byproduct') $param = 0;
|
||||
|
||||
/* Get products by project. */
|
||||
$project = $this->commonAction($projectID, $status);
|
||||
$projectID = $project->id;
|
||||
$products = $this->config->global->flow == 'onlyTask' ? array() : $this->loadModel('product')->getProductsByProject($projectID);
|
||||
$products = $this->loadModel('product')->getProductsByProject($projectID);
|
||||
setcookie('preProjectID', $projectID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
|
||||
|
||||
if($this->cookie->preProjectID != $projectID)
|
||||
|
||||
@@ -354,10 +354,3 @@ $lang->project->treeLevel['all'] = 'Alle aufklappen';
|
||||
$lang->project->treeLevel['root'] = 'Alle zuklappen';
|
||||
$lang->project->treeLevel['task'] = 'Aufgabe anzeigen';
|
||||
$lang->project->treeLevel['story'] = 'Story anzeigen';
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->project->groups['story']);
|
||||
unset($lang->project->featureBar['task']['needconfirm']);
|
||||
}
|
||||
|
||||
@@ -354,10 +354,3 @@ $lang->project->treeLevel['all'] = 'Expand All';
|
||||
$lang->project->treeLevel['root'] = 'Collapse All';
|
||||
$lang->project->treeLevel['task'] = 'Stories&Tasks';
|
||||
$lang->project->treeLevel['story'] = 'Only Stories';
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->project->groups['story']);
|
||||
unset($lang->project->featureBar['task']['needconfirm']);
|
||||
}
|
||||
|
||||
@@ -354,10 +354,3 @@ $lang->project->treeLevel['all'] = 'Déplier Tout';
|
||||
$lang->project->treeLevel['root'] = 'Masquer Tout';
|
||||
$lang->project->treeLevel['task'] = 'Stories&Tâches';
|
||||
$lang->project->treeLevel['story'] = 'Seulement Stories';
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->project->groups['story']);
|
||||
unset($lang->project->featureBar['task']['needconfirm']);
|
||||
}
|
||||
|
||||
@@ -354,10 +354,3 @@ $lang->project->treeLevel['all'] = 'Mở tất cả';
|
||||
$lang->project->treeLevel['root'] = 'Co lại tất cả';
|
||||
$lang->project->treeLevel['task'] = 'Câu chuyện & nhiệm vụ';
|
||||
$lang->project->treeLevel['story'] = 'Chỉ câu chuyện';
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->project->groups['story']);
|
||||
unset($lang->project->featureBar['task']['needconfirm']);
|
||||
}
|
||||
|
||||
@@ -360,10 +360,3 @@ $lang->project->treeLevel['all'] = '全部展开';
|
||||
$lang->project->treeLevel['root'] = '全部折叠';
|
||||
$lang->project->treeLevel['task'] = '全部显示';
|
||||
$lang->project->treeLevel['story'] = "只看{$lang->storyCommon}";
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->project->groups['story']);
|
||||
unset($lang->project->featureBar['task']['needconfirm']);
|
||||
}
|
||||
|
||||
@@ -354,10 +354,3 @@ $lang->project->treeLevel['all'] = '全部展開';
|
||||
$lang->project->treeLevel['root'] = '全部摺疊';
|
||||
$lang->project->treeLevel['task'] = '全部顯示';
|
||||
$lang->project->treeLevel['story'] = "只看{$lang->storyCommon}";
|
||||
|
||||
global $config;
|
||||
if($config->global->flow == 'onlyTask')
|
||||
{
|
||||
unset($lang->project->groups['story']);
|
||||
unset($lang->project->featureBar['task']['needconfirm']);
|
||||
}
|
||||
|
||||
@@ -1185,8 +1185,6 @@ class projectModel extends model
|
||||
*/
|
||||
public function getProducts($projectID, $withBranch = true)
|
||||
{
|
||||
if($this->config->global->flow == 'onlyTask') return array();
|
||||
|
||||
if(defined('TUTORIAL'))
|
||||
{
|
||||
if(!$withBranch) return $this->loadModel('tutorial')->getProductPairs();
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php $this->printExtendFields('', 'table');?>
|
||||
<tr <?php if($config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->manageProducts;?></th>
|
||||
<td class='text-left' id='productsBox' colspan="3">
|
||||
<div class='row'>
|
||||
@@ -116,7 +116,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr <?php if($config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->linkPlan;?></th>
|
||||
<td colspan="3" id="plansBox">
|
||||
<div class='row'>
|
||||
|
||||
@@ -74,12 +74,6 @@
|
||||
<th><?php echo $lang->project->status;?></th>
|
||||
<td><?php echo html::select('status', $lang->project->statusList, $project->status, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<?php if($config->global->flow == 'onlyTask'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->owner;?></th>
|
||||
<td><?php echo html::select('PM', $pmUsers, $project->PM, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<?php else:?>
|
||||
<tr>
|
||||
<th rowspan='2'><?php echo $lang->project->owner;?></th>
|
||||
<td>
|
||||
@@ -109,8 +103,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr <?php if($config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->manageProducts;?></th>
|
||||
<td class='text-left' id='productsBox' colspan="2">
|
||||
<div class='row'>
|
||||
@@ -135,7 +128,7 @@
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr <?php if($config->global->flow == 'onlyTask') echo "class='hidden'";?>>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->linkPlan;?></th>
|
||||
<td id="plansBox" colspan="2">
|
||||
<div class='row'>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<p><strong><?php echo $lang->project->afterInfo;?></strong></p>
|
||||
<div>
|
||||
<?php echo html::a($this->createLink('project', 'team', "projectID=$projectID"), $lang->project->setTeam, '', "class='btn'");?>
|
||||
<?php if($config->global->flow != 'onlyTask' && $project->type != 'ops') echo html::a($this->createLink('project', 'linkstory', "projectID=$projectID"), $lang->project->linkStory, '', "class='btn'");?>
|
||||
<?php if($project->type != 'ops') echo html::a($this->createLink('project', 'linkstory', "projectID=$projectID"), $lang->project->linkStory, '', "class='btn'");?>
|
||||
<?php echo html::a($this->createLink('task', 'create', "project=$projectID"), $lang->project->createTask, '', "class='btn'");?>
|
||||
<?php echo html::a($this->createLink('project', 'task', "projectID=$projectID"), $lang->project->goback, '', "class='btn'");?>
|
||||
</div>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
common::printIcon('story', 'review', $vars, $story, 'list', 'glasses', '', 'btn btn-info btn-icon');
|
||||
common::printIcon('story', 'close', $vars, $story, 'list', 'off', '', 'btn btn-info btn-icon iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $story, 'list', '', '', 'btn btn-info btn-icon');
|
||||
if($config->global->flow != 'onlyStory') common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', 'btn btn-info btn-icon');
|
||||
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$vars", $story, 'list', 'sitemap', '', 'btn btn-info btn-icon');
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -197,7 +197,6 @@
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<?php if($config->global->flow != 'onlyStory'):?>
|
||||
<?php if(!empty($fromBug)):?>
|
||||
<tr class='text-top'>
|
||||
<th class='thWidth'><?php echo $lang->story->legendFromBug;?></th>
|
||||
@@ -242,43 +241,42 @@
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendLinkStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<?php $linkStories = explode(',', $story->linkStories);?>
|
||||
<?php if(count($linkStories) < 2):?>
|
||||
<?php echo $lang->noData;?>
|
||||
<?php else:?>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
foreach($linkStories as $linkStoryID)
|
||||
{
|
||||
if(isset($story->extraStories[$linkStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$linkStoryID"), "#$linkStoryID " . $story->extraStories[$linkStoryID]) . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendChildStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<?php $childStories = explode(',', $story->childStories);?>
|
||||
<?php if(count($childStories) < 2):?>
|
||||
<?php echo $lang->noData;?>
|
||||
<?php else:?>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
foreach($childStories as $childStoryID)
|
||||
{
|
||||
if(isset($story->extraStories[$childStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$childStoryID"), "#$childStoryID " . $story->extraStories[$childStoryID]) . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendLinkStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<?php $linkStories = explode(',', $story->linkStories);?>
|
||||
<?php if(count($linkStories) < 2):?>
|
||||
<?php echo $lang->noData;?>
|
||||
<?php else:?>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
foreach($linkStories as $linkStoryID)
|
||||
{
|
||||
if(isset($story->extraStories[$linkStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$linkStoryID"), "#$linkStoryID " . $story->extraStories[$linkStoryID]) . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class='text-top'>
|
||||
<th><?php echo $lang->story->legendChildStories;?></th>
|
||||
<td class='pd-0'>
|
||||
<?php $childStories = explode(',', $story->childStories);?>
|
||||
<?php if(count($childStories) < 2):?>
|
||||
<?php echo $lang->noData;?>
|
||||
<?php else:?>
|
||||
<ul class='list-unstyled'>
|
||||
<?php
|
||||
foreach($childStories as $childStoryID)
|
||||
{
|
||||
if(isset($story->extraStories[$childStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$childStoryID"), "#$childStoryID " . $story->extraStories[$childStoryID]) . '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -72,7 +72,6 @@
|
||||
<div class="panel-body">
|
||||
<div class="row row-grid">
|
||||
<?php $i = 9; $j = 0;?>
|
||||
<?php if($config->global->flow != 'onlyTask'):?>
|
||||
<?php if($project->PM):?>
|
||||
<?php $i--;?>
|
||||
<?php unset($teamMembers[$project->PM]);?>
|
||||
@@ -93,7 +92,6 @@
|
||||
<?php unset($teamMembers[$project->RD]);?>
|
||||
<div class="col-xs-6"><i class="icon icon-person icon-sm text-muted"></i> <?php echo zget($users, $project->RD);?> <span class="text-muted">(<?php echo $lang->project->RD;?>)</span></div>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if(common::hasPriv('project', 'team')):?>
|
||||
<?php foreach($teamMembers as $teamMember):?>
|
||||
@@ -193,7 +191,6 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($config->global->flow != 'onlyTask'):?>
|
||||
<div class="detail">
|
||||
<div class="detail-title">
|
||||
<strong><?php echo $lang->project->manageProducts;?></strong>
|
||||
@@ -222,7 +219,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><strong><?php echo $lang->project->lblStats;?></strong></div>
|
||||
<div class="detail-content">
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
if(common::hasPriv('release', 'linkStory')) echo html::a($this->createLink('release', 'view', "releaseID=$release->id&type=story&link=true"), '<i class="icon-link"></i> ', '', "class='btn' title='{$lang->release->linkStory}'");
|
||||
if(common::hasPriv('release', 'linkBug') and $config->global->flow != 'onlyStory') echo html::a($this->createLink('release', 'view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ', '', "class='btn' title='{$lang->release->linkBug}'");
|
||||
if(common::hasPriv('release', 'linkBug')) echo html::a($this->createLink('release', 'view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ', '', "class='btn' title='{$lang->release->linkBug}'");
|
||||
if(common::hasPriv('release', 'changeStatus', $release))
|
||||
{
|
||||
$changedStatus = $release->status == 'normal' ? 'terminate' : 'normal';
|
||||
|
||||
@@ -53,12 +53,10 @@
|
||||
<?php $countStories = count($stories); $countBugs = count($bugs); $countLeftBugs = count($leftBugs);?>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li <?php if($type == 'story') echo "class='active'"?>><a href='#stories' data-toggle='tab'><?php echo html::icon($lang->icons['story'], 'text-green') . ' ' . $lang->release->stories;?></a></li>
|
||||
<?php if($config->global->flow != 'onlyStory'):?>
|
||||
<li <?php if($type == 'bug') echo "class='active'"?>><a href='#bugs' data-toggle='tab'><?php echo html::icon($lang->icons['bug'], 'text-green') . ' ' . $lang->release->bugs;?></a></li>
|
||||
<li <?php if($type == 'leftBug') echo "class='active'"?>><a href='#leftBugs' data-toggle='tab'><?php echo html::icon($lang->icons['bug'], 'text-red') . ' ' . $lang->release->generatedBugs;?></a></li>
|
||||
<?php endif;?>
|
||||
<li <?php if($type == 'releaseInfo') echo "class='active'"?>><a href='#releaseInfo' data-toggle='tab'><?php echo html::icon($lang->icons['plan'], 'text-info') . ' ' . $lang->release->view;?></a></li>
|
||||
<?php if($countStories or ($config->global->flow != 'onlyStory' and ($countBugs or $countLeftBugs))):?>
|
||||
<?php if($countStories or $countBugs or $countLeftBugs):?>
|
||||
<li class='pull-right'><div><?php common::printIcon('release', 'export', '', '', 'button', '', '', "export btn-sm");?></div></li>
|
||||
<?php endif;?>
|
||||
</ul>
|
||||
|
||||
@@ -1,4 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of risk currentModule 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 Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: control.php 5107 2013-07-12 01:46:12Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class risk extends control
|
||||
{
|
||||
/**
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user