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

This commit is contained in:
z
2020-08-27 13:54:46 +08:00
152 changed files with 887 additions and 2868 deletions
+1 -1
View File
@@ -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
View File
@@ -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'),
-6
View File
@@ -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();
-8
View File
@@ -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;
-48
View File
@@ -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';
-48
View File
@@ -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';
-48
View File
@@ -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';
-48
View File
@@ -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 = '排序';
-4
View File
@@ -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 -1
View File
@@ -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>
-6
View File
@@ -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>
-19
View File
@@ -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' => '');
-8
View File
@@ -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")));
}
-39
View File
@@ -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();
}
})
}
});
-1
View File
@@ -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
View File
@@ -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);
}
}
-7
View File
@@ -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);
+3 -3
View File
@@ -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):?>
-4
View File
@@ -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'>
+1 -7
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
});
})
-3
View File
@@ -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()
-2
View File
@@ -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>
-29
View File
@@ -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';?>
-18
View File
@@ -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 = '';
-9
View File
@@ -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';?>
-240
View File
@@ -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&param=%s';
$lang->bug->menu->unclosed = 'Öffnen|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->openedbyme = 'VonMirErstellt|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->assigntome = 'MirZugeordnet|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->resolvedbyme = 'VonMirGelöst|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->toclosed = 'ZuSchließen|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->unresolved = 'Ungelöst|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->more = array('link' => 'Mehr|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%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&param=%s';
$lang->bug->subMenu->more->assigntonull = 'Nicht zugeordnet|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->subMenu->more->longlifebugs = 'Wartend|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->subMenu->more->postponedbugs = 'Verschoben|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->subMenu->more->overduebugs = 'Überfällig|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
$lang->bug->subMenu->more->needconfirm = 'Zu bestätigen|bug|browse|productID=%s&branch=%s&browseType=needconfirm&param=%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']);
}
-323
View File
@@ -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&param=%s';
$lang->bug->menu->unclosed = 'Unclosed|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->openedbyme = 'ReportedByMe|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->assigntome = 'AssignedToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->resolvedbyme = 'ResolvedByMe|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->toclosed = 'ToBeClosed|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->unresolved = 'Active|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->more = array('link' => 'More|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%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&param=%s';
$lang->bug->subMenu->more->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->subMenu->more->longlifebugs = 'Stalled|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->subMenu->more->postponedbugs = 'Postponed|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->subMenu->more->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
$lang->bug->subMenu->more->needconfirm = 'ToBeConfirmed|bug|browse|productID=%s&branch=%s&browseType=needconfirm&param=%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');
-240
View File
@@ -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&param=%s';
$lang->bug->menu->unclosed = 'Non Fermés|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->openedbyme = 'Détectés par Moi|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->assigntome = 'Affectés à Moi|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->resolvedbyme = 'Résolus par Moi|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->toclosed = 'A Fermer|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->unresolved = 'Actifs|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->more = array('link' => 'More|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%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&param=%s';
$lang->bug->subMenu->more->assigntonull = 'Non affectés|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->subMenu->more->longlifebugs = 'Persistants|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->subMenu->more->postponedbugs = 'Reportés|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->subMenu->more->overduebugs = 'Retard|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
$lang->bug->subMenu->more->needconfirm = 'A Confirmer|bug|browse|productID=%s&branch=%s&browseType=needconfirm&param=%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']);
}
-240
View File
@@ -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&param=%s';
$lang->bug->menu->unclosed = 'Unclosed|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->openedbyme = 'ReportedByMe|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->assigntome = 'AssignedToMe|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->resolvedbyme = 'ResolvedByMe|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->toclosed = 'ToBeClosed|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->unresolved = 'Active|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->more = array('link' => 'Thêm|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%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&param=%s';
$lang->bug->subMenu->more->assigntonull = 'Unassigned|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->subMenu->more->longlifebugs = 'Stalled|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->subMenu->more->postponedbugs = 'Postponed|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->subMenu->more->overduebugs = 'Overdue|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
$lang->bug->subMenu->more->needconfirm = 'ToBeConfirmed|bug|browse|productID=%s&branch=%s&browseType=needconfirm&param=%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']);
}
+2 -241
View File
@@ -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&param=%s';
$lang->bug->menu->unclosed = '未关闭|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->openedbyme = '由我创建|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->assigntome = '指派给我|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->resolvedbyme = '由我解决|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->toclosed = '待关闭|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->unresolved = '未解决|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->more = array('link' => '更多|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%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&param=%s';
$lang->bug->subMenu->more->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->subMenu->more->longlifebugs = '久未处理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->subMenu->more->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->subMenu->more->overduebugs = '过期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
$lang->bug->subMenu->more->needconfirm = "{$lang->storyCommon}变动|bug|browse|productID=%s&branch=%s&browseType=needconfirm&param=%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();
-240
View File
@@ -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&param=%s';
$lang->bug->menu->unclosed = '未關閉|bug|browse|productID=%s&branch=%s&browseType=unclosed&param=%s';
$lang->bug->menu->openedbyme = '由我創建|bug|browse|productID=%s&branch=%s&browseType=openedbyme&param=%s';
$lang->bug->menu->assigntome = '指派給我|bug|browse|productID=%s&branch=%s&browseType=assigntome&param=%s';
$lang->bug->menu->resolvedbyme = '由我解決|bug|browse|productID=%s&branch=%s&browseType=resolvedbyme&param=%s';
$lang->bug->menu->toclosed = '待關閉|bug|browse|productID=%s&branch=%s&browseType=toclosed&param=%s';
$lang->bug->menu->unresolved = '未解決|bug|browse|productID=%s&branch=%s&browseType=unresolved&param=%s';
$lang->bug->menu->more = array('link' => '更多|bug|browse|productID=%s&branch=%s&browseType=unconfirmed&param=%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&param=%s';
$lang->bug->subMenu->more->assigntonull = '未指派|bug|browse|productID=%s&branch=%s&browseType=assigntonull&param=%s';
$lang->bug->subMenu->more->longlifebugs = '久未處理|bug|browse|productID=%s&branch=%s&browseType=longlifebugs&param=%s';
$lang->bug->subMenu->more->postponedbugs = '被延期|bug|browse|productID=%s&branch=%s&browseType=postponedbugs&param=%s';
$lang->bug->subMenu->more->overduebugs = '過期Bug|bug|browse|productID=%s&branch=%s&browseType=overduebugs&param=%s';
$lang->bug->subMenu->more->needconfirm = "{$lang->storyCommon}變動|bug|browse|productID=%s&branch=%s&browseType=needconfirm&param=%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
View File
@@ -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>';
}
-2
View File
@@ -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>
-3
View File
@@ -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();
-3
View File
@@ -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!';
-3
View File
@@ -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 = '保存失敗!';
-2
View File
@@ -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')):?>
-6
View File
@@ -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';
-6
View File
@@ -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';
-6
View File
@@ -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é';
-6
View File
@@ -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ư';
-6
View File
@@ -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'] = '私有';
-6
View File
@@ -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
View File
@@ -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();
-4
View File
@@ -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">
+1 -1
View File
@@ -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;
-104
View File
@@ -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';
}
-3
View File
@@ -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';
-3
View File
@@ -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 “.” ';
-3
View File
@@ -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 “.” ';
-3
View File
@@ -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 “.” ';
-3
View File
@@ -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 = '数据库名不能含有 “.” ';
-3
View File
@@ -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 = '資料庫名不能含有 “.” ';
+11 -3
View File
@@ -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
*/
+10
View File
@@ -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';
+10
View File
@@ -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
View File
@@ -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()
{
+57 -46
View File
@@ -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>';
}
+12
View File
@@ -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>
+12
View File
@@ -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>
+13 -3
View File
@@ -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>
+12
View File
@@ -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';
+1 -1
View File
@@ -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=&param=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=&param=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
?>
</td>
</tr>
+1 -1
View File
@@ -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=&param=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=&param=0&$vars", $story, 'list', 'sitemap', '', '', '', '', '', $story->program);
?>
</td>
</tr>
-2
View File
@@ -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));
}
-2
View File
@@ -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')
+1 -1
View File
@@ -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">
+1 -1
View File
@@ -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">
-2
View File
@@ -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>
+1 -1
View File
@@ -119,7 +119,7 @@
<?php
if(common::hasPriv('program', 'createguide')) echo html::a(helper::createLink('program', 'createguide', "projectID=&copyProjectID=&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'))
{
-2
View File
@@ -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'>
+68
View File
@@ -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();
+10
View File
@@ -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';
+10
View File
@@ -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 = '浏览阶段计划';
+176
View File
@@ -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);
+12
View File
@@ -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);?>
+12
View File
@@ -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'>
+12
View File
@@ -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
+12
View File
@@ -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;}
+12
View File
@@ -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);
+1 -2
View File
@@ -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)
-7
View File
@@ -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']);
}
-7
View File
@@ -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']);
}
-7
View File
@@ -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']);
}
-7
View File
@@ -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']);
}
-7
View File
@@ -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']);
}
-7
View File
@@ -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']);
}
-2
View File
@@ -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();
+2 -2
View File
@@ -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'>
+2 -9
View File
@@ -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'>
+1 -1
View File
@@ -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>
+37 -39
View File
@@ -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=&param=0&$vars", $story, 'list', 'sitemap', '', 'btn btn-info btn-icon');
common::printIcon('story', 'createCase', "productID=$story->product&branch=$story->branch&module=0&from=&param=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>
-4
View File
@@ -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">
+1 -1
View File
@@ -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';
+1 -3
View File
@@ -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>
+10
View File
@@ -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