Merge branch 'zentaopms_239'
This commit is contained in:
@@ -22,7 +22,7 @@ class programsEntry extends entry
|
||||
$_COOKIE['showClosed'] = $this->param('showClosed', 0);
|
||||
$mergeChildren = $this->param('mergeChildren', 0);
|
||||
|
||||
$this->config->systemMode = 'new';
|
||||
$this->config->systemMode = 'ALM';
|
||||
|
||||
$fields = $this->param('fields', '');
|
||||
if(stripos(strtolower(",{$fields},"), ",dropmenu,") !== false) return $this->getDropMenu();
|
||||
|
||||
@@ -26,7 +26,7 @@ class projectsEntry extends entry
|
||||
|
||||
$_COOKIE['involved'] = $this->param('involved', 0);
|
||||
|
||||
$this->config->systemMode = 'new';
|
||||
$this->config->systemMode = 'ALM';
|
||||
|
||||
if($programID)
|
||||
{
|
||||
|
||||
@@ -71,6 +71,7 @@ $filter->mr = new stdclass();
|
||||
$filter->ci = new stdclass();
|
||||
$filter->tree = new stdclass();
|
||||
$filter->productplan = new stdclass();
|
||||
$filter->projectplan = new stdclass();
|
||||
$filter->kanban = new stdclass();
|
||||
|
||||
$filter->index->index = new stdclass();
|
||||
@@ -173,6 +174,7 @@ $filter->ci->checkCompileStatus = new stdclass();
|
||||
$filter->execution->export = new stdclass();
|
||||
$filter->tree->browse = new stdclass();
|
||||
$filter->productplan->browse = new stdclass();
|
||||
$filter->projectplan->browse = new stdclass();
|
||||
$filter->kanban->space = new stdclass();
|
||||
$filter->execution->kanban = new stdclass();
|
||||
$filter->execution->all = new stdclass();
|
||||
@@ -300,6 +302,7 @@ $filter->story->track->cookie['preBranch'] = 'reg::word';
|
||||
$filter->story->track->cookie['preProductID'] = 'int';
|
||||
|
||||
$filter->productplan->browse->cookie['viewType'] = 'code';
|
||||
$filter->projectplan->browse->cookie['viewType'] = 'code';
|
||||
|
||||
$filter->task->create->cookie['lastTaskModule'] = 'int';
|
||||
$filter->task->export->cookie['checkedItem'] = 'reg::checked';
|
||||
|
||||
+12
-2
@@ -395,13 +395,16 @@ $config->objectTables['stage'] = TABLE_STAGE;
|
||||
$config->objectTables['apistruct'] = TABLE_APISTRUCT;
|
||||
$config->objectTables['repo'] = TABLE_REPO;
|
||||
|
||||
$config->newFeatures = array('introduction', 'tutorial', 'youngBlueTheme', 'visions');
|
||||
$config->newFeatures = array('introduction', 'tutorial', 'youngBlueTheme', 'visions');
|
||||
$config->disabledFeatures = '';
|
||||
$config->closedFeatures = '';
|
||||
|
||||
$config->pipelineTypeList = array('gitlab', 'gogs', 'gitea', 'jenkins', 'sonarqube');
|
||||
|
||||
/* Program privs.*/
|
||||
$config->programPriv = new stdclass();
|
||||
$config->programPriv->scrum = array('story', 'projectstory', 'projectrelease', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'meeting', 'stakeholder', 'testtask');
|
||||
$config->programPriv->noSprint = array('task', 'story', 'tree', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'stakeholder');
|
||||
$config->programPriv->scrum = array('story', 'requirement', 'productplan', 'tree', 'projectplan', 'projectstory', 'projectrelease', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'meeting', 'stakeholder', 'testtask');
|
||||
$config->programPriv->waterfall = array_merge($config->programPriv->scrum, array('task', 'workestimation', 'durationestimation', 'budget', 'programplan', 'review', 'reviewissue', 'weekly', 'cm', 'milestone', 'design', 'issue', 'risk', 'opportunity', 'measrecord', 'auditplan', 'trainplan', 'gapanalysis', 'pssp', 'researchplan', 'researchreport'));
|
||||
|
||||
$config->waterfallModules = array('workestimation', 'durationestimation', 'budget', 'programplan', 'review', 'reviewissue', 'weekly', 'cm', 'milestone', 'design', 'opportunity', 'auditplan', 'trainplan', 'gapanalysis', 'pssp', 'researchplan', 'researchreport');
|
||||
@@ -410,3 +413,10 @@ $config->showMainMenu = true;
|
||||
$config->maxPriValue = '256';
|
||||
|
||||
$config->importWhiteList = array('user', 'task', 'story', 'bug', 'testcase', 'feedback', 'ticket');
|
||||
|
||||
$config->featureGroup = new stdclass();
|
||||
$config->featureGroup->product = array('roadmap', 'track', 'URStory');
|
||||
$config->featureGroup->scrum = array();
|
||||
$config->featureGroup->waterfall = array('track');
|
||||
$config->featureGroup->assetlib = array();
|
||||
$config->featureGroup->other = array('devops', 'kanban');
|
||||
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+3
-8
@@ -31,14 +31,9 @@ UPDATE `zt_group` SET `vision`='lite', `project`='0' WHERE `role` = 'feedback';
|
||||
|
||||
DELETE FROM `zt_group` WHERE `vision` = 'lite' AND `role` IN ('liteAdmin','liteProject','liteTeam');
|
||||
|
||||
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES
|
||||
('lite', '管理员', 'liteAdmin', '迅捷版用户分组');
|
||||
|
||||
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES
|
||||
('lite', '项目管理', 'liteProject', '迅捷版用户分组');
|
||||
|
||||
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES
|
||||
('lite', '团队成员', 'liteTeam', '迅捷版用户分组');
|
||||
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES('lite', '管理员', 'liteAdmin', '运营管理界面用户分组');
|
||||
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES('lite', '项目管理', 'liteProject', '运营管理界面用户分组');
|
||||
INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES('lite', '团队成员', 'liteTeam', '运营管理界面用户分组');
|
||||
|
||||
ALTER TABLE `zt_productplan` ADD `closedReason` varchar(20) NOT NULL AFTER `order`;
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
ALTER TABLE `zt_product` ADD `shadow` tinyint(1) unsigned NOT NULL AFTER `code`;
|
||||
ALTER TABLE `zt_project` ADD `hasProduct` tinyint(1) unsigned NOT NULL DEFAULT 1 AFTER `code`;
|
||||
ALTER table `zt_project` ADD `multiple` enum('0', '1') NOT NULL DEFAULT '1';
|
||||
ALTER TABLE `zt_repo` ADD `projects` varchar(255) NOT NULL AFTER `product`;
|
||||
|
||||
CREATE OR REPLACE VIEW `ztv_normalproduct` AS SELECT * FROM `zt_product` WHERE `shadow` = 0;
|
||||
|
||||
REPLACE INTO `zt_report` (`code`, `name`, `module`, `sql`, `vars`, `langs`, `params`, `step`, `desc`, `addedBy`, `addedDate`) VALUES
|
||||
('product-invest', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u6295\\u5165\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u6295\\u5165\\u8868\",\"en\":\"Product Investment\"}', ',product', 'select t1.id,t1.name,1 as projects, round(t3.consumed,2) as consumed from TABLE_PRODUCT as t1\r\n left join TABLE_PROJECTPRODUCT as t2 on t1.id=t2.product\r\n left join ztv_projectsummary as t3 on t2.project=t3.project\r\n left join TABLE_PROJECT as t4 on t2.project=t4.id\r\n left join TABLE_PROGRAM as t5 on t1.program=t5.id\r\n where t1.deleted=\'0\' and t4.deleted=\'0\' and t4.type=\'project\'\r\norder by t5.`order` asc, t1.line desc, t1.`order` asc', '', '{\"projects\":{\"zh-cn\":\"\\u9879\\u76ee\\u6570\",\"zh-tw\":\"\\u9879\\u76ee\\u6570\",\"en\":\"Projects\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"projects\",\"consumed\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"projects\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u6bcf\\u4e2a\\u4ea7\\u54c1\\u7684\\u9879\\u76ee\\u603b\\u6570\\uff0c\\u5df2\\u7ecf\\u6d88\\u8017\\u7684\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u6bcf\\u500b\\u7522\\u54c1\\u7684\\u9805\\u76ee\\u7e3d\\u6578\\uff0c\\u5df2\\u7d93\\u6d88\\u8017\\u7684\\u5de5\\u6642\\u3002\",\"en\":\"Number of projects and consumed hours.\"}', 'admin', '2015-07-20 14:21:30'),
|
||||
('product-progress', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u5b8c\\u6210\\u5ea6\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u5b8c\\u6210\\u5ea6\\u7d71\\u8a08\\u8868\",\"en\":\"Product Progress\"}', ',product', 'select t1.*,t2.name, (case when t1.status = \'closed\' or t1.stage = \'released\' then 1 else 0 end) as done, 1 as count from TABLE_STORY as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"count\",\"done\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"count\",\"done\"],\"percent\":{\"1\":\"1\"},\"contrast\":{\"1\":\"count\"},\"showAlone\":{\"1\":\"1\"}}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u603b\\u6570(\\u72b6\\u6001\\u662f\\u5173\\u95ed\\uff0c\\u6216\\u8005\\u7814\\u53d1\\u9636\\u6bb5\\u662f\\u53d1\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u7e3d\\u6578(\\u72c0\\u614b\\u662f\\u95dc\\u9589\\uff0c\\u6216\\u8005\\u7814\\u767c\\u968e\\u6bb5\\u662f\\u767c\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"en\":\"Number of total stories,done stories(state is closed, or stage is released), percent of completion.\"}', 'admin', '2015-07-21 15:07:48'),
|
||||
('story-status', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Story Status\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u72b6\\u6001\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u72c0\\u614b\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and status distribution of stories.\"}', 'admin', '2015-07-21 15:35:38'),
|
||||
('story-stage', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Story Stage\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u7814\\u53d1\\u9636\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u7814\\u767c\\u968e\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and stage distribution of stories \"}', 'admin', '2015-07-21 15:38:34'),
|
||||
('product-release', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u53d1\\u5e03\\u6570\\u91cf\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u767c\\u5e03\\u6578\\u91cf\\u7d71\\u8a08\\u8868\",\"en\":\"Product Release\"}', ',product', 'select t2.name, 1 as releases from TABLE_RELEASE as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"releases\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"releases\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u53d1\\u5e03\\u7684\\u6570\\u91cf\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u767c\\u5e03\\u7684\\u6578\\u91cf\\u3002\",\"en\":\"Product Release.\"}', 'admin', '2015-07-21 16:00:52'),
|
||||
('task-status', '{\"zh-cn\":\"\\u4efb\\u52a1\\u72b6\\u6001\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u72c0\\u614b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Status Report\",\"de\":\"Task Status Report\",\"fr\":\"Task Status Report\",\"vi\":\"Task Status Report\",\"ja\":\"Task Status Report\"}', ',project', 'select t1.id,t3.name as project,t1.name,t2.status,IF(t3.multiple="1",t1.name,"") as execution,t2.id as taskID, t1.status as projectstatus, (case when t2.deadline < CURDATE() and t2.deadline != \'0000-00-00\' and t2.status != \'closed\' and t2.status != \'done\' and t2.status != \'cancel\' then 1 else 0 end) as timeout from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u6267\\u884c\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u57f7\\u884c\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 11:28:33'),
|
||||
('task-type', '{\"zh-cn\":\"\\u4efb\\u52a1\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Type Report\",\"de\":\"Task Type Report\",\"fr\":\"Task Type Report\",\"vi\":\"Task Type Report\",\"ja\":\"Task Type Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.type,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:06:46'),
|
||||
('task-assign', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u6307\\u6d3e\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u6307\\u6d3e\\u7d71\\u8a08\\u8868\",\"en\":\"Task Assign Report\",\"de\":\"Task Assign Report\",\"fr\":\"Task Assign Report\",\"vi\":\"Task Assign Report\",\"ja\":\"Task Assign Report\"}', ',project', 'select t1.id,t4.name as project,IF(t4.multiple="1",t1.name,"") as execution,if(t3.account is not null, t3.account,t2.assignedTo) as assignedTo,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_TEAM as t3 on t3.type=\'task\' && t3.root=t2.id \r\nleft join TABLE_PROJECT as t4 on t1.project=t4.id\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t4.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"assignedTo\":{\"zh-cn\":\"\\u6307\\u6d3e\\u7ed9\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:13:28'),
|
||||
('task-finish', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u5b8c\\u6210\\u8005\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u5b8c\\u6210\\u8005\\u7d71\\u8a08\\u8868\",\"en\":\"Task Finish Report\",\"de\":\"Task Finish Report\",\"fr\":\"Task Finish Report\",\"vi\":\"Task Finish Report\",\"ja\":\"Task Finish Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.finishedBy,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t1.project=t3.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and t2.finishedBy!=\'\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"finishedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:16:21'),
|
||||
('project-invest', '{\"zh-cn\":\"\\u9879\\u76ee\\u6295\\u5165\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u6295\\u5165\\u7d71\\u8a08\\u8868\",\"en\":\"Project Invest Report\",\"de\":\"Project Invest Report\",\"fr\":\"Project Invest Report\",\"vi\":\"Project Invest Report\",\"ja\":\"Project Invest Report\"}', ',project', 'select t1.id,t5.name as project,IF(t5.multiple="1",t1.name,"") as execution,CONCAT(t1.begin,\' ~ \',t1.end) as timeLimit,t2.teams,t3.stories,round(t4.consumed,1) as consumed,t4.number, t1.status as projectstatus \r\nfrom TABLE_EXECUTION as t1\r\n left join ztv_projectteams as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\n left join ztv_executionsummary as t4 on t1.id=t4.execution \r\nleft join TABLE_PROJECT as t5 on t1.project=t5.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t5.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"timeLimit\":{\"zh-cn\":\"\\u5de5\\u671f\"},\"teams\":{\"zh-cn\":\"\\u4eba\\u6570\"},\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\"},\"consumed\":{\"zh-cn\":\"\\u603b\\u6d88\\u8017\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"number\",\"stories\",\"teams\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"number\",\"stories\",\"teams\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52a1\\u6570\\uff0c\\u9700\\u6c42\\u6570\\uff0c\\u4eba\\u6570\\uff0c\\u603b\\u6d88\\u8017\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52d9\\u6578\\uff0c\\u9700\\u6c42\\u6578\\uff0c\\u4eba\\u6578\\uff0c\\u7e3d\\u6d88\\u8017\\u5de5\\u6642\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 16:37:38'),
|
||||
('projectstory-status', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Story Status\",\"de\":\"Project Story Status\",\"fr\":\"Project Story Status\",\"vi\":\"Project Story Status\",\"ja\":\"Project Story Status\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.status from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:35:08'),
|
||||
('project-stage', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Project Stage Report\",\"de\":\"Project Stage Report\",\"fr\":\"Project Stage Report\",\"vi\":\"Project Stage Report\",\"ja\":\"Project Stage Report\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.stage from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:38:18'),
|
||||
('projectbug-resolution', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolution\",\"de\":\"Project Bug Resolution\",\"fr\":\"Project Bug Resolution\",\"vi\":\"Project Bug Resolution\",\"ja\":\"Project Bug Resolution\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolution from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t2.deleted=\'0\' and t2.resolution!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:04:46'),
|
||||
('projectbug-status', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Status\",\"de\":\"Project Bug Status\",\"fr\":\"Project Bug Status\",\"vi\":\"Project Bug Status\",\"ja\":\"Project Bug Status\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.status from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\' \' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:48:03'),
|
||||
('projectbug-opened', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Opened\",\"de\":\"Project Bug Opened\",\"fr\":\"Project Bug Opened\",\"vi\":\"Project Bug Opened\",\"ja\":\"Project Bug Opened\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.openedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"openedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:08:10'),
|
||||
('projectbug-resolve', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolve\",\"de\":\"Project Bug Resolve\",\"fr\":\"Project Bug Resolve\",\"vi\":\"Project Bug Resolve\",\"ja\":\"Project Bug Resolve\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolvedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and t2.status!=\'active\' and t2.resolvedBy!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolvedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:13:16'),
|
||||
('projectbug-assign', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Assign\",\"de\":\"Project Bug Assign\",\"fr\":\"Project Bug Assign\",\"vi\":\"Project Bug Assign\",\"ja\":\"Project Bug Assign\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.assignedTo from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution \r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:29:10'),
|
||||
('project-quality', '{\"zh-cn\":\"\\u9879\\u76ee\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u8cea\\u91cf\\u8868\",\"en\":\"Project Quality Report\",\"de\":\"Project Quality Report\",\"fr\":\"Project Quality Report\",\"vi\":\"Project Quality Report\",\"ja\":\"Project Quality Report\"}', ',project', 'select t1.id, t5.name as project,t5.id,IF(t5.multiple="1",t1.name,"") as execution,t2.stories,(t2.stories-t2.undone) as doneStory,t3.number,(t3.number-t3.undone) as doneTask,t4.bugs,t4.resolutions, round(t4.bugs/(t2.stories-t2.undone),2) as bugthanstory,round(t4.bugs/(t3.number-t3.undone),2) as bugthantask,t4.seriousBugs from TABLE_EXECUTION as t1 \r\nleft join ztv_projectstories as t2 on t1.id=t2.execution\r\nleft join ztv_executionsummary as t3 on t1.id=t3.execution\r\nleft join ztv_projectbugs as t4 on t1.id=t4.execution\r\nleft join TABLE_PROJECT as t5 on t5.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t1.grade=\'1\' and if($project=\'\',1,t5.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u603b\\u6570\"},\"doneTask\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\"},\"bugthantask\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u4efb\\u52a1\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdBug\\u6bd4\\u7387\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52a1\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3\\uff09\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52d9\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3\\uff09\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 17:03:10'),
|
||||
('productbug-type', '{\"zh-cn\":\"\\u4ea7\\u54c1Bug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1Bug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Bug Type of Product\"}', ',product,test', 'select t1.id,t1.name,t2.id as bugID,t2.type from TABLE_PRODUCT as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.product \r\nleft join TABLE_PROGRAM as t3 on t1.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t1.line desc, t1.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Type distribution of Bugs.\"}', 'admin', '2015-07-24 13:48:22'),
|
||||
('product-quality', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u8cea\\u91cf\\u8868\",\"en\":\"Product Quality\"}', ',product', 'select t1.id,t1.name,t2.stories,(t2.stories-t2.undone) as doneStory,t3.bugs,t3.resolutions,round(t3.bugs/(t2.stories-t2.undone),2) as bugthanstory,t3.seriousBugs from TABLE_PRODUCT as t1 \r\nleft join ztv_productstories as t2 on t1.id=t2.product \r\nleft join ztv_productbugs as t3 on t1.id=t3.product \r\nleft join TABLE_PROGRAM as t4 on t1.program=t4.id \r\nwhere t1.deleted=\'0\'\r\norder by t4.`order` asc, t1.line desc, t1.`order` asc', '', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u603b\\u6570\",\"en\":\"Stories\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"en\":\"Finished Stories\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\",\"zh-tw\":\"Bug\\u6570\",\"en\":\"Bugs\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6570\",\"en\":\"Solved Bugs\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"zh-tw\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"en\":\"Bug\\/Finished Story\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\",\"zh-tw\":\"\\u91cd\\u8981Bug\\u6570\",\"en\":\"Serious Bugs\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"zh-tw\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"en\":\"Serious Bugs %\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"bugs\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u4ea7\\u54c1\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u7522\\u54c1\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3)\\u3002\",\"en\":\"Serious Bug (severity is less than 3).\"}', 'admin', '2015-07-23 17:17:40'),
|
||||
('user-login', '{\"zh-cn\":\"\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u8868\",\"en\":\"Login Times\"}', ',staff', 'select actor,LEFT(`date`,10) as `day` from TABLE_ACTION where `action`=\'login\' and if($startDate=\'\',1,`date`>=$startDate) and if($endDate=\'\',1,`date`<=$endDate) order by `date` asc, actor asc', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"actor\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"day\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5b9e\\u73b0\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u62a5\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7edf\\u8ba1\\u6bcf\\u5929\\u6bcf\\u4e2a\\u4eba\\u7684\\u767b\\u5f55\\u6b21\\u6570\\uff0c\\u4ee5\\u53ca\\u603b\\u6570\\u3002\",\"zh-tw\":\"\\u5be6\\u73fe\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u5831\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7d71\\u8a08\\u6bcf\\u5929\\u6bcf\\u500b\\u4eba\\u7684\\u767b\\u9304\\u6b21\\u6578\\uff0c\\u4ee5\\u53ca\\u7e3d\\u6578\\u3002\",\"en\":\"The summary of user login times.\"}', 'admin', '2015-07-24 14:28:11'),
|
||||
('effort', '{\"zh-cn\":\"\\u65e5\\u5fd7\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u65e5\\u8a8c\\u532f\\u7e3d\\u8868\",\"en\":\"Effort Summary\"}', ',staff', 'select t1.account,t1.consumed,t1.`date`,if($dept=\'0\',0,t2.dept) as dept from TABLE_EFFORT as t1 left join TABLE_USER as t2 on t1.account=t2.account where t1.`deleted`=\'0\' and if($startDate=\'\',1,t1.`date`>=$startDate) and if($endDate=\'\',1,t1.`date`<=$endDate) having dept=$dept order by `date` asc', '{\"varName\":[\"dept\",\"startDate\",\"endDate\"],\"showName\":[\"\\u90e8\\u95e8\",\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"dept\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"date\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"consumed\":{\"zh-cn\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost\"}}', '{\"group1\":\"account\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"date\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"consumed\"]}', 2, '{\"zh-cn\":\"\\u67e5\\u770b\\u67d0\\u4e2a\\u65f6\\u95f4\\u6bb5\\u5185\\u7684\\u65e5\\u5fd7\\u60c5\\u51b5\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u95e8\\u9009\\u62e9\\u3002\",\"zh-tw\":\"\\u67e5\\u770b\\u67d0\\u500b\\u6642\\u9593\\u6bb5\\u5167\\u7684\\u65e5\\u8a8c\\u60c5\\u6cc1\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u9580\\u9078\\u64c7\\u3002\",\"en\":\"Effort summary of users.\"}', 'admin', '2015-07-27 13:53:32'),
|
||||
('company-dynamic', '{\"zh-cn\":\"\\u516c\\u53f8\\u52a8\\u6001\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u516c\\u53f8\\u52d5\\u614b\\u532f\\u7e3d\\u8868\",\"en\":\"Company Dynamics\"}', ',staff', 'select t1.day,t2.userlogin,t3.consumed,t4.storyopen,t5.storyclose,t6.taskopen,t7.taskfinish,t8.bugopen,t9.bugresolve,t1.actions from ztv_dayactions as t1 left join ztv_dayuserlogin as t2 on t1.day=t2.day left join ztv_dayeffort as t3 on t1.day=t3.date left join ztv_daystoryopen as t4 on t1.day=t4.day left join ztv_daystoryclose as t5 on t1.day=t5.day left join ztv_daytaskopen as t6 on t1.day=t6.day left join ztv_daytaskfinish as t7 on t1.day=t7.day left join ztv_daybugopen as t8 on t1.day=t8.day left join ztv_daybugresolve as t9 on t1.day=t9.day where if($startDate=\'\',1,t1.day>=$startDate) and if($endDate=\'\',1,t1.day<=$endDate)', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"day\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"userlogin\":{\"zh-cn\":\"\\u767b\\u5f55\\u6b21\\u6570\",\"zh-tw\":\"\\u767b\\u9304\\u6b21\\u6578\",\"en\":\"Login\"},\"consumed\":{\"zh-cn\":\"\\u65e5\\u5fd7\\u5de5\\u65f6\",\"zh-tw\":\"\\u65e5\\u8a8c\\u5de5\\u6642\",\"en\":\"Cost(h)\"},\"storyopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6578\",\"en\":\"Open Story\"},\"storyclose\":{\"zh-cn\":\"\\u5173\\u95ed\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u95dc\\u9589\\u9700\\u6c42\\u6578\",\"en\":\"Closed Story\"},\"taskopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u4efb\\u52d9\\u6578\",\"en\":\"Open Task\"},\"taskfinish\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u4efb\\u52d9\\u6578\",\"en\":\"Finished Task\"},\"bugopen\":{\"zh-cn\":\"\\u65b0\\u589eBug\\u6570\",\"zh-tw\":\"\\u65b0\\u589eBug\\u6578\",\"en\":\"Open Bug\"},\"bugresolve\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6578\",\"en\":\"Resolved bug\"},\"actions\":{\"zh-cn\":\"\\u52a8\\u6001\\u6570\",\"zh-tw\":\"\\u52d5\\u614b\\u6578\",\"en\":\"Dynamics\"}}', '{\"group1\":\"day\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"]}', 2, '{\"zh-cn\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u4e2a\\u65f6\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u5e94\\u7684\\u6570\\u636e\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u5f55\\u6b21\\u6570\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u5fd7\\u5de5\\u65f6\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6570\\u30024. \\u6bcf\\u5929\\u5173\\u95ed\\u7684\\u9700\\u6c42\\u6570\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52a1\\u6570\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6570\\u30028. \\u6bcf\\u5929\\u89e3\\u51b3\\u7684Bug\\u6570\\u30029. \\u6bcf\\u5929\\u7684\\u52a8\\u6001\\u6570\\u3002\",\"zh-tw\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u500b\\u6642\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u61c9\\u7684\\u6578\\u64da\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u9304\\u6b21\\u6578\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u8a8c\\u5de5\\u6642\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6578\\u30024. \\u6bcf\\u5929\\u95dc\\u9589\\u7684\\u9700\\u6c42\\u6578\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52d9\\u6578\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6578\\u30028. \\u6bcf\\u5929\\u89e3\\u6c7a\\u7684Bug\\u6578\\u30029. \\u6bcf\\u5929\\u7684\\u52d5\\u614b\\u6578\\u3002\",\"en\":\"The summary of company dynamics\"}', 'admin', '2015-07-27 15:09:42'),
|
||||
('bug-resolve', '{\"zh-cn\":\"Bug\\u89e3\\u51b3\\u8868\",\"zh-tw\":\"Bug\\u89e3\\u6c7a\\u8868\",\"en\":\"Solved Bugs\"}', ',test', 'select *,if($product=\'\',0,product) as customproduct from TABLE_BUG where deleted=\'0\' and resolution!=\'\' and if($startDate=\'\',1,resolvedDate>=$startDate) and if($endDate=\'\',1,resolvedDate<=$endDate) having customproduct=$product', '{\"varName\":[\"product\",\"startDate\",\"endDate\"],\"showName\":[\"\\u4ea7\\u54c1\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u5f00\\u59cb\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u7ed3\\u675f\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"product\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"resolvedBy\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"],\"percent\":[\"1\"],\"contrast\":[\"crystalTotal\"],\"showAlone\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0c\\u89e3\\u51b3\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8be5\\u7528\\u6237\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0c\\u89e3\\u6c7a\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8a72\\u7528\\u6236\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf)\\u3002\",\"en\":\"percentage:self resolved \\/ all resolved\"}', 'admin', '2015-07-24 13:44:25'),
|
||||
('project-progress', '{\"zh-cn\":\"\\u9879\\u76ee\\u8fdb\\u5c55\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9032\\u5c55\\u8868\",\"en\":\"Project Progress Report\",\"de\":\"Project Progress Report\",\"fr\":\"Project Progress Report\",\"vi\":\"Project Progress Report\",\"ja\":\"Project Progress Report\"}', ',project', 'select t1.id,t4.name as project,t4.id,IF(t4.multiple="1",t1.name,"") as execution,t1.status,t2.number as tasks,round(t2.consumed,2) as consumed,round(t2.`left`,2) as `left`,t3.stories,t2.undone as undoneTask,t3.undone as undoneStory,t2.totalReal from TABLE_EXECUTION as t1 \r\nleft join ztv_executionsummary as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\nleft join TABLE_PROJECT as t4 on t4.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t1.id=$execution) and if($status=\'\',1,t1.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"totalReal\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u6570\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u9700\\u6c42\\u6570\\uff0c\\u5269\\u4f59\\u4efb\\u52a1\\u6570\\uff0c\\u8fdb\\u5ea6\\u3002\",\"zh-tw\":\"\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u6578\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u9700\\u6c42\\u6578\\uff0c\\u5269\\u9918\\u4efb\\u52d9\\u6578\\uff0c\\u9032\\u5ea6\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 14:03:06'),
|
||||
('projectbug-type', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Project Bug Type\",\"de\":\"Project Bug Type\",\"fr\":\"Project Bug Type\",\"vi\":\"Project Bug Type\",\"ja\":\"Project Bug Type\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t2.id as bugID,t2.type from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-08-04 13:54:22');
|
||||
@@ -487,6 +487,7 @@ CREATE OR REPLACE VIEW `ztv_daytaskfinish` AS select count(*) AS `taskfinish`,le
|
||||
CREATE OR REPLACE VIEW `ztv_daybugopen` AS select count(*) AS `bugopen`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'opened')) group by left(`zt_action`.`date`,10);
|
||||
CREATE OR REPLACE VIEW `ztv_daybugresolve` AS select count(*) AS `bugresolve`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'resolved')) group by left(`zt_action`.`date`,10);
|
||||
CREATE OR REPLACE VIEW `ztv_dayactions` AS select count(*) AS `actions`,left(`zt_action`.`date`,10) AS `day` from `zt_action` group by left(`zt_action`.`date`,10);
|
||||
CREATE OR REPLACE VIEW `ztv_normalproduct` AS SELECT * FROM `zt_product` WHERE `shadow` = 0;
|
||||
|
||||
REPLACE INTO `zt_report` (`code`, `name`, `module`, `sql`, `vars`, `langs`, `params`, `step`, `desc`, `addedBy`, `addedDate`) VALUES
|
||||
('product-invest', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u6295\\u5165\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u6295\\u5165\\u8868\",\"en\":\"Product Investment\"}', ',product', 'select t1.id,t1.name,1 as projects, round(t3.consumed,2) as consumed from TABLE_PRODUCT as t1\r\n left join TABLE_PROJECTPRODUCT as t2 on t1.id=t2.product\r\n left join ztv_projectsummary as t3 on t2.project=t3.project\r\n left join TABLE_PROJECT as t4 on t2.project=t4.id\r\n left join TABLE_PROGRAM as t5 on t1.program=t5.id\r\n where t1.deleted=\'0\' and t4.deleted=\'0\' and t4.type=\'project\'\r\norder by t5.`order` asc, t1.line desc, t1.`order` asc', '', '{\"projects\":{\"zh-cn\":\"\\u9879\\u76ee\\u6570\",\"zh-tw\":\"\\u9879\\u76ee\\u6570\",\"en\":\"Projects\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"projects\",\"consumed\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"projects\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u6bcf\\u4e2a\\u4ea7\\u54c1\\u7684\\u9879\\u76ee\\u603b\\u6570\\uff0c\\u5df2\\u7ecf\\u6d88\\u8017\\u7684\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u6bcf\\u500b\\u7522\\u54c1\\u7684\\u9805\\u76ee\\u7e3d\\u6578\\uff0c\\u5df2\\u7d93\\u6d88\\u8017\\u7684\\u5de5\\u6642\\u3002\",\"en\":\"Number of projects and consumed hours.\"}', 'admin', '2015-07-20 14:21:30'),
|
||||
|
||||
+29
-22
@@ -1099,8 +1099,9 @@ CREATE TABLE IF NOT EXISTS `zt_planstory` (
|
||||
CREATE TABLE IF NOT EXISTS `zt_product` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
`program` mediumint(8) unsigned NOT NULL,
|
||||
`name` varchar(90) NOT NULL,
|
||||
`name` varchar(110) NOT NULL,
|
||||
`code` varchar(45) NOT NULL,
|
||||
`shadow` tinyint(1) unsigned NOT NULL,
|
||||
`bind` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`line` mediumint(8) NOT NULL,
|
||||
`type` varchar(30) NOT NULL default 'normal',
|
||||
@@ -1149,6 +1150,7 @@ CREATE TABLE IF NOT EXISTS `zt_project` (
|
||||
`project` mediumint(8) NOT NULL DEFAULT 0,
|
||||
`model` char(30) NOT NULL,
|
||||
`type` char(30) NOT NULL DEFAULT 'sprint',
|
||||
`hasProduct` tinyint(1) unsigned NOT NULL DEFAULT 1,
|
||||
`lifetime` char(30) NOT NULL DEFAULT '',
|
||||
`budget` varchar(30) NOT NULL DEFAULT '0',
|
||||
`budgetUnit` char(30) NOT NULL DEFAULT 'CNY',
|
||||
@@ -1196,6 +1198,7 @@ CREATE TABLE IF NOT EXISTS `zt_project` (
|
||||
`vision` varchar(10) NOT NULL DEFAULT 'rnd',
|
||||
`displayCards` smallint(6) NOT NULL default '0',
|
||||
`fluidBoard` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`multiple` enum('0','1') NOT NULL DEFAULT '1',
|
||||
`colWidth` smallint(4) NOT NULL DEFAULT '264',
|
||||
`minColWidth` smallint(4) NOT NULL DEFAULT '200',
|
||||
`maxColWidth` smallint(4) NOT NULL DEFAULT '384',
|
||||
@@ -1303,6 +1306,7 @@ CREATE TABLE IF NOT EXISTS `zt_release` (
|
||||
CREATE TABLE IF NOT EXISTS `zt_repo` (
|
||||
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
`product` varchar(255) NOT NULL,
|
||||
`projects` varchar(255) NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`path` varchar(255) NOT NULL,
|
||||
`prefix` varchar(100) NOT NULL,
|
||||
@@ -7013,33 +7017,36 @@ CREATE OR REPLACE VIEW `ztv_daytaskfinish` AS select count(*) AS `taskfinish`,le
|
||||
CREATE OR REPLACE VIEW `ztv_daybugopen` AS select count(*) AS `bugopen`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'opened')) group by left(`zt_action`.`date`,10);
|
||||
CREATE OR REPLACE VIEW `ztv_daybugresolve` AS select count(*) AS `bugresolve`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'resolved')) group by left(`zt_action`.`date`,10);
|
||||
CREATE OR REPLACE VIEW `ztv_dayactions` AS select count(*) AS `actions`,left(`zt_action`.`date`,10) AS `day` from `zt_action` group by left(`zt_action`.`date`,10);
|
||||
CREATE OR REPLACE VIEW `ztv_normalproduct` AS SELECT * FROM `zt_product` WHERE `shadow` = 0;
|
||||
|
||||
REPLACE INTO `zt_report` (`code`, `name`, `module`, `sql`, `vars`, `langs`, `params`, `step`, `desc`, `addedBy`, `addedDate`) VALUES
|
||||
('product-invest', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u6295\\u5165\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u6295\\u5165\\u8868\",\"en\":\"Product Investment\"}', ',product', 'select t1.id,t1.name,1 as projects, round(t3.consumed,2) as consumed from TABLE_PRODUCT as t1\r\n left join TABLE_PROJECTPRODUCT as t2 on t1.id=t2.product\r\n left join ztv_projectsummary as t3 on t2.project=t3.project\r\n left join TABLE_PROJECT as t4 on t2.project=t4.id\r\n left join TABLE_PROGRAM as t5 on t1.program=t5.id\r\n where t1.deleted=\'0\' and t4.deleted=\'0\' and t4.type=\'project\'\r\norder by t5.`order` asc, t1.line desc, t1.`order` asc', '', '{\"projects\":{\"zh-cn\":\"\\u9879\\u76ee\\u6570\",\"zh-tw\":\"\\u9879\\u76ee\\u6570\",\"en\":\"Projects\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"projects\",\"consumed\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"projects\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u6bcf\\u4e2a\\u4ea7\\u54c1\\u7684\\u9879\\u76ee\\u603b\\u6570\\uff0c\\u5df2\\u7ecf\\u6d88\\u8017\\u7684\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u6bcf\\u500b\\u7522\\u54c1\\u7684\\u9805\\u76ee\\u7e3d\\u6578\\uff0c\\u5df2\\u7d93\\u6d88\\u8017\\u7684\\u5de5\\u6642\\u3002\",\"en\":\"Number of projects and consumed hours.\"}', 'admin', '2015-07-20 14:21:30'),
|
||||
('product-progress', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u5b8c\\u6210\\u5ea6\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u5b8c\\u6210\\u5ea6\\u7d71\\u8a08\\u8868\",\"en\":\"Product Progress\"}', ',product', 'select t1.*,t2.name, (case when t1.status = \'closed\' or t1.stage = \'released\' then 1 else 0 end) as done, 1 as count from TABLE_STORY as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"count\",\"done\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"count\",\"done\"],\"percent\":{\"1\":\"1\"},\"contrast\":{\"1\":\"count\"},\"showAlone\":{\"1\":\"1\"}}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u603b\\u6570(\\u72b6\\u6001\\u662f\\u5173\\u95ed\\uff0c\\u6216\\u8005\\u7814\\u53d1\\u9636\\u6bb5\\u662f\\u53d1\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u7e3d\\u6578(\\u72c0\\u614b\\u662f\\u95dc\\u9589\\uff0c\\u6216\\u8005\\u7814\\u767c\\u968e\\u6bb5\\u662f\\u767c\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"en\":\"Number of total stories,done stories(state is closed, or stage is released), percent of completion.\"}', 'admin', '2015-07-21 15:07:48'),
|
||||
('story-status', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Story Status\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u72b6\\u6001\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u72c0\\u614b\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and status distribution of stories.\"}', 'admin', '2015-07-21 15:35:38'),
|
||||
('story-stage', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Story Stage\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u7814\\u53d1\\u9636\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u7814\\u767c\\u968e\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and stage distribution of stories \"}', 'admin', '2015-07-21 15:38:34'),
|
||||
('product-release', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u53d1\\u5e03\\u6570\\u91cf\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u767c\\u5e03\\u6578\\u91cf\\u7d71\\u8a08\\u8868\",\"en\":\"Product Release\"}', ',product', 'select t2.name, 1 as releases from TABLE_RELEASE as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"releases\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"releases\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u53d1\\u5e03\\u7684\\u6570\\u91cf\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u767c\\u5e03\\u7684\\u6578\\u91cf\\u3002\",\"en\":\"List the number of releases by product.\"}', 'admin', '2015-07-21 16:00:52'),
|
||||
('task-status', '{\"zh-cn\":\"\\u4efb\\u52a1\\u72b6\\u6001\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u72c0\\u614b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Status Report\"}', ',project', 'select t1.id,t3.name as project,t1.name,t2.status,t1.name as execution,t2.id as taskID, t1.status as projectstatus, (case when t2.deadline < CURDATE() and t2.deadline != \'0000-00-00\' and t2.status != \'closed\' and t2.status != \'done\' and t2.status != \'cancel\' then 1 else 0 end) as timeout from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u6267\\u884c\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u57f7\\u884c\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Based on the status distribution of statistical tasks.\"}', 'admin', '2015-07-22 11:28:33'),
|
||||
('task-type', '{\"zh-cn\":\"\\u4efb\\u52a1\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Type Report\"}', ',project', 'select t1.id,t3.name as project,t1.name as execution,t2.type,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the type of statistical task distribution.\"}', 'admin', '2015-07-22 13:06:46'),
|
||||
('task-assign', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u6307\\u6d3e\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u6307\\u6d3e\\u7d71\\u8a08\\u8868\",\"en\":\"Task Assign Report\"}', ',project', 'select t1.id,t4.name as project,t1.name as execution,if(t3.account is not null, t3.account,t2.assignedTo) as assignedTo,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_TEAM as t3 on t3.type=\'task\' && t3.root=t2.id \r\nleft join TABLE_PROJECT as t4 on t1.project=t4.id\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t4.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"assignedTo\":{\"zh-cn\":\"\\u6307\\u6d3e\\u7ed9\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics task assigned to the distribution.\"}', 'admin', '2015-07-22 13:13:28'),
|
||||
('task-finish', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u5b8c\\u6210\\u8005\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u5b8c\\u6210\\u8005\\u7d71\\u8a08\\u8868\",\"en\":\"Task Finish Report\"}', ',project', 'select t1.id,t3.name as project,t1.name as execution,t2.finishedBy,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t1.project=t3.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and t2.finishedBy!=\'\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"finishedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics task completion distribution.\"}', 'admin', '2015-07-22 13:16:21'),
|
||||
('project-invest', '{\"zh-cn\":\"\\u9879\\u76ee\\u6295\\u5165\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u6295\\u5165\\u7d71\\u8a08\\u8868\",\"en\":\"Project Invest Report\"}', ',project', 'select t1.id,t5.name as project,t1.name as execution,CONCAT(t1.begin,\' ~ \',t1.end) as timeLimit,t2.teams,t3.stories,round(t4.consumed,1) as consumed,t4.number, t1.status as projectstatus \r\nfrom TABLE_EXECUTION as t1\r\n left join ztv_projectteams as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\n left join ztv_executionsummary as t4 on t1.id=t4.execution \r\nleft join TABLE_PROJECT as t5 on t1.project=t5.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t5.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"timeLimit\":{\"zh-cn\":\"\\u5de5\\u671f\"},\"teams\":{\"zh-cn\":\"\\u4eba\\u6570\"},\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\"},\"consumed\":{\"zh-cn\":\"\\u603b\\u6d88\\u8017\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"number\",\"stories\",\"teams\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"number\",\"stories\",\"teams\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52a1\\u6570\\uff0c\\u9700\\u6c42\\u6570\\uff0c\\u4eba\\u6570\\uff0c\\u603b\\u6d88\\u8017\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52d9\\u6578\\uff0c\\u9700\\u6c42\\u6578\\uff0c\\u4eba\\u6578\\uff0c\\u7e3d\\u6d88\\u8017\\u5de5\\u6642\\u3002\",\"en\":\"Listed by project: number of tasks, number of demands, number of people, total hours consumed.\"}', 'admin', '2015-07-22 16:37:38'),
|
||||
('projectstory-status', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Story Status\"}', ',project', 'select t2.id, t4.name as project,t2.name as execution,t3.status from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics requirement status distribution.\"}', 'admin', '2015-07-23 15:35:08'),
|
||||
('project-stage', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Project Stage Report\"}', ',project', 'select t2.id, t4.name as project,t2.name as execution,t3.stage from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics demand stage distribution.\"}', 'admin', '2015-07-23 15:38:18'),
|
||||
('projectbug-resolution', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolution\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.resolution from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t2.deleted=\'0\' and t2.resolution!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Solution distribution of statistical bugs by project.\"}', 'admin', '2015-07-23 16:04:46'),
|
||||
('projectbug-status', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Status\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.status from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\' \' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Statistics Bug status distribution by project.\"}', 'admin', '2015-07-23 15:48:03'),
|
||||
('projectbug-opened', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Opened\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.openedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"openedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Bug creator distribution by project.\"}', 'admin', '2015-07-23 16:08:10'),
|
||||
('projectbug-resolve', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolve\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.resolvedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and t2.status!=\'active\' and t2.resolvedBy!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolvedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Bug solver distribution by project.\"}', 'admin', '2015-07-23 16:13:16'),
|
||||
('projectbug-assign', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Assign\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.assignedTo from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution \r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics Bug assigned to the distribution.\"}', 'admin', '2015-07-23 16:29:10'),
|
||||
('project-quality', '{\"zh-cn\":\"\\u9879\\u76ee\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u8cea\\u91cf\\u8868\",\"en\":\"Project Quality Report\"}', ',project', 'select t1.id, t5.name as project,t5.id,t1.name as execution,t2.stories,(t2.stories-t2.undone) as doneStory,t3.number,(t3.number-t3.undone) as doneTask,t4.bugs,t4.resolutions, round(t4.bugs/(t2.stories-t2.undone),2) as bugthanstory,round(t4.bugs/(t3.number-t3.undone),2) as bugthantask,t4.seriousBugs from TABLE_EXECUTION as t1 \r\nleft join ztv_projectstories as t2 on t1.id=t2.execution\r\nleft join ztv_executionsummary as t3 on t1.id=t3.execution\r\nleft join ztv_projectbugs as t4 on t1.id=t4.execution\r\nleft join TABLE_PROJECT as t5 on t5.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t1.grade=\'1\' and if($project=\'\',1,t5.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u603b\\u6570\"},\"doneTask\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\"},\"bugthantask\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u4efb\\u52a1\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdBug\\u6bd4\\u7387\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52a1\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3\\uff09\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52d9\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3\\uff09\\u3002\",\"en\":\"List total requirements, completed requirements, total tasks, completed tasks, bugs, solved bugs, bugs\\/requirements, bugs\\/tasks, critical bugs (severity not greater than 3) for the project.\"}', 'admin', '2015-07-23 17:03:10'),
|
||||
('productbug-type', '{\"zh-cn\":\"\\u4ea7\\u54c1Bug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1Bug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Bug Type of Product\"}', ',product,test', 'select t1.id,t1.name,t2.id as bugID,t2.type from TABLE_PRODUCT as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.product \r\nleft join TABLE_PROGRAM as t3 on t1.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t1.line desc, t1.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"The distribution of Bug types by product statistics.\"}', 'admin', '2015-07-24 13:48:22'),
|
||||
('product-quality', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u8cea\\u91cf\\u8868\",\"en\":\"Product Quality\"}', ',product', 'select t1.id,t1.name,t2.stories,(t2.stories-t2.undone) as doneStory,t3.bugs,t3.resolutions,round(t3.bugs/(t2.stories-t2.undone),2) as bugthanstory,t3.seriousBugs from TABLE_PRODUCT as t1 \r\nleft join ztv_productstories as t2 on t1.id=t2.product \r\nleft join ztv_productbugs as t3 on t1.id=t3.product \r\nleft join TABLE_PROGRAM as t4 on t1.program=t4.id \r\nwhere t1.deleted=\'0\'\r\norder by t4.`order` asc, t1.line desc, t1.`order` asc', '', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u603b\\u6570\",\"en\":\"Stories\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"en\":\"Finished Stories\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\",\"zh-tw\":\"Bug\\u6570\",\"en\":\"Bugs\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6570\",\"en\":\"Solved Bugs\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"zh-tw\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"en\":\"Bug\\/Finished Story\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\",\"zh-tw\":\"\\u91cd\\u8981Bug\\u6570\",\"en\":\"Serious Bugs\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"zh-tw\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"en\":\"Serious Bugs %\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"bugs\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u4ea7\\u54c1\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u7522\\u54c1\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3)\\u3002\",\"en\":\"List requirements for the product, total requirements completed, number of bugs, number of bugs solved, bugs\\/requirements, number of significant bugs (severity not greater than 3).\"}', 'admin', '2015-07-23 17:17:40'),
|
||||
('user-login', '{\"zh-cn\":\"\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u8868\",\"en\":\"Login Times\"}', ',staff', 'select actor,LEFT(`date`,10) as `day` from TABLE_ACTION where `action`=\'login\' and if($startDate=\'\',1,`date`>=$startDate) and if($endDate=\'\',1,`date`<=$endDate) order by `date` asc, actor asc', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"actor\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"day\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5b9e\\u73b0\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u62a5\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7edf\\u8ba1\\u6bcf\\u5929\\u6bcf\\u4e2a\\u4eba\\u7684\\u767b\\u5f55\\u6b21\\u6570\\uff0c\\u4ee5\\u53ca\\u603b\\u6570\\u3002\",\"zh-tw\":\"\\u5be6\\u73fe\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u5831\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7d71\\u8a08\\u6bcf\\u5929\\u6bcf\\u500b\\u4eba\\u7684\\u767b\\u9304\\u6b21\\u6578\\uff0c\\u4ee5\\u53ca\\u7e3d\\u6578\\u3002\",\"en\":\"Realize the employee login times statistics report, counting the login times of each person and the total number by day.\"}', 'admin', '2015-07-24 14:28:11'),
|
||||
('effort', '{\"zh-cn\":\"\\u65e5\\u5fd7\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u65e5\\u8a8c\\u532f\\u7e3d\\u8868\",\"en\":\"Effort Summary\"}', ',staff', 'select t1.account,t1.consumed,t1.`date`,if($dept=\'0\',0,t2.dept) as dept from TABLE_EFFORT as t1 left join TABLE_USER as t2 on t1.account=t2.account where t1.`deleted`=\'0\' and if($startDate=\'\',1,t1.`date`>=$startDate) and if($endDate=\'\',1,t1.`date`<=$endDate) having if($dept=\'0\', dept=$dept,dept in (select id from TABLE_DEPT where concat(\',\',path,\',\') like concat(\'%,\',$dept,\',%\'))) order by `date` asc', '{\"varName\":[\"dept\",\"startDate\",\"endDate\"],\"showName\":[\"\\u90e8\\u95e8\",\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"dept\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"date\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"consumed\":{\"zh-cn\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost\"},\"account\":{\"zh-cn\":\"\\u767b\\u8bb0\\u4eba\",\"zh-tw\":\"\\u767b\\u8bb0\\u4eba\",\"en\":\"Owner\"}}', '{\"group1\":\"account\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"date\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"consumed\"]}', 2, '{\"zh-cn\":\"\\u67e5\\u770b\\u67d0\\u4e2a\\u65f6\\u95f4\\u6bb5\\u5185\\u7684\\u65e5\\u5fd7\\u60c5\\u51b5\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u95e8\\u9009\\u62e9\\u3002\",\"zh-tw\":\"\\u67e5\\u770b\\u67d0\\u500b\\u6642\\u9593\\u6bb5\\u5167\\u7684\\u65e5\\u8a8c\\u60c5\\u6cc1\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u9580\\u9078\\u64c7\\u3002\",\"en\":\"You can view the logs of a certain period by department.\"}', 'admin', '2015-07-27 13:53:32'),
|
||||
('product-release', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u53d1\\u5e03\\u6570\\u91cf\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u767c\\u5e03\\u6578\\u91cf\\u7d71\\u8a08\\u8868\",\"en\":\"Product Release\"}', ',product', 'select t2.name, 1 as releases from TABLE_RELEASE as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"releases\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"releases\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u53d1\\u5e03\\u7684\\u6570\\u91cf\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u767c\\u5e03\\u7684\\u6578\\u91cf\\u3002\",\"en\":\"Product Release.\"}', 'admin', '2015-07-21 16:00:52'),
|
||||
('task-status', '{\"zh-cn\":\"\\u4efb\\u52a1\\u72b6\\u6001\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u72c0\\u614b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Status Report\",\"de\":\"Task Status Report\",\"fr\":\"Task Status Report\",\"vi\":\"Task Status Report\",\"ja\":\"Task Status Report\"}', ',project', 'select t1.id,t3.name as project,t1.name,t2.status,IF(t3.multiple="1",t1.name,"") as execution,t2.id as taskID, t1.status as projectstatus, (case when t2.deadline < CURDATE() and t2.deadline != \'0000-00-00\' and t2.status != \'closed\' and t2.status != \'done\' and t2.status != \'cancel\' then 1 else 0 end) as timeout from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u6267\\u884c\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u57f7\\u884c\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 11:28:33'),
|
||||
('task-type', '{\"zh-cn\":\"\\u4efb\\u52a1\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Type Report\",\"de\":\"Task Type Report\",\"fr\":\"Task Type Report\",\"vi\":\"Task Type Report\",\"ja\":\"Task Type Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.type,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:06:46'),
|
||||
('task-assign', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u6307\\u6d3e\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u6307\\u6d3e\\u7d71\\u8a08\\u8868\",\"en\":\"Task Assign Report\",\"de\":\"Task Assign Report\",\"fr\":\"Task Assign Report\",\"vi\":\"Task Assign Report\",\"ja\":\"Task Assign Report\"}', ',project', 'select t1.id,t4.name as project,IF(t4.multiple="1",t1.name,"") as execution,if(t3.account is not null, t3.account,t2.assignedTo) as assignedTo,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_TEAM as t3 on t3.type=\'task\' && t3.root=t2.id \r\nleft join TABLE_PROJECT as t4 on t1.project=t4.id\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t4.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"assignedTo\":{\"zh-cn\":\"\\u6307\\u6d3e\\u7ed9\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:13:28'),
|
||||
('task-finish', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u5b8c\\u6210\\u8005\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u5b8c\\u6210\\u8005\\u7d71\\u8a08\\u8868\",\"en\":\"Task Finish Report\",\"de\":\"Task Finish Report\",\"fr\":\"Task Finish Report\",\"vi\":\"Task Finish Report\",\"ja\":\"Task Finish Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.finishedBy,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t1.project=t3.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and t2.finishedBy!=\'\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"finishedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:16:21'),
|
||||
('project-invest', '{\"zh-cn\":\"\\u9879\\u76ee\\u6295\\u5165\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u6295\\u5165\\u7d71\\u8a08\\u8868\",\"en\":\"Project Invest Report\",\"de\":\"Project Invest Report\",\"fr\":\"Project Invest Report\",\"vi\":\"Project Invest Report\",\"ja\":\"Project Invest Report\"}', ',project', 'select t1.id,t5.name as project,IF(t5.multiple="1",t1.name,"") as execution,CONCAT(t1.begin,\' ~ \',t1.end) as timeLimit,t2.teams,t3.stories,round(t4.consumed,1) as consumed,t4.number, t1.status as projectstatus \r\nfrom TABLE_EXECUTION as t1\r\n left join ztv_projectteams as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\n left join ztv_executionsummary as t4 on t1.id=t4.execution \r\nleft join TABLE_PROJECT as t5 on t1.project=t5.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t5.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"timeLimit\":{\"zh-cn\":\"\\u5de5\\u671f\"},\"teams\":{\"zh-cn\":\"\\u4eba\\u6570\"},\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\"},\"consumed\":{\"zh-cn\":\"\\u603b\\u6d88\\u8017\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"number\",\"stories\",\"teams\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"number\",\"stories\",\"teams\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52a1\\u6570\\uff0c\\u9700\\u6c42\\u6570\\uff0c\\u4eba\\u6570\\uff0c\\u603b\\u6d88\\u8017\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52d9\\u6578\\uff0c\\u9700\\u6c42\\u6578\\uff0c\\u4eba\\u6578\\uff0c\\u7e3d\\u6d88\\u8017\\u5de5\\u6642\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 16:37:38'),
|
||||
('projectstory-status', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Story Status\",\"de\":\"Project Story Status\",\"fr\":\"Project Story Status\",\"vi\":\"Project Story Status\",\"ja\":\"Project Story Status\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.status from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:35:08'),
|
||||
('project-stage', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Project Stage Report\",\"de\":\"Project Stage Report\",\"fr\":\"Project Stage Report\",\"vi\":\"Project Stage Report\",\"ja\":\"Project Stage Report\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.stage from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:38:18'),
|
||||
('projectbug-resolution', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolution\",\"de\":\"Project Bug Resolution\",\"fr\":\"Project Bug Resolution\",\"vi\":\"Project Bug Resolution\",\"ja\":\"Project Bug Resolution\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolution from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t2.deleted=\'0\' and t2.resolution!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:04:46'),
|
||||
('projectbug-status', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Status\",\"de\":\"Project Bug Status\",\"fr\":\"Project Bug Status\",\"vi\":\"Project Bug Status\",\"ja\":\"Project Bug Status\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.status from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\' \' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:48:03'),
|
||||
('projectbug-opened', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Opened\",\"de\":\"Project Bug Opened\",\"fr\":\"Project Bug Opened\",\"vi\":\"Project Bug Opened\",\"ja\":\"Project Bug Opened\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.openedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"openedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:08:10'),
|
||||
('projectbug-resolve', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolve\",\"de\":\"Project Bug Resolve\",\"fr\":\"Project Bug Resolve\",\"vi\":\"Project Bug Resolve\",\"ja\":\"Project Bug Resolve\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolvedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and t2.status!=\'active\' and t2.resolvedBy!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolvedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:13:16'),
|
||||
('projectbug-assign', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Assign\",\"de\":\"Project Bug Assign\",\"fr\":\"Project Bug Assign\",\"vi\":\"Project Bug Assign\",\"ja\":\"Project Bug Assign\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.assignedTo from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution \r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:29:10'),
|
||||
('project-quality', '{\"zh-cn\":\"\\u9879\\u76ee\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u8cea\\u91cf\\u8868\",\"en\":\"Project Quality Report\",\"de\":\"Project Quality Report\",\"fr\":\"Project Quality Report\",\"vi\":\"Project Quality Report\",\"ja\":\"Project Quality Report\"}', ',project', 'select t1.id, t5.name as project,t5.id,IF(t5.multiple="1",t1.name,"") as execution,t2.stories,(t2.stories-t2.undone) as doneStory,t3.number,(t3.number-t3.undone) as doneTask,t4.bugs,t4.resolutions, round(t4.bugs/(t2.stories-t2.undone),2) as bugthanstory,round(t4.bugs/(t3.number-t3.undone),2) as bugthantask,t4.seriousBugs from TABLE_EXECUTION as t1 \r\nleft join ztv_projectstories as t2 on t1.id=t2.execution\r\nleft join ztv_executionsummary as t3 on t1.id=t3.execution\r\nleft join ztv_projectbugs as t4 on t1.id=t4.execution\r\nleft join TABLE_PROJECT as t5 on t5.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t1.grade=\'1\' and if($project=\'\',1,t5.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u603b\\u6570\"},\"doneTask\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\"},\"bugthantask\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u4efb\\u52a1\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdBug\\u6bd4\\u7387\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52a1\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3\\uff09\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52d9\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3\\uff09\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 17:03:10'),
|
||||
('productbug-type', '{\"zh-cn\":\"\\u4ea7\\u54c1Bug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1Bug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Bug Type of Product\"}', ',product,test', 'select t1.id,t1.name,t2.id as bugID,t2.type from TABLE_PRODUCT as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.product \r\nleft join TABLE_PROGRAM as t3 on t1.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t1.line desc, t1.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Type distribution of Bugs.\"}', 'admin', '2015-07-24 13:48:22'),
|
||||
('product-quality', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u8cea\\u91cf\\u8868\",\"en\":\"Product Quality\"}', ',product', 'select t1.id,t1.name,t2.stories,(t2.stories-t2.undone) as doneStory,t3.bugs,t3.resolutions,round(t3.bugs/(t2.stories-t2.undone),2) as bugthanstory,t3.seriousBugs from TABLE_PRODUCT as t1 \r\nleft join ztv_productstories as t2 on t1.id=t2.product \r\nleft join ztv_productbugs as t3 on t1.id=t3.product \r\nleft join TABLE_PROGRAM as t4 on t1.program=t4.id \r\nwhere t1.deleted=\'0\'\r\norder by t4.`order` asc, t1.line desc, t1.`order` asc', '', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u603b\\u6570\",\"en\":\"Stories\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"en\":\"Finished Stories\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\",\"zh-tw\":\"Bug\\u6570\",\"en\":\"Bugs\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6570\",\"en\":\"Solved Bugs\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"zh-tw\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"en\":\"Bug\\/Finished Story\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\",\"zh-tw\":\"\\u91cd\\u8981Bug\\u6570\",\"en\":\"Serious Bugs\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"zh-tw\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"en\":\"Serious Bugs %\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"bugs\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u4ea7\\u54c1\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u7522\\u54c1\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3)\\u3002\",\"en\":\"Serious Bug (severity is less than 3).\"}', 'admin', '2015-07-23 17:17:40'),
|
||||
('user-login', '{\"zh-cn\":\"\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u8868\",\"en\":\"Login Times\"}', ',staff', 'select actor,LEFT(`date`,10) as `day` from TABLE_ACTION where `action`=\'login\' and if($startDate=\'\',1,`date`>=$startDate) and if($endDate=\'\',1,`date`<=$endDate) order by `date` asc, actor asc', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"actor\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"day\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5b9e\\u73b0\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u62a5\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7edf\\u8ba1\\u6bcf\\u5929\\u6bcf\\u4e2a\\u4eba\\u7684\\u767b\\u5f55\\u6b21\\u6570\\uff0c\\u4ee5\\u53ca\\u603b\\u6570\\u3002\",\"zh-tw\":\"\\u5be6\\u73fe\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u5831\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7d71\\u8a08\\u6bcf\\u5929\\u6bcf\\u500b\\u4eba\\u7684\\u767b\\u9304\\u6b21\\u6578\\uff0c\\u4ee5\\u53ca\\u7e3d\\u6578\\u3002\",\"en\":\"The summary of user login times.\"}', 'admin', '2015-07-24 14:28:11'),
|
||||
('effort', '{\"zh-cn\":\"\\u65e5\\u5fd7\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u65e5\\u8a8c\\u532f\\u7e3d\\u8868\",\"en\":\"Effort Summary\"}', ',staff', 'select t1.account,t1.consumed,t1.`date`,if($dept=\'0\',0,t2.dept) as dept from TABLE_EFFORT as t1 left join TABLE_USER as t2 on t1.account=t2.account where t1.`deleted`=\'0\' and if($startDate=\'\',1,t1.`date`>=$startDate) and if($endDate=\'\',1,t1.`date`<=$endDate) having dept=$dept order by `date` asc', '{\"varName\":[\"dept\",\"startDate\",\"endDate\"],\"showName\":[\"\\u90e8\\u95e8\",\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"dept\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"date\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"consumed\":{\"zh-cn\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost\"}}', '{\"group1\":\"account\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"date\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"consumed\"]}', 2, '{\"zh-cn\":\"\\u67e5\\u770b\\u67d0\\u4e2a\\u65f6\\u95f4\\u6bb5\\u5185\\u7684\\u65e5\\u5fd7\\u60c5\\u51b5\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u95e8\\u9009\\u62e9\\u3002\",\"zh-tw\":\"\\u67e5\\u770b\\u67d0\\u500b\\u6642\\u9593\\u6bb5\\u5167\\u7684\\u65e5\\u8a8c\\u60c5\\u6cc1\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u9580\\u9078\\u64c7\\u3002\",\"en\":\"Effort summary of users.\"}', 'admin', '2015-07-27 13:53:32'),
|
||||
('company-dynamic', '{\"zh-cn\":\"\\u516c\\u53f8\\u52a8\\u6001\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u516c\\u53f8\\u52d5\\u614b\\u532f\\u7e3d\\u8868\",\"en\":\"Company Dynamics\"}', ',staff', 'select t1.day,t2.userlogin,t3.consumed,t4.storyopen,t5.storyclose,t6.taskopen,t7.taskfinish,t8.bugopen,t9.bugresolve,t1.actions from ztv_dayactions as t1 left join ztv_dayuserlogin as t2 on t1.day=t2.day left join ztv_dayeffort as t3 on t1.day=t3.date left join ztv_daystoryopen as t4 on t1.day=t4.day left join ztv_daystoryclose as t5 on t1.day=t5.day left join ztv_daytaskopen as t6 on t1.day=t6.day left join ztv_daytaskfinish as t7 on t1.day=t7.day left join ztv_daybugopen as t8 on t1.day=t8.day left join ztv_daybugresolve as t9 on t1.day=t9.day where if($startDate=\'\',1,t1.day>=$startDate) and if($endDate=\'\',1,t1.day<=$endDate)', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"day\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"userlogin\":{\"zh-cn\":\"\\u767b\\u5f55\\u6b21\\u6570\",\"zh-tw\":\"\\u767b\\u9304\\u6b21\\u6578\",\"en\":\"Login\"},\"consumed\":{\"zh-cn\":\"\\u65e5\\u5fd7\\u5de5\\u65f6\",\"zh-tw\":\"\\u65e5\\u8a8c\\u5de5\\u6642\",\"en\":\"Cost(h)\"},\"storyopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6578\",\"en\":\"Open Story\"},\"storyclose\":{\"zh-cn\":\"\\u5173\\u95ed\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u95dc\\u9589\\u9700\\u6c42\\u6578\",\"en\":\"Closed Story\"},\"taskopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u4efb\\u52d9\\u6578\",\"en\":\"Open Task\"},\"taskfinish\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u4efb\\u52d9\\u6578\",\"en\":\"Finished Task\"},\"bugopen\":{\"zh-cn\":\"\\u65b0\\u589eBug\\u6570\",\"zh-tw\":\"\\u65b0\\u589eBug\\u6578\",\"en\":\"Open Bug\"},\"bugresolve\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6578\",\"en\":\"Resolved bug\"},\"actions\":{\"zh-cn\":\"\\u52a8\\u6001\\u6570\",\"zh-tw\":\"\\u52d5\\u614b\\u6578\",\"en\":\"Dynamics\"}}', '{\"group1\":\"day\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"]}', 2, '{\"zh-cn\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u4e2a\\u65f6\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u5e94\\u7684\\u6570\\u636e\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u5f55\\u6b21\\u6570\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u5fd7\\u5de5\\u65f6\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6570\\u30024. \\u6bcf\\u5929\\u5173\\u95ed\\u7684\\u9700\\u6c42\\u6570\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52a1\\u6570\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6570\\u30028. \\u6bcf\\u5929\\u89e3\\u51b3\\u7684Bug\\u6570\\u30029. \\u6bcf\\u5929\\u7684\\u52a8\\u6001\\u6570\\u3002\",\"zh-tw\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u500b\\u6642\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u61c9\\u7684\\u6578\\u64da\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u9304\\u6b21\\u6578\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u8a8c\\u5de5\\u6642\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6578\\u30024. \\u6bcf\\u5929\\u95dc\\u9589\\u7684\\u9700\\u6c42\\u6578\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52d9\\u6578\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6578\\u30028. \\u6bcf\\u5929\\u89e3\\u6c7a\\u7684Bug\\u6578\\u30029. \\u6bcf\\u5929\\u7684\\u52d5\\u614b\\u6578\\u3002\",\"en\":\"The summary of company dynamics\"}', 'admin', '2015-07-27 15:09:42'),
|
||||
('bug-resolve', '{\"zh-cn\":\"Bug\\u89e3\\u51b3\\u8868\",\"zh-tw\":\"Bug\\u89e3\\u6c7a\\u8868\",\"en\":\"Solved Bugs\"}', ',test', 'select *,if($product=\'\',0,product) as customproduct from TABLE_BUG where deleted=\'0\' and resolution!=\'\' and if($startDate=\'\',1,resolvedDate>=$startDate) and if($endDate=\'\',1,resolvedDate<=$endDate) having customproduct=$product', '{\"varName\":[\"product\",\"startDate\",\"endDate\"],\"showName\":[\"\\u4ea7\\u54c1\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u5f00\\u59cb\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u7ed3\\u675f\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"product\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"resolvedBy\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"],\"percent\":[\"1\"],\"contrast\":[\"crystalTotal\"],\"showAlone\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0c\\u89e3\\u51b3\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8be5\\u7528\\u6237\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0c\\u89e3\\u6c7a\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8a72\\u7528\\u6236\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf)\\u3002\",\"en\":\"List the total number of bugs resolved, the distribution of solutions, and the percentage (the number of bugs solved by this user to the total number of bugs resolved).\"}', 'admin', '2015-07-24 13:44:25'),
|
||||
('project-progress', '{\"zh-cn\":\"\\u9879\\u76ee\\u8fdb\\u5c55\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9032\\u5c55\\u8868\",\"en\":\"Project Progress Report\"}', ',project', 'select t1.id,t4.name as project,t4.id,t1.name as execution,t1.status,t2.number as tasks,round(t2.consumed,2) as consumed,round(t2.`left`,2) as `left`,t3.stories,t2.undone as undoneTask,t3.undone as undoneStory,t2.totalReal from TABLE_EXECUTION as t1 \r\nleft join ztv_executionsummary as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\nleft join TABLE_PROJECT as t4 on t4.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t1.id=$execution) and if($status=\'\' or $status=\'delay\',1,t1.status=$status) and if($status=\'delay\',t1.`end` < curdate(),1)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"totalReal\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u6570\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u9700\\u6c42\\u6570\\uff0c\\u5269\\u4f59\\u4efb\\u52a1\\u6570\\uff0c\\u8fdb\\u5ea6\\u3002\",\"zh-tw\":\"\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u6578\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u9700\\u6c42\\u6578\\uff0c\\u5269\\u9918\\u4efb\\u52d9\\u6578\\uff0c\\u9032\\u5ea6\\u3002\",\"en\":\"Project requirements, tasks, consumed hours, remaining hours, remaining demands, remaining tasks, schedule.\"}', 'admin', '2015-07-23 14:03:06'),
|
||||
('projectbug-type', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Project Bug Type\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t2.id as bugID,t2.type from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Type distribution of Bug statistics by project.\"}', 'admin', '2015-08-04 13:54:22');
|
||||
('bug-resolve', '{\"zh-cn\":\"Bug\\u89e3\\u51b3\\u8868\",\"zh-tw\":\"Bug\\u89e3\\u6c7a\\u8868\",\"en\":\"Solved Bugs\"}', ',test', 'select *,if($product=\'\',0,product) as customproduct from TABLE_BUG where deleted=\'0\' and resolution!=\'\' and if($startDate=\'\',1,resolvedDate>=$startDate) and if($endDate=\'\',1,resolvedDate<=$endDate) having customproduct=$product', '{\"varName\":[\"product\",\"startDate\",\"endDate\"],\"showName\":[\"\\u4ea7\\u54c1\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u5f00\\u59cb\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u7ed3\\u675f\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"product\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"resolvedBy\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"],\"percent\":[\"1\"],\"contrast\":[\"crystalTotal\"],\"showAlone\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0c\\u89e3\\u51b3\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8be5\\u7528\\u6237\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0c\\u89e3\\u6c7a\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8a72\\u7528\\u6236\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf)\\u3002\",\"en\":\"percentage:self resolved \\/ all resolved\"}', 'admin', '2015-07-24 13:44:25'),
|
||||
('project-progress', '{\"zh-cn\":\"\\u9879\\u76ee\\u8fdb\\u5c55\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9032\\u5c55\\u8868\",\"en\":\"Project Progress Report\",\"de\":\"Project Progress Report\",\"fr\":\"Project Progress Report\",\"vi\":\"Project Progress Report\",\"ja\":\"Project Progress Report\"}', ',project', 'select t1.id,t4.name as project,t4.id,IF(t4.multiple="1",t1.name,"") as execution,t1.status,t2.number as tasks,round(t2.consumed,2) as consumed,round(t2.`left`,2) as `left`,t3.stories,t2.undone as undoneTask,t3.undone as undoneStory,t2.totalReal from TABLE_EXECUTION as t1 \r\nleft join ztv_executionsummary as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\nleft join TABLE_PROJECT as t4 on t4.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t1.id=$execution) and if($status=\'\',1,t1.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"totalReal\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u6570\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u9700\\u6c42\\u6570\\uff0c\\u5269\\u4f59\\u4efb\\u52a1\\u6570\\uff0c\\u8fdb\\u5ea6\\u3002\",\"zh-tw\":\"\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u6578\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u9700\\u6c42\\u6578\\uff0c\\u5269\\u9918\\u4efb\\u52d9\\u6578\\uff0c\\u9032\\u5ea6\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 14:03:06'),
|
||||
('projectbug-type', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Project Bug Type\",\"de\":\"Project Bug Type\",\"fr\":\"Project Bug Type\",\"vi\":\"Project Bug Type\",\"ja\":\"Project Bug Type\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t2.id as bugID,t2.type from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-08-04 13:54:22');
|
||||
|
||||
|
||||
REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1,'report','browseReport'),
|
||||
|
||||
@@ -21,7 +21,7 @@ class myBlock extends block
|
||||
->orWhere('t3.status')->ne('suspended')
|
||||
->markRight(1)
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('t2.deleted')->eq('0')->fi()
|
||||
->beginIF($this->config->systemMode == 'ALM')->andWhere('t2.deleted')->eq('0')->fi()
|
||||
->andWhere('t3.deleted')->eq('0')
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->fetchAll('id');
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
<?php js::set('productID', empty($productID) ? 0 : $productID);?>
|
||||
<?php js::set('isStage', $isStage);?>
|
||||
<?php js::set('copyExecutionID', $copyExecutionID);?>
|
||||
<?php js::set('systemMode', $config->systemMode);?>
|
||||
<?php js::set('projectCommon', $lang->project->common);?>
|
||||
<?php js::set('multiBranchProducts', $multiBranchProducts);?>
|
||||
<?php js::set('systemMode', $config->systemMode);?>
|
||||
@@ -38,7 +37,7 @@
|
||||
</div>
|
||||
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
|
||||
<table class='table table-form'>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<?php if($config->systemMode == 'ALM'):?>
|
||||
<tr>
|
||||
<th class='w-120px'><?php echo $lang->execution->projectName;?></th>
|
||||
<td class="col-main"><?php echo html::select("project", $allProjects, $projectID, "class='form-control chosen' required onchange='refreshPage(this.value)'");?></td>
|
||||
|
||||
@@ -149,7 +149,7 @@ $lang->personnel->methodOrder[15] = 'whitelist';
|
||||
$lang->personnel->methodOrder[20] = 'addWhitelist';
|
||||
$lang->personnel->methodOrder[25] = 'unbindWhitelist';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
if($config->systemMode == 'ALM')
|
||||
{
|
||||
$lang->resource->my->project = 'project';
|
||||
|
||||
@@ -158,7 +158,7 @@ if($config->systemMode == 'new')
|
||||
$lang->resource->project->index = 'index';
|
||||
$lang->resource->project->browse = 'browse';
|
||||
$lang->resource->project->kanban = 'kanban';
|
||||
// $lang->resource->project->programTitle = 'moduleOpen';
|
||||
//$lang->resource->project->programTitle = 'moduleOpen';
|
||||
$lang->resource->project->create = 'create';
|
||||
$lang->resource->project->edit = 'edit';
|
||||
$lang->resource->project->batchEdit = 'batchEdit';
|
||||
@@ -456,8 +456,8 @@ $lang->resource->execution->updateOrder = 'updateOrder';
|
||||
$lang->resource->execution->taskKanban = 'taskKanban';
|
||||
//$lang->resource->execution->printKanban = 'printKanbanAction';
|
||||
$lang->resource->execution->tree = 'treeAction';
|
||||
$lang->resource->execution->treeTask = 'treeOnlyTask';
|
||||
$lang->resource->execution->treeStory = 'treeOnlyStory';
|
||||
$lang->resource->execution->treeTask = 'treeViewTask';
|
||||
$lang->resource->execution->treeStory = 'treeViewStory';
|
||||
$lang->resource->execution->all = 'allExecutionAB';
|
||||
$lang->resource->execution->export = 'exportAction';
|
||||
$lang->resource->execution->storyKanban = 'storyKanban';
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
</th>
|
||||
<th class='c-pri'><?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-name'><?php common::printOrderLink('name', $orderBy, $vars, $lang->task->name);?></th>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<?php if($config->systemMode == 'ALM'):?>
|
||||
<th class='c-project'><?php common::printOrderLink('project', $orderBy, $vars, $lang->my->projects);?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-project'><?php common::printOrderLink('execution', $orderBy, $vars, $lang->my->executions);?></th>
|
||||
@@ -109,7 +109,7 @@
|
||||
?>
|
||||
<?php if(!empty($task->children)) echo '<a class="task-toggle" data-id="' . $task->id . '"><i class="icon icon-angle-double-right"></i></a>';?>
|
||||
</td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<?php if($config->systemMode == 'ALM'):?>
|
||||
<td class='c-project' title="<?php echo $task->projectName;?>"><?php echo html::a($this->createLink('project', 'index', "projectID=$task->project"), $task->projectName);?></td>
|
||||
<?php endif;?>
|
||||
<td class='c-project' title="<?php echo $task->executionName;?>"><?php echo html::a($this->createLink('execution', 'task', "executionID=$task->execution"), $task->executionName, '');?></td>
|
||||
@@ -179,7 +179,7 @@
|
||||
<?php if($child->parent > 0) echo '<span class="label label-badge label-light">' . $this->lang->task->childrenAB . '</span> ';?>
|
||||
<?php echo html::a($this->createLink('task', 'view', "taskID=$child->id", '', '', $child->project), $child->name, null, "style='color: $child->color'");?>
|
||||
</td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<?php if($config->systemMode == 'ALM'):?>
|
||||
<td class='c-project' title="<?php echo $child->projectName;?>"><?php echo html::a($this->createLink('project', 'view', "projectID=$child->project"), $child->projectName);?></td>
|
||||
<?php endif;?>
|
||||
<td class='c-project' title="<?php echo $child->projectName;?>"><?php echo html::a($this->createLink('execution', 'task', "executionID=$child->project"), $child->executionName, '');?></td>
|
||||
|
||||
@@ -5,9 +5,10 @@
|
||||
* @param string $mode
|
||||
* @param string $programID
|
||||
* @param string|array $append
|
||||
* @param string|int $shadow all | 0 | 1
|
||||
* @return array
|
||||
*/
|
||||
public function getPairs($mode = '', $programID = 0, $append = '')
|
||||
public function getPairs($mode = '', $programID = 0, $append = '', $shadow = 0)
|
||||
{
|
||||
if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getProductPairs();
|
||||
|
||||
@@ -31,6 +32,7 @@ public function getPairs($mode = '', $programID = 0, $append = '')
|
||||
->beginIF($programID)->andWhere('program')->eq($programID)->fi()
|
||||
->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi()
|
||||
->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('id')->in($this->app->user->view->products)->fi()
|
||||
->beginIF($shadow !== 'all')->andWhere('shadow')->eq((int)$shadow)->fi()
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->andWhere('id')->in($projectProducts)
|
||||
->fetchPairs('id', 'name');
|
||||
|
||||
@@ -87,6 +87,7 @@
|
||||
<?php
|
||||
echo html::hidden('model', $model);
|
||||
echo html::hidden('vision', 'lite');
|
||||
echo html::hidden('hasProduct', 1);
|
||||
echo html::hidden('parent', 0);
|
||||
echo html::submitButton();
|
||||
echo $gobackLink ? html::a($gobackLink, $lang->goback, '', 'class="btn btn-wide"') : html::backButton();
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
$active = ($methodName == 'story' and $storyType == 'story') ? ' btn-active-text' : '';
|
||||
common::printLink('user', 'story', "userID={$user->id}&storyType=story", $label, '', "class='btn btn-link $active SRTab'");
|
||||
|
||||
if($this->config->systemMode == 'new')
|
||||
if($this->config->systemMode == 'ALM')
|
||||
{
|
||||
$label = "<span class='text'>{$lang->user->execution}</span>";
|
||||
$active = $methodName == 'execution' ? ' btn-active-text' : '';
|
||||
|
||||
@@ -927,6 +927,12 @@ class baseControl
|
||||
if($type != 'json') die();
|
||||
|
||||
$data = (array)$data;
|
||||
|
||||
/* Make sure locate in this tab. */
|
||||
global $lang;
|
||||
$moduleName = $this->app->rawModule;
|
||||
if(isset($lang->navGroup->{$moduleName}) and $lang->navGroup->{$moduleName} != $this->app->tab and isset($data['locate']) and $data['locate'][0] == '/' and !helper::inOnlyBodyMode()) $data['locate'] .= "#app={$this->app->tab}";
|
||||
|
||||
if(helper::isAjaxRequest() or $this->viewType == 'json')
|
||||
{
|
||||
/* Process for zh-cn in json. */
|
||||
|
||||
@@ -136,7 +136,7 @@ class baseHelper
|
||||
*/
|
||||
if($viewType == $app->getViewType())
|
||||
{
|
||||
$link .= $moduleName . '/';
|
||||
$link .= $moduleName . '.' . $viewType;
|
||||
return self::processOnlyBodyParam($link, $onlyBody);
|
||||
}
|
||||
|
||||
|
||||
@@ -76,6 +76,50 @@ class helper extends baseHelper
|
||||
return str_replace($escapers, $replacements, $json);
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify that the system has opened on the feature.
|
||||
*
|
||||
* @param string $feature scrum_risk | risk | scrum
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function hasFeature($feature)
|
||||
{
|
||||
global $config;
|
||||
|
||||
if(strpos($feature, '_') !== false)
|
||||
{
|
||||
$code = explode('_', $feature);
|
||||
$code = $code[0] . ucfirst($code[1]);
|
||||
return strpos(",$config->disabledFeatures,", ",{$code},") === false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if($feature == 'product' or $feature == 'scrum' or $feature == 'waterfall') return strpos(",$config->disabledFeatures,", ",{$feature},") === false;
|
||||
|
||||
$hasFeature = false;
|
||||
foreach($config->featureGroup as $group => $modules)
|
||||
{
|
||||
if($feature == $group)
|
||||
{
|
||||
foreach($modules as $module)
|
||||
{
|
||||
if(helper::hasFeature("{$group}_{$module}")) $hasFeature = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach($modules as $module)
|
||||
{
|
||||
if($feature == $module and helper::hasFeature("{$group}_{$module}")) $hasFeature = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $hasFeature && strpos(",$config->disabledFeatures,", ",{$feature},") === false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert encoding.
|
||||
*
|
||||
|
||||
+17
-12
@@ -171,7 +171,7 @@ class router extends baseRouter
|
||||
|
||||
try
|
||||
{
|
||||
$commonSettings = $this->dbh->query('SELECT section, `key`, value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND (`module`='custom' or `module`='common') and `key` in ('sprintConcept', 'hourPoint', 'URSR', 'mode', 'URAndSR', 'scoreStatus')")->fetchAll();
|
||||
$commonSettings = $this->dbh->query('SELECT section, `key`, value FROM' . TABLE_CONFIG . "WHERE `owner`='system' AND (`module`='custom' or `module`='common') and `key` in ('sprintConcept', 'hourPoint', 'URSR', 'mode', 'URAndSR', 'scoreStatus', 'disabledFeatures', 'closedFeatures')")->fetchAll();
|
||||
}
|
||||
catch (PDOException $exception)
|
||||
{
|
||||
@@ -181,18 +181,22 @@ class router extends baseRouter
|
||||
|
||||
$hourKey = $planKey = $URSR = $URAndSR = 0;
|
||||
|
||||
$mode = 'new';
|
||||
$score = '0';
|
||||
$projectKey = ITERATION_KEY;
|
||||
$mode = 'new';
|
||||
$score = '0';
|
||||
$projectKey = ITERATION_KEY;
|
||||
$disabledFeatures = '';
|
||||
$closedFeatures = '';
|
||||
|
||||
foreach($commonSettings as $setting)
|
||||
{
|
||||
if($setting->key == 'sprintConcept') $projectKey = $setting->value;
|
||||
if($setting->key == 'hourPoint') $hourKey = $setting->value;
|
||||
if($setting->key == 'URSR') $URSR = $setting->value;
|
||||
if($setting->key == 'URAndSR') $URAndSR = $setting->value;
|
||||
if($setting->key == 'mode' and $setting->section == 'global') $mode = $setting->value;
|
||||
if($setting->key == 'scoreStatus' and $setting->section == 'global') $score = $setting->value;
|
||||
if($setting->key == 'sprintConcept') $projectKey = $setting->value;
|
||||
if($setting->key == 'hourPoint') $hourKey = $setting->value;
|
||||
if($setting->key == 'URSR') $URSR = $setting->value;
|
||||
if($setting->key == 'URAndSR') $URAndSR = $setting->value;
|
||||
if($setting->key == 'mode' and $setting->section == 'global') $mode = $setting->value;
|
||||
if($setting->key == 'scoreStatus' and $setting->section == 'global') $score = $setting->value;
|
||||
if($setting->key == 'disabledFeatures') $disabledFeatures = $setting->value;
|
||||
if($setting->key == 'closedFeatures') $closedFeatures = $setting->value;
|
||||
}
|
||||
|
||||
/* Lite Version is compatible with classic modes */
|
||||
@@ -200,7 +204,8 @@ class router extends baseRouter
|
||||
|
||||
/* Record system mode. */
|
||||
$config->systemMode = $mode;
|
||||
if($config->systemMode == 'classic') $this->config->executionCommonList = $this->config->projectCommonList;
|
||||
|
||||
$config->disabledFeatures = $disabledFeatures . ',' . $closedFeatures;
|
||||
|
||||
/* Record system score.*/
|
||||
$config->systemScore = $score;
|
||||
@@ -221,7 +226,7 @@ class router extends baseRouter
|
||||
|
||||
/* User preference init. */
|
||||
$config->URSR = $URSR;
|
||||
$config->URAndSR = $URAndSR;
|
||||
$config->URAndSR = ($URAndSR and strpos(",{$config->disabledFeatures},", ',productUR,') === false);
|
||||
$config->programLink = 'program-browse';
|
||||
$config->productLink = 'product-all';
|
||||
$config->projectLink = 'project-browse';
|
||||
|
||||
@@ -111,6 +111,15 @@ class baseHTML
|
||||
if(strlen(trim($title)) == 0) $title = $href;
|
||||
$newline = $newline ? "\n" : '';
|
||||
|
||||
/* Make sure href is opened in the same tab. */
|
||||
if(strpos($misc, 'data-app=') === false)
|
||||
{
|
||||
global $app, $lang;
|
||||
$module = $app->rawModule;
|
||||
$dataApp = (isset($lang->navGroup->$module) and $lang->navGroup->$module != $app->tab) ? "data-app='{$app->tab}'" : '';
|
||||
$misc .= ' ' . $dataApp;
|
||||
}
|
||||
|
||||
return "<a href='$href' $misc>$title</a>$newline";
|
||||
}
|
||||
|
||||
@@ -501,6 +510,14 @@ class baseHTML
|
||||
$gobackList = isset($_COOKIE['goback']) ? json_decode($_COOKIE['goback'], true) : array();
|
||||
$gobackLink = isset($gobackList[$tab]) ? $gobackList[$tab] : '';
|
||||
|
||||
/* Make sure href is opened in the same tab. */
|
||||
if(strpos($misc, 'data-app=') === false)
|
||||
{
|
||||
$module = $app->rawModule;
|
||||
$dataApp = (isset($lang->navGroup->$module) and $lang->navGroup->$module != $app->tab) ? "data-app='{$app->tab}'" : '';
|
||||
$misc .= ' ' . $dataApp;
|
||||
}
|
||||
|
||||
/* If the link of the referer is not the link of the current page or the link of the index, the cookie and gobackLink will be updated. */
|
||||
if(!preg_match("/(m=|\/)(index|search|$currentModule)(&f=|-)(index|buildquery|$currentMethod)(&|-|\.)?/", strtolower($refererLink)))
|
||||
{
|
||||
|
||||
@@ -69,8 +69,8 @@ $config->action->ignoreObjectType4Dynamic = 'kanbanregion,kanbanlane,kanbancolum
|
||||
$config->action->preferredTypeNum = 10;
|
||||
|
||||
$config->action->preferredType = new stdclass();
|
||||
$config->action->preferredType->new = array('user', 'story', 'task', 'bug', 'case', 'doc', 'program', 'product', 'project', 'execution');
|
||||
$config->action->preferredType->classic = array('user', 'story', 'task', 'bug', 'case', 'doc', 'product', 'execution', 'productplan', 'build');
|
||||
$config->action->preferredType->ALM = array('user', 'story', 'task', 'bug', 'case', 'doc', 'program', 'product', 'project', 'execution');
|
||||
$config->action->preferredType->light = array('user', 'story', 'task', 'bug', 'case', 'doc', 'product', 'project', 'execution');
|
||||
|
||||
global $app, $lang;
|
||||
$app->loadLang('action');
|
||||
|
||||
@@ -103,7 +103,8 @@ class action extends control
|
||||
|
||||
$preferredType = array();
|
||||
$moreType = array();
|
||||
$preferredTypeConfig = $this->config->systemMode == 'new' ? $this->config->action->preferredType->new : $this->config->action->preferredType->classic;
|
||||
$preferredTypeConfig = $this->config->action->preferredType->ALM;
|
||||
if($this->config->systemMode == 'light') $preferredTypeConfig = $this->config->action->preferredType->light;
|
||||
foreach($objectTypeList as $objectType)
|
||||
{
|
||||
if(!isset($this->config->objectTables[$objectType])) continue;
|
||||
|
||||
+14
-14
@@ -224,6 +224,8 @@ $lang->action->desc->reopen = '$date, reopened by <strong>$actor</
|
||||
$lang->action->desc->merged = '$date, merged by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, submitted for review by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, sort by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->switchtolight = '$date, Switch from ALM mode to light mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
|
||||
$lang->action->desc->unlinkproduct = '$date, the project is disassociated from the $extra, synchronization disassociates the sprints of the project from the $extra.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
@@ -392,6 +394,10 @@ $lang->action->label->tolib = 'imported';
|
||||
$lang->action->label->updatetolib = 'updated';
|
||||
$lang->action->label->ganttmove = 'sorted';
|
||||
$lang->action->label->submitreview = 'submitted';
|
||||
$lang->action->label->switchtolight = 'switch from ALM mode to light mode';
|
||||
$lang->action->label->linkedrepo = 'Linked Code Repo';
|
||||
$lang->action->label->unlinkedrepo = 'Unlinked Code Repo';
|
||||
$lang->action->label->unlinkproduct = 'Unlinked Product';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -411,12 +417,13 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
|
||||
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
|
||||
$lang->action->dynamicAction->program['closed'] = 'Close Program';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['switchtolight'] = 'Switch Mode';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = 'Create ' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = 'Edit ' . $lang->productCommon;
|
||||
@@ -680,14 +687,7 @@ $lang->action->label->release = 'Release|release|view|productID=%s';
|
||||
$lang->action->label->story = 'Story|story|view|storyID=%s';
|
||||
$lang->action->label->program = "Program|program|pgmproduct|programID=%s";
|
||||
$lang->action->label->project = "Project|project|index|projectID=%s";
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
}
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
|
||||
$lang->action->label->task = 'Aufgaben|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Builds|build|view|buildID=%s';
|
||||
|
||||
+14
-14
@@ -224,6 +224,8 @@ $lang->action->desc->reopen = '$date, reopened by <strong>$actor</
|
||||
$lang->action->desc->merged = '$date, merged by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, submitted for review by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, sort by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->switchtolight = '$date, Switch from ALM mode to light mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
|
||||
$lang->action->desc->unlinkproduct = '$date, the project is disassociated from the $extra, synchronization disassociates the sprints of the project from the $extra.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
@@ -392,6 +394,10 @@ $lang->action->label->tolib = 'imported';
|
||||
$lang->action->label->updatetolib = 'updated';
|
||||
$lang->action->label->ganttmove = 'sorted';
|
||||
$lang->action->label->submitreview = 'submitted';
|
||||
$lang->action->label->switchtolight = 'switch from ALM mode to light mode';
|
||||
$lang->action->label->linkedrepo = 'Linked Code Repo';
|
||||
$lang->action->label->unlinkedrepo = 'Unlinked Code Repo';
|
||||
$lang->action->label->unlinkproduct = 'Unlinked Product';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -411,12 +417,13 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
|
||||
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
|
||||
$lang->action->dynamicAction->program['closed'] = 'Close Program';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['opened'] = 'Create Project';
|
||||
$lang->action->dynamicAction->project['edited'] = 'Edit Project';
|
||||
$lang->action->dynamicAction->project['started'] = 'Start Project';
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspend Project';
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activate Project';
|
||||
$lang->action->dynamicAction->project['closed'] = 'Close Project';
|
||||
$lang->action->dynamicAction->project['switchtolight'] = 'Switch Mode';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = 'Create ' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = 'Edit ' . $lang->productCommon;
|
||||
@@ -680,14 +687,7 @@ $lang->action->label->release = 'Release|release|view|productID=%s';
|
||||
$lang->action->label->story = 'Story|story|view|storyID=%s';
|
||||
$lang->action->label->program = "Program|program|product|programID=%s";
|
||||
$lang->action->label->project = "Project|project|index|projectID=%s";
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->action->label->execution = "$lang->executionCommon|execution|task|executionID=%s";
|
||||
}
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
|
||||
$lang->action->label->task = 'Task|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
|
||||
+14
-14
@@ -224,6 +224,8 @@ $lang->action->desc->reopen = '$date, reopened by <strong>$actor</
|
||||
$lang->action->desc->merged = '$date, merged by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, submitted for review by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, sort by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->switchtolight = '$date, Switch from ALM mode to light mode by <strong>'. $lang->admin->system .'</strong>.' . "\n";
|
||||
$lang->action->desc->unlinkproduct = '$date, the project is disassociated from the $extra, synchronization disassociates the sprints of the project from the $extra.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> a créé un sous-tâche <strong>$extra</strong>。' . "\n";
|
||||
@@ -392,6 +394,10 @@ $lang->action->label->tolib = 'Importé';
|
||||
$lang->action->label->updatetolib = 'MàJ';
|
||||
$lang->action->label->ganttmove = 'sorted';
|
||||
$lang->action->label->submitreview = 'submitted';
|
||||
$lang->action->label->switchtolight = 'switch from ALM mode to light mode';
|
||||
$lang->action->label->linkedrepo = 'Linked Code Repo';
|
||||
$lang->action->label->unlinkedrepo = 'Unlinked Code Repo';
|
||||
$lang->action->label->unlinkproduct = 'Unlinked Product';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -411,12 +417,13 @@ $lang->action->dynamicAction->program['activated'] = 'Activate Program';
|
||||
$lang->action->dynamicAction->program['deleted'] = 'Delete Program';
|
||||
$lang->action->dynamicAction->program['closed'] = 'Close Program';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = 'Créer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['edited'] = 'Editer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['started'] = 'Commencer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspendre ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['closed'] = 'Fermer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['opened'] = 'Créer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['edited'] = 'Editer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['started'] = 'Commencer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['suspended'] = 'Suspendre ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['activated'] = 'Activer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['closed'] = 'Fermer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['switchtolight'] = 'Switch Mode';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = 'Créer ' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = 'Editer ' . $lang->productCommon;
|
||||
@@ -680,14 +687,7 @@ $lang->action->label->release = 'Release|release|view|productID=%s';
|
||||
$lang->action->label->story = 'Story|story|view|storyID=%s';
|
||||
$lang->action->label->program = "Program|program|pgmproduct|programID=%s";
|
||||
$lang->action->label->project = "Project|program|index|projectID=%s";
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
}
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
|
||||
$lang->action->label->task = 'Tâche|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Build|build|view|buildID=%s';
|
||||
|
||||
@@ -306,6 +306,8 @@ $lang->action->label->syncproject = 'start';
|
||||
$lang->action->label->syncexecution = 'start';
|
||||
$lang->action->label->startProgram = '(The start of the project sets the status of the program as Ongoing)';
|
||||
$lang->action->label->submitreview = 'submitted';
|
||||
$lang->action->label->linkedrepo = 'Linked Code Repo';
|
||||
$lang->action->label->unlinkedrepo = 'Unlinked Code Repo';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -536,14 +538,7 @@ $lang->action->label->release = 'Phát hành|release|view|productID=%s';
|
||||
$lang->action->label->story = 'Câu chuyện|story|view|storyID=%s';
|
||||
$lang->action->label->program = "Program|program|pgmproduct|programID=%s";
|
||||
$lang->action->label->project = "Project|program|index|projectID=%s";
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->action->label->execution = "$lang->executionCommon|execution|task|executionID=%s";
|
||||
}
|
||||
$lang->action->label->execution = "Execution|execution|task|executionID=%s";
|
||||
$lang->action->label->task = 'Nhiệm vụ|task|view|taskID=%s';
|
||||
$lang->action->label->build = 'Bản dựng|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
|
||||
@@ -99,7 +99,7 @@ $lang->action->objectTypes['productplan'] = '计划';
|
||||
$lang->action->objectTypes['release'] = '发布';
|
||||
$lang->action->objectTypes['program'] = '项目集';
|
||||
$lang->action->objectTypes['project'] = '项目';
|
||||
$lang->action->objectTypes['execution'] = $config->systemMode == 'new' ? '执行' : $lang->executionCommon;
|
||||
$lang->action->objectTypes['execution'] = '执行';
|
||||
$lang->action->objectTypes['task'] = '任务';
|
||||
$lang->action->objectTypes['build'] = '版本';
|
||||
$lang->action->objectTypes['job'] = '构建';
|
||||
@@ -224,6 +224,8 @@ $lang->action->desc->reopen = '$date, 由 <strong>$actor</strong>
|
||||
$lang->action->desc->merged = '$date, 由 <strong>$actor</strong> 合并。' . "\n";
|
||||
$lang->action->desc->submitreview = '$date, 由 <strong>$actor</strong> 提交评审。' . "\n";
|
||||
$lang->action->desc->ganttmove = '$date, 由 <strong>$actor</strong> 排序。' . "\n";
|
||||
$lang->action->desc->switchtolight = '$date, 由 <strong>'. $lang->admin->system .'</strong> 从全生命周期管理模式切换为轻量管理模式。' . "\n";
|
||||
$lang->action->desc->unlinkproduct = '$date, 系统判断由于迭代所属项目与$extra取消关联,同步将迭代与$extra取消关联。' . "\n";
|
||||
|
||||
/* 用来描述和父子任务相关的操作历史记录。*/
|
||||
$lang->action->desc->createchildren = '$date, 由 <strong>$actor</strong> 创建子任务 <strong>$extra</strong>。' . "\n";
|
||||
@@ -392,6 +394,10 @@ $lang->action->label->tolib = '导入了';
|
||||
$lang->action->label->updatetolib = '更新了';
|
||||
$lang->action->label->ganttmove = '排序了';
|
||||
$lang->action->label->submitreview = '提交了评审';
|
||||
$lang->action->label->switchtolight = '从全生命周期管理模式切换为轻量管理模式';
|
||||
$lang->action->label->linkedrepo = '关联代码库到';
|
||||
$lang->action->label->unlinkedrepo = '取消了项目与代码库的关联';
|
||||
$lang->action->label->unlinkproduct = '取消了与产品的关联';
|
||||
|
||||
/* 动态信息按照对象分组 */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -411,12 +417,13 @@ $lang->action->dynamicAction->program['activated'] = '激活项目集';
|
||||
$lang->action->dynamicAction->program['deleted'] = '删除项目集';
|
||||
$lang->action->dynamicAction->program['closed'] = '关闭项目集';
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = '创建项目';
|
||||
$lang->action->dynamicAction->project['edited'] = '编辑项目';
|
||||
$lang->action->dynamicAction->project['started'] = '开始项目';
|
||||
$lang->action->dynamicAction->project['suspended'] = '延期项目';
|
||||
$lang->action->dynamicAction->project['activated'] = '激活项目';
|
||||
$lang->action->dynamicAction->project['closed'] = '关闭项目';
|
||||
$lang->action->dynamicAction->project['opened'] = '创建项目';
|
||||
$lang->action->dynamicAction->project['edited'] = '编辑项目';
|
||||
$lang->action->dynamicAction->project['started'] = '开始项目';
|
||||
$lang->action->dynamicAction->project['suspended'] = '延期项目';
|
||||
$lang->action->dynamicAction->project['activated'] = '激活项目';
|
||||
$lang->action->dynamicAction->project['closed'] = '关闭项目';
|
||||
$lang->action->dynamicAction->project['switchtolight'] = '切换模式';
|
||||
|
||||
$lang->action->dynamicAction->product['opened'] = '创建' . $lang->productCommon;
|
||||
$lang->action->dynamicAction->product['edited'] = '编辑' . $lang->productCommon;
|
||||
@@ -680,14 +687,7 @@ $lang->action->label->release = '发布|release|view|productID=%s';
|
||||
$lang->action->label->story = "{$lang->SRCommon}|story|view|storyID=%s";
|
||||
$lang->action->label->program = "项目集|program|product|programID=%s";
|
||||
$lang->action->label->project = "项目|project|index|projectID=%s";
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->action->label->execution = "执行|execution|task|executionID=%s";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->action->label->execution = "$lang->executionCommon|execution|task|executionID=%s";
|
||||
}
|
||||
$lang->action->label->execution = "执行|execution|task|executionID=%s";
|
||||
|
||||
$lang->action->label->task = '任务|task|view|taskID=%s';
|
||||
$lang->action->label->build = '版本|build|view|buildID=%s';
|
||||
|
||||
@@ -90,7 +90,7 @@ $lang->action->objectTypes['productplan'] = '計劃';
|
||||
$lang->action->objectTypes['release'] = '發佈';
|
||||
$lang->action->objectTypes['program'] = '項目集';
|
||||
$lang->action->objectTypes['project'] = '項目';
|
||||
$lang->action->objectTypes['execution'] = $config->systemMode == 'new' ? '執行' : $lang->executionCommon;
|
||||
$lang->action->objectTypes['execution'] = '執行';
|
||||
$lang->action->objectTypes['task'] = '任務';
|
||||
$lang->action->objectTypes['build'] = '版本';
|
||||
$lang->action->objectTypes['job'] = '構建';
|
||||
@@ -324,6 +324,8 @@ $lang->action->label->importfromgitlab = '從Gitlab關聯創建了';
|
||||
$lang->action->label->archived = '歸檔了';
|
||||
$lang->action->label->restore = '還原了';
|
||||
$lang->action->label->mergedbranch = '合併分支';
|
||||
$lang->action->label->linkedrepo = '關聯代碼庫到';
|
||||
$lang->action->label->unlinkedrepo = '取消了項目与代碼庫的關聯';
|
||||
|
||||
/* 動態信息按照對象分組 */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -560,20 +562,13 @@ $lang->action->dynamicAction->entry['created'] = '添加應用';
|
||||
$lang->action->dynamicAction->entry['edited'] = '編輯應用';
|
||||
|
||||
/* 用來生成相應對象的連結。*/
|
||||
$lang->action->label->product = $lang->productCommon . '|product|view|productID=%s';
|
||||
$lang->action->label->productplan = "計劃|productplan|view|productID=%s";
|
||||
$lang->action->label->release = '發佈|release|view|productID=%s';
|
||||
$lang->action->label->story = "{$lang->SRCommon}|story|view|storyID=%s";
|
||||
$lang->action->label->program = "項目集|program|product|programID=%s";
|
||||
$lang->action->label->project = "項目|project|index|projectID=%s";
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->action->label->execution = "執行|execution|task|executionID=%s";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->action->label->execution = "$lang->executionCommon|execution|task|executionID=%s";
|
||||
}
|
||||
$lang->action->label->product = $lang->productCommon . '|product|view|productID=%s';
|
||||
$lang->action->label->productplan = "計劃|productplan|view|productID=%s";
|
||||
$lang->action->label->release = '發佈|release|view|productID=%s';
|
||||
$lang->action->label->story = "{$lang->SRCommon}|story|view|storyID=%s";
|
||||
$lang->action->label->program = "項目集|program|product|programID=%s";
|
||||
$lang->action->label->project = "項目|project|index|projectID=%s";
|
||||
$lang->action->label->execution = "執行|execution|task|executionID=%s";
|
||||
$lang->action->label->task = '任務|task|view|taskID=%s';
|
||||
$lang->action->label->build = '版本|build|view|buildID=%s';
|
||||
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
|
||||
|
||||
+51
-30
@@ -373,11 +373,17 @@ class actionModel extends model
|
||||
}
|
||||
elseif($actionName == 'linked2execution' or $actionName == 'linked2kanban')
|
||||
{
|
||||
$execution = $this->dao->select('name,type')->from(TABLE_PROJECT)->where('id')->eq($action->extra)->fetch();
|
||||
$execution = $this->dao->select('name,type,multiple')->from(TABLE_PROJECT)->where('id')->eq($action->extra)->fetch();
|
||||
if(!empty($execution))
|
||||
{
|
||||
$name = $execution->name;
|
||||
$method = $execution->type == 'kanban' ? 'kanban' : 'view';
|
||||
if($execution->type != 'project' and empty($execution->multiple))
|
||||
{
|
||||
unset($actions[$actionID]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$name = $execution->name;
|
||||
$method = $execution->type == 'kanban' ? 'kanban' : 'view';
|
||||
$action->extra = (!common::hasPriv('execution', $method) or ($method == 'kanban' and isonlybody())) ? $name : html::a(helper::createLink('execution', $method, "executionID=$action->execution"), $name);
|
||||
}
|
||||
}
|
||||
@@ -1063,6 +1069,8 @@ class actionModel extends model
|
||||
$efforts = $this->dao->select('id')->from(TABLE_EFFORT)->where($condition)->fetchPairs();
|
||||
$efforts = !empty($efforts) ? implode(',', $efforts) : 0;
|
||||
|
||||
$noMultipleExecutions = $this->dao->select('id')->from(TABLE_PROJECT)->where('multiple')->eq(0)->andWhere('type')->in('sprint,kanban')->fetchPairs('id', 'id');
|
||||
|
||||
/* Get actions. */
|
||||
$actions = $this->dao->select('*')->from(TABLE_ACTION)
|
||||
->where('objectType')->notIN($this->config->action->ignoreObjectType4Dynamic)
|
||||
@@ -1082,10 +1090,12 @@ class actionModel extends model
|
||||
->markRight(1)
|
||||
/* Types excluded from Lite. */
|
||||
->beginIF($this->config->vision == 'lite')->andWhere('objectType')->notin('product')->fi()
|
||||
->beginIF($this->config->systemMode == 'light')->andWhere('objectType')->notin('program')->fi()
|
||||
->beginIF($productID == 'notzero')->andWhere('product')->gt(0)->andWhere('product')->notlike('%,0,%')->fi()
|
||||
->beginIF($projectID == 'notzero')->andWhere('project')->gt(0)->fi()
|
||||
->beginIF($executionID == 'notzero')->andWhere('execution')->gt(0)->fi()
|
||||
->beginIF($productID == 'all' or $projectID == 'all' or $executionID == 'all')->andWhere("IF((objectType!= 'doc' && objectType!= 'doclib'), ($condition), '1=1')")->fi()
|
||||
->beginIF($noMultipleExecutions)->andWhere("IF(`objectType` = 'execution', `objectID` NOT " . helper::dbIN($noMultipleExecutions) . ", '1=1')")->fi()
|
||||
->beginIF($actionCondition)->andWhere("($actionCondition)")->fi()
|
||||
/* Filter out client login/logout actions. */
|
||||
->andWhere('action')->notin('disconnectxuanxuan,reconnectxuanxuan,loginxuanxuan,logoutxuanxuan')
|
||||
@@ -1241,8 +1251,20 @@ class actionModel extends model
|
||||
$relatedProjects = $relatedData['relatedProjects'];
|
||||
$requirements = $relatedData['requirements'];
|
||||
|
||||
$projectIdList = array();
|
||||
foreach($relatedProjects as $objectType => $idList) $projectIdList += $idList;
|
||||
|
||||
$shadowProducts = $this->dao->select('id')->from(TABLE_PRODUCT)->where('shadow')->eq(1)->fetchPairs();
|
||||
$projectMultiples = $this->dao->select('id,type,multiple')->from(TABLE_PROJECT)->where('id')->in($projectIdList)->fetchAll('id');
|
||||
|
||||
foreach($actions as $i => $action)
|
||||
{
|
||||
if($action->objectType == 'product' AND isset($shadowProducts[$action->objectID]))
|
||||
{
|
||||
unset($actions[$i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Add name field to the actions. */
|
||||
$action->objectName = isset($objectNames[$action->objectType][$action->objectID]) ? $objectNames[$action->objectType][$action->objectID] : '';
|
||||
|
||||
@@ -1295,7 +1317,7 @@ class actionModel extends model
|
||||
if(empty($action->objectName) and (substr($objectType, 0, 6) == 'gitlab' or substr($objectType, 0, 5) == 'gitea' or substr($objectType, 0, 4) == 'gogs')) $action->objectName = $action->extra;
|
||||
|
||||
/* Other actions, create a link. */
|
||||
$this->setObjectLink($action, $deptUsers);
|
||||
$this->setObjectLink($action, $deptUsers, $shadowProducts, zget($projectMultiples, $projectID, ''));
|
||||
|
||||
/* Set merge request link. */
|
||||
if((empty($action->objectName) or $action->action == 'deleted') and $action->objectType == 'mr') $action->objectLink = '';
|
||||
@@ -1365,10 +1387,7 @@ class actionModel extends model
|
||||
elseif($objectType == 'reviewcl')
|
||||
{
|
||||
$objectInfo = $this->dao->select('id,title')->from($table)->where('id')->in($objectIdList)->fetchAll();
|
||||
foreach($objectInfo as $object)
|
||||
{
|
||||
$objectName[$object->id] = $object->title;
|
||||
}
|
||||
foreach($objectInfo as $object) $objectName[$object->id] = $object->title;
|
||||
}
|
||||
elseif($objectType == 'team')
|
||||
{
|
||||
@@ -1459,10 +1478,12 @@ class actionModel extends model
|
||||
*
|
||||
* @param object $action
|
||||
* @param array $deptUsers
|
||||
* @param array $shadowProducts
|
||||
* @param object $project
|
||||
* @access public
|
||||
* @return object|bool
|
||||
*/
|
||||
public function setObjectLink($action, $deptUsers)
|
||||
public function setObjectLink($action, $deptUsers, $shadowProducts, $project = null)
|
||||
{
|
||||
$action->objectLink = '';
|
||||
$action->objectLabel = zget($this->lang->action->objectTypes, $action->objectLabel);
|
||||
@@ -1558,7 +1579,7 @@ class actionModel extends model
|
||||
if(!empty($story))
|
||||
{
|
||||
$moduleName = $story->type;
|
||||
$action->objectLink = helper::createLink('story', 'view', "id=$story->id&version=0¶m=0&storyType=$story->type");
|
||||
$action->objectLink = isset($shadowProducts[$story->product]) ? helper::createLink('projectstory', 'view', "storyID=$story->id") : helper::createLink('story', 'view', "id=$story->id&version=0¶m=0&storyType=$story->type");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1591,15 +1612,8 @@ class actionModel extends model
|
||||
|
||||
if($action->objectType == 'stakeholder' and $action->project == 0) $action->objectLink = '';
|
||||
|
||||
if($action->objectType == 'story' and $action->action == 'import2storylib')
|
||||
{
|
||||
$action->objectLink = helper::createLink('assetlib', 'storyView', "storyID=$action->objectID");
|
||||
}
|
||||
|
||||
if($action->objectType == 'story' and $this->config->vision == 'lite')
|
||||
{
|
||||
$action->objectLink = helper::createLink('projectstory', 'view', "storyID=$action->objectID");
|
||||
}
|
||||
if($action->objectType == 'story' and $action->action == 'import2storylib') $action->objectLink = helper::createLink('assetlib', 'storyView', "storyID=$action->objectID");
|
||||
if($action->objectType == 'story' and $this->config->vision == 'lite') $action->objectLink = helper::createLink('projectstory', 'view', "storyID=$action->objectID");
|
||||
|
||||
if(strpos(',kanbanregion,kanbancard,', ",{$action->objectType},") !== false)
|
||||
{
|
||||
@@ -1620,11 +1634,7 @@ class actionModel extends model
|
||||
$action->objectLink = helper::createLink('kanban', 'view', "kanbanID=$kanbanID");
|
||||
}
|
||||
|
||||
if($action->objectType == 'branch' and $action->action == 'mergedbranch')
|
||||
{
|
||||
$action->objectLink = 'javascript:void(0)';
|
||||
}
|
||||
|
||||
if($action->objectType == 'branch' and $action->action == 'mergedbranch') $action->objectLink = 'javascript:void(0)';
|
||||
if($action->objectType == 'module')
|
||||
{
|
||||
$moduleType = $this->dao->select('type')->from(TABLE_MODULE)->where('id')->eq($action->objectID)->fetch('type');
|
||||
@@ -1635,10 +1645,10 @@ class actionModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
if($action->objectType == 'review')
|
||||
{
|
||||
$action->objectLink = helper::createLink('review', 'view', "reviewID=$action->objectID");
|
||||
}
|
||||
if($action->objectType == 'review') $action->objectLink = helper::createLink('review', 'view', "reviewID=$action->objectID");
|
||||
|
||||
/* Set app for no multiple project. */
|
||||
if(!empty($action->objectLink) and !empty($project) and empty($project->multiple)) $action->objectLink .= '#app=project';
|
||||
|
||||
return $action;
|
||||
}
|
||||
@@ -1751,7 +1761,7 @@ class actionModel extends model
|
||||
$action = $this->getById($actionID);
|
||||
if($action->action != 'deleted') return;
|
||||
|
||||
if($this->config->systemMode == 'new' and $action->objectType == 'execution')
|
||||
if($action->objectType == 'execution')
|
||||
{
|
||||
$execution = $this->dao->select('*')->from(TABLE_EXECUTION)->where('id')->eq($action->objectID)->fetch();
|
||||
if($execution->deleted and empty($execution->project)) return print(js::error($this->lang->action->undeletedTips));
|
||||
@@ -1777,9 +1787,20 @@ class actionModel extends model
|
||||
}
|
||||
elseif(in_array($action->objectType, array('program', 'project', 'execution')))
|
||||
{
|
||||
$project = $this->dao->select('id,acl')->from(TABLE_PROJECT)->where('id')->eq($action->objectID)->fetch();
|
||||
$project = $this->dao->select('id,acl,name,hasProduct')->from(TABLE_PROJECT)->where('id')->eq($action->objectID)->fetch();
|
||||
$objecttype = $action->objectType == 'execution' ? 'sprint' : $action->objectType;
|
||||
if($project->acl != 'open') $this->loadModel('user')->updateUserView($project->id, $objecttype);
|
||||
|
||||
/* Reduction shadow product. */
|
||||
if(!$project->hasProduct and $action->objectType == 'project')
|
||||
{
|
||||
$productID = $this->loadModel('product')->getProductIDByProject($project->id);;
|
||||
$this->dao->update(TABLE_PRODUCT)
|
||||
->set('name')->eq($project->name)
|
||||
->set('deleted')->eq(0)
|
||||
->where('id')->eq($productID)
|
||||
->exec();
|
||||
}
|
||||
}
|
||||
elseif($action->objectType == 'module')
|
||||
{
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
<th class='c-object-type'><?php common::printOrderLink('objectType', $orderBy, $vars, $lang->action->objectType);?></th>
|
||||
<th class='c-id'><?php common::printOrderLink('objectID', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th><?php echo $lang->action->objectName;?></th>
|
||||
<?php if($config->systemMode == 'new' and $currentObjectType == 'execution'):?>
|
||||
<?php if($currentObjectType == 'execution'):?>
|
||||
<th class='w-250px'><?php echo $this->lang->project->project;?></th>
|
||||
<?php endif;?>
|
||||
<?php if(strpos(',story,requirement,', ",$currentObjectType,") !== false):?>
|
||||
@@ -146,7 +146,7 @@
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
<?php if($config->systemMode == 'new' and $currentObjectType == 'execution'):?>
|
||||
<?php if($currentObjectType == 'execution'):?>
|
||||
<td class="c-name flex" title="<?php echo $projectList[$action->project]->name;?>">
|
||||
<span class="text-ellipsis"><?php echo $projectList[$action->project]->name;?></span>
|
||||
<?php if($projectList[$action->project]->deleted):?>
|
||||
|
||||
@@ -233,6 +233,36 @@ class admin extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set closed features config.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setModule()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$closedFeatures = '';
|
||||
if(isset($_POST['module']))
|
||||
{
|
||||
foreach($this->post->module as $module => $options)
|
||||
{
|
||||
$checked = reset($options);
|
||||
if(!$checked) $closedFeatures .= "$module,";
|
||||
}
|
||||
}
|
||||
$closedFeatures = rtrim($closedFeatures, ',');
|
||||
$this->loadModel('setting')->setItem('system.common.closedFeatures', $closedFeatures);
|
||||
$this->loadModel('custom')->processMeasrecordCron();
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'top'));
|
||||
}
|
||||
$this->view->title = $this->lang->admin->setModuleIndex;
|
||||
$this->view->closedFeatures = $this->loadModel('setting')->getItem('owner=system&module=common§ion=&key=closedFeatures');
|
||||
$this->view->disabledFeatures = $this->setting->getItem('owner=system&module=common§ion=&key=disabledFeatures');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Certify ztEmail.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
.group-item {display: block; width: 140px; float: left; font-size: 14px;}
|
||||
.group-item .checkbox-inline label {padding-left: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
|
||||
.table-condensed td, .table-condensed th {padding: 10px;}
|
||||
@@ -0,0 +1,15 @@
|
||||
$(function()
|
||||
{
|
||||
$("input[name^='module']").change(function()
|
||||
{
|
||||
const name = $(this).attr('name');
|
||||
if($(this).prop('checked'))
|
||||
{
|
||||
$("input[name='" + name + "'][type=hidden]").val('1').attr('disabled', 'disabled');
|
||||
}
|
||||
else
|
||||
{
|
||||
$("input[name='" + name + "'][type=hidden]").val('0').attr('disabled', false);
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = 'Bestätigungscode anfordern';
|
||||
$lang->admin->register = 'Register';
|
||||
$lang->admin->resetPWDSetting = 'Reset password Setting';
|
||||
$lang->admin->tableEngine = 'Table Engine';
|
||||
$lang->admin->setModuleIndex = 'Set Module';
|
||||
|
||||
$lang->admin->api = 'API';
|
||||
$lang->admin->log = 'Log';
|
||||
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Konto verknüpfen';
|
||||
$lang->admin->bind->success = "Konto wurde verknüpft!";
|
||||
|
||||
$lang->admin->setModule = new stdclass();
|
||||
$lang->admin->setModule->module = 'Module';
|
||||
$lang->admin->setModule->optional = 'Optional';
|
||||
$lang->admin->setModule->opened = 'Opened';
|
||||
$lang->admin->setModule->closed = 'Closed';
|
||||
|
||||
$lang->admin->setModule->product = 'Product';
|
||||
$lang->admin->setModule->scrum = 'Scrum Project';
|
||||
$lang->admin->setModule->waterfall = 'Waterfall Project';
|
||||
$lang->admin->setModule->assetlib = 'Assetlib';
|
||||
$lang->admin->setModule->other = 'Other';
|
||||
|
||||
$lang->admin->setModule->repo = 'Repo';
|
||||
$lang->admin->setModule->issue = 'Issue';
|
||||
$lang->admin->setModule->risk = 'Risk';
|
||||
$lang->admin->setModule->opportunity = 'Opportunity';
|
||||
$lang->admin->setModule->process = 'Process';
|
||||
$lang->admin->setModule->measrecord = 'Measrecord';
|
||||
$lang->admin->setModule->auditplan = 'QA';
|
||||
$lang->admin->setModule->meeting = 'Meeting';
|
||||
$lang->admin->setModule->roadmap = 'Roadmap';
|
||||
$lang->admin->setModule->track = 'Track';
|
||||
$lang->admin->setModule->URStory = 'URStroy';
|
||||
$lang->admin->setModule->researchplan = 'Researchplan';
|
||||
$lang->admin->setModule->gapanalysis = 'Gapanalysis';
|
||||
$lang->admin->setModule->storylib = 'Story Lib';
|
||||
$lang->admin->setModule->caselib = 'Case Lib';
|
||||
$lang->admin->setModule->issuelib = 'Issue Lib';
|
||||
$lang->admin->setModule->risklib = 'Risk Lib';
|
||||
$lang->admin->setModule->opportunitylib = 'Opportunity Lib';
|
||||
$lang->admin->setModule->practicelib = 'Practice Lib';
|
||||
$lang->admin->setModule->componentlib = 'Component Lib';
|
||||
$lang->admin->setModule->devops = 'DevOps';
|
||||
$lang->admin->setModule->kanban = 'Kanban';
|
||||
$lang->admin->setModule->OA = 'OA';
|
||||
$lang->admin->setModule->deploy = 'Deploy';
|
||||
$lang->admin->setModule->traincourse = 'Traincourse';
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = 'Sicherheits-Regeln';
|
||||
$lang->admin->safe->set = 'PasswortStärke';
|
||||
|
||||
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = 'Send Verification Code';
|
||||
$lang->admin->register = 'Register';
|
||||
$lang->admin->resetPWDSetting = 'Reset password Setting';
|
||||
$lang->admin->tableEngine = 'Table Engine';
|
||||
$lang->admin->setModuleIndex = 'Set Module';
|
||||
|
||||
$lang->admin->api = 'API';
|
||||
$lang->admin->log = 'Log';
|
||||
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Link Account';
|
||||
$lang->admin->bind->success = "Account is linked!";
|
||||
|
||||
$lang->admin->setModule = new stdclass();
|
||||
$lang->admin->setModule->module = 'Module';
|
||||
$lang->admin->setModule->optional = 'Optional';
|
||||
$lang->admin->setModule->opened = 'Opened';
|
||||
$lang->admin->setModule->closed = 'Closed';
|
||||
|
||||
$lang->admin->setModule->product = 'Product';
|
||||
$lang->admin->setModule->scrum = 'Scrum Project';
|
||||
$lang->admin->setModule->waterfall = 'Waterfall Project';
|
||||
$lang->admin->setModule->assetlib = 'Assetlib';
|
||||
$lang->admin->setModule->other = 'Other';
|
||||
|
||||
$lang->admin->setModule->repo = 'Repo';
|
||||
$lang->admin->setModule->issue = 'Issue';
|
||||
$lang->admin->setModule->risk = 'Risk';
|
||||
$lang->admin->setModule->opportunity = 'Opportunity';
|
||||
$lang->admin->setModule->process = 'Process';
|
||||
$lang->admin->setModule->measrecord = 'Measrecord';
|
||||
$lang->admin->setModule->auditplan = 'QA';
|
||||
$lang->admin->setModule->meeting = 'Meeting';
|
||||
$lang->admin->setModule->roadmap = 'Roadmap';
|
||||
$lang->admin->setModule->track = 'Track';
|
||||
$lang->admin->setModule->URStory = 'URStroy';
|
||||
$lang->admin->setModule->researchplan = 'Researchplan';
|
||||
$lang->admin->setModule->gapanalysis = 'Gapanalysis';
|
||||
$lang->admin->setModule->storylib = 'Story Lib';
|
||||
$lang->admin->setModule->caselib = 'Case Lib';
|
||||
$lang->admin->setModule->issuelib = 'Issue Lib';
|
||||
$lang->admin->setModule->risklib = 'Risk Lib';
|
||||
$lang->admin->setModule->opportunitylib = 'Opportunity Lib';
|
||||
$lang->admin->setModule->practicelib = 'Practice Lib';
|
||||
$lang->admin->setModule->componentlib = 'Component Lib';
|
||||
$lang->admin->setModule->devops = 'DevOps';
|
||||
$lang->admin->setModule->kanban = 'Kanban';
|
||||
$lang->admin->setModule->OA = 'OA';
|
||||
$lang->admin->setModule->deploy = 'Deploy';
|
||||
$lang->admin->setModule->traincourse = 'Traincourse';
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = 'Security Policy';
|
||||
$lang->admin->safe->set = 'Password Settings';
|
||||
|
||||
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = 'Obtenir le Code de vérification';
|
||||
$lang->admin->register = 'Register';
|
||||
$lang->admin->resetPWDSetting = 'Reset password Setting';
|
||||
$lang->admin->tableEngine = 'Table Engine';
|
||||
$lang->admin->setModuleIndex = 'Set Module';
|
||||
|
||||
$lang->admin->api = 'API';
|
||||
$lang->admin->log = 'Log';
|
||||
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = 'Lier au compte';
|
||||
$lang->admin->bind->success = "Le compte est associé !";
|
||||
|
||||
$lang->admin->setModule = new stdclass();
|
||||
$lang->admin->setModule->module = 'Module';
|
||||
$lang->admin->setModule->optional = 'Optional';
|
||||
$lang->admin->setModule->opened = 'Opened';
|
||||
$lang->admin->setModule->closed = 'Closed';
|
||||
|
||||
$lang->admin->setModule->product = 'Product';
|
||||
$lang->admin->setModule->scrum = 'Scrum Project';
|
||||
$lang->admin->setModule->waterfall = 'Waterfall Project';
|
||||
$lang->admin->setModule->assetlib = 'Assetlib';
|
||||
$lang->admin->setModule->other = 'Other';
|
||||
|
||||
$lang->admin->setModule->repo = 'Repo';
|
||||
$lang->admin->setModule->issue = 'Issue';
|
||||
$lang->admin->setModule->risk = 'Risk';
|
||||
$lang->admin->setModule->opportunity = 'Opportunity';
|
||||
$lang->admin->setModule->process = 'Process';
|
||||
$lang->admin->setModule->measrecord = 'Measrecord';
|
||||
$lang->admin->setModule->auditplan = 'QA';
|
||||
$lang->admin->setModule->meeting = 'Meeting';
|
||||
$lang->admin->setModule->roadmap = 'Roadmap';
|
||||
$lang->admin->setModule->track = 'Track';
|
||||
$lang->admin->setModule->URStory = 'URStroy';
|
||||
$lang->admin->setModule->researchplan = 'Researchplan';
|
||||
$lang->admin->setModule->gapanalysis = 'Gapanalysis';
|
||||
$lang->admin->setModule->storylib = 'Story Lib';
|
||||
$lang->admin->setModule->caselib = 'Case Lib';
|
||||
$lang->admin->setModule->issuelib = 'Issue Lib';
|
||||
$lang->admin->setModule->risklib = 'Risk Lib';
|
||||
$lang->admin->setModule->opportunitylib = 'Opportunity Lib';
|
||||
$lang->admin->setModule->practicelib = 'Practice Lib';
|
||||
$lang->admin->setModule->componentlib = 'Component Lib';
|
||||
$lang->admin->setModule->devops = 'DevOps';
|
||||
$lang->admin->setModule->kanban = 'Kanban';
|
||||
$lang->admin->setModule->OA = 'OA';
|
||||
$lang->admin->setModule->deploy = 'Deploy';
|
||||
$lang->admin->setModule->traincourse = 'Traincourse';
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = 'Politique de sécurité';
|
||||
$lang->admin->safe->set = 'Paramétrages du Mot de passe';
|
||||
|
||||
@@ -23,6 +23,7 @@ $lang->admin->getCaptcha = '获取验证码';
|
||||
$lang->admin->register = '登记';
|
||||
$lang->admin->resetPWDSetting = '重置密码设置';
|
||||
$lang->admin->tableEngine = '表引擎';
|
||||
$lang->admin->setModuleIndex = '系统功能配置';
|
||||
|
||||
$lang->admin->api = '接口';
|
||||
$lang->admin->log = '日志';
|
||||
@@ -65,6 +66,44 @@ $lang->admin->bind = new stdclass();
|
||||
$lang->admin->bind->caption = '关联社区帐号';
|
||||
$lang->admin->bind->success = "关联账户成功";
|
||||
|
||||
$lang->admin->setModule = new stdclass();
|
||||
$lang->admin->setModule->module = '功能点';
|
||||
$lang->admin->setModule->optional = '可选功能';
|
||||
$lang->admin->setModule->opened = '已开启';
|
||||
$lang->admin->setModule->closed = '已关闭';
|
||||
|
||||
$lang->admin->setModule->product = '产品';
|
||||
$lang->admin->setModule->scrum = '敏捷项目';
|
||||
$lang->admin->setModule->waterfall = '瀑布项目';
|
||||
$lang->admin->setModule->assetlib = '资产库';
|
||||
$lang->admin->setModule->other = '通用功能';
|
||||
|
||||
$lang->admin->setModule->repo = '代码';
|
||||
$lang->admin->setModule->issue = '问题';
|
||||
$lang->admin->setModule->risk = '风险';
|
||||
$lang->admin->setModule->opportunity = '机会';
|
||||
$lang->admin->setModule->process = '过程';
|
||||
$lang->admin->setModule->measrecord = '度量';
|
||||
$lang->admin->setModule->auditplan = 'QA';
|
||||
$lang->admin->setModule->meeting = '会议';
|
||||
$lang->admin->setModule->roadmap = '路线图';
|
||||
$lang->admin->setModule->track = '矩阵';
|
||||
$lang->admin->setModule->URStory = '用户需求';
|
||||
$lang->admin->setModule->researchplan = '调研';
|
||||
$lang->admin->setModule->gapanalysis = '培训';
|
||||
$lang->admin->setModule->storylib = '需求库';
|
||||
$lang->admin->setModule->caselib = '用例库';
|
||||
$lang->admin->setModule->issuelib = '问题库';
|
||||
$lang->admin->setModule->risklib = '风险库';
|
||||
$lang->admin->setModule->opportunitylib = '机会库';
|
||||
$lang->admin->setModule->practicelib = '最佳实践库';
|
||||
$lang->admin->setModule->componentlib = '组件库';
|
||||
$lang->admin->setModule->devops = 'DevOps';
|
||||
$lang->admin->setModule->kanban = '通用看板';
|
||||
$lang->admin->setModule->OA = '办公';
|
||||
$lang->admin->setModule->deploy = '运维';
|
||||
$lang->admin->setModule->traincourse = '学堂';
|
||||
|
||||
$lang->admin->safe = new stdclass();
|
||||
$lang->admin->safe->common = '安全策略';
|
||||
$lang->admin->safe->set = '密码安全设置';
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
/**
|
||||
* The setmodule view file of admin 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) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
* @author Yuting Wang <wangyuting@cnezsoft.com>
|
||||
* @package admin
|
||||
* @version $Id: setmodule.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='mainContent' class='main-row'>
|
||||
<div class='main-col main-content'>
|
||||
<div class='main-header'>
|
||||
<h2><?php echo $lang->admin->setModuleIndex;?></h2>
|
||||
</div>
|
||||
<form class="load-indicator main-form form-ajax" id="ajaxForm" method="post">
|
||||
<table class='table table-condensed table-bordered active-disabled table-fixed'>
|
||||
<thead class='text-center'>
|
||||
<tr>
|
||||
<th rowspan='2' class='w-120px'><?php echo $lang->admin->setModule->module;?></th>
|
||||
<th colspan='2'><?php echo $lang->admin->setModule->optional;?></th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->admin->setModule->opened;?></th>
|
||||
<th><?php echo $lang->admin->setModule->closed;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($config->featureGroup as $group => $features):?>
|
||||
<?php if(strpos(",$disabledFeatures,", ",$group,") !== false) continue;?>
|
||||
|
||||
<?php $hasData = false;?>
|
||||
<?php foreach($features as $feature):?>
|
||||
<?php $code = $group . ucfirst($feature);?>
|
||||
<?php if(strpos(",$disabledFeatures,", ",$code,") !== false) continue;?>
|
||||
<?php $hasData = true;?>
|
||||
<?php endForeach;?>
|
||||
|
||||
<?php if($hasData):?>
|
||||
<tr>
|
||||
<td class='text-right'><?php echo $lang->admin->setModule->{$group};?></td>
|
||||
<td>
|
||||
<?php foreach($features as $feature):?>
|
||||
<?php $code = $group. ucfirst($feature);?>
|
||||
<?php if(strpos(",$disabledFeatures,", ",$code,") !== false) continue;?>
|
||||
<?php if(strpos(",$closedFeatures,", ",$code,") !== false) continue;?>
|
||||
<div class='group-item'>
|
||||
<?php echo html::checkbox("module[{$code}]", array('1' => $lang->admin->setModule->{$feature}), '1', "data-code='{$code}'", 'inline');?>
|
||||
<?php echo html::hidden("module[{$code}][]", '1', 'disabled');?>
|
||||
</div>
|
||||
<?php endForeach;?>
|
||||
</td>
|
||||
<td>
|
||||
<?php foreach($features as $feature):?>
|
||||
<?php $code = $group . ucfirst($feature);?>
|
||||
<?php if(strpos(",$disabledFeatures,", ",$code,") !== false) continue;?>
|
||||
<?php if(strpos(",$closedFeatures,", ",$code,") === false) continue;?>
|
||||
<div class='group-item'>
|
||||
<?php echo html::checkbox("module[{$code}]", array('1' => $lang->admin->setModule->{$feature}), '0', "data-code='{$code}'", 'inline');?>
|
||||
<?php echo html::hidden("module[{$code}][]", '0');?>
|
||||
</div>
|
||||
<?php endForeach;?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php endForeach;?>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center'><?php echo html::submitButton();?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>`
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
+84
-31
@@ -715,7 +715,8 @@ class block extends control
|
||||
$this->session->set('buildList', $uri, 'execution');
|
||||
if(preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) return;
|
||||
|
||||
$this->view->testtasks = $this->dao->select('distinct t1.*,t2.name as productName,t3.name as buildName,t4.name as projectName')->from(TABLE_TESTTASK)->alias('t1')
|
||||
$this->view->projects = $this->loadModel('project')->getPairsByProgram();
|
||||
$this->view->testtasks = $this->dao->select('distinct t1.*,t2.name as productName,t2.shadow,t3.name as buildName,t4.name as projectName')->from(TABLE_TESTTASK)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->leftJoin(TABLE_BUILD)->alias('t3')->on('t1.build=t3.id')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t4')->on('t1.execution=t4.id')
|
||||
@@ -758,13 +759,15 @@ class block extends control
|
||||
*/
|
||||
public function printPlanBlock()
|
||||
{
|
||||
$this->session->set('productList', $this->app->getURI(true), 'product');
|
||||
$this->session->set('productPlanList', $this->app->getURI(true), 'product');
|
||||
$uri = $this->createLink('my', 'index');
|
||||
$this->session->set('productList', $uri, 'product');
|
||||
$this->session->set('productPlanList', $uri, 'product');
|
||||
|
||||
$this->app->loadLang('productplan');
|
||||
$this->view->plans = $this->dao->select('t1.*,t2.name as productName')->from(TABLE_PRODUCTPLAN)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->where('t1.deleted')->eq('0')
|
||||
->andWhere('t2.shadow')->eq(0)
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.product')->in($this->app->user->view->products)->fi()
|
||||
->orderBy('t1.begin desc')
|
||||
->beginIF($this->viewType != 'json')->limit((int)$this->params->count)->fi()
|
||||
@@ -788,6 +791,7 @@ class block extends control
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->leftJoin(TABLE_BUILD)->alias('t3')->on('t1.build=t3.id')
|
||||
->where('t1.deleted')->eq('0')
|
||||
->andWhere('t2.shadow')->eq(0)
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('t1.project')->eq((int)$this->session->project)->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.product')->in($this->app->user->view->products)->fi()
|
||||
->orderBy('t1.id desc')
|
||||
@@ -806,8 +810,9 @@ class block extends control
|
||||
$this->session->set('buildList', $this->createLink('my', 'index'), 'execution');
|
||||
$this->app->loadLang('build');
|
||||
|
||||
$builds = $this->dao->select('t1.*, t2.name as productName')->from(TABLE_BUILD)->alias('t1')
|
||||
$builds = $this->dao->select('t1.*, t2.name AS productName, t2.shadow, t3.name AS projectName')->from(TABLE_BUILD)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t1.project=t3.id')
|
||||
->where('t1.deleted')->eq('0')
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.execution')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF($this->view->block->module != 'my' and $this->session->project)->andWhere('t1.project')->eq((int)$this->session->project)->fi()
|
||||
@@ -853,13 +858,32 @@ class block extends control
|
||||
$productIdList = array();
|
||||
foreach($productStats as $product) $productIdList[] = $product->id;
|
||||
|
||||
$this->view->executions = $this->dao->select('t1.product,t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
$this->app->loadLang('project');
|
||||
$executions = $this->dao->select('t1.product,t2.id,t2.project,t2.name,t2.multiple')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->in($productIdList)
|
||||
->andWhere('t2.type')->in('stage,sprint')
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->orderBy('t1.project')
|
||||
->fetchPairs('product', 'name');
|
||||
->fetchAll('product');
|
||||
|
||||
$executionPairs = array();
|
||||
$noMultiples = array();
|
||||
foreach($executions as $execution)
|
||||
{
|
||||
if(empty($execution->multiple)) $noMultiples[$execution->product] = $execution->project;
|
||||
$executionPairs[$execution->product] = $execution->name;
|
||||
}
|
||||
if($noMultiples)
|
||||
{
|
||||
$noMultipleProjects = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in($noMultiples)->fetchPairs('id', 'name');
|
||||
foreach($noMultiples as $productID => $projectID)
|
||||
{
|
||||
if(isset($noMultipleProjects[$projectID])) $executionPairs[$productID] = $noMultipleProjects[$projectID] . "({$this->lang->project->disableExecution})";
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->executions = $executionPairs;
|
||||
$this->view->productStats = $productStats;
|
||||
}
|
||||
|
||||
@@ -1262,7 +1286,7 @@ class block extends control
|
||||
*/
|
||||
public function printWaterfallIssueBlock()
|
||||
{
|
||||
$uri = $this->app->getURI(true);
|
||||
$uri = $this->app->tab == 'my' ? $this->createLink('my', 'index') : $this->server->http_referer;
|
||||
$this->session->set('issueList', $uri, 'project');
|
||||
if(preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) return;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
@@ -1277,7 +1301,7 @@ class block extends control
|
||||
*/
|
||||
public function printWaterfallRiskBlock()
|
||||
{
|
||||
$uri = $this->app->getURI(true);
|
||||
$uri = $this->app->tab == 'my' ? $this->createLink('my', 'index') : $this->server->http_referer;
|
||||
$this->session->set('riskList', $uri, 'project');
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->risks = $this->loadModel('risk')->getBlockRisks($this->session->project, $this->params->type, $this->viewType == 'json' ? 0 : (int)$this->params->count, $this->params->orderBy);
|
||||
@@ -1468,8 +1492,9 @@ class block extends control
|
||||
*/
|
||||
public function printScrumRoadMapBlock($productID = 0, $roadMapID = 0)
|
||||
{
|
||||
$this->session->set('releaseList', $this->app->getURI(true), 'product');
|
||||
$this->session->set('productPlanList', $this->app->getURI(true), 'product');
|
||||
$uri = $this->app->tab == 'my' ? $this->createLink('my', 'index') : $this->server->http_referer;
|
||||
$this->session->set('releaseList', $uri, 'product');
|
||||
$this->session->set('productPlanList', $uri, 'product');
|
||||
|
||||
$products = $this->loadModel('product')->getPairs('', $this->session->project);
|
||||
if(!is_numeric($productID)) $productID = key($products);
|
||||
@@ -1495,15 +1520,17 @@ class block extends control
|
||||
*/
|
||||
public function printScrumTestBlock()
|
||||
{
|
||||
$this->session->set('testtaskList', $this->app->getURI(true), 'qa');
|
||||
$this->session->set('productList', $this->app->getURI(true), 'product');
|
||||
$this->session->set('projectList', $this->app->getURI(true), 'project');
|
||||
$this->session->set('buildList', $this->app->getURI(true), 'execution');
|
||||
$uri = $this->app->tab == 'my' ? $this->createLink('my', 'index') : $this->server->http_referer;
|
||||
$this->session->set('testtaskList', $uri, 'qa');
|
||||
$this->session->set('productList', $uri, 'product');
|
||||
$this->session->set('projectList', $uri, 'project');
|
||||
$this->session->set('buildList', $uri, 'execution');
|
||||
$this->app->loadLang('testtask');
|
||||
|
||||
$count = zget($this->params, 'count', 10);
|
||||
$status = isset($this->params->type) ? $this->params->type : 'wait';
|
||||
|
||||
$this->view->project = $this->loadModel('project')->getByID($this->session->project);
|
||||
$this->view->testtasks = $this->dao->select('t1.*,t2.name as productName,t3.name as buildName,t4.name as projectName')
|
||||
->from(TABLE_TESTTASK)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id')
|
||||
@@ -1534,7 +1561,7 @@ class block extends control
|
||||
$count = isset($this->params->count) ? (int)$this->params->count : 0;
|
||||
|
||||
$projectID = $this->lang->navGroup->qa == 'project' ? $this->session->project : 0;
|
||||
$products = $this->loadModel('product')->getOrderedProducts($status, $count, $projectID);
|
||||
$products = $this->loadModel('product')->getOrderedProducts($status, $count, $projectID, 'all');
|
||||
$executions = $this->loadModel('execution')->getPairs($projectID, 'all', 'empty|withdelete');
|
||||
if(empty($products))
|
||||
{
|
||||
@@ -1645,6 +1672,7 @@ class block extends control
|
||||
$total = 0;
|
||||
foreach($executions as $execution)
|
||||
{
|
||||
if(empty($execution->multiple)) continue;
|
||||
if(!isset($overview[$execution->status])) $overview[$execution->status] = 0;
|
||||
$overview[$execution->status]++;
|
||||
$total++;
|
||||
@@ -1713,10 +1741,8 @@ class block extends control
|
||||
$this->app->loadClass('pager', true);
|
||||
$pager = pager::init(0, $count, 1);
|
||||
|
||||
$projectPairs = array();
|
||||
if($this->config->systemMode == 'new') $projectPairs = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('type')->eq('project')->fetchPairs('id', 'name');
|
||||
|
||||
$projectID = $this->view->block->module == 'my' ? 0 : (int)$this->session->project;
|
||||
$projectPairs = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('type')->eq('project')->fetchPairs('id', 'name');
|
||||
$projectID = $this->view->block->module == 'my' ? 0 : (int)$this->session->project;
|
||||
|
||||
$this->view->executionStats = $this->execution->getStatData($projectID, $status, 0, 0, false, 'skipParent', 'id_asc', $pager);
|
||||
}
|
||||
@@ -1729,17 +1755,21 @@ class block extends control
|
||||
*/
|
||||
public function printAssignToMeBlock($longBlock = true)
|
||||
{
|
||||
$hasIssue = helper::hasFeature('issue');
|
||||
$hasRisk = helper::hasFeature('risk');
|
||||
$hasMeeting = helper::hasFeature('meeting');
|
||||
|
||||
$hasViewPriv = array();
|
||||
if(common::hasPriv('todo', 'view')) $hasViewPriv['todo'] = true;
|
||||
if(common::hasPriv('task', 'view')) $hasViewPriv['task'] = true;
|
||||
if(common::hasPriv('bug', 'view') and $this->config->vision != 'lite') $hasViewPriv['bug'] = true;
|
||||
if($this->config->URAndSR and common::hasPriv('story', 'view') and $this->config->vision != 'lite') $hasViewPriv['requirement'] = true;
|
||||
if(common::hasPriv('story', 'view') and $this->config->vision != 'lite') $hasViewPriv['story'] = true;
|
||||
if(common::hasPriv('risk', 'view') and $this->config->edition == 'max' and $this->config->vision != 'lite') $hasViewPriv['risk'] = true;
|
||||
if(common::hasPriv('issue', 'view') and $this->config->edition == 'max' and $this->config->vision != 'lite') $hasViewPriv['issue'] = true;
|
||||
if(common::hasPriv('meeting', 'view') and $this->config->edition == 'max' and $this->config->vision != 'lite') $hasViewPriv['meeting'] = true;
|
||||
if(common::hasPriv('feedback', 'view') and in_array($this->config->edition, array('max', 'biz'))) $hasViewPriv['feedback'] = true;
|
||||
if(common::hasPriv('ticket', 'view') and in_array($this->config->edition, array('max', 'biz'))) $hasViewPriv['ticket'] = true;
|
||||
if(common::hasPriv('todo', 'view')) $hasViewPriv['todo'] = true;
|
||||
if(common::hasPriv('task', 'view')) $hasViewPriv['task'] = true;
|
||||
if(common::hasPriv('bug', 'view') and $this->config->vision != 'lite') $hasViewPriv['bug'] = true;
|
||||
if(common::hasPriv('story', 'view') and $this->config->vision != 'lite') $hasViewPriv['story'] = true;
|
||||
if($this->config->URAndSR and common::hasPriv('story', 'view') and $this->config->vision != 'lite') $hasViewPriv['requirement'] = true;
|
||||
if(common::hasPriv('risk', 'view') and $this->config->edition == 'max' and $this->config->vision != 'lite' && $hasRisk) $hasViewPriv['risk'] = true;
|
||||
if(common::hasPriv('issue', 'view') and $this->config->edition == 'max' and $this->config->vision != 'lite' && $hasIssue) $hasViewPriv['issue'] = true;
|
||||
if(common::hasPriv('meeting', 'view') and $this->config->edition == 'max' and $this->config->vision != 'lite' && $hasMeeting) $hasViewPriv['meeting'] = true;
|
||||
if(common::hasPriv('feedback', 'view') and in_array($this->config->edition, array('max', 'biz'))) $hasViewPriv['feedback'] = true;
|
||||
if(common::hasPriv('ticket', 'view') and in_array($this->config->edition, array('max', 'biz'))) $hasViewPriv['ticket'] = true;
|
||||
|
||||
$params = $this->get->param;
|
||||
$params = json_decode(base64_decode($params));
|
||||
@@ -1748,8 +1778,20 @@ class block extends control
|
||||
$objectCountList = array('todo' => 'todoCount', 'task' => 'taskCount', 'bug' => 'bugCount', 'story' => 'storyCount', 'requirement' => 'requirementCount');
|
||||
if($this->config->edition == 'max')
|
||||
{
|
||||
$objectList += array('risk' => 'risks', 'issue' => 'issues', 'feedback' => 'feedbacks', 'ticket' => 'tickets');
|
||||
$objectCountList += array('risk' => 'riskCount', 'issue' => 'issueCount', 'feedback' => 'feedbackCount', 'ticket' => 'ticketCount');
|
||||
if($hasRisk)
|
||||
{
|
||||
$objectList += array('risk' => 'risks');
|
||||
$objectCountList += array('risk' => 'riskCount');
|
||||
}
|
||||
|
||||
if($hasIssue)
|
||||
{
|
||||
$objectList += array('issue' => 'issues');
|
||||
$objectCountList += array('issue' => 'issueCount');
|
||||
}
|
||||
|
||||
$objectList += array('feedback' => 'feedbacks', 'ticket' => 'tickets');
|
||||
$objectCountList += array('feedback' => 'feedbackCount', 'ticket' => 'ticketCount');
|
||||
}
|
||||
|
||||
if($this->config->edition == 'biz')
|
||||
@@ -1867,6 +1909,17 @@ class block extends control
|
||||
$this->view->users = $this->loadModel('user')->getPairs('all,noletter');
|
||||
}
|
||||
|
||||
$limitCount = !empty($params->reviewCount) ? $params->reviewCount : 20;
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager(0, $limitCount, 1);
|
||||
$reviews = $this->loadModel('my')->getReviewingList('all', 'time_desc', $pager);
|
||||
if($reviews)
|
||||
{
|
||||
$hasViewPriv['review'] = true;
|
||||
$count['review'] = count($reviews);
|
||||
$this->view->reviews = $reviews;
|
||||
}
|
||||
|
||||
$this->view->selfCall = $this->selfCall;
|
||||
$this->view->hasViewPriv = $hasViewPriv;
|
||||
$this->view->count = $count;
|
||||
|
||||
+23
-31
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['4']['params']['count'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'contribute';
|
||||
$lang->block->default['full']['my']['5']['source'] = '';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
}
|
||||
$lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'contribute';
|
||||
$lang->block->default['full']['my']['5']['source'] = '';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['6']['title'] = 'Recent Project';
|
||||
$lang->block->default['full']['my']['6']['block'] = 'recentproject';
|
||||
@@ -308,31 +305,25 @@ $lang->block->default['full']['my']['8']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['8']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['8']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['reviewCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['feedbackCount'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['9']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
}
|
||||
$lang->block->default['full']['my']['9']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['10']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['10']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['grid'] = 8;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->block->default['full']['my']['10']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'project';
|
||||
}
|
||||
|
||||
$lang->block->default['full']['my']['10']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['full']['my']['10']['params']['count'] = '15';
|
||||
@@ -360,8 +351,8 @@ $lang->block->availableBlocks->meeting = 'Meetings';
|
||||
$lang->block->availableBlocks->feedback = 'Feedbacks';
|
||||
$lang->block->availableBlocks->ticket = 'Tickets';
|
||||
|
||||
if($config->systemMode == 'new') $lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['execution'] = $lang->execution->common;
|
||||
$lang->block->moduleList['qa'] = 'QA';
|
||||
$lang->block->moduleList['todo'] = 'Todos';
|
||||
@@ -371,7 +362,7 @@ $lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->project = 'Project List';
|
||||
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Project';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
|
||||
if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
|
||||
$lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
|
||||
|
||||
$lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
@@ -477,6 +468,7 @@ $lang->block->bugCount = 'Bugs';
|
||||
$lang->block->riskCount = 'Risk';
|
||||
$lang->block->issueCount = 'Issues';
|
||||
$lang->block->storyCount = 'Stories';
|
||||
$lang->block->reviewCount = 'Reviews';
|
||||
$lang->block->meetingCount = 'Meetings';
|
||||
$lang->block->feedbackCount = 'Feedbacks';
|
||||
$lang->block->ticketCount = 'Tickets';
|
||||
@@ -572,10 +564,10 @@ $lang->block->gridOptions[4] = 'Rechts';
|
||||
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('Administrator', 'Abteilung erstellen', 'Benutzer erstellen', 'Rechte pflegen');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . ' Besitzer', $lang->productCommon . ' erstellen', 'Module pflegen', 'Pläne pflegen', 'Storys pflegen', 'Release erstellen');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['dev'] = array('Entwickler', 'Aufgabe/Bugs anfordern', 'Update Status', 'Aufgaben/Bugs abschließen');
|
||||
$lang->block->flowchart['tester'] = array('QS Team', 'Fälle erstellen', 'Fälle ausführen', 'Bug Berichte', 'Bugs überprüfen', 'Bugs schließen');
|
||||
|
||||
|
||||
+23
-31
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['4']['source'] = 'todo';
|
||||
$lang->block->default['full']['my']['4']['params']['count'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['5']['title'] = 'Project Statistic';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['5']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
}
|
||||
$lang->block->default['full']['my']['5']['title'] = 'Project Statistic';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['5']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['6']['title'] = 'Personal Contribution';
|
||||
$lang->block->default['full']['my']['6']['block'] = 'contribute';
|
||||
@@ -308,31 +305,25 @@ $lang->block->default['full']['my']['8']['block'] = 'assigntome';
|
||||
$lang->block->default['full']['my']['8']['source'] = '';
|
||||
$lang->block->default['full']['my']['8']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['reviewCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['feedbackCount'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['9']['title'] = 'Manpower Input';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
}
|
||||
$lang->block->default['full']['my']['9']['title'] = 'Manpower Input';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['10']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['10']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['grid'] = 8;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->block->default['full']['my']['10']['block'] = 'execution';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'execution';
|
||||
}
|
||||
|
||||
$lang->block->default['full']['my']['10']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['full']['my']['10']['params']['count'] = '15';
|
||||
@@ -360,8 +351,8 @@ $lang->block->availableBlocks->meeting = 'Meetings';
|
||||
$lang->block->availableBlocks->feedback = 'Feedbacks';
|
||||
$lang->block->availableBlocks->ticket = 'Tickets';
|
||||
|
||||
if($config->systemMode == 'new') $lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['execution'] = $lang->execution->common;
|
||||
$lang->block->moduleList['qa'] = 'Test';
|
||||
$lang->block->moduleList['todo'] = 'Todo';
|
||||
@@ -371,7 +362,7 @@ $lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->project = 'Project List';
|
||||
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Project';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
|
||||
if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = 'Project Manpower Input';
|
||||
$lang->block->modules['project']->availableBlocks->projectteam = 'Project Manpower Input';
|
||||
|
||||
$lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
@@ -477,6 +468,7 @@ $lang->block->bugCount = 'Bug';
|
||||
$lang->block->riskCount = 'Risk';
|
||||
$lang->block->issueCount = 'Issues';
|
||||
$lang->block->storyCount = 'Stories';
|
||||
$lang->block->reviewCount = 'Reviews';
|
||||
$lang->block->meetingCount = 'Meetings';
|
||||
$lang->block->feedbackCount = 'Feedbacks';
|
||||
$lang->block->ticketCount = 'Tickets';
|
||||
@@ -572,10 +564,10 @@ $lang->block->gridOptions[4] = 'Right';
|
||||
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('Administrator', 'Add Departments', 'Add Users', 'Maintain Privileges');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Add ' . $lang->productCommon, 'Maintain Modules', 'Maintain Plans', 'Maintain Stories', 'Create Releases');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('Project Manager', 'Add ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['dev'] = array('Dev Team', 'Claim Tasks/Bugs', 'Design', 'Update Status', 'Finish Tasks/Bugs', 'Commit Code');
|
||||
$lang->block->flowchart['tester'] = array('Test Team', 'Write Cases', 'Run Cases', 'Report Bugs', 'Verify Bugs', 'Close Bugs');
|
||||
|
||||
|
||||
+23
-31
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['4']['params']['count'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'contribute';
|
||||
$lang->block->default['full']['my']['5']['source'] = '';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
}
|
||||
$lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'contribute';
|
||||
$lang->block->default['full']['my']['5']['source'] = '';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['6']['title'] = 'Recent Projecets';
|
||||
$lang->block->default['full']['my']['6']['block'] = 'recentproject';
|
||||
@@ -308,31 +305,25 @@ $lang->block->default['full']['my']['8']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['8']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['8']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['reviewCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['feedbackCount'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['9']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
}
|
||||
$lang->block->default['full']['my']['9']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['10']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['10']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['grid'] = 8;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->block->default['full']['my']['10']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'project';
|
||||
}
|
||||
|
||||
$lang->block->default['full']['my']['10']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['full']['my']['10']['params']['count'] = '15';
|
||||
@@ -360,8 +351,8 @@ $lang->block->availableBlocks->meeting = 'Meetings';
|
||||
$lang->block->availableBlocks->feedback = 'Feedbacks';
|
||||
$lang->block->availableBlocks->ticket = 'Tickets';
|
||||
|
||||
if($config->systemMode == 'new') $lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['execution'] = $lang->execution->common;
|
||||
$lang->block->moduleList['qa'] = 'Test';
|
||||
$lang->block->moduleList['todo'] = 'Todo';
|
||||
@@ -371,7 +362,7 @@ $lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->project = 'Project List';
|
||||
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Projects';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
|
||||
if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
|
||||
$lang->block->modules['project']->availableBlocks->projectteam = 'Project Human Input';
|
||||
|
||||
$lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
@@ -477,6 +468,7 @@ $lang->block->bugCount = 'Bug';
|
||||
$lang->block->riskCount = 'Risk';
|
||||
$lang->block->issueCount = 'Issues';
|
||||
$lang->block->storyCount = 'Stories';
|
||||
$lang->block->reviewCount = 'Reviews';
|
||||
$lang->block->meetingCount = 'Meetings';
|
||||
$lang->block->feedbackCount = 'Feedbacks';
|
||||
$lang->block->ticketCount = 'Tickets';
|
||||
@@ -572,10 +564,10 @@ $lang->block->gridOptions[4] = 'Right';
|
||||
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('Administrateur', 'Ajoute Compartiment', 'Ajoute Utilisateurs', 'Administre Privilèges');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('Program Owner', 'Create Program', 'Link Product', "Create Project", "Budgeting and planning", 'Add Stakeholder');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . ' Owner', 'Ajoute ' . $lang->productCommon . '/Modules', 'Ajoute ' . $lang->executionCommon . 's', 'Ajoute Stories', 'Maintient Plans', 'Crée Releases');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['project'] = array('Project Manager', 'Add projects and ' . $lang->executionCommon . 's', 'Maintain Teams', 'Link Stories', 'Create Tasks', 'Track');
|
||||
$lang->block->flowchart['dev'] = array('Développeurs', 'Réclament Tâches/Bugs', 'Effectuent Tâches', 'Corrigent Bugs', 'MàJ Statuts', 'Terminent Tâches/Bugs');
|
||||
$lang->block->flowchart['tester'] = array('Testeurs', 'Rédigent CasTests', 'Jouent CasTests', 'Détectent Bugs', 'Vérifient Corrections', 'Ferment Bugs');
|
||||
|
||||
|
||||
+11
-17
@@ -252,14 +252,11 @@ $lang->block->default['full']['my']['3']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['3']['source'] = 'todo';
|
||||
$lang->block->default['full']['my']['3']['params']['count'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['4']['title'] = 'Project Statistic';
|
||||
$lang->block->default['full']['my']['4']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['4']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['4']['params']['count'] = '20';
|
||||
}
|
||||
$lang->block->default['full']['my']['4']['title'] = 'Project Statistic';
|
||||
$lang->block->default['full']['my']['4']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['4']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['4']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['4']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['5']['title'] = 'Personal Contribution';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'contribute';
|
||||
@@ -284,13 +281,10 @@ $lang->block->default['full']['my']['7']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['7']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['7']['params']['meetingCount'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['8']['title'] = 'Human Input';
|
||||
$lang->block->default['full']['my']['8']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['8']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['8']['grid'] = 8;
|
||||
}
|
||||
$lang->block->default['full']['my']['8']['title'] = 'Human Input';
|
||||
$lang->block->default['full']['my']['8']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['8']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['8']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['9']['title'] = 'Project List';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'project';
|
||||
@@ -321,7 +315,7 @@ $lang->block->availableBlocks->issue = 'My Issues';
|
||||
$lang->block->availableBlocks->meeting = 'My Meetings';
|
||||
$lang->block->availableBlocks->feedback = 'My Feedbacks';
|
||||
|
||||
if($config->systemMode == 'new') $lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['project'] = 'Project';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['execution'] = $lang->execution->common;
|
||||
$lang->block->moduleList['qa'] = 'QA';
|
||||
@@ -332,7 +326,7 @@ $lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->project = 'Project List';
|
||||
$lang->block->modules['project']->availableBlocks->recentproject = 'Recent Projects';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = 'Project Statistic';
|
||||
if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = 'ProjectHuman Input';
|
||||
$lang->block->modules['project']->availableBlocks->projectteam = 'ProjectHuman Input';
|
||||
|
||||
$lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
|
||||
+24
-33
@@ -284,14 +284,11 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['4']['source'] = 'todo';
|
||||
$lang->block->default['full']['my']['4']['params']['count'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['5']['title'] = '项目统计';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['5']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
}
|
||||
$lang->block->default['full']['my']['5']['title'] = '项目统计';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['5']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['6']['title'] = '我的贡献';
|
||||
$lang->block->default['full']['my']['6']['block'] = 'contribute';
|
||||
@@ -308,31 +305,25 @@ $lang->block->default['full']['my']['8']['block'] = 'assigntome';
|
||||
$lang->block->default['full']['my']['8']['source'] = '';
|
||||
$lang->block->default['full']['my']['8']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['todoCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['taskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['bugCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['riskCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['reviewCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['feedbackCount'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['9']['title'] = '项目人力投入';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
}
|
||||
$lang->block->default['full']['my']['9']['title'] = '项目人力投入';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['10']['title'] = '项目列表';
|
||||
$lang->block->default['full']['my']['10']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['grid'] = 8;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->block->default['full']['my']['10']['block'] = 'execution';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'execution';
|
||||
}
|
||||
|
||||
$lang->block->default['full']['my']['10']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['full']['my']['10']['params']['count'] = '15';
|
||||
@@ -360,8 +351,8 @@ $lang->block->availableBlocks->meeting = '会议';
|
||||
$lang->block->availableBlocks->feedback = '反馈';
|
||||
$lang->block->availableBlocks->ticket = '工单';
|
||||
|
||||
if($config->systemMode == 'new') $lang->block->moduleList['project'] = '项目';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = '项目';
|
||||
$lang->block->moduleList['execution'] = $lang->execution->common;
|
||||
$lang->block->moduleList['qa'] = '测试';
|
||||
$lang->block->moduleList['todo'] = '待办';
|
||||
@@ -371,7 +362,7 @@ $lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->project = '项目列表';
|
||||
$lang->block->modules['project']->availableBlocks->recentproject = '近期项目';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = '项目统计';
|
||||
if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = '项目人力投入';
|
||||
$lang->block->modules['project']->availableBlocks->projectteam = '项目人力投入';
|
||||
|
||||
$lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
@@ -477,6 +468,7 @@ $lang->block->bugCount = 'Bug数';
|
||||
$lang->block->riskCount = '风险数';
|
||||
$lang->block->issueCount = '问题数';
|
||||
$lang->block->storyCount = '需求数';
|
||||
$lang->block->reviewCount = '审批数';
|
||||
$lang->block->meetingCount = '会议数';
|
||||
$lang->block->feedbackCount = '反馈数';
|
||||
$lang->block->ticketCount = '工单数';
|
||||
@@ -529,7 +521,7 @@ $lang->block->typeList->testtask['done'] = '已测版本';
|
||||
$lang->block->typeList->testtask['all'] = '全部';
|
||||
|
||||
$lang->block->modules['project']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['project']->moreLinkList->recentproject = $config->systemMode == 'new' ? 'project|browse|' : 'execution|all|';
|
||||
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
|
||||
@@ -572,10 +564,9 @@ $lang->block->gridOptions[4] = '右侧';
|
||||
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('管理员', '维护公司', '添加用户', '维护权限');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('项目集负责人', '创建项目集', '关联产品', "创建项目", "制定预算和规划", '添加干系人');
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('项目集负责人', '创建项目集', '关联产品', "创建项目", "制定预算和规划", '添加干系人');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . '经理', '创建' . $lang->productCommon, '维护模块', "维护计划", "维护需求", '创建发布');
|
||||
$lang->block->flowchart['project'] = array('项目经理', '创建' . $lang->executionCommon, '维护团队', "关联需求", '分解任务', '跟踪进度');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('项目经理', '创建项目、' . $lang->executionCommon, '维护团队', "关联需求", '分解任务', '跟踪进度');
|
||||
$lang->block->flowchart['project'] = array('项目经理', '创建项目、' . $lang->executionCommon, '维护团队', "关联需求", '分解任务', '跟踪进度');
|
||||
$lang->block->flowchart['dev'] = array('研发人员', '领取任务和Bug', '设计实现方案', '更新状态', '完成任务和Bug', '提交代码');
|
||||
$lang->block->flowchart['tester'] = array('测试人员', '撰写用例', '执行用例', '提交Bug', '验证Bug', '关闭Bug');
|
||||
|
||||
|
||||
+14
-26
@@ -260,14 +260,11 @@ $lang->block->default['full']['my']['4']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['4']['source'] = 'todo';
|
||||
$lang->block->default['full']['my']['4']['params']['count'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['5']['title'] = '項目統計';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['5']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
}
|
||||
$lang->block->default['full']['my']['5']['title'] = '項目統計';
|
||||
$lang->block->default['full']['my']['5']['block'] = 'statistic';
|
||||
$lang->block->default['full']['my']['5']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['5']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['5']['params']['count'] = '20';
|
||||
|
||||
$lang->block->default['full']['my']['6']['title'] = '我的貢獻';
|
||||
$lang->block->default['full']['my']['6']['block'] = 'contribute';
|
||||
@@ -292,23 +289,15 @@ $lang->block->default['full']['my']['8']['params']['issueCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['storyCount'] = '20';
|
||||
$lang->block->default['full']['my']['8']['params']['meetingCount'] = '20';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->block->default['full']['my']['9']['title'] = '項目人力投入';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
}
|
||||
$lang->block->default['full']['my']['9']['title'] = '項目人力投入';
|
||||
$lang->block->default['full']['my']['9']['block'] = 'projectteam';
|
||||
$lang->block->default['full']['my']['9']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['9']['grid'] = 8;
|
||||
|
||||
$lang->block->default['full']['my']['10']['title'] = '項目列表';
|
||||
$lang->block->default['full']['my']['10']['block'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'project';
|
||||
$lang->block->default['full']['my']['10']['grid'] = 8;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->block->default['full']['my']['10']['block'] = 'execution';
|
||||
$lang->block->default['full']['my']['10']['source'] = 'execution';
|
||||
}
|
||||
|
||||
$lang->block->default['full']['my']['10']['params']['orderBy'] = 'id_desc';
|
||||
$lang->block->default['full']['my']['10']['params']['count'] = '15';
|
||||
@@ -334,7 +323,7 @@ $lang->block->availableBlocks->issue = '我的問題';
|
||||
$lang->block->availableBlocks->meeting = '我的會議';
|
||||
$lang->block->availableBlocks->feedback = '我的反饋';
|
||||
|
||||
if($config->systemMode == 'new') $lang->block->moduleList['project'] = '項目';
|
||||
$lang->block->moduleList['project'] = '項目';
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['execution'] = $lang->execution->common;
|
||||
$lang->block->moduleList['qa'] = '測試';
|
||||
@@ -345,7 +334,7 @@ $lang->block->modules['project']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['project']->availableBlocks->project = '項目列表';
|
||||
$lang->block->modules['project']->availableBlocks->recentproject = '近期項目';
|
||||
$lang->block->modules['project']->availableBlocks->statistic = '項目統計';
|
||||
if($config->systemMode == 'new') $lang->block->modules['project']->availableBlocks->projectteam = '項目人力投入';
|
||||
$lang->block->modules['project']->availableBlocks->projectteam = '項目人力投入';
|
||||
|
||||
$lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
@@ -502,7 +491,7 @@ $lang->block->typeList->testtask['done'] = '已測版本';
|
||||
$lang->block->typeList->testtask['all'] = '全部';
|
||||
|
||||
$lang->block->modules['project']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['project']->moreLinkList->recentproject = $config->systemMode == 'new' ? 'project|browse|' : 'execution|all|';
|
||||
$lang->block->modules['project']->moreLinkList->recentproject = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->statistic = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->project = 'project|browse|';
|
||||
$lang->block->modules['project']->moreLinkList->cmmireport = 'weekly|index|';
|
||||
@@ -545,10 +534,9 @@ $lang->block->gridOptions[4] = '右側';
|
||||
|
||||
$lang->block->flowchart = array();
|
||||
$lang->block->flowchart['admin'] = array('管理員', '維護公司', '添加用戶', '維護權限');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['program'] = array('項目集負責人', '創建項目集', '關聯產品', "創建項目", "制定預算和規劃", '添加干係人');
|
||||
if($config->systemMode == 'ALM') $lang->block->flowchart['program'] = array('項目集負責人', '創建項目集', '關聯產品', "創建項目", "制定預算和規劃", '添加干係人');
|
||||
$lang->block->flowchart['product'] = array($lang->productCommon . '經理', '創建' . $lang->productCommon, '維護模組', "維護計劃", "維護需求", '創建發佈');
|
||||
$lang->block->flowchart['project'] = array('項目經理', '創建' . $lang->executionCommon, '維護團隊', "關聯需求", '分解任務', '跟蹤進度');
|
||||
if($config->systemMode == 'new') $lang->block->flowchart['project'] = array('項目經理', '創建項目、' . $lang->executionCommon, '維護團隊', "關聯需求", '分解任務', '跟蹤進度');
|
||||
$lang->block->flowchart['project'] = array('項目經理', '創建項目、' . $lang->executionCommon, '維護團隊', "關聯需求", '分解任務', '跟蹤進度');
|
||||
$lang->block->flowchart['dev'] = array('研發人員', '領取任務和Bug', '設計實現方案', '更新狀態', '完成任務和Bug', '提交代碼');
|
||||
$lang->block->flowchart['tester'] = array('測試人員', '撰寫用例', '執行用例', '提交Bug', '驗證Bug', '關閉Bug');
|
||||
|
||||
|
||||
+23
-12
@@ -132,15 +132,13 @@ class blockModel extends model
|
||||
*/
|
||||
public function getBlockList($module = 'my', $type = '')
|
||||
{
|
||||
$blocks = $this->dao->select('*')->from(TABLE_BLOCK)->where('account')->eq($this->app->user->account)
|
||||
return $this->dao->select('*')->from(TABLE_BLOCK)->where('account')->eq($this->app->user->account)
|
||||
->andWhere('module')->eq($module)
|
||||
->andWhere('vision')->eq($this->config->vision)
|
||||
->andWhere('hidden')->eq(0)
|
||||
->beginIF($type)->andWhere('type')->eq($type)->fi()
|
||||
->orderBy('`order`')
|
||||
->fetchAll('id');
|
||||
|
||||
return $blocks;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -791,17 +789,26 @@ class blockModel extends model
|
||||
|
||||
if($this->config->edition == 'max')
|
||||
{
|
||||
$params->riskCount['name'] = $this->lang->block->riskCount;
|
||||
$params->riskCount['default'] = 20;
|
||||
$params->riskCount['control'] = 'input';
|
||||
if(helper::hasFeature('risk'))
|
||||
{
|
||||
$params->riskCount['name'] = $this->lang->block->riskCount;
|
||||
$params->riskCount['default'] = 20;
|
||||
$params->riskCount['control'] = 'input';
|
||||
}
|
||||
|
||||
$params->issueCount['name'] = $this->lang->block->issueCount;
|
||||
$params->issueCount['default'] = 20;
|
||||
$params->issueCount['control'] = 'input';
|
||||
if(helper::hasFeature('issue'))
|
||||
{
|
||||
$params->issueCount['name'] = $this->lang->block->issueCount;
|
||||
$params->issueCount['default'] = 20;
|
||||
$params->issueCount['control'] = 'input';
|
||||
}
|
||||
|
||||
$params->meetingCount['name'] = $this->lang->block->meetingCount;
|
||||
$params->meetingCount['default'] = 20;
|
||||
$params->meetingCount['control'] = 'input';
|
||||
if(helper::hasFeature('meeting'))
|
||||
{
|
||||
$params->meetingCount['name'] = $this->lang->block->meetingCount;
|
||||
$params->meetingCount['default'] = 20;
|
||||
$params->meetingCount['control'] = 'input';
|
||||
}
|
||||
|
||||
$params->feedbackCount['name'] = $this->lang->block->feedbackCount;
|
||||
$params->feedbackCount['default'] = 20;
|
||||
@@ -812,6 +819,10 @@ class blockModel extends model
|
||||
$params->storyCount['default'] = 20;
|
||||
$params->storyCount['control'] = 'input';
|
||||
|
||||
$params->reviewCount['name'] = $this->lang->block->reviewCount;
|
||||
$params->reviewCount['default'] = 20;
|
||||
$params->reviewCount['control'] = 'input';
|
||||
|
||||
return json_encode($params);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
<th><?php echo $lang->build->name;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<th><?php echo $lang->build->product;?></th>
|
||||
<th><?php echo $lang->build->project;?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-date'><?php echo $lang->build->date;?></th>
|
||||
</tr>
|
||||
@@ -31,12 +32,14 @@
|
||||
$appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : '';
|
||||
$buildViewLink = $this->createLink('build', 'view', "buildID={$build->id}");
|
||||
$productViewLink = $this->createLink('product', 'browse', "productID={$build->product}");
|
||||
$projectViewLink = $this->createLink('project', 'build', "projectID={$build->project}");
|
||||
?>
|
||||
<tr <?php echo $appid?>>
|
||||
<td class='text-center'><?php echo sprintf('%03d', $build->id);?></td>
|
||||
<td title='<?php echo $build->name?>'><?php echo html::a($buildViewLink, $build->name);?></td>
|
||||
<?php if($longBlock):?>
|
||||
<td title='<?php echo $build->productName?>'><?php echo html::a($productViewLink, $build->productName);?></td>
|
||||
<td title='<?php echo $build->productName?>'><?php echo html::a($build->shadow ? $projectViewLink : $productViewLink, $build->productName);?></td>
|
||||
<td title='<?php echo $build->projectName?>'><?php echo html::a($projectViewLink, $build->projectName);?></td>
|
||||
<?php endif;?>
|
||||
<td><?php echo $build->date?></td>
|
||||
</tr>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<?php if(!common::checkNotCN() or $i <= 6):?>
|
||||
<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;?>
|
||||
<?php echo $type == 'review' ? $lang->my->audit : $lang->block->availableBlocks->$type;?>
|
||||
<span class='label label-light label-badge label-assignto <?php echo $type . "-count "; echo $isFirstTab ? '' : 'hidden'; $isFirstTab = false ?>'><?php echo $count[$type];?></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -197,7 +197,7 @@ $(function()
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php if(!empty($project->executions)):?>
|
||||
<?php if(!empty($project->executions) and $project->multiple):?>
|
||||
<div class="table-row project-info">
|
||||
<div class="col-2 text-right"><h4><?php echo $lang->block->last;?></h4></div>
|
||||
<div class="table-row lastIteration">
|
||||
@@ -259,7 +259,7 @@ $(function()
|
||||
<div class="col-1-5"><?php echo $project->cv;?></div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach;?>
|
||||
|
||||
@@ -40,15 +40,13 @@
|
||||
<div class='empty-tip'><?php echo $lang->block->emptyTip;?></div>
|
||||
<?php else:?>
|
||||
<div class='row' id='cards'>
|
||||
<?php foreach ($projects as $projectID => $project):?>
|
||||
<?php $viewLink = $config->systemMode == 'new' ? $this->createLink('project', 'index', "projectID=$project->id") : $this->createLink('execution', 'task', "projectID=$project->id");?>
|
||||
<?php foreach($projects as $projectID => $project):?>
|
||||
<?php $viewLink = $this->createLink('project', 'index', "projectID=$project->id");?>
|
||||
<div class='col'>
|
||||
<div class='panel-content'>
|
||||
<div class='panel-heading not-move-handler'>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<?php $labelClass = $project->model == 'waterfall' ? 'label-warning' : 'label-info';?>
|
||||
<span class='project-type-label label <?php echo $labelClass;?> label-outline'><?php echo $lang->project->{$project->model};?></span>
|
||||
<?php endif;?>
|
||||
<strong class='project-name' title='<?php echo $project->name;?>'> <?php echo html::a($viewLink, $project->name);?> </strong>
|
||||
<nav class='panel-actions nav nav-default'>
|
||||
<li class='dropdown'>
|
||||
@@ -70,8 +68,7 @@
|
||||
<span><i class='icon icon-group'></i> <?php printf($lang->project->membersUnit, $project->teamCount); ?></span>
|
||||
<span><i class='icon icon-clock'></i> <?php printf($lang->project->hoursUnit, $project->estimate); ?></span>
|
||||
</div>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<?php if($project->model === 'waterfall'): ?>
|
||||
<?php if($project->model === 'waterfall'):?>
|
||||
<div class='project-detail project-stages'>
|
||||
<?php
|
||||
$projectProjects = array();
|
||||
@@ -95,7 +92,7 @@
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<?php elseif($project->multiple):?>
|
||||
<?php $project = empty($project->executions ) ? '' : end($project->executions);?>
|
||||
<div class='project-detail project-iteration'>
|
||||
<?php if($project):?>
|
||||
@@ -110,10 +107,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
/**
|
||||
* The task block view file of block module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
* @author Yidong Wang <yidong@cnezsoft.com>
|
||||
* @package block
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php if(empty($reviews)): ?>
|
||||
<div class='empty-tip'><?php echo $lang->block->emptyTip;?></div>
|
||||
<?php else:?>
|
||||
<div class='panel-body has-table scrollbar-hover'>
|
||||
<table class='table table-borderless table-hover table-fixed table-fixed-head tablesorter block-tasks <?php if(!$longBlock) echo 'block-sm';?>'>
|
||||
<thead class='text-center'>
|
||||
<tr>
|
||||
<th class='c-id'> <?php print($lang->idAB);?></th>
|
||||
<th class='c-title text-left'><?php print($lang->my->auditField->title);?></th>
|
||||
<th class='c-type w-120px'> <?php print($lang->my->auditField->type);?></th>
|
||||
<th class='c-date w-150px'> <?php print($lang->my->auditField->time);?></th>
|
||||
<th class='c-status w-110px'> <?php print($lang->my->auditField->status);?></th>
|
||||
<th class='c-actions-1'><?php print($lang->actions)?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class='text-center'>
|
||||
<?php foreach($reviews as $review):?>
|
||||
<?php
|
||||
$type = $review->type;
|
||||
if($type == 'project') $type = 'review';
|
||||
|
||||
$typeName = $lang->$type->common;
|
||||
if($type == 'story') $typeName = $lang->my->auditMenu->audit->story;
|
||||
|
||||
$statusList = $lang->$type->statusList;
|
||||
if($type == 'attend') $statusList = $lang->attend->reviewStatusList;
|
||||
?>
|
||||
<tr>
|
||||
<td class='c-id'><?php echo $review->id?></td>
|
||||
<td class='c-title text-left' title='<?php echo $review->title?>'>
|
||||
<?php
|
||||
$titleHtml = $review->title;
|
||||
if($type == 'attend')
|
||||
{
|
||||
$titleHtml = html::a($this->createLink($type, 'review', "objectID=$review->id", 'html', true), $review->title, '', "data-toggle='modal'");
|
||||
}
|
||||
else
|
||||
{
|
||||
$class = "class='iframe' data-width='90%'";
|
||||
if(strpos(",{$config->my->oaObjectType},", ",{$type},") !== false) $class = "data-toggle='modal'";
|
||||
$titleHtml = html::a($this->createLink($type, 'view', "objectID=$review->id", 'html', true), $review->title, '', $class);
|
||||
}
|
||||
echo $titleHtml;
|
||||
?>
|
||||
</td>
|
||||
<td class='c-type'><?php echo $typeName;?></td>
|
||||
<td class='c-time text-left'><?php echo $review->time?></td>
|
||||
<td class='c-status'><?php echo zget($statusList, $review->status, '')?></td>
|
||||
<td class='c-actions text-left'>
|
||||
<?php
|
||||
$module = $type;
|
||||
$method = 'review';
|
||||
$params = "id=$review->id";
|
||||
|
||||
$reviewIcon = '<i class="icon-glasses"></i>';
|
||||
$passIcon = '<i class="icon-check"></i>';
|
||||
$rejectIcon = '<i class="icon-close"></i>';
|
||||
|
||||
if($module == 'review')
|
||||
{
|
||||
$method = 'assess';
|
||||
$params = "reviewID=$review->id";
|
||||
common::printLink($module, $method, $params, $reviewIcon, '', "class='btn' title='{$lang->review->common}'");
|
||||
}
|
||||
elseif($module == 'attend')
|
||||
{
|
||||
common::printLink($module, 'review', "attendID={$review->id}&status=", $reviewIcon, '', "class='btn' data-toggle='modal' title='{$lang->review->common}'", true, true);
|
||||
}
|
||||
elseif(strpos(",{$config->my->oaObjectType},", ",$module,") !== false)
|
||||
{
|
||||
common::printLink($module, 'view', $params, $reviewIcon, '', "class='btn' data-toggle='modal' title='{$lang->review->common}'", true, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
common::printLink($module, $method, $params, $reviewIcon, '', "class='btn iframe' title='{$lang->review->common}'", true, true);
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
@@ -18,7 +18,7 @@
|
||||
<thead>
|
||||
<tr class='text-center'>
|
||||
<th class='text-left'><?php echo $lang->testtask->name;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<?php if($longBlock and $project->hasProduct):?>
|
||||
<th class='text-left'><?php echo $lang->testtask->product;?></th>
|
||||
<?php endif;?>
|
||||
<?php if($longBlock):?>
|
||||
@@ -39,7 +39,7 @@
|
||||
?>
|
||||
<tr class='text-center' <?php echo $appid?>>
|
||||
<td class='text-left text-ellipsis' title='<?php echo $testtask->name?>'><?php echo html::a($testtaskViewLink, $testtask->name);?></td>
|
||||
<?php if($longBlock):?>
|
||||
<?php if($longBlock and $project->hasProduct):?>
|
||||
<td class='text-left text-ellipsis' title='<?php echo $testtask->productName?>'><?php echo html::a($productViewLink, $testtask->productName);?></td>
|
||||
<?php endif;?>
|
||||
<?php if($longBlock):?>
|
||||
|
||||
@@ -36,6 +36,12 @@
|
||||
$productViewLink = $this->createLink('product', 'browse', "productID={$testtask->product}");
|
||||
$buildViewLink = $this->createLink('build', 'view', "buildID={$testtask->build}");
|
||||
$testtaskViewLink = $this->createLink('testtask', 'view', "testtaskID={$testtask->id}");
|
||||
|
||||
if($testtask->shadow)
|
||||
{
|
||||
$testtask->productName = zget($projects, $testtask->project);
|
||||
$productViewLink = $this->createLink('projectstory', 'story', "projectID={$testtask->project}&productID={$testtask->product}");
|
||||
}
|
||||
?>
|
||||
<tr class='text-center' <?php echo $appid?>>
|
||||
<?php if($longBlock):?>
|
||||
|
||||
@@ -280,7 +280,7 @@ class branch extends control
|
||||
$branchTagOption[$oldBranch] = $oldBranch == BRANCH_MAIN ? $branch : ($branch->name . ($branch->status == 'closed' ? ' (' . $this->lang->branch->statusList['closed'] . ')' : ''));
|
||||
}
|
||||
|
||||
return print(html::select('branch', $branchTagOption, $oldBranch, "class='form-control' onchange='loadBranch(this)'"));
|
||||
return print(html::select('branch', $branchTagOption, $oldBranch, "class='form-control' onchange='loadBranch(this)' data-last='{$oldBranch}'"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+21
-21
@@ -38,18 +38,10 @@ $config->bug->exportFields = 'id, product, branch, module, project, execution, s
|
||||
lastEditedBy,
|
||||
lastEditedDate, files ,feedbackBy, notifyEmail';
|
||||
|
||||
if($config->systemMode == 'classic') $config->bug->exportFields = str_replace(' project,', '', $config->bug->exportFields);
|
||||
|
||||
$config->bug->list->customCreateFields = 'execution,noticefeedbackBy,story,task,pri,severity,os,browser,deadline,mailto,keywords';
|
||||
$config->bug->list->customBatchEditFields = 'type,severity,pri,productplan,assignedTo,deadline,resolvedBy,resolution,os,browser,keywords';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$config->bug->list->customBatchCreateFields = 'project,execution,steps,type,pri,deadline,severity,os,browser,keywords';
|
||||
}
|
||||
else
|
||||
{
|
||||
$config->bug->list->customBatchCreateFields = 'execution,steps,type,pri,deadline,severity,os,browser,keywords';
|
||||
}
|
||||
$config->bug->list->customBatchCreateFields = 'project,execution,steps,type,pri,deadline,severity,os,browser,keywords';
|
||||
|
||||
$config->bug->custom = new stdclass();
|
||||
$config->bug->custom->createFields = $config->bug->list->customCreateFields;
|
||||
@@ -83,7 +75,7 @@ $config->bug->search['fields']['status'] = $lang->bug->status;
|
||||
$config->bug->search['fields']['confirmed'] = $lang->bug->confirmed;
|
||||
$config->bug->search['fields']['story'] = $lang->bug->story;
|
||||
|
||||
if($config->systemMode == 'new') $config->bug->search['fields']['project'] = $lang->bug->project;
|
||||
$config->bug->search['fields']['project'] = $lang->bug->project;
|
||||
$config->bug->search['fields']['product'] = $lang->bug->product;
|
||||
$config->bug->search['fields']['branch'] = '';
|
||||
$config->bug->search['fields']['plan'] = $lang->bug->productplan;
|
||||
@@ -129,7 +121,7 @@ $config->bug->search['params']['status'] = array('operator' => '=',
|
||||
$config->bug->search['params']['confirmed'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->confirmedList);
|
||||
$config->bug->search['params']['story'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
|
||||
if($config->systemMode == 'new') $config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->bug->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->bug->search['params']['branch'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
$config->bug->search['params']['plan'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
@@ -168,7 +160,7 @@ $config->bug->datatable->fieldList['id']['required'] = 'yes';
|
||||
|
||||
$config->bug->datatable->fieldList['product']['title'] = 'product';
|
||||
$config->bug->datatable->fieldList['product']['control'] = 'hidden';
|
||||
$config->bug->datatable->fieldList['product']['dataSource'] = array('module' => 'product', 'method' => 'getPairs');
|
||||
$config->bug->datatable->fieldList['product']['dataSource'] = array('module' => 'product', 'method' => 'getPairs', 'params' => '&0&&all');
|
||||
|
||||
$config->bug->datatable->fieldList['module']['control'] = 'select';
|
||||
$config->bug->datatable->fieldList['module']['title'] = 'module';
|
||||
@@ -192,6 +184,17 @@ $config->bug->datatable->fieldList['pri']['width'] = '50';
|
||||
$config->bug->datatable->fieldList['pri']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['pri']['name'] = $lang->bug->pri;
|
||||
|
||||
$config->bug->datatable->fieldList['confirmed']['title'] = 'confirmedAB';
|
||||
$config->bug->datatable->fieldList['confirmed']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['confirmed']['width'] = '80';
|
||||
$config->bug->datatable->fieldList['confirmed']['required'] = 'no';
|
||||
|
||||
$config->bug->datatable->fieldList['title']['title'] = 'title';
|
||||
$config->bug->datatable->fieldList['title']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['title']['width'] = 'auto';
|
||||
$config->bug->datatable->fieldList['title']['required'] = 'yes';
|
||||
$config->bug->datatable->fieldList['title']['minWidth'] = '200';
|
||||
|
||||
$config->bug->datatable->fieldList['status']['title'] = 'statusAB';
|
||||
$config->bug->datatable->fieldList['status']['fixed'] = 'left';
|
||||
$config->bug->datatable->fieldList['status']['width'] = '80';
|
||||
@@ -209,15 +212,12 @@ $config->bug->datatable->fieldList['type']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['type']['width'] = '90';
|
||||
$config->bug->datatable->fieldList['type']['required'] = 'no';
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$config->bug->datatable->fieldList['project']['title'] = 'project';
|
||||
$config->bug->datatable->fieldList['project']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['project']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['project']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['project']['control'] = 'hidden';
|
||||
$config->bug->datatable->fieldList['project']['dataSource'] = array('module' => 'product', 'method' => 'getProjectPairsByProduct', 'params' => '$productID');
|
||||
}
|
||||
$config->bug->datatable->fieldList['project']['title'] = 'project';
|
||||
$config->bug->datatable->fieldList['project']['fixed'] = 'no';
|
||||
$config->bug->datatable->fieldList['project']['width'] = '120';
|
||||
$config->bug->datatable->fieldList['project']['required'] = 'no';
|
||||
$config->bug->datatable->fieldList['project']['control'] = 'hidden';
|
||||
$config->bug->datatable->fieldList['project']['dataSource'] = array('module' => 'product', 'method' => 'getProjectPairsByProduct', 'params' => '$productID');
|
||||
|
||||
$config->bug->datatable->fieldList['execution']['title'] = 'execution';
|
||||
$config->bug->datatable->fieldList['execution']['fixed'] = 'no';
|
||||
|
||||
+126
-107
@@ -60,14 +60,14 @@ class bug extends control
|
||||
else
|
||||
{
|
||||
$mode = ($this->app->methodName == 'create' and empty($this->config->CRProduct)) ? 'noclosed' : '';
|
||||
$products = $this->product->getPairs($mode, 0, 'program_asc');
|
||||
$products = $this->product->getPairs($mode, 0, 'program_asc', 'all');
|
||||
}
|
||||
if(empty($products) and !helper::isAjaxRequest()) return print($this->locate($this->createLink('product', 'showErrorNone', "moduleName=$tab&activeMenu=bug&objectID=$objectID")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$mode = (empty($this->config->CRProduct)) ? 'noclosed' : '';
|
||||
$products = $this->product->getPairs($mode, 0, 'program_asc');
|
||||
$products = $this->product->getPairs($mode, 0, 'program_asc', 'all');
|
||||
}
|
||||
$this->view->products = $this->products = $products;
|
||||
}
|
||||
@@ -165,7 +165,7 @@ class bug extends control
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Get executios. */
|
||||
$executions = $this->loadModel('execution')->getPairs($this->projectID, 'all', 'empty|withdelete');
|
||||
$executions = $this->loadModel('execution')->getPairs($this->projectID, 'all', 'empty|withdelete|hideMultiple');
|
||||
|
||||
/* Get product id list. */
|
||||
$productIDList = $productID ? $productID : array_keys($this->products);
|
||||
@@ -196,7 +196,8 @@ class bug extends control
|
||||
/* Build the search form. */
|
||||
$actionURL = $this->createLink('bug', 'browse', "productID=$productID&branch=$branch&browseType=bySearch&queryID=myQueryID");
|
||||
$this->config->bug->search['onMenuBar'] = 'yes';
|
||||
$this->bug->buildSearchForm($productID, $this->products, $queryID, $actionURL, $branch);
|
||||
$searchProducts = $this->product->getPairs('', 0, '', 'all');
|
||||
$this->bug->buildSearchForm($productID, $searchProducts, $queryID, $actionURL, $branch);
|
||||
|
||||
$showModule = !empty($this->config->datatable->bugBrowse->showModule) ? $this->config->datatable->bugBrowse->showModule : '';
|
||||
$productName = ($productID and isset($this->products[$productID])) ? $this->products[$productID] : $this->lang->product->allProduct;
|
||||
@@ -319,8 +320,6 @@ class bug extends control
|
||||
parse_str($extras, $output);
|
||||
$from = isset($output['from']) ? $output['from'] : '';
|
||||
|
||||
$project = new stdclass();
|
||||
|
||||
if($this->app->tab == 'execution')
|
||||
{
|
||||
if(isset($output['executionID'])) $this->loadModel('execution')->setMenu($output['executionID']);
|
||||
@@ -342,17 +341,7 @@ class bug extends control
|
||||
}
|
||||
else if($this->app->tab == 'project')
|
||||
{
|
||||
if(isset($output['projectID']))
|
||||
{
|
||||
$this->loadModel('project')->setMenu($output['projectID']);
|
||||
|
||||
/* Replace language. */
|
||||
$project = $this->project->getByID($output['projectID']);
|
||||
if(!empty($project->model) and $project->model == 'waterfall')
|
||||
{
|
||||
$this->lang->bug->execution = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->bug->execution);
|
||||
}
|
||||
}
|
||||
if(isset($output['projectID'])) $this->loadModel('project')->setMenu($output['projectID']);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -475,8 +464,8 @@ class bug extends control
|
||||
}
|
||||
|
||||
/* Get product, then set menu. */
|
||||
$productID = $this->product->saveState($productID, $this->products);
|
||||
$productInfo = $this->product->getById($productID);
|
||||
$productID = $this->product->saveState($productID, $this->products);
|
||||
$currentProduct = $this->product->getById($productID);
|
||||
|
||||
if($branch === '') $branch = (int)$this->cookie->preBranch;
|
||||
|
||||
@@ -518,6 +507,7 @@ class bug extends control
|
||||
if(isset($bugID))
|
||||
{
|
||||
$bug = $this->bug->getById($bugID);
|
||||
|
||||
extract((array)$bug);
|
||||
$executionID = $bug->execution;
|
||||
$moduleID = $bug->module;
|
||||
@@ -553,13 +543,13 @@ class bug extends control
|
||||
if($this->app->tab == 'execution' or $this->app->tab == 'project')
|
||||
{
|
||||
$objectID = $this->app->tab == 'project' ? $projectID : $executionID;
|
||||
$productBranches = $productInfo->type != 'normal' ? $this->loadModel('execution')->getBranchByProduct($productID, $objectID, 'noclosed|withMain') : array();
|
||||
$productBranches = $currentProduct->type != 'normal' ? $this->loadModel('execution')->getBranchByProduct($productID, $objectID, 'noclosed|withMain') : array();
|
||||
$branches = isset($productBranches[$productID]) ? $productBranches[$productID] : array();
|
||||
$branch = key($branches);
|
||||
}
|
||||
else
|
||||
{
|
||||
$branches = $productInfo->type != 'normal' ? $this->loadModel('branch')->getPairs($productID, 'active') : array();
|
||||
$branches = $currentProduct->type != 'normal' ? $this->loadModel('branch')->getPairs($productID, 'active') : array();
|
||||
}
|
||||
|
||||
/* If executionID is setted, get builds and stories of this execution. */
|
||||
@@ -593,12 +583,6 @@ class bug extends control
|
||||
$products = array();
|
||||
$linkedProducts = $this->loadModel('product')->getProducts($executionID);
|
||||
foreach($linkedProducts as $product) $products[$product->id] = $product->name;
|
||||
|
||||
if($projectID)
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if(empty($bugID) or $this->app->tab != 'qa') $projects += array($projectID => $project->name);
|
||||
}
|
||||
}
|
||||
elseif($projectID)
|
||||
{
|
||||
@@ -606,9 +590,6 @@ class bug extends control
|
||||
$productList = $this->config->CRProduct ? $this->product->getOrderedProducts('all', 40, $projectID) : $this->product->getOrderedProducts('normal', 40, $projectID);
|
||||
foreach($productList as $product) $products[$product->id] = $product->name;
|
||||
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if(empty($bugID) or $this->app->tab != 'qa') $projects += array($projectID => $project->name);
|
||||
|
||||
/* Set project menu. */
|
||||
if($this->app->tab == 'project') $this->project->setMenu($projectID);
|
||||
}
|
||||
@@ -617,6 +598,22 @@ class bug extends control
|
||||
$projects += $this->product->getProjectPairsByProduct($productID, $branch);
|
||||
}
|
||||
|
||||
$projectModel = '';
|
||||
if($projectID)
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if($project)
|
||||
{
|
||||
if(empty($bugID) or $this->app->tab != 'qa') $projects += array($projectID => $project->name);
|
||||
|
||||
/* Replace language. */
|
||||
if(!empty($project->model) and $project->model == 'waterfall') $this->lang->bug->execution = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->bug->execution);
|
||||
$projectModel = $project->model;
|
||||
|
||||
if(!$project->multiple) $executionID = $this->loadModel('execution')->getNoMultipleID($projectID);
|
||||
}
|
||||
}
|
||||
|
||||
/* Link all projects to product when copying bug under qa.*/
|
||||
if(!empty($bugID) and $this->app->tab == 'qa') $projects += $this->product->getProjectPairsByProduct($productID, $branch);
|
||||
|
||||
@@ -634,66 +631,60 @@ class bug extends control
|
||||
|
||||
/* Get executions. */
|
||||
$executions = array(0 => '');
|
||||
if(isset($projects[$projectID]) or $this->config->systemMode == 'classic') $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
|
||||
if(isset($projects[$projectID])) $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, !$projectID ? 'multiple' : '');
|
||||
$execution = $executionID ? $this->loadModel('execution')->getByID($executionID) : '';
|
||||
$executions = isset($executions[$executionID]) ? $executions : $executions + array($executionID => $execution->name);
|
||||
|
||||
/* Set custom. */
|
||||
foreach(explode(',', $this->config->bug->list->customCreateFields) as $field) $customFields[$field] = $this->lang->bug->$field;
|
||||
|
||||
/* In repair classic mode, when the project is required, the asterisk is not displayed. */
|
||||
if($this->config->systemMode == 'classic' and strpos(",{$this->config->bug->create->requiredFields},", ',project,') !== false)
|
||||
{
|
||||
$this->config->bug->create->requiredFields = str_replace(',project,', ',execution,', ",{$this->config->bug->create->requiredFields},");
|
||||
$this->config->bug->create->requiredFields = trim($this->config->bug->create->requiredFields, ',');
|
||||
}
|
||||
|
||||
$this->view->title = isset($this->products[$productID]) ? $this->products[$productID] . $this->lang->colon . $this->lang->bug->create : $this->lang->bug->create;
|
||||
$this->view->customFields = $customFields;
|
||||
$this->view->showFields = $this->config->bug->custom->createFields;
|
||||
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('bug', 'browse', "productID=$productID") : '';
|
||||
$this->view->products = $products;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->productName = isset($this->products[$productID]) ? $this->products[$productID] : '';
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->projects = defined('TUTORIAL') ? $this->loadModel('tutorial')->getProjectPairs() : $projects;
|
||||
$this->view->project = $project;
|
||||
$this->view->executions = defined('TUTORIAL') ? $this->loadModel('tutorial')->getExecutionPairs() : $executions;
|
||||
$this->view->builds = $builds;
|
||||
$this->view->moduleID = (int)$moduleID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->executionID = $executionID;
|
||||
$this->view->taskID = $taskID;
|
||||
$this->view->storyID = $storyID;
|
||||
$this->view->buildID = $buildID;
|
||||
$this->view->caseID = $caseID;
|
||||
$this->view->runID = $runID;
|
||||
$this->view->version = $version;
|
||||
$this->view->testtask = $testtask;
|
||||
$this->view->bugTitle = $title;
|
||||
$this->view->pri = $pri;
|
||||
$this->view->steps = htmlSpecialString($steps);
|
||||
$this->view->os = $os;
|
||||
$this->view->browser = $browser;
|
||||
$this->view->productMembers = $productMembers;
|
||||
$this->view->assignedTo = $assignedTo;
|
||||
$this->view->deadline = $deadline;
|
||||
$this->view->mailto = $mailto;
|
||||
$this->view->keywords = $keywords;
|
||||
$this->view->severity = $severity;
|
||||
$this->view->type = $type;
|
||||
$this->view->productInfo = $productInfo;
|
||||
$this->view->branch = $branch;
|
||||
$this->view->branches = $branches;
|
||||
$this->view->blockID = $blockID;
|
||||
$this->view->color = $color;
|
||||
$this->view->stepsRequired = strpos($this->config->bug->create->requiredFields, 'steps');
|
||||
$this->view->isStepsTemplate = $steps == $this->lang->bug->tplStep . $this->lang->bug->tplResult . $this->lang->bug->tplExpect ? true : false;
|
||||
$this->view->issueKey = $from == 'sonarqube' ? $output['sonarqubeID'] . ':' . $output['issueKey'] : '';
|
||||
$this->view->feedbackBy = $feedbackBy;
|
||||
$this->view->notifyEmail = $notifyEmail;
|
||||
$this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('bug', 'browse', "productID=$productID") : '';
|
||||
$this->view->products = $products;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->productName = isset($this->products[$productID]) ? $this->products[$productID] : '';
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->stories = $stories;
|
||||
$this->view->projects = defined('TUTORIAL') ? $this->loadModel('tutorial')->getProjectPairs() : $projects;
|
||||
$this->view->projectExecutionPairs = $this->loadModel('project')->getProjectExecutionPairs();
|
||||
$this->view->executions = defined('TUTORIAL') ? $this->loadModel('tutorial')->getExecutionPairs() : $executions;
|
||||
$this->view->builds = $builds;
|
||||
$this->view->moduleID = (int)$moduleID;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->projectModel = $projectModel;
|
||||
$this->view->execution = $execution;
|
||||
$this->view->taskID = $taskID;
|
||||
$this->view->storyID = $storyID;
|
||||
$this->view->buildID = $buildID;
|
||||
$this->view->caseID = $caseID;
|
||||
$this->view->runID = $runID;
|
||||
$this->view->version = $version;
|
||||
$this->view->testtask = $testtask;
|
||||
$this->view->bugTitle = $title;
|
||||
$this->view->pri = $pri;
|
||||
$this->view->steps = htmlSpecialString($steps);
|
||||
$this->view->os = $os;
|
||||
$this->view->browser = $browser;
|
||||
$this->view->productMembers = $productMembers;
|
||||
$this->view->assignedTo = $assignedTo;
|
||||
$this->view->deadline = $deadline;
|
||||
$this->view->mailto = $mailto;
|
||||
$this->view->keywords = $keywords;
|
||||
$this->view->severity = $severity;
|
||||
$this->view->type = $type;
|
||||
$this->view->product = $currentProduct;
|
||||
$this->view->branch = $branch;
|
||||
$this->view->branches = $branches;
|
||||
$this->view->blockID = $blockID;
|
||||
$this->view->color = $color;
|
||||
$this->view->stepsRequired = strpos($this->config->bug->create->requiredFields, 'steps');
|
||||
$this->view->isStepsTemplate = $steps == $this->lang->bug->tplStep . $this->lang->bug->tplResult . $this->lang->bug->tplExpect ? true : false;
|
||||
$this->view->issueKey = $from == 'sonarqube' ? $output['sonarqubeID'] . ':' . $output['issueKey'] : '';
|
||||
$this->view->feedbackBy = $feedbackBy;
|
||||
$this->view->notifyEmail = $notifyEmail;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -831,6 +822,8 @@ class bug extends control
|
||||
}
|
||||
|
||||
$projectID = $this->lang->navGroup->bug == 'project' ? $this->session->project : (isset($execution) ? $execution->project : 0);
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if(isset($project->model) && $project->model == 'kanban') $customFields['execution'] = $this->lang->bug->kanban;
|
||||
|
||||
/* Get branches. */
|
||||
if($executionID)
|
||||
@@ -851,7 +844,7 @@ class bug extends control
|
||||
$this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID&branch=$branch"), $this->products[$productID]);
|
||||
$this->view->position[] = $this->lang->bug->batchCreate;
|
||||
|
||||
$this->view->project = $this->loadModel('project')->getByID($projectID);
|
||||
$this->view->project = $project;
|
||||
$this->view->product = $product;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->stories = $stories;
|
||||
@@ -859,7 +852,7 @@ class bug extends control
|
||||
$this->view->users = $this->user->getPairs('devfirst|noclosed');
|
||||
$this->view->projects = array('' => '') + $this->product->getProjectPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->executions = array('' => '') + $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID);
|
||||
$this->view->executions = array('' => '') + $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, 'multiple');
|
||||
$this->view->executionID = $executionID;
|
||||
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch === 'all' ? 0 : $branch);
|
||||
$this->view->moduleID = $moduleID;
|
||||
@@ -1035,6 +1028,7 @@ class bug extends control
|
||||
$projectID = $bug->project;
|
||||
$currentModuleID = $bug->module;
|
||||
$product = $this->loadModel('product')->getByID($productID);
|
||||
$execution = $this->loadModel('execution')->getByID($executionID);
|
||||
$this->bug->checkBugExecutionPriv($bug);
|
||||
|
||||
if(!isset($this->products[$bug->product]))
|
||||
@@ -1044,14 +1038,16 @@ class bug extends control
|
||||
}
|
||||
|
||||
/* Set the menu. */
|
||||
if($this->app->tab == 'project') $this->loadModel('project')->setMenu($bug->project);
|
||||
if($this->app->tab == 'project') $this->loadModel('project')->setMenu($bug->project);
|
||||
if($this->app->tab == 'execution') $this->loadModel('execution')->setMenu($bug->execution);
|
||||
if($this->app->tab == 'qa') $this->qa->setMenu($this->products, $productID, $bug->branch);
|
||||
if($this->app->tab == 'qa') $this->qa->setMenu($this->products, $productID, $bug->branch);
|
||||
if($this->app->tab == 'devops')
|
||||
{
|
||||
session_write_close();
|
||||
|
||||
$repos = $this->loadModel('repo')->getRepoPairs('project', $bug->project);
|
||||
$this->repo->setMenu($repos);
|
||||
|
||||
$this->lang->navGroup->bug = 'devops';
|
||||
}
|
||||
|
||||
@@ -1067,9 +1063,10 @@ class bug extends control
|
||||
}
|
||||
if($this->app->tab == 'project')
|
||||
{
|
||||
$products = array();
|
||||
$products = array();
|
||||
$productList = $this->config->CRProduct ? $this->product->getOrderedProducts('all', 40, $bug->project) : $this->product->getOrderedProducts('normal', 40, $bug->project);
|
||||
foreach($productList as $productInfo) $products[$productInfo->id] = $productInfo->name;
|
||||
|
||||
$this->view->products = $products;
|
||||
}
|
||||
|
||||
@@ -1160,27 +1157,31 @@ class bug extends control
|
||||
$productBugs = $this->bug->getProductBugPairs($productID, $branch);
|
||||
unset($productBugs[$bugID]);
|
||||
|
||||
$this->view->bug = $bug;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->product = $product;
|
||||
$this->view->productBugs = $productBugs;
|
||||
$this->view->productName = $this->products[$productID];
|
||||
$this->view->plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch, '', true);
|
||||
$this->view->projects = array(0 => '') + $this->product->getProjectPairsByProduct($productID, $bug->branch, $bug->project);
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->currentModuleID = $currentModuleID;
|
||||
$this->view->executions = array(0 => '') + $this->product->getExecutionPairsByProduct($bug->product, $bug->branch, 'id_desc', $bug->project);
|
||||
$this->view->stories = $bug->execution ? $this->story->getExecutionStoryPairs($bug->execution) : $this->story->getProductStoryPairs($bug->product, $bug->branch, 0, 'all', 'id_desc', 0, 'full', 'story', false);
|
||||
$this->view->branchOption = $branchOption;
|
||||
$this->view->branchTagOption = $branchTagOption;
|
||||
$this->view->tasks = $this->task->getExecutionTaskPairs($bug->execution);
|
||||
$this->view->testtasks = $this->loadModel('testtask')->getPairs($bug->product, $bug->execution, $bug->testtask);
|
||||
$this->view->users = $this->user->getPairs('', "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy,$bug->openedBy");
|
||||
$this->view->assignedToList = $assignedToList;
|
||||
$this->view->cases = array('' => '') + $cases;
|
||||
$this->view->openedBuilds = $openedBuilds;
|
||||
$this->view->resolvedBuilds = array('' => '') + $openedBuilds + $oldResolvedBuild;
|
||||
$this->view->actions = $this->action->getList('bug', $bugID);
|
||||
if($product->shadow) $this->view->project = $this->loadModel('project')->getByShadowProduct($bug->product);
|
||||
|
||||
$this->view->bug = $bug;
|
||||
$this->view->productID = $productID;
|
||||
$this->view->product = $product;
|
||||
$this->view->execution = $execution;
|
||||
$this->view->productBugs = $productBugs;
|
||||
$this->view->productName = $this->products[$productID];
|
||||
$this->view->plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch, '', true);
|
||||
$this->view->projects = array(0 => '') + $this->product->getProjectPairsByProduct($productID, $bug->branch, $bug->project);
|
||||
$this->view->projectExecutionPairs = $this->loadModel('project')->getProjectExecutionPairs();
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->currentModuleID = $currentModuleID;
|
||||
$this->view->executions = array(0 => '') + $this->product->getExecutionPairsByProduct($bug->product, $bug->branch, 'id_desc', $bug->project);
|
||||
$this->view->stories = $bug->execution ? $this->story->getExecutionStoryPairs($bug->execution) : $this->story->getProductStoryPairs($bug->product, $bug->branch, 0, 'all', 'id_desc', 0, 'full', 'story', false);
|
||||
$this->view->branchOption = $branchOption;
|
||||
$this->view->branchTagOption = $branchTagOption;
|
||||
$this->view->tasks = $this->task->getExecutionTaskPairs($bug->execution);
|
||||
$this->view->testtasks = $this->loadModel('testtask')->getPairs($bug->product, $bug->execution, $bug->testtask);
|
||||
$this->view->users = $this->user->getPairs('', "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy,$bug->openedBy");
|
||||
$this->view->assignedToList = $assignedToList;
|
||||
$this->view->cases = array('' => '') + $cases;
|
||||
$this->view->openedBuilds = $openedBuilds;
|
||||
$this->view->resolvedBuilds = array('' => '') + $openedBuilds + $oldResolvedBuild;
|
||||
$this->view->actions = $this->action->getList('bug', $bugID);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
@@ -2033,6 +2034,17 @@ class bug extends control
|
||||
/* Set the menu. */
|
||||
$this->qa->setMenu($this->products, $bug->product, $bug->branch);
|
||||
|
||||
/* Hide plan and product in no product project. */
|
||||
if($bug->project and $this->app->tab != 'qa')
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($bug->project);
|
||||
if(!$project->hasProduct)
|
||||
{
|
||||
unset($this->config->bug->search['fields']['product']);
|
||||
if($project->model != 'scrum') unset($this->config->bug->search['fields']['plan']);
|
||||
}
|
||||
}
|
||||
|
||||
/* Build the search form. */
|
||||
$actionURL = $this->createLink('bug', 'linkBugs', "bugID=$bugID&browseType=bySearch&excludeBugs=$excludeBugs&queryID=myQueryID", '', true);
|
||||
$this->bug->buildSearchForm($bug->product, $this->products, $queryID, $actionURL);
|
||||
@@ -2333,6 +2345,13 @@ class bug extends control
|
||||
$this->port->export('bug');
|
||||
$this->fetch('file', 'export2' . $_POST['fileType'], $_POST);
|
||||
}
|
||||
$product = $this->loadModel('product')->getByID($productID);
|
||||
if($product->type == 'normal') $this->config->bug->exportFields = str_replace('branch,', '', $this->config->bug->exportFields);
|
||||
|
||||
if($this->app->tab == 'project' or $this->app->tab == 'execution')
|
||||
{
|
||||
if($product->shadow) $this->config->bug->exportFields = str_replace('product,', '', $this->config->bug->exportFields);
|
||||
}
|
||||
|
||||
$fileName = $this->lang->bug->common;
|
||||
if($executionID)
|
||||
@@ -2342,7 +2361,7 @@ class bug extends control
|
||||
}
|
||||
else
|
||||
{
|
||||
$productName = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch('name');
|
||||
$productName = !empty($product->name) ? $product->name : '';
|
||||
$browseType = isset($this->lang->bug->featureBar['browse'][$browseType]) ? $this->lang->bug->featureBar['browse'][$browseType] : zget($this->lang->bug->moreSelects, $browseType, '');
|
||||
|
||||
$fileName = $productName . $this->lang->dash . $browseType . $fileName;
|
||||
|
||||
+12
-10
@@ -2,7 +2,6 @@ $(function()
|
||||
{
|
||||
var page = window.page || '';
|
||||
var flow = window.flow;
|
||||
if(typeof(systemMode) == undefined) var systemMode = '';
|
||||
|
||||
$('#subNavbar a[data-toggle=dropdown]').parent().addClass('dropdown dropdown-hover');
|
||||
|
||||
@@ -294,13 +293,6 @@ function loadProductStories(productID)
|
||||
*/
|
||||
function loadProductProjects(productID)
|
||||
{
|
||||
if(systemMode == 'classic')
|
||||
{
|
||||
var projectID = $('#execution').find("option:selected").val();
|
||||
loadProductExecutions(productID, projectID);
|
||||
return true;
|
||||
}
|
||||
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
|
||||
@@ -327,12 +319,22 @@ function loadProductExecutions(productID, projectID = 0)
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
|
||||
var execution = $('#execution').val();
|
||||
if(projectID != 0 && projectExecutionPairs[projectID] !== undefined)
|
||||
{
|
||||
$('#executionIdBox').parents('.executionBox').hide();
|
||||
var execution = projectExecutionPairs[projectID];
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#executionIdBox').parents('.executionBox').show();
|
||||
var execution = $('#execution').val();
|
||||
}
|
||||
|
||||
link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + projectID + '&branch=' + branch + '&number=&executionID=' + execution);
|
||||
$('#executionIdBox').load(link, function()
|
||||
{
|
||||
$(this).find('select').chosen();
|
||||
if(typeof(bugExecution) == 'string' && systemMode != 'classic') $('#executionIdBox').prepend("<span class='input-group-addon' id='executionBox' style='border-left-width: 0px;'>" + bugExecution + "</span>");
|
||||
if(typeof(bugExecution) == 'string') $('#executionIdBox').prepend("<span class='input-group-addon' id='executionBox' style='border-left-width: 0px;'>" + bugExecution + "</span>");
|
||||
if(required) $(this).find('#execution_chosen').addClass('required');
|
||||
changeAssignedTo(projectID);
|
||||
});
|
||||
|
||||
@@ -33,19 +33,13 @@ $('#toTaskButton').on('click', function()
|
||||
var executionID = $('#execution').val();
|
||||
var executionID = executionID ? executionID : 0;
|
||||
|
||||
if(systemMode == 'new' && projectID && executionID != 0)
|
||||
if(projectID && executionID != 0)
|
||||
{
|
||||
$('#cancelButton').click();
|
||||
link = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=' + projectID + '&bugID=' + bugID);
|
||||
window.parent.$.apps.open(link, 'execution');
|
||||
}
|
||||
else if(systemMode == 'classic' && executionID)
|
||||
{
|
||||
$('#cancelButton').click();
|
||||
var link = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=0&bugID=' + bugID);
|
||||
window.parent.$.apps.open(link, 'execution');
|
||||
}
|
||||
else if(systemMode == 'new' && projectID == 0)
|
||||
else if(projectID == 0)
|
||||
{
|
||||
alert(errorNoProject);
|
||||
}
|
||||
|
||||
@@ -191,8 +191,8 @@ global $config;
|
||||
/* Legend list. */
|
||||
$lang->bug->legendBasicInfo = 'Basis Info';
|
||||
$lang->bug->legendAttatch = 'Anlagen';
|
||||
$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? 'Project/' . $lang->executionCommon . '/Story/Task' : $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendExecStoryTask = 'Porject/Story/Task';
|
||||
$lang->bug->lblTypeAndSeverity = 'Typ/Schwere';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'System/Browser';
|
||||
$lang->bug->legendSteps = 'Reproduktionsschritte';
|
||||
|
||||
@@ -191,8 +191,8 @@ global $config;
|
||||
/* Legend list. */
|
||||
$lang->bug->legendBasicInfo = 'Basic Info';
|
||||
$lang->bug->legendAttatch = 'Files';
|
||||
$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? 'Project/' . $lang->executionCommon . '/Story/Task' : $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendExecStoryTask = 'Porject/Story/Task';
|
||||
$lang->bug->lblTypeAndSeverity = 'Type/Severity';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'System/Browser';
|
||||
$lang->bug->legendSteps = 'Repro Steps';
|
||||
|
||||
@@ -191,8 +191,8 @@ global $config;
|
||||
/* Legend list. */
|
||||
$lang->bug->legendBasicInfo = 'Infos de Base';
|
||||
$lang->bug->legendAttatch = 'Fichiers';
|
||||
$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? 'Project/' . $lang->executionCommon . '/Story/Task' : $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Story/Tâche';
|
||||
$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendExecStoryTask = 'Porject/Story/Task';
|
||||
$lang->bug->lblTypeAndSeverity = 'Type/Severité';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'Système/Browser';
|
||||
$lang->bug->legendSteps = 'Etapes Repro';
|
||||
|
||||
@@ -164,7 +164,7 @@ $lang->bug->createBuild = 'Mới';
|
||||
$lang->bug->legendBasicInfo = 'Thông tin cơ bản';
|
||||
$lang->bug->legendAttatch = 'Files';
|
||||
$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task';
|
||||
$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Câu chuyện/Nhiệm vụ';
|
||||
$lang->bug->legendExecStoryTask = 'Project/Câu chuyện/Nhiệm vụ';
|
||||
$lang->bug->lblTypeAndSeverity = 'Loại/Mức độ';
|
||||
$lang->bug->lblSystemBrowserAndHardware = 'Hệ thống/Trình duyệt';
|
||||
$lang->bug->legendSteps = 'Các bước Repro';
|
||||
|
||||
@@ -191,8 +191,8 @@ global $config;
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? "项目/" . $lang->executionCommon . "/{$lang->SRCommon}/任务" : $lang->executionCommon . "/{$lang->SRCommon}/任务";
|
||||
$lang->bug->legendExecStoryTask = $lang->executionCommon . "/{$lang->SRCommon}/任务";
|
||||
$lang->bug->legendPRJExecStoryTask = "项目/{$lang->executionCommon}/{$lang->SRCommon}/任务";
|
||||
$lang->bug->legendExecStoryTask = "项目/{$lang->SRCommon}/任务";
|
||||
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
|
||||
$lang->bug->legendSteps = '重现步骤';
|
||||
|
||||
+11
-13
@@ -66,7 +66,7 @@ class bugModel extends model
|
||||
->setDefault('openedBuild', '')
|
||||
->setDefault('notifyEmail', '')
|
||||
->setDefault('deadline', '0000-00-00')
|
||||
->setIF($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa', 'project', $this->session->project)
|
||||
->setIF($this->lang->navGroup->bug != 'qa', 'project', $this->session->project)
|
||||
->setIF(strpos($this->config->bug->create->requiredFields, 'deadline') !== false, 'deadline', $this->post->deadline)
|
||||
->setIF($this->post->assignedTo != '', 'assignedDate', $now)
|
||||
->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story))
|
||||
@@ -89,9 +89,6 @@ class bugModel extends model
|
||||
|
||||
$bug = $this->loadModel('file')->processImgURL($bug, $this->config->bug->editor->create['id'], $this->post->uid);
|
||||
|
||||
/* Use classic mode to replace required project. */
|
||||
if($this->config->systemMode == 'classic' and strpos($this->config->bug->create->requiredFields, 'project') !== false) $this->config->bug->create->requiredFields = str_replace('project', 'execution', $this->config->bug->create->requiredFields);
|
||||
|
||||
$this->dao->insert(TABLE_BUG)->data($bug)
|
||||
->autoCheck()
|
||||
->checkIF($bug->notifyEmail, 'notifyEmail', 'email')
|
||||
@@ -288,7 +285,7 @@ class bugModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
if($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa') $bug->project = $this->session->project;
|
||||
if($this->lang->navGroup->bug != 'qa') $bug->project = $this->session->project;
|
||||
$this->dao->insert(TABLE_BUG)->data($bug)
|
||||
->autoCheck()
|
||||
->batchCheck($this->config->bug->create->requiredFields, 'notempty')
|
||||
@@ -698,7 +695,8 @@ class bugModel extends model
|
||||
->add('id', $bugID)
|
||||
->cleanInt('product,module,severity,project,execution,story,task,branch')
|
||||
->stripTags($this->config->bug->editor->edit['id'], $this->config->allowedTags)
|
||||
->setDefault('product,module,execution,story,task,duplicateBug,branch', 0)
|
||||
->setDefault('module,execution,story,task,duplicateBug,branch', 0)
|
||||
->setDefault('product', $oldBug->product)
|
||||
->setDefault('openedBuild', '')
|
||||
->setDefault('os', '')
|
||||
->setDefault('browser', '')
|
||||
@@ -1602,7 +1600,7 @@ class bugModel extends model
|
||||
{
|
||||
$projectID = $this->lang->navGroup->bug == 'qa' ? 0 : $this->session->project;
|
||||
$productParams = ($productID and isset($products[$productID])) ? array($productID => $products[$productID]) : $products;
|
||||
$productParams = $productParams + array('all' => $this->lang->bug->allProduct);
|
||||
$productParams = $productParams + array('all' => $this->lang->all);
|
||||
$projectParams = $this->getProjects($productID);
|
||||
$projectParams = $projectParams + array('all' => $this->lang->bug->allProject);
|
||||
|
||||
@@ -1617,7 +1615,7 @@ class bugModel extends model
|
||||
|
||||
$this->config->bug->search['actionURL'] = $actionURL;
|
||||
$this->config->bug->search['queryID'] = $queryID;
|
||||
if($this->config->systemMode == 'new') $this->config->bug->search['params']['project']['values'] = $projectParams;
|
||||
$this->config->bug->search['params']['project']['values'] = $projectParams;
|
||||
$this->config->bug->search['params']['product']['values'] = $productParams;
|
||||
$this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs($productID);
|
||||
$this->config->bug->search['params']['module']['values'] = $modules;
|
||||
@@ -1753,7 +1751,7 @@ class bugModel extends model
|
||||
$query = preg_replace('/`(\w+)`/', 't1.`$1`', $query);
|
||||
|
||||
if($type != 'bySearch' and !$this->loadModel('common')->checkField(TABLE_BUG, $type)) return array();
|
||||
return $this->dao->select("t1.*,t2.name as productName, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder, IF(t1.`severity` = 0, {$this->config->maxPriValue}, t1.`severity`) as severityOrder")->from(TABLE_BUG)->alias('t1')
|
||||
return $this->dao->select("t1.*, t2.name AS productName, t2.shadow, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) AS priOrder, IF(t1.`severity` = 0, {$this->config->maxPriValue}, t1.`severity`) AS severityOrder")->from(TABLE_BUG)->alias('t1')
|
||||
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id')
|
||||
->where('t1.deleted')->eq(0)
|
||||
->andWhere('t2.deleted')->eq('0')
|
||||
@@ -2041,8 +2039,7 @@ class bugModel extends model
|
||||
$users = $this->dao->select("t2.id, t2.account, t2.realname")->from(TABLE_TEAM)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account')
|
||||
->where('t1.root')->in(array_keys($projects))
|
||||
->beginIF($this->config->systemMode == 'new')->andWhere('t1.type')->eq('project')->fi()
|
||||
->beginIF($this->config->systemMode == 'classic')->andWhere('t1.type')->eq('execution')->fi()
|
||||
->andWhere('t1.type')->eq('project')
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->fi()
|
||||
->fetchAll('account');
|
||||
@@ -2953,7 +2950,7 @@ class bugModel extends model
|
||||
}
|
||||
else
|
||||
{
|
||||
$productParis = $this->loadModel('product')->getPairs();
|
||||
$productParis = $this->loadModel('product')->getPairs('', 0, '', 'all');
|
||||
$productIDList = array_keys($productParis);
|
||||
|
||||
if(!empty($productIDList))
|
||||
@@ -3622,7 +3619,8 @@ class bugModel extends model
|
||||
if($type == 'view') $menu .= $this->buildMenu('bug', 'activate', $params, $bug, $type, '', '', "text-success iframe showinonlybody", true);
|
||||
if($type == 'view' && $this->app->tab != 'product')
|
||||
{
|
||||
$menu .= $this->buildMenu('bug', 'toStory', $toStoryParams, $bug, $type, $this->lang->icons['story'], '', '', '', "data-app='product' id='tostory'", $this->lang->bug->toStory);
|
||||
$tab = $this->app->tab == 'qa' ? 'product' : $this->app->tab;
|
||||
$menu .= $this->buildMenu('bug', 'toStory', $toStoryParams, $bug, $type, $this->lang->icons['story'], '', '', '', "data-app='$tab' id='tostory'", $this->lang->bug->toStory);
|
||||
if(common::hasPriv('task', 'create') and !isonlybody()) $menu .= html::a('#toTask', "<i class='icon icon-check'></i><span class='text'>{$this->lang->bug->toTask}</span>", '', "data-app='qa' data-toggle='modal' class='btn btn-link'");
|
||||
$menu .= $this->buildMenu('bug', 'createCase', $convertParams, $bug, $type, 'sitemap');
|
||||
}
|
||||
|
||||
@@ -56,9 +56,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
|
||||
<th class='c-id'><?php echo $lang->idAB;?></th>
|
||||
<th class='c-branch<?php echo zget($visibleFields, $product->type, ' hidden')?> branchBox'> <?php echo $lang->product->branch;?></th>
|
||||
<th class='c-module<?php echo zget($requiredFields, 'module', '', ' required');?>'> <?php echo $lang->bug->module;?></th>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<th class='c-project<?php echo zget($visibleFields, 'project', ' hidden') . zget($requiredFields, 'project', '', ' required');?> projectBox'><?php echo (isset($project->model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->project;?></th>
|
||||
<?php endif;?>
|
||||
<th class='c-project<?php echo zget($visibleFields, 'project', ' hidden') . zget($requiredFields, 'project', '', ' required');?> projectBox'><?php echo $lang->bug->project;?></th>
|
||||
<th class='c-execution<?php echo zget($visibleFields, 'execution', ' hidden') . zget($requiredFields, 'execution', '', ' required');?> executionBox'><?php echo (isset($project->model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution;?></th>
|
||||
<th class='c-build required'><?php echo $lang->bug->openedBuild;?></th>
|
||||
<th class='c-title required'><?php echo $lang->bug->title;?></th>
|
||||
@@ -107,9 +105,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
|
||||
<td class='text-left'><?php echo $i;?></td>
|
||||
<td class='<?php echo zget($visibleFields, $product->type, ' hidden')?> branchBox' style='overflow:visible'><?php echo html::select("branches[$i]", $branches, $branch, "class='form-control chosen' onchange='setBranchRelated(this.value, $productID, $i)'");?></td>
|
||||
<td><?php echo html::select("modules[$i]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?> projectBox' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $projectID, "class='form-control chosen' onchange = 'loadProductExecutionsByProject($productID, this.value, $i)'");?></td>
|
||||
<?php endif;?>
|
||||
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?> projectBox' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $projectID, "class='form-control chosen' onchange='loadProductExecutionsByProject($productID, this.value, $i)'");?></td>
|
||||
<td class='<?php echo zget($visibleFields, 'execution', ' hidden')?> executionBox' style='overflow:visible'><?php echo html::select("executions[$i]", $executions, $executionID, "class='form-control chosen' onchange='loadExecutionBuilds($productID, this.value, $i)'");?></td>
|
||||
<td id='buildBox<?php echo $i;?>'><?php echo html::select("openedBuilds[$i][]", $builds, 'trunk', "class='form-control chosen' multiple");?></td>
|
||||
<td>
|
||||
@@ -165,9 +161,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
|
||||
<td><?php echo $i;?></td>
|
||||
<td class='<?php echo zget($visibleFields, $product->type, ' hidden')?> branchBox' style='overflow:visible'><?php echo html::select("branches[$i]", $branches, $branch, "class='form-control chosen' onchange='setBranchRelated(this.value, $productID, $i)'");?></td>
|
||||
<td><?php echo html::select("modules[$i]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?> projectBox' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $projectID, "class='form-control chosen' onchange = 'loadProductExecutionsByProject($productID, this.value, $i)'");?></td>
|
||||
<?php endif;?>
|
||||
<td class='<?php echo zget($visibleFields, 'execution', ' hidden')?> executionBox' style='overflow:visible'><?php echo html::select("executions[$i]", $executions, $executionID, "class='form-control chosen' onchange='loadExecutionBuilds($productID, this.value, $i)'");?></td>
|
||||
<td id='buildBox<?php echo $i;?>'><?php echo html::select("openedBuilds[$i][]", $builds, '', "class='form-control chosen' multiple");?></td>
|
||||
<td>
|
||||
@@ -228,9 +222,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
|
||||
<td>%s</td>
|
||||
<td class='<?php echo zget($visibleFields, $product->type, ' hidden')?> productBox' style='overflow:visible'><?php echo html::select("branches[%s]", $branches, $branch, "class='form-control chosen' onchange='setBranchRelated(this.value, $productID, \"%s\")'");?></td>
|
||||
<td><?php echo html::select("modules[%s]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?> projectBox' style='overflow:visible'><?php echo html::select("projects[%s]", $projects, $projectID, "class='form-control chosen' onchange = 'loadProductExecutionsByProject($productID, this.value, \"%s\")'");?></td>
|
||||
<?php endif;?>
|
||||
<td class='<?php echo zget($visibleFields, 'execution', ' hidden')?> executionBox' style='overflow:visible'><?php echo html::select("executions[%s]", $executions, $executionID, "class='form-control chosen' onchange='loadExecutionBuilds($productID, this.value, \"%s\")'");?></td>
|
||||
<td id='buildBox%s'><?php echo html::select("openedBuilds[%s][]", $builds, '', "class='form-control chosen' multiple");?></td>
|
||||
<td>
|
||||
@@ -273,9 +265,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
|
||||
<td><?php echo $i;?></td>
|
||||
<td class='<?php echo zget($visibleFields, $product->type, ' hidden')?> branchBox' style='overflow:visible'><?php echo html::select("branches[$i]", $branches, $branch, "class='form-control chosen' onchange='setBranchRelated(this.value, $productID, $i)'");?></td>
|
||||
<td><?php echo html::select("modules[$i]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<td class='<?php echo zget($visibleFields, 'project', ' hidden')?> projectBox' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $projectID, "class='form-control chosen' onchange = 'loadProductExecutionsByProject($productID, this.value, $i)'");?></td>
|
||||
<?php endif;?>
|
||||
<td class='<?php echo zget($visibleFields, 'execution', ' hidden')?> executionBox' style='overflow:visible'><?php echo html::select("executions[$i]", $executions, $executionID, "class='form-control chosen' onchange='loadExecutionBuilds($productID, this.value, $i)'");?></td>
|
||||
<td id='buildBox<?php echo $i;?>'><?php echo html::select("openedBuilds[$i][]", $builds, '', "class='form-control chosen' multiple");?></td>
|
||||
<td>
|
||||
|
||||
@@ -29,7 +29,8 @@ js::set('moduleID', $moduleID);
|
||||
js::set('tab', $this->app->tab);
|
||||
js::set('requiredFields', $config->bug->create->requiredFields);
|
||||
js::set('showFields', $showFields);
|
||||
if($this->app->tab == 'execution') js::set('objectID', $executionID);
|
||||
js::set('projectExecutionPairs', $projectExecutionPairs);
|
||||
if($this->app->tab == 'execution') js::set('objectID', zget($execution, 'id', ''));
|
||||
if($this->app->tab == 'project') js::set('objectID', $projectID);
|
||||
?>
|
||||
<div id="mainContent" class="main-content fade">
|
||||
@@ -51,18 +52,20 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
|
||||
<table class="table table-form">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-110px'><?php echo $lang->bug->product;?></th>
|
||||
<td>
|
||||
<th class='w-110px'><?php echo $product->shadow ? $lang->bug->module : $lang->bug->product;?></th>
|
||||
<td class="<?php if($product->shadow) echo 'hidden';?>">
|
||||
<div class='input-group'>
|
||||
<?php echo html::select('product', $products, $productID, "onchange='loadAll(this.value);' class='form-control chosen control-product'");?>
|
||||
<?php if($productInfo->type != 'normal' and isset($products[$productID])):?>
|
||||
<?php if($product->type != 'normal' and isset($products[$productID])):?>
|
||||
<?php echo html::select('branch', $branches, $branch, "onchange='loadBranch()' class='form-control chosen control-branch'");?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class='input-group' id='moduleIdBox'>
|
||||
<?php if(!$product->shadow):?>
|
||||
<span class="input-group-addon"><?php echo $lang->bug->module?></span>
|
||||
<?php endif;?>
|
||||
<?php
|
||||
echo html::select('module', $moduleOptionMenu, $moduleID, "onchange='loadModuleRelated()' class='form-control chosen'");
|
||||
if(count($moduleOptionMenu) == 1)
|
||||
@@ -79,10 +82,7 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
|
||||
</tr>
|
||||
<?php $showExecution = (strpos(",$showFields,", ',execution,') !== false);?>
|
||||
<tr>
|
||||
<th>
|
||||
<?php if($config->systemMode == 'classic') $lang->bug->project = $lang->bug->execution;?>
|
||||
<?php echo ($showExecution) ? $lang->bug->project : $lang->bug->type;?>
|
||||
</th>
|
||||
<th><?php echo $showExecution ? $lang->bug->project : $lang->bug->type;?></th>
|
||||
|
||||
<?php if(!$showExecution):?>
|
||||
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
|
||||
@@ -111,23 +111,18 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
|
||||
<?php endif;?>
|
||||
<?php if($showExecution):?>
|
||||
<td>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<div class='table-row'>
|
||||
<div class='table-col' id='projectBox'>
|
||||
<?php echo html::select('project', $projects, $projectID, "class='form-control chosen' onchange='loadProductExecutions({$productID}, this.value)'");?>
|
||||
</div>
|
||||
<div class='table-col'>
|
||||
<?php $executionClass = ($execution and !$execution->multiple) ? 'hidden' : '';?>
|
||||
<div class="table-col executionBox <?php echo $executionClass;?>">
|
||||
<div class='input-group' id='executionIdBox'>
|
||||
<span class='input-group-addon fix-border' id='executionBox'><?php echo (isset($project->model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution;?></span>
|
||||
<?php echo html::select('execution', $executions, $executionID, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?>
|
||||
<span class='input-group-addon fix-border' id='executionBox'><?php echo $projectModel == 'kanban' ? $lang->bug->kanban : $lang->bug->execution;?></span>
|
||||
<?php echo html::select('execution', $executions, zget($execution, 'id', ''), "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class='input-group' id='executionIdBox'>
|
||||
<?php echo html::select('execution', $executions, $executionID, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
<td>
|
||||
@@ -389,9 +384,16 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
|
||||
</div>
|
||||
</div>
|
||||
<?php js::set('bugModule', $lang->bug->module);?>
|
||||
<?php js::set('bugExecution', (isset($project->model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution);?>
|
||||
<?php js::set('systemMode', $config->systemMode);?>
|
||||
<?php js::set('bugExecution', $projectModel == 'kanban' ? $lang->bug->kanban : $lang->bug->execution);?>
|
||||
<script>
|
||||
$(function(){parent.$('body.hide-modal-close').removeClass('hide-modal-close');})
|
||||
</script>
|
||||
<?php if(isonlybody()):?>
|
||||
<script>
|
||||
$('#osBox').next('.table-col').find('span').removeClass('fix-border');
|
||||
var browser = $('#osBox').next('.table-col').html();
|
||||
$('#osBox').next('.table-col').remove();
|
||||
$('#typeBox').closest('tr').append('<td>' + browser + '</td>');
|
||||
</script>
|
||||
<?php endif;?>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -24,12 +24,12 @@ js::set('oldStoryID' , $bug->story);
|
||||
js::set('oldTaskID' , $bug->task);
|
||||
js::set('oldOpenedBuild' , $bug->openedBuild);
|
||||
js::set('oldResolvedBuild' , $bug->resolvedBuild);
|
||||
js::set('systemMode' , $config->systemMode);
|
||||
js::set('confirmUnlinkBuild' , sprintf($lang->bug->confirmUnlinkBuild, zget($resolvedBuilds, $bug->resolvedBuild)));
|
||||
js::set('tab' , $this->app->tab);
|
||||
js::set('bugID' , $bug->id);
|
||||
js::set('bugBranch' , $bug->branch);
|
||||
js::set('isClosedBug' , $bug->status == 'closed');
|
||||
js::set('projectExecutionPairs' , $projectExecutionPairs);
|
||||
if($this->app->tab == 'execution') js::set('objectID', $bug->execution);
|
||||
if($this->app->tab == 'project') js::set('objectID', $bug->project);
|
||||
?>
|
||||
@@ -96,7 +96,7 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
|
||||
<div class='detail-title'><?php echo $lang->story->legendBasicInfo;?></div>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<tr<?php if($product->shadow) echo " class='hide'";?>>
|
||||
<th class='w-80px'><?php echo $lang->bug->product;?></th>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
@@ -106,7 +106,7 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->module;?></th>
|
||||
<th class='w-80px'><?php echo $lang->bug->module;?></th>
|
||||
<td>
|
||||
<div class='input-group' id='moduleIdBox'>
|
||||
<?php
|
||||
@@ -123,7 +123,7 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr class='<?php if($product->shadow and zget($project, 'model') != 'scrum') echo 'hide'?>'>
|
||||
<th><?php echo $lang->bug->productplan;?></th>
|
||||
<td>
|
||||
<span id="planIdBox"><?php echo html::select('plan', $plans, $bug->plan, "class='form-control chosen'");?></span>
|
||||
@@ -204,16 +204,15 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
|
||||
</table>
|
||||
</div>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><?php echo $config->systemMode == 'class' ? $lang->bug->legendExecStoryTask : $lang->bug->legendPRJExecStoryTask;?></div>
|
||||
<div class='detail-title'><?php echo !empty($project->multiple) ? $lang->bug->legendPRJExecStoryTask : $lang->bug->legendExecStoryTask;?></div>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<tr>
|
||||
<th class='w-85px'><?php echo $lang->bug->project;?></th>
|
||||
<td><span id='projectBox'><?php echo html::select('project', $projects, $bug->project, "class='form-control chosen' onchange='loadProductExecutions($bug->product, this.value)'");?></span></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<?php $executionClass = ($execution and !$execution->multiple) ? 'hide' : '';?>
|
||||
<tr class="executionBox <?php echo $executionClass;?>" >
|
||||
<th class='w-85px' id='executionBox'><?php echo $lang->bug->execution;?></th>
|
||||
<td><span id='executionIdBox'><?php echo html::select('execution', $executions, $bug->execution, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?></span></td>
|
||||
</tr>
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php js::set('sysurl', common::getSysUrl());?>
|
||||
<?php js::set('confrimToStory', $lang->bug->confirmToStory);?>
|
||||
<?php js::set('systemMode', $config->systemMode);?>
|
||||
<?php js::set('tab', $app->tab);?>
|
||||
<?php js::set('bugID', $bug->id);?>
|
||||
<?php js::set('branchID', $bug->branch);?>
|
||||
@@ -106,24 +105,26 @@
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='#legendBasicInfo' data-toggle='tab'><?php echo $lang->bug->legendBasicInfo;?></a></li>
|
||||
<li><a href='#legendExecStoryTask' data-toggle='tab'><?php echo $config->systemMode == 'new' ? $lang->bug->legendPRJExecStoryTask : $lang->bug->legendExecStoryTask;?></a></li>
|
||||
<li><a href='#legendExecStoryTask' data-toggle='tab'><?php echo !empty($project->multiple) ? $lang->bug->legendPRJExecStoryTask : $lang->bug->legendExecStoryTask;?></a></li>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='legendBasicInfo'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<?php if(empty($product->shadow)):?>
|
||||
<tr valign='middle'>
|
||||
<th class='thWidth'><?php echo $lang->bug->product;?></th>
|
||||
<td><?php if(!common::printLink('product', 'view', "productID=$bug->product", $product->name, '', "data-app='product'")) echo $product->name;?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if($product->type != 'normal'):?>
|
||||
<tr>
|
||||
<th><?php echo sprintf($lang->product->branch, $lang->product->branchName[$product->type]);?></th>
|
||||
<th class='thWidth'><?php echo sprintf($lang->product->branch, $lang->product->branchName[$product->type]);?></th>
|
||||
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product&branch=$bug->branch", $branchName)) echo $branchName;?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->module;?></th>
|
||||
<th class='thWidth'><?php echo $lang->bug->module;?></th>
|
||||
<?php
|
||||
$moduleTitle = '';
|
||||
ob_start();
|
||||
@@ -160,7 +161,7 @@
|
||||
<th><?php echo $lang->bug->fromCase;?></th>
|
||||
<td><?php if($bug->case) echo html::a(helper::createLink('testcase', 'view', "caseID=$bug->case&version=$bug->caseVersion", '', true), "<i class='icon icon-sitemap'></i> {$lang->bug->fromCase}$lang->colon$bug->case", '', isonlybody() ? '' : "data-toggle='modal' data-type='iframe' data-width='80%'");?></td>
|
||||
</tr>
|
||||
<tr valign='middle'>
|
||||
<tr valign='middle' class='<?php if($product->shadow and zget($project, 'model') != 'scrum') echo 'hide'?>'>
|
||||
<th><?php echo $lang->bug->productplan;?></th>
|
||||
<td><?php if(!$bug->plan or !common::printLink('productplan', 'view', "planID=$bug->plan&type=bug", $bug->planName)) echo $bug->planName;?></td>
|
||||
</tr>
|
||||
@@ -277,16 +278,16 @@
|
||||
<div class='tab-pane' id='legendExecStoryTask'>
|
||||
<table class='table table-data'>
|
||||
<tbody>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<tr>
|
||||
<th class='w-70px'><?php echo $lang->bug->project;?></th>
|
||||
<td><?php if($bug->project) echo html::a($this->createLink('project', 'view', "projectID=$bug->project"), $bug->projectName);?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<?php if(!empty($project->multiple)):?>
|
||||
<tr>
|
||||
<th class='w-70px'><?php echo (isset($project->model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution;?></th>
|
||||
<td><?php if($bug->execution) echo html::a($this->createLink('execution', 'browse', "executionID=$bug->execution"), $bug->executionName);?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr class='nofixed'>
|
||||
<th><?php echo $lang->bug->story;?></th>
|
||||
<td>
|
||||
@@ -457,7 +458,6 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<table class='table table-form'>
|
||||
<?php if($this->config->systemMode == 'new'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->project;?></th>
|
||||
<td class='required'><?php echo html::select('taskProjects', $projects, '', "class='form-control chosen' onchange='loadProductExecutions({$productID}, this.value)'");?></td>
|
||||
@@ -466,12 +466,6 @@
|
||||
<th id='executionHead'><?php echo $lang->bug->execution;?></th>
|
||||
<td id='executionBox' class='required'><?php echo html::select('execution', '', '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<?php else:?>
|
||||
<tr>
|
||||
<th><?php echo $lang->execution->common;?></th>
|
||||
<td><?php echo html::select('execution', $projects, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<td colspan='2' class='text-center'>
|
||||
<?php echo html::commonButton($lang->bug->nextStep, "id='toTaskButton'", 'btn btn-primary btn-wide');?>
|
||||
|
||||
@@ -11,6 +11,27 @@
|
||||
*/
|
||||
class build extends control
|
||||
{
|
||||
/**
|
||||
* Common actions.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function commonActions($projectID = 0)
|
||||
{
|
||||
$hidden = '';
|
||||
if($projectID)
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if(!$project->hasProduct) $hidden = 'hide';
|
||||
|
||||
$this->view->multipleProject = $project->multiple;
|
||||
}
|
||||
|
||||
$this->view->hidden = $hidden;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a build.
|
||||
*
|
||||
@@ -59,6 +80,7 @@ class build extends control
|
||||
{
|
||||
$execution = $this->execution->getByID($executionID);
|
||||
$executions = $this->execution->getPairs($execution->project);
|
||||
$projectID = $execution->project;
|
||||
$this->execution->setMenu($executionID);
|
||||
$this->session->set('project', $execution->project);
|
||||
}
|
||||
@@ -69,6 +91,7 @@ class build extends control
|
||||
$executions = $this->execution->getPairs($projectID);
|
||||
}
|
||||
|
||||
$this->commonActions($projectID);
|
||||
$executionList = empty($executions) ? array() : $this->execution->getByIdList(array_keys($executions));
|
||||
foreach($executionList as $execution)
|
||||
{
|
||||
@@ -185,6 +208,8 @@ class build extends control
|
||||
|
||||
foreach($productGroups as $product) $products[$product->id] = $product->name;
|
||||
|
||||
$this->commonActions($build->project);
|
||||
|
||||
$this->view->title = $execution->name . $this->lang->colon . $this->lang->build->edit;
|
||||
$this->view->position[] = html::a($this->createLink('execution', 'task', "executionID=$build->execution"), $execution->name);
|
||||
$this->view->position[] = $this->lang->build->edit;
|
||||
@@ -273,6 +298,8 @@ class build extends control
|
||||
|
||||
$executions = $this->loadModel('execution')->getPairs($this->session->project, 'all', 'empty');
|
||||
|
||||
$this->commonActions($build->project);
|
||||
|
||||
$this->view->title = "BUILD #$build->id $build->name" . (isset($executions[$build->execution]) ? " - " . $executions[$build->execution] : '');
|
||||
$this->view->stories = $stories;
|
||||
$this->view->storyPager = $storyPager;
|
||||
@@ -283,11 +310,13 @@ class build extends control
|
||||
|
||||
$this->executeHooks($buildID);
|
||||
|
||||
$buildIdList = $build->execution ? array() : array($buildID => $buildID);
|
||||
|
||||
/* Assign. */
|
||||
$this->view->canBeChanged = common::canBeChanged('build', $build); // Determines whether an object is editable.
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
$this->view->build = $build;
|
||||
$this->view->buildPairs = $this->build->getBuildPairs(0, 'all', 'noempty,notrunk', $build->execution, 'execution');
|
||||
$this->view->buildPairs = $this->build->getBuildPairs(0, 'all', 'noempty,notrunk', $build->execution, 'execution', $buildIdList);
|
||||
$this->view->actions = $this->loadModel('action')->getList('build', $buildID);
|
||||
$this->view->link = $link;
|
||||
$this->view->param = $param;
|
||||
@@ -529,6 +558,9 @@ class build extends control
|
||||
$this->loadModel('tree');
|
||||
$this->loadModel('product');
|
||||
|
||||
$execution = $this->execution->getByID($build->execution);
|
||||
if(empty($execution->hasProduct) and empty($execution->multiple)) unset($this->config->product->search['fields']['plan']);
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
@@ -544,6 +576,12 @@ class build extends control
|
||||
$this->config->product->search['params']['module']['values'] = $this->tree->getOptionMenu($build->product, 'story', 0, $build->branch);
|
||||
$this->config->product->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $this->lang->story->statusList);
|
||||
|
||||
if($build->project)
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($build->project);
|
||||
if(!$project->hasProduct and $project->model != 'scrum') unset($this->config->product->search['fields']['plan']);
|
||||
}
|
||||
|
||||
if($product->type == 'normal')
|
||||
{
|
||||
unset($this->config->product->search['fields']['branch']);
|
||||
@@ -650,10 +688,20 @@ class build extends control
|
||||
$this->config->bug->search['params']['openedBuild']['values'] = $this->build->getBuildPairs($build->product, $branch = 'all', $params = '');
|
||||
$this->config->bug->search['params']['resolvedBuild']['values'] = $this->config->bug->search['params']['openedBuild']['values'];
|
||||
|
||||
$execution = $this->execution->getByID($build->execution);
|
||||
if(!$execution->hasProduct and !$execution->multiple) unset($this->config->bug->search['fields']['plan']);
|
||||
|
||||
unset($this->config->bug->search['fields']['product']);
|
||||
unset($this->config->bug->search['params']['product']);
|
||||
unset($this->config->bug->search['fields']['project']);
|
||||
unset($this->config->bug->search['params']['project']);
|
||||
|
||||
if($build->project)
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($build->project);
|
||||
if(!$project->hasProduct and $project->model != 'scrum') unset($this->config->bug->search['fields']['plan']);
|
||||
}
|
||||
|
||||
if($product->type == 'normal')
|
||||
{
|
||||
unset($this->config->bug->search['fields']['branch']);
|
||||
|
||||
@@ -236,6 +236,7 @@ class buildModel extends model
|
||||
->beginIF($products)->andWhere('t1.product')->in($products)->fi()
|
||||
->beginIF($objectType === 'execution' and $objectID)->andWhere('t1.execution')->eq($objectID)->fi()
|
||||
->beginIF($objectType === 'project' and $objectID)->andWhere('t1.project')->eq($objectID)->fi()
|
||||
->beginIF($objectType === 'execution' and !$objectID)->andWhere('t1.id')->in($buildIdList)->fi()
|
||||
->beginIF($branch !== 'all')->andWhere('t1.branch')->in("0,$branch")->fi()
|
||||
->orderBy('t1.date desc, t1.id desc')->fetchAll('id');
|
||||
|
||||
|
||||
@@ -20,12 +20,12 @@
|
||||
<form class='load-indicator main-form form-ajax' id='dataform' method='post' enctype='multipart/form-data'>
|
||||
<table class='table table-form'>
|
||||
<?php if($app->tab == 'project'):?>
|
||||
<tr>
|
||||
<tr class="<?php echo empty($multipleProject) ? 'hidden' : '';?>">
|
||||
<th><?php echo $lang->executionCommon;?></th>
|
||||
<td><?php echo html::select('execution', $executions, $executionID, "onchange='loadProducts(this.value);' class='form-control chosen' required");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<tr class="<?php echo $hidden;?>">
|
||||
<th><?php echo $lang->build->product;?></th>
|
||||
<?php if(!empty($products)):?>
|
||||
<td>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</div>
|
||||
<form class='load-indicator main-form form-ajax' method='post' id='dataform' enctype='multipart/form-data'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<tr class="<?php echo $hidden;?>">
|
||||
<th><?php echo $lang->build->product;?></th>
|
||||
<td>
|
||||
<?php
|
||||
@@ -42,12 +42,14 @@
|
||||
</td>
|
||||
<td><?php if($disabled) echo $lang->build->notice->changeProduct;?></td>
|
||||
</tr>
|
||||
<?php if(!empty($multipleProject)):?>
|
||||
<tr>
|
||||
<?php $disabled = $testtaskID ? 'disabled' : '';?>
|
||||
<th><?php echo $lang->build->execution;?></th>
|
||||
<td id='executionsBox'><?php echo html::select('execution', $executions, $build->execution, "class='form-control chosen' required $disabled");?></td>
|
||||
<td><?php if($disabled) echo $lang->build->notice->changeExecution;?></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>
|
||||
|
||||
@@ -316,7 +316,7 @@ tbody tr td:first-child input {display: none;}
|
||||
<div class='detail-title'><?php echo $lang->build->basicInfo?></div>
|
||||
<div class='detail-content'>
|
||||
<table class='table table-data table-condensed table-borderless table-fixed'>
|
||||
<tr>
|
||||
<tr class="<?php echo $hidden;?>">
|
||||
<th><?php echo $lang->build->product;?></th>
|
||||
<td><?php echo $build->productName;?></td>
|
||||
</tr>
|
||||
|
||||
@@ -183,7 +183,7 @@ class caselibModel extends model
|
||||
$lib = fixer::input('post')
|
||||
->stripTags($this->config->caselib->editor->create['id'], $this->config->allowedTags)
|
||||
->setForce('type', 'library')
|
||||
->setIF($this->config->systemMode == 'new' and $this->lang->navGroup->caselib != 'qa', 'project', $this->session->project)
|
||||
->setIF($this->lang->navGroup->caselib != 'qa', 'project', $this->session->project)
|
||||
->add('addedBy', $this->app->user->account)
|
||||
->add('addedDate', helper::now())
|
||||
->remove('uid')
|
||||
@@ -265,7 +265,7 @@ class caselibModel extends model
|
||||
|
||||
$cases = $this->dao->select('*')->from(TABLE_CASE)->where($caseQuery)
|
||||
->beginIF($queryLibID != 'all')->andWhere('lib')->eq((int)$libID)->fi()
|
||||
->beginIF($this->config->systemMode == 'new' and $this->app->tab != 'qa')->andWhere('project')->eq($this->session->project)->fi()
|
||||
->beginIF($this->app->tab != 'qa')->andWhere('project')->eq($this->session->project)->fi()
|
||||
->andWhere('product')->eq(0)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->orderBy($sort)->page($pager)->fetchAll();
|
||||
@@ -584,7 +584,7 @@ class caselibModel extends model
|
||||
$data[$i]->status = $forceNotReview ? 'normal' : 'wait';
|
||||
$data[$i]->version = 1;
|
||||
$data[$i]->project = 0;
|
||||
if($this->config->systemMode == 'new' and $this->lang->navGroup->caselib != 'qa' and $this->session->project) $data[$i]->project = $this->session->project;
|
||||
if($this->lang->navGroup->caselib != 'qa' and $this->session->project) $data[$i]->project = $this->session->project;
|
||||
|
||||
$this->dao->insert(TABLE_CASE)->data($data[$i])
|
||||
->autoCheck()
|
||||
|
||||
@@ -156,16 +156,18 @@ $lang->pri = 'Priority';
|
||||
$lang->delayed = 'Delayed';
|
||||
|
||||
$lang->common->common = 'Standard Module';
|
||||
$lang->common->story = 'Story';
|
||||
$lang->my->common = 'My';
|
||||
$lang->program->common = 'Program';
|
||||
$lang->product->common = 'Product';
|
||||
$lang->project->common = 'Project';
|
||||
$lang->execution->common = $config->systemMode == 'new' ? 'Execution' : $lang->executionCommon;
|
||||
$lang->execution->common = 'Execution';
|
||||
$lang->kanban->common = 'Kanban';
|
||||
$lang->qa->common = 'QA';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->repo->common = 'Code';
|
||||
$lang->repo->codeRepo = 'Code Repo';
|
||||
$lang->report->common = 'Statistics';
|
||||
$lang->system->common = 'System';
|
||||
$lang->admin->common = 'Admin';
|
||||
@@ -181,6 +183,7 @@ $lang->automation->common = 'Automation';
|
||||
$lang->team->common = 'Team';
|
||||
$lang->user->common = 'User';
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->mode = 'Mode';
|
||||
$lang->extension->common = 'Extension';
|
||||
$lang->company->common = 'Company';
|
||||
$lang->dept->common = 'Dept';
|
||||
@@ -200,6 +203,7 @@ $lang->backup->common = 'Backup';
|
||||
$lang->action->trash = 'Recycle';
|
||||
$lang->app->common = 'APP';
|
||||
$lang->app->serverLink = 'Server Link';
|
||||
$lang->review->common = 'Review';
|
||||
|
||||
$lang->personnel->common = 'Member';
|
||||
$lang->personnel->invest = 'Investment';
|
||||
@@ -289,6 +293,7 @@ $lang->devops->rules = 'Rule';
|
||||
$lang->devops->settings = 'Setting Merge Request';
|
||||
$lang->devops->set = 'Set';
|
||||
|
||||
$lang->admin->module = 'Module';
|
||||
$lang->admin->system = 'System';
|
||||
$lang->admin->entry = 'Application';
|
||||
$lang->admin->data = 'Data';
|
||||
@@ -337,8 +342,8 @@ $lang->exportTypeList['all'] = 'Alle';
|
||||
$lang->exportTypeList['selected'] = 'Ausgewählte';
|
||||
|
||||
$lang->visionList = array();
|
||||
$lang->visionList['rnd'] = 'R&D';
|
||||
$lang->visionList['lite'] = 'Lite';
|
||||
$lang->visionList['rnd'] = 'Full Feature Interface';
|
||||
$lang->visionList['lite'] = 'Operation Management Interface';
|
||||
|
||||
$lang->createObjects['todo'] = 'Todo';
|
||||
$lang->createObjects['effort'] = 'Effort';
|
||||
|
||||
@@ -156,16 +156,18 @@ $lang->pri = 'Priority';
|
||||
$lang->delayed = 'Delayed';
|
||||
|
||||
$lang->common->common = 'Common Module';
|
||||
$lang->common->story = 'Story';
|
||||
$lang->my->common = 'My';
|
||||
$lang->program->common = 'Program';
|
||||
$lang->product->common = 'Product';
|
||||
$lang->project->common = 'Project';
|
||||
$lang->execution->common = $config->systemMode == 'new' ? 'Execution' : $lang->executionCommon;
|
||||
$lang->execution->common = 'Execution';
|
||||
$lang->kanban->common = 'Kanban';
|
||||
$lang->qa->common = 'QA';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->repo->common = 'Code';
|
||||
$lang->repo->codeRepo = 'Code Repo';
|
||||
$lang->report->common = 'Statistics';
|
||||
$lang->system->common = 'System';
|
||||
$lang->admin->common = 'Admin';
|
||||
@@ -181,6 +183,7 @@ $lang->automation->common = 'Automation';
|
||||
$lang->team->common = 'Team';
|
||||
$lang->user->common = 'User';
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->mode = 'Mode';
|
||||
$lang->extension->common = 'Extension';
|
||||
$lang->company->common = 'Company';
|
||||
$lang->dept->common = 'Dept';
|
||||
@@ -200,6 +203,7 @@ $lang->backup->common = 'Backup';
|
||||
$lang->action->trash = 'Recycle';
|
||||
$lang->app->common = 'APP';
|
||||
$lang->app->serverLink = 'Server Link';
|
||||
$lang->review->common = 'Review';
|
||||
|
||||
$lang->personnel->common = 'Member';
|
||||
$lang->personnel->invest = 'Investment';
|
||||
@@ -289,6 +293,7 @@ $lang->devops->rules = 'Rule';
|
||||
$lang->devops->settings = 'Setting Merge Request';
|
||||
$lang->devops->set = 'Set';
|
||||
|
||||
$lang->admin->module = 'Module';
|
||||
$lang->admin->system = 'System';
|
||||
$lang->admin->entry = 'Application';
|
||||
$lang->admin->data = 'Data';
|
||||
@@ -337,8 +342,8 @@ $lang->exportTypeList['all'] = 'All Data';
|
||||
$lang->exportTypeList['selected'] = 'Selected Data';
|
||||
|
||||
$lang->visionList = array();
|
||||
$lang->visionList['rnd'] = 'R&D';
|
||||
$lang->visionList['lite'] = 'Lite';
|
||||
$lang->visionList['rnd'] = 'Full Feature Interface';
|
||||
$lang->visionList['lite'] = 'Operation Management Interface';
|
||||
|
||||
$lang->createObjects['todo'] = 'Todo';
|
||||
$lang->createObjects['effort'] = 'Effort';
|
||||
|
||||
@@ -156,16 +156,18 @@ $lang->pri = 'Priority';
|
||||
$lang->delayed = 'Delayed';
|
||||
|
||||
$lang->common->common = 'Module Commun';
|
||||
$lang->common->story = 'Story';
|
||||
$lang->my->common = 'My';
|
||||
$lang->program->common = 'Program';
|
||||
$lang->product->common = 'Product';
|
||||
$lang->project->common = 'Project';
|
||||
$lang->execution->common = $config->systemMode == 'new' ? 'Execution' : $lang->executionCommon;
|
||||
$lang->execution->common = 'Execution';
|
||||
$lang->kanban->common = 'Kanban';
|
||||
$lang->qa->common = 'QA';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->repo->common = 'Code';
|
||||
$lang->repo->codeRepo = 'Code Repo';
|
||||
$lang->report->common = 'Statistics';
|
||||
$lang->system->common = 'System';
|
||||
$lang->admin->common = 'Admin';
|
||||
@@ -181,6 +183,7 @@ $lang->automation->common = 'Automation';
|
||||
$lang->team->common = 'Team';
|
||||
$lang->user->common = 'User';
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->mode = 'Mode';
|
||||
$lang->extension->common = 'Extension';
|
||||
$lang->company->common = 'Company';
|
||||
$lang->dept->common = 'Dept';
|
||||
@@ -200,6 +203,7 @@ $lang->backup->common = 'Backup';
|
||||
$lang->action->trash = 'Recycle';
|
||||
$lang->app->common = 'APP';
|
||||
$lang->app->serverLink = 'Server Link';
|
||||
$lang->review->common = 'Review';
|
||||
|
||||
$lang->personnel->common = 'Member';
|
||||
$lang->personnel->invest = 'Investment';
|
||||
@@ -289,6 +293,7 @@ $lang->devops->rules = 'Rule';
|
||||
$lang->devops->settings = 'Setting Merge Request';
|
||||
$lang->devops->set = 'Set';
|
||||
|
||||
$lang->admin->module = 'Module';
|
||||
$lang->admin->system = 'System';
|
||||
$lang->admin->entry = 'Application';
|
||||
$lang->admin->data = 'Data';
|
||||
@@ -337,8 +342,8 @@ $lang->exportTypeList['all'] = 'Toutes les Données';
|
||||
$lang->exportTypeList['selected'] = 'Données sélectionnées';
|
||||
|
||||
$lang->visionList = array();
|
||||
$lang->visionList['rnd'] = 'R&D';
|
||||
$lang->visionList['lite'] = 'Lite';
|
||||
$lang->visionList['rnd'] = 'Full Feature Interface';
|
||||
$lang->visionList['lite'] = 'Operation Management Interface';
|
||||
|
||||
$lang->createObjects['todo'] = 'Todo';
|
||||
$lang->createObjects['effort'] = 'Effort';
|
||||
|
||||
+238
-139
@@ -14,9 +14,9 @@ $lang->navIcons['system'] = "<i class='icon icon-group'></i>";
|
||||
$lang->navIcons['admin'] = "<i class='icon icon-cog-outline'></i>";
|
||||
|
||||
global $config;
|
||||
list($programModule, $programMethod) = explode('-', $config->programLink);
|
||||
list($productModule, $productMethod) = explode('-', $config->productLink);
|
||||
list($projectModule, $projectMethod) = explode('-', $config->projectLink);
|
||||
list($programModule, $programMethod) = explode('-', $config->programLink);
|
||||
list($productModule, $productMethod) = explode('-', $config->productLink);
|
||||
list($projectModule, $projectMethod) = explode('-', $config->projectLink);
|
||||
list($executionModule, $executionMethod) = explode('-', $config->executionLink);
|
||||
|
||||
if(defined('TUTORIAL'))
|
||||
@@ -32,59 +32,55 @@ if(defined('TUTORIAL'))
|
||||
}
|
||||
|
||||
/* Main Navigation. */
|
||||
$lang->mainNav = new stdclass();
|
||||
$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "{$lang->navIcons['program']} {$lang->program->common}|$programModule|$programMethod|";
|
||||
$lang->mainNav->product = "{$lang->navIcons['product']} {$lang->product->common}|$productModule|$productMethod|";
|
||||
if($config->systemMode == 'new') $lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
|
||||
$lang->mainNav = new stdclass();
|
||||
$lang->mainNav->my = "{$lang->navIcons['my']} {$lang->my->shortCommon}|my|index|";
|
||||
$lang->mainNav->program = "{$lang->navIcons['program']} {$lang->program->common}|$programModule|$programMethod|";
|
||||
$lang->mainNav->product = "{$lang->navIcons['product']} {$lang->product->common}|$productModule|$productMethod|";
|
||||
$lang->mainNav->project = "{$lang->navIcons['project']} {$lang->project->common}|$projectModule|$projectMethod|";
|
||||
$lang->mainNav->execution = "{$lang->navIcons['execution']} {$lang->execution->common}|$executionModule|$executionMethod|";
|
||||
$lang->mainNav->qa = "{$lang->navIcons['qa']} {$lang->qa->common}|qa|index|";
|
||||
$lang->mainNav->devops = "{$lang->navIcons['devops']} DevOps|repo|browse|";
|
||||
$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
|
||||
$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
|
||||
$lang->mainNav->report = "{$lang->navIcons['report']} {$lang->report->common}|report|productSummary|";
|
||||
$lang->mainNav->system = "{$lang->navIcons['system']} {$lang->system->common}|my|team|";
|
||||
$lang->mainNav->admin = "{$lang->navIcons['admin']} {$lang->admin->common}|admin|index|";
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->mainNav->execution = "{$lang->navIcons['execution']} {$lang->execution->common}|$executionModule|$executionMethod|";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->mainNav->execution = "{$lang->navIcons['project']} {$lang->execution->common}|$executionModule|$executionMethod|";
|
||||
}
|
||||
$lang->mainNav->qa = "{$lang->navIcons['qa']} {$lang->qa->common}|qa|index|";
|
||||
$lang->mainNav->devops = "{$lang->navIcons['devops']} DevOps|repo|browse|";
|
||||
$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
|
||||
$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
|
||||
$lang->mainNav->report = "{$lang->navIcons['report']} {$lang->report->common}|report|productSummary|";
|
||||
$lang->mainNav->system = "{$lang->navIcons['system']} {$lang->system->common}|my|team|";
|
||||
$lang->mainNav->admin = "{$lang->navIcons['admin']} {$lang->admin->common}|admin|index|";
|
||||
$lang->dividerMenu = ',kanban,oa,admin,';
|
||||
|
||||
$lang->dividerMenu = ',kanban,oa,admin,';
|
||||
$lang->mainNav->menuOrder[5] = 'my';
|
||||
if($config->systemMode == 'new') $lang->mainNav->menuOrder[10] = 'program';
|
||||
$lang->mainNav->menuOrder[10] = 'program';
|
||||
$lang->mainNav->menuOrder[15] = 'product';
|
||||
if($config->systemMode == 'new') $lang->mainNav->menuOrder[20] = 'project';
|
||||
$lang->mainNav->menuOrder[21] = 'execution';
|
||||
$lang->mainNav->menuOrder[23] = 'qa';
|
||||
$lang->mainNav->menuOrder[25] = 'devops';
|
||||
$lang->mainNav->menuOrder[30] = 'kanban';
|
||||
$lang->mainNav->menuOrder[35] = 'doc';
|
||||
$lang->mainNav->menuOrder[40] = 'report';
|
||||
$lang->mainNav->menuOrder[45] = 'system';
|
||||
$lang->mainNav->menuOrder[65] = 'admin';
|
||||
$lang->mainNav->menuOrder[20] = 'project';
|
||||
$lang->mainNav->menuOrder[25] = 'execution';
|
||||
$lang->mainNav->menuOrder[30] = 'qa';
|
||||
$lang->mainNav->menuOrder[35] = 'devops';
|
||||
$lang->mainNav->menuOrder[40] = 'kanban';
|
||||
$lang->mainNav->menuOrder[45] = 'doc';
|
||||
$lang->mainNav->menuOrder[50] = 'report';
|
||||
$lang->mainNav->menuOrder[55] = 'system';
|
||||
$lang->mainNav->menuOrder[60] = 'admin';
|
||||
|
||||
if($config->systemMode == 'light') unset($lang->mainNav->program, $lang->mainNav->menuOrder[10]);
|
||||
|
||||
/* My menu. */
|
||||
$lang->my->menu = new stdclass();
|
||||
$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
|
||||
$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->work = array('link' => "{$lang->my->work}|my|work|mode=task", 'subModule' => 'task');
|
||||
if($config->systemMode == 'new') $lang->my->menu->project = array('link' => "{$lang->project->common}|my|project|");
|
||||
$lang->my->menu = new stdclass();
|
||||
$lang->my->menu->index = array('link' => "$lang->dashboard|my|index");
|
||||
$lang->my->menu->calendar = array('link' => "$lang->calendar|my|calendar|", 'subModule' => 'todo', 'alias' => 'todo');
|
||||
$lang->my->menu->work = array('link' => "{$lang->my->work}|my|work|mode=task", 'subModule' => 'task');
|
||||
$lang->my->menu->audit = array('link' => "{$lang->review->common}|my|audit|type=all¶m=&orderBy=time_desc", 'subModule' => 'review');
|
||||
$lang->my->menu->project = array('link' => "{$lang->project->common}|my|project|");
|
||||
$lang->my->menu->execution = array('link' => "{$lang->execution->common}|my|execution|type=undone");
|
||||
$lang->my->menu->contribute = array('link' => "$lang->contribute|my|contribute|mode=task");
|
||||
$lang->my->menu->dynamic = array('link' => "$lang->dynamic|my|dynamic|");
|
||||
if($config->systemScore) $lang->my->menu->score = array('link' => "{$lang->score->shortCommon}|my|score|", 'subModule' => 'score');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
$lang->my->menu->score = array('link' => "{$lang->score->shortCommon}|my|score|", 'subModule' => 'score');
|
||||
$lang->my->menu->contacts = array('link' => "$lang->contact|my|managecontacts|");
|
||||
|
||||
/* My menu order. */
|
||||
$lang->my->menuOrder[5] = 'index';
|
||||
$lang->my->menuOrder[10] = 'calendar';
|
||||
$lang->my->menuOrder[15] = 'work';
|
||||
$lang->my->menuOrder[20] = 'follow';
|
||||
$lang->my->menuOrder[20] = 'audit';
|
||||
$lang->my->menuOrder[25] = 'project';
|
||||
$lang->my->menuOrder[30] = 'execution';
|
||||
$lang->my->menuOrder[35] = 'contribute';
|
||||
@@ -92,13 +88,15 @@ $lang->my->menuOrder[40] = 'dynamic';
|
||||
$lang->my->menuOrder[45] = 'score';
|
||||
$lang->my->menuOrder[50] = 'contacts';
|
||||
|
||||
$lang->my->menu->work['subMenu'] = new stdclass();
|
||||
$lang->my->menu->work['subMenu']->task = array('link' => "{$lang->task->common}|my|work|mode=task", 'subModule' => 'task');
|
||||
if($config->URAndSR) $lang->my->menu->work['subMenu']->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$lang->my->menu->work['subMenu']->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->menu->work['subMenu']->bug = "{$lang->bug->common}|my|work|mode=bug";
|
||||
$lang->my->menu->work['subMenu']->testcase = array('link' => "{$lang->testcase->common}|my|work|mode=testcase&type=assigntome", 'subModule' => 'testtask');
|
||||
$lang->my->menu->work['subMenu']->testtask = "{$lang->testtask->common}|my|work|mode=testtask&type=wait";
|
||||
if(!$config->systemScore) unset($lang->my->menu->score, $lang->my->menuOrder[45]);
|
||||
|
||||
$lang->my->menu->work['subMenu'] = new stdclass();
|
||||
$lang->my->menu->work['subMenu']->task = array('link' => "{$lang->task->common}|my|work|mode=task", 'subModule' => 'task');
|
||||
$lang->my->menu->work['subMenu']->requirement = "$lang->URCommon|my|work|mode=requirement";
|
||||
$lang->my->menu->work['subMenu']->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->menu->work['subMenu']->bug = "{$lang->bug->common}|my|work|mode=bug";
|
||||
$lang->my->menu->work['subMenu']->testcase = array('link' => "{$lang->testcase->common}|my|work|mode=testcase&type=assigntome", 'subModule' => 'testtask');
|
||||
$lang->my->menu->work['subMenu']->testtask = "{$lang->testtask->common}|my|work|mode=testtask&type=wait";
|
||||
|
||||
$lang->my->menu->work['menuOrder'][5] = 'task';
|
||||
$lang->my->menu->work['menuOrder'][10] = 'requirement';
|
||||
@@ -106,15 +104,19 @@ $lang->my->menu->work['menuOrder'][15] = 'story';
|
||||
$lang->my->menu->work['menuOrder'][20] = 'bug';
|
||||
$lang->my->menu->work['menuOrder'][25] = 'testcase';
|
||||
$lang->my->menu->work['menuOrder'][30] = 'testtask';
|
||||
$lang->my->menu->work['menuOrder'][35] = 'audit';
|
||||
|
||||
$lang->my->menu->contribute['subMenu'] = new stdclass();
|
||||
$lang->my->menu->contribute['subMenu']->task = "{$lang->task->common}|my|contribute|mode=task";
|
||||
if($config->URAndSR) $lang->my->menu->contribute['subMenu']->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$lang->my->menu->contribute['subMenu']->story = "$lang->SRCommon|my|contribute|mode=story";
|
||||
$lang->my->menu->contribute['subMenu']->bug = "{$lang->bug->common}|my|contribute|mode=bug";
|
||||
$lang->my->menu->contribute['subMenu']->testcase = "{$lang->testcase->shortCommon}|my|contribute|mode=testcase&type=openedbyme";
|
||||
$lang->my->menu->contribute['subMenu']->testtask = "{$lang->testtask->common}|my|contribute|mode=testtask&type=done";
|
||||
$lang->my->menu->contribute['subMenu']->doc = "{$lang->doc->common}|my|contribute|mode=doc&type=openedbyme";
|
||||
if(!$config->URAndSR) unset($lang->my->menu->work['subMenu']->requirement, $lang->my->menu->work['menuOrder'][10]);
|
||||
|
||||
$lang->my->menu->contribute['subMenu'] = new stdclass();
|
||||
$lang->my->menu->contribute['subMenu']->task = "{$lang->task->common}|my|contribute|mode=task";
|
||||
$lang->my->menu->contribute['subMenu']->requirement = "$lang->URCommon|my|contribute|mode=requirement";
|
||||
$lang->my->menu->contribute['subMenu']->story = "$lang->SRCommon|my|contribute|mode=story";
|
||||
$lang->my->menu->contribute['subMenu']->bug = "{$lang->bug->common}|my|contribute|mode=bug";
|
||||
$lang->my->menu->contribute['subMenu']->testcase = "{$lang->testcase->shortCommon}|my|contribute|mode=testcase&type=openedbyme";
|
||||
$lang->my->menu->contribute['subMenu']->testtask = "{$lang->testtask->common}|my|contribute|mode=testtask&type=done";
|
||||
$lang->my->menu->contribute['subMenu']->audit = array('link' => "{$lang->review->common}|my|contribute|mode=audit&type=reviewedbyme", 'subModule' => 'review');
|
||||
$lang->my->menu->contribute['subMenu']->doc = "{$lang->doc->common}|my|contribute|mode=doc&type=openedbyme";
|
||||
|
||||
$lang->my->menu->contribute['menuOrder'][5] = 'task';
|
||||
$lang->my->menu->contribute['menuOrder'][10] = 'requirement';
|
||||
@@ -122,16 +124,19 @@ $lang->my->menu->contribute['menuOrder'][15] = 'story';
|
||||
$lang->my->menu->contribute['menuOrder'][20] = 'bug';
|
||||
$lang->my->menu->contribute['menuOrder'][25] = 'testcase';
|
||||
$lang->my->menu->contribute['menuOrder'][30] = 'testtask';
|
||||
$lang->my->menu->contribute['menuOrder'][35] = 'doc';
|
||||
$lang->my->menu->contribute['menuOrder'][35] = 'audit';
|
||||
$lang->my->menu->contribute['menuOrder'][40] = 'doc';
|
||||
|
||||
if(!$config->URAndSR) unset($lang->my->menu->contribute['subMenu']->requirement, $lang->my->menu->contribute['menuOrder'][10]);
|
||||
|
||||
$lang->my->dividerMenu = ',work,dynamic,';
|
||||
|
||||
/* Program menu. */
|
||||
$lang->program->homeMenu = new stdclass();
|
||||
$lang->program->homeMenu = new stdclass();
|
||||
$lang->program->homeMenu->browse = array('link' => "{$lang->program->list}|program|browse|", 'alias' => 'create,edit', 'subModule' => 'project');
|
||||
$lang->program->homeMenu->kanban = array('link' => "{$lang->program->kanban}|program|kanban|");
|
||||
|
||||
$lang->program->menu = new stdclass();
|
||||
$lang->program->menu = new stdclass();
|
||||
$lang->program->menu->product = array('link' => "{$lang->product->common}|program|product|programID=%s", 'alias' => 'view');
|
||||
$lang->program->menu->project = array('link' => "{$lang->project->common}|program|project|programID=%s");
|
||||
$lang->program->menu->personnel = array('link' => "{$lang->personnel->common}|personnel|invest|programID=%s");
|
||||
@@ -143,30 +148,29 @@ $lang->program->menuOrder[10] = 'project';
|
||||
$lang->program->menuOrder[15] = 'personnel';
|
||||
$lang->program->menuOrder[20] = 'stakeholder';
|
||||
|
||||
$lang->program->menu->personnel['subMenu'] = new stdClass();
|
||||
$lang->program->menu->personnel['subMenu'] = new stdClass();
|
||||
$lang->program->menu->personnel['subMenu']->invest = array('link' => "{$lang->personnel->invest}|personnel|invest|programID=%s");
|
||||
$lang->program->menu->personnel['subMenu']->accessible = array('link' => "{$lang->personnel->accessible}|personnel|accessible|programID=%s");
|
||||
$lang->program->menu->personnel['subMenu']->whitelist = array('link' => "{$lang->whitelist}|personnel|whitelist|objectID=%s", 'alias' => 'addwhitelist');
|
||||
|
||||
/* Product menu. */
|
||||
$lang->product->homeMenu = new stdclass();
|
||||
$lang->product->homeMenu = new stdclass();
|
||||
$lang->product->homeMenu->home = array('link' => "{$lang->dashboard}|product|index|");
|
||||
$lang->product->homeMenu->list = array('link' => $lang->product->list . '|product|all|', 'alias' => 'create,batchedit,manageline');
|
||||
$lang->product->homeMenu->kanban = array('link' => "{$lang->product->kanban}|product|kanban|");
|
||||
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->dashboard = array('link' => "{$lang->dashboard}|product|dashboard|productID=%s");
|
||||
if($config->URAndSR) $lang->product->menu->requirement = array('link' => "$lang->URCommon|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->plan = array('link' => "{$lang->productplan->shortCommon}|productplan|browse|productID=%s", 'subModule' => 'productplan,bug');
|
||||
$lang->product->menu->release = array('link' => "{$lang->release->common}|release|browse|productID=%s", 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = array('link' => "{$lang->roadmap}|product|roadmap|productID=%s");
|
||||
if($config->systemMode == 'new') $lang->product->menu->project = array('link' => "{$lang->project->common}|product|project|status=all&productID=%s");
|
||||
if($config->systemMode == 'classic') $lang->product->menu->project = array('link' => "{$lang->execution->common}|product|project|status=all&productID=%s");
|
||||
$lang->product->menu->track = array('link' => "{$lang->track}|product|track|productID=%s");
|
||||
$lang->product->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=product&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->product->menu->dynamic = array('link' => "{$lang->dynamic}|product|dynamic|productID=%s");
|
||||
$lang->product->menu->settings = array('link' => "{$lang->settings}|product|view|productID=%s", 'subModule' => 'tree,branch', 'alias' => 'edit,whitelist,addwhitelist');
|
||||
$lang->product->menu = new stdclass();
|
||||
$lang->product->menu->dashboard = array('link' => "{$lang->dashboard}|product|dashboard|productID=%s");
|
||||
$lang->product->menu->story = array('link' => "$lang->SRCommon|product|browse|productID=%s", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->plan = array('link' => "{$lang->productplan->shortCommon}|productplan|browse|productID=%s", 'subModule' => 'productplan,bug');
|
||||
$lang->product->menu->project = array('link' => "{$lang->project->common}|product|project|status=all&productID=%s");
|
||||
$lang->product->menu->release = array('link' => "{$lang->release->common}|release|browse|productID=%s", 'subModule' => 'release');
|
||||
$lang->product->menu->roadmap = array('link' => "{$lang->roadmap}|product|roadmap|productID=%s");
|
||||
$lang->product->menu->requirement = array('link' => "{$lang->URCommon}|product|browse|productID=%s&branch=&browseType=unclosed¶m=0&storyType=requirement", 'alias' => 'batchedit', 'subModule' => 'story');
|
||||
$lang->product->menu->track = array('link' => "{$lang->track}|product|track|productID=%s");
|
||||
$lang->product->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=product&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->product->menu->dynamic = array('link' => "{$lang->dynamic}|product|dynamic|productID=%s");
|
||||
$lang->product->menu->settings = array('link' => "{$lang->settings}|product|view|productID=%s", 'subModule' => 'tree,branch', 'alias' => 'edit,whitelist,addwhitelist');
|
||||
|
||||
/* Product menu order. */
|
||||
$lang->product->menuOrder[5] = 'dashboard';
|
||||
@@ -185,7 +189,7 @@ $lang->product->menuOrder[65] = 'all';
|
||||
|
||||
$lang->product->menu->doc['subMenu'] = new stdclass();
|
||||
|
||||
$lang->product->menu->settings['subMenu'] = new stdclass();
|
||||
$lang->product->menu->settings['subMenu'] = new stdclass();
|
||||
$lang->product->menu->settings['subMenu']->view = array('link' => "{$lang->overview}|product|view|productID=%s", 'alias' => 'edit');
|
||||
$lang->product->menu->settings['subMenu']->module = array('link' => "{$lang->module}|tree|browse|product=%s&view=story", 'subModule' => 'tree');
|
||||
$lang->product->menu->settings['subMenu']->branch = array('link' => "@branch@|branch|manage|product=%s", 'subModule' => 'branch');
|
||||
@@ -195,21 +199,27 @@ $lang->product->dividerMenu = $config->URAndSR ? ',story,requirement,settings,'
|
||||
|
||||
/* Project menu. */
|
||||
$lang->project->homeMenu = new stdclass();
|
||||
$lang->project->homeMenu->browse = array('link' => ($config->systemMode == 'new' ? $lang->project->list : $lang->executionCommon) . '|project|browse|', 'alias' => 'batchedit,create');
|
||||
if($config->systemMode == 'new') $lang->project->homeMenu->kanban = array('link' => "{$lang->project->kanban}|project|kanban|");
|
||||
$lang->project->homeMenu->browse = array('link' => "{$lang->project->list}|project|browse|", 'alias' => 'batchedit,create');
|
||||
$lang->project->homeMenu->kanban = array('link' => "{$lang->project->kanban}|project|kanban|");
|
||||
|
||||
/* Scrum menu. */
|
||||
$lang->scrum->menu = new stdclass();
|
||||
$lang->scrum->menu->index = array('link' => "{$lang->dashboard}|project|index|project=%s");
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s", 'exclude' => 'execution-testreport', 'subModule' => 'task');
|
||||
$lang->scrum->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track');
|
||||
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport,execution', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
$lang->scrum->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
|
||||
$lang->scrum->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team');
|
||||
$lang->scrum->menu = new stdclass();
|
||||
$lang->scrum->menu->index = array('link' => "{$lang->dashboard}|project|index|project=%s");
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s", 'exclude' => 'execution-testreport', 'subModule' => 'task');
|
||||
$lang->scrum->menu->storyGroup = array('link' => "{$lang->common->story}|projectstory|story|projectID=%s&product=%s",'class' => 'dropdown dropdown-hover', 'exclude' => 'tree-browse');
|
||||
$lang->scrum->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track');
|
||||
$lang->scrum->menu->projectplan = array('link' => "{$lang->productplan->shortCommon}|projectplan|browse|productID=%s", 'subModule' => 'productplan');
|
||||
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
$lang->scrum->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
|
||||
$lang->scrum->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'tree,stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team,managerepo');
|
||||
|
||||
$lang->scrum->menu->storyGroup['dropMenu'] = new stdclass();
|
||||
$lang->scrum->menu->storyGroup['dropMenu']->story = array('link' => "{$lang->SRCommon}|projectstory|story|projectID=%s&productID=%s", 'subModule' => 'projectstory,tree');
|
||||
$lang->scrum->menu->storyGroup['dropMenu']->requirement = array('link' => "{$lang->URCommon}|projectstory|story|projectID=%s&productID=%s&branch=0&browseType=¶m=0&storyType=requirement", 'subModule' => 'projectstory,tree');
|
||||
|
||||
$lang->scrum->dividerMenu = ',execution,programplan,doc,settings,';
|
||||
|
||||
@@ -217,6 +227,8 @@ $lang->scrum->dividerMenu = ',execution,programplan,doc,settings,';
|
||||
$lang->scrum->menuOrder[5] = 'index';
|
||||
$lang->scrum->menuOrder[10] = 'execution';
|
||||
$lang->scrum->menuOrder[15] = 'story';
|
||||
$lang->scrum->menuOrder[16] = 'storyGroup';
|
||||
$lang->scrum->menuOrder[18] = 'projectplan';
|
||||
$lang->scrum->menuOrder[20] = 'qa';
|
||||
$lang->scrum->menuOrder[25] = 'devops';
|
||||
$lang->scrum->menuOrder[30] = 'doc';
|
||||
@@ -241,28 +253,34 @@ $lang->scrum->menu->settings['subMenu']->members = array('link' => "{$lang->
|
||||
$lang->scrum->menu->settings['subMenu']->whitelist = array('link' => "{$lang->whitelist}|project|whitelist|project=%s", 'subModule' => 'personnel');
|
||||
$lang->scrum->menu->settings['subMenu']->stakeholder = array('link' => "{$lang->stakeholder->common}|stakeholder|browse|project=%s", 'subModule' => 'stakeholder');
|
||||
$lang->scrum->menu->settings['subMenu']->group = array('link' => "{$lang->priv}|project|group|project=%s", 'alias' => 'group,manageview,managepriv');
|
||||
$lang->scrum->menu->settings['subMenu']->module = array('link' => "{$lang->module}|tree|browse|product=%s&view=story");
|
||||
$lang->scrum->menu->settings['subMenu']->managerepo = array('link' => "{$lang->repo->codeRepo}|project|managerepo|project=%s");
|
||||
|
||||
/* Waterfall menu. */
|
||||
$lang->waterfall->menu = new stdclass();
|
||||
$lang->waterfall->menu->index = array('link' => "$lang->dashboard|project|index|project=%s");
|
||||
$lang->waterfall->menu->execution = array('link' => "{$lang->stage->common}|project|execution|status=all&projectID=%s", 'subModule' => 'programplan,task');
|
||||
$lang->waterfall->menu->story = array('link' => "$lang->SRCommon|projectstory|story|project=%s", 'subModule' => 'projectstory,tree', 'exclude' => 'projectstory-track');
|
||||
$lang->waterfall->menu->design = array('link' => "{$lang->design->common}|design|browse|project=%s");
|
||||
$lang->waterfall->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
|
||||
$lang->waterfall->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s");
|
||||
$lang->waterfall->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->waterfall->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
$lang->waterfall->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
|
||||
$lang->waterfall->menu->index = array('link' => "$lang->dashboard|project|index|project=%s");
|
||||
$lang->waterfall->menu->execution = array('link' => "{$lang->stage->common}|project|execution|status=all&projectID=%s", 'subModule' => 'programplan,task');
|
||||
$lang->waterfall->menu->storyGroup = array('link' => "{$lang->common->story}|projectstory|story|projectID=%s",'class' => 'dropdown dropdown-hover', 'exclude' => 'tree-browse,projectstory-track');
|
||||
$lang->waterfall->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track', 'exclude' => 'projectstory-track');
|
||||
$lang->waterfall->menu->design = array('link' => "{$lang->design->common}|design|browse|project=%s");
|
||||
$lang->waterfall->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
|
||||
$lang->waterfall->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=project&objectID=%s");
|
||||
$lang->waterfall->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->waterfall->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->waterfall->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
$lang->waterfall->menu->dynamic = array('link' => "$lang->dynamic|project|dynamic|project=%s");
|
||||
|
||||
$lang->waterfall->menu->settings = $lang->scrum->menu->settings;
|
||||
$lang->waterfall->dividerMenu = ',programplan,build,dynamic,';
|
||||
|
||||
$lang->waterfall->menu->storyGroup['dropMenu'] = $lang->scrum->menu->storyGroup['dropMenu'];
|
||||
|
||||
/* Waterfall menu order. */
|
||||
$lang->waterfall->menuOrder[5] = 'index';
|
||||
$lang->waterfall->menuOrder[15] = 'programplan';
|
||||
$lang->waterfall->menuOrder[20] = 'execution';
|
||||
$lang->waterfall->menuOrder[25] = 'story';
|
||||
$lang->waterfall->menuOrder[26] = 'storyGroup';
|
||||
$lang->waterfall->menuOrder[30] = 'design';
|
||||
$lang->waterfall->menuOrder[35] = 'devops';
|
||||
$lang->waterfall->menuOrder[55] = 'qa';
|
||||
@@ -291,11 +309,11 @@ $lang->waterfall->menu->design['subMenu']->ads = array('link' => "{$lang->d
|
||||
$lang->waterfall->menu->design['subMenu']->bysearch = array('link' => '<a href="javascript:;" class="querybox-toggle"><i class="icon-search icon"></i> ' . $lang->searchAB . '</a>');
|
||||
|
||||
/* Kanban project menu. */
|
||||
$lang->kanbanProject = new stdclass();
|
||||
$lang->kanbanProject->menu = new stdclass();
|
||||
$lang->kanbanProject = new stdclass();
|
||||
$lang->kanbanProject->menu = new stdclass();
|
||||
$lang->kanbanProject->menu->index = array('link' => "{$lang->kanban->common}|project|index|project=%s");
|
||||
$lang->kanbanProject->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->kanbanProject->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team');
|
||||
$lang->kanbanProject->menu->settings = array('link' => "$lang->settings|project|view|project=%s", 'subModule' => 'tree,stakeholder', 'alias' => 'edit,manageproducts,group,managemembers,manageview,managepriv,whitelist,addwhitelist,team');
|
||||
|
||||
$lang->kanbanProject->dividerMenu = '';
|
||||
|
||||
@@ -304,33 +322,39 @@ $lang->kanbanProject->menuOrder[5] = 'index';
|
||||
$lang->kanbanProject->menuOrder[10] = 'build';
|
||||
$lang->kanbanProject->menuOrder[15] = 'settings';
|
||||
|
||||
$lang->kanbanProject->menu->settings['subMenu'] = new stdclass();
|
||||
$lang->kanbanProject->menu->settings['subMenu']->view = array('link' => "$lang->overview|project|view|project=%s", 'alias' => 'edit');
|
||||
$lang->kanbanProject->menu->settings['subMenu']->products = array('link' => "{$lang->product->common}|project|manageProducts|project=%s", 'alias' => 'manageproducts');
|
||||
$lang->kanbanProject->menu->settings['subMenu']->members = array('link' => "{$lang->team->common}|project|team|project=%s", 'alias' => 'managemembers,team');
|
||||
$lang->kanbanProject->menu->settings['subMenu']->whitelist = array('link' => "{$lang->whitelist}|project|whitelist|project=%s", 'subModule' => 'personnel');
|
||||
$lang->kanbanProject->menu->settings['subMenu'] = new stdclass();
|
||||
$lang->kanbanProject->menu->settings['subMenu']->view = array('link' => "$lang->overview|project|view|project=%s", 'alias' => 'edit');
|
||||
$lang->kanbanProject->menu->settings['subMenu']->products = array('link' => "{$lang->product->common}|project|manageProducts|project=%s", 'alias' => 'manageproducts');
|
||||
$lang->kanbanProject->menu->settings['subMenu']->members = array('link' => "{$lang->team->common}|project|team|project=%s", 'alias' => 'managemembers,team');
|
||||
$lang->kanbanProject->menu->settings['subMenu']->whitelist = array('link' => "{$lang->whitelist}|project|whitelist|project=%s", 'subModule' => 'personnel');
|
||||
$lang->kanbanProject->menu->settings['subMenu']->module = array('link' => "{$lang->module}|tree|browse|product=%s&view=story");
|
||||
|
||||
/* Execution menu. */
|
||||
$lang->execution->homeMenu = new stdclass();
|
||||
$lang->execution->homeMenu->all = array('link' => "{$lang->execution->all}|execution|all|", 'alias' => 'create,batchedit');
|
||||
if($config->systemMode == 'new') $lang->execution->homeMenu->executionkanban = array('link' => "{$lang->execution->executionKanban}|execution|executionkanban|");
|
||||
$lang->execution->homeMenu = new stdclass();
|
||||
$lang->execution->homeMenu->all = array('link' => "{$lang->execution->all}|execution|all|", 'alias' => 'create,batchedit');
|
||||
$lang->execution->homeMenu->executionkanban = array('link' => "{$lang->execution->executionKanban}|execution|executionkanban|");
|
||||
|
||||
$lang->execution->menu = new stdclass();
|
||||
$lang->execution->menu->task = array('link' => "{$lang->task->common}|execution|task|executionID=%s", 'subModule' => 'task,tree', 'alias' => 'importtask,importbug');
|
||||
$lang->execution->menu->kanban = array('link' => "$lang->executionKanban|execution|taskkanban|executionID=%s");
|
||||
$lang->execution->menu->burn = array('link' => "$lang->burn|execution|burn|executionID=%s");
|
||||
$lang->execution->menu->view = array('link' => "$lang->view|execution|grouptask|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
|
||||
$lang->execution->menu = new stdclass();
|
||||
$lang->execution->menu->task = array('link' => "{$lang->task->common}|execution|task|executionID=%s", 'subModule' => 'task,tree', 'alias' => 'importtask,importbug', 'exclude' => 'tree-browse');
|
||||
$lang->execution->menu->kanban = array('link' => "$lang->executionKanban|execution|taskkanban|executionID=%s");
|
||||
$lang->execution->menu->burn = array('link' => "$lang->burn|execution|burn|executionID=%s");
|
||||
$lang->execution->menu->view = array('link' => "$lang->view|execution|grouptask|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
|
||||
|
||||
if($config->edition != 'open') $lang->execution->menu->view = array('link' => "$lang->view|execution|gantt|executionID=%s", 'alias' => 'grouptask,tree,taskeffort,gantt,calendar,relation,maintainrelation');
|
||||
|
||||
$lang->execution->menu->story = array('link' => "$lang->SRCommon|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'batchcreate,linkstory,storykanban,batchtotask');
|
||||
$lang->execution->menu->qa = array('link' => "{$lang->qa->common}|execution|bug|executionID=%s", 'subModule' => 'bug,testcase,testtask,testreport', 'alias' => 'qa,bug,testcase,testtask,testreport');
|
||||
$lang->execution->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->execution->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=execution&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->execution->menu->build = array('link' => "{$lang->build->common}|execution|build|executionID=%s", 'subModule' => 'build');
|
||||
$lang->execution->menu->action = array('link' => "$lang->dynamic|execution|dynamic|executionID=%s");
|
||||
$lang->execution->menu->settings = array('link' => "$lang->settings|execution|view|executionID=%s", 'subModule' => 'personnel', 'alias' => 'edit,manageproducts,team,whitelist,addwhitelist,managemembers', 'class' => 'dropdown dropdown-hover');
|
||||
if($config->systemMode == 'new') $lang->execution->menu->more = array('link' => "$lang->more|execution|more|%s");
|
||||
$lang->execution->menu->storyGroup = array('link' => "{$lang->common->story}|execution|story|executionID=%s",'class' => 'dropdown dropdown-hover', 'subModule' => 'story', 'alias' => 'batchcreate,storykanban');
|
||||
$lang->execution->menu->story = array('link' => "$lang->SRCommon|execution|story|executionID=%s", 'subModule' => 'story', 'alias' => 'storykanban');
|
||||
$lang->execution->menu->qa = array('link' => "{$lang->qa->common}|execution|bug|executionID=%s", 'subModule' => 'bug,testcase,testtask,testreport', 'alias' => 'qa,bug,testcase,testtask,testreport');
|
||||
$lang->execution->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->execution->menu->doc = array('link' => "{$lang->doc->common}|doc|tableContents|type=execution&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->execution->menu->build = array('link' => "{$lang->build->common}|execution|build|executionID=%s", 'subModule' => 'build');
|
||||
$lang->execution->menu->action = array('link' => "$lang->dynamic|execution|dynamic|executionID=%s");
|
||||
$lang->execution->menu->settings = array('link' => "$lang->settings|execution|view|executionID=%s", 'subModule' => 'personnel', 'alias' => 'edit,manageproducts,team,whitelist,addwhitelist,managemembers', 'class' => 'dropdown dropdown-hover');
|
||||
$lang->execution->menu->more = array('link' => "$lang->more|execution|more|%s");
|
||||
|
||||
$lang->execution->menu->storyGroup['dropMenu'] = new stdclass();
|
||||
$lang->execution->menu->storyGroup['dropMenu']->story = array('link' => "{$lang->SRCommon}|execution|story|executionID=%s", 'subModule' => 'story');
|
||||
$lang->execution->menu->storyGroup['dropMenu']->requirement = array('link' => "{$lang->URCommon}|execution|story|executionID=%s&storyType=requirement", 'subModule' => 'story');
|
||||
|
||||
/* Execution menu order. */
|
||||
$lang->execution->menuOrder[5] = 'task';
|
||||
@@ -366,7 +390,7 @@ $lang->execution->menu->qa['menuOrder'][10] = 'bug';
|
||||
$lang->execution->menu->qa['menuOrder'][15] = 'testcase';
|
||||
$lang->execution->menu->qa['menuOrder'][20] = 'testtask';
|
||||
|
||||
$lang->execution->menu->settings['subMenu'] = new stdclass();
|
||||
$lang->execution->menu->settings['subMenu'] = new stdclass();
|
||||
$lang->execution->menu->settings['subMenu']->view = array('link' => "$lang->overview|execution|view|executionID=%s", 'subModule' => 'view', 'alias' => 'edit,start,suspend,putoff,close');
|
||||
$lang->execution->menu->settings['subMenu']->products = array('link' => "$lang->productCommon|execution|manageproducts|executionID=%s");
|
||||
$lang->execution->menu->settings['subMenu']->team = array('link' => "{$lang->team->common}|execution|team|executionID=%s", 'alias' => 'managemembers');
|
||||
@@ -374,8 +398,51 @@ $lang->execution->menu->settings['subMenu']->whitelist = array('link' => "$lang-
|
||||
|
||||
$lang->execution->dividerMenu = ',story,build,';
|
||||
|
||||
$lang->project->noMultiple = new stdclass();
|
||||
$lang->project->noMultiple->scrum = new stdclass();
|
||||
$lang->project->noMultiple->scrum->menu = new stdclass();
|
||||
$lang->project->noMultiple->scrum->menu->task = $lang->execution->menu->task;
|
||||
$lang->project->noMultiple->scrum->menu->kanban = $lang->execution->menu->kanban;
|
||||
$lang->project->noMultiple->scrum->menu->burn = $lang->execution->menu->burn;
|
||||
$lang->project->noMultiple->scrum->menu->view = $lang->execution->menu->view;
|
||||
$lang->project->noMultiple->scrum->menu->story = $lang->execution->menu->story;
|
||||
$lang->project->noMultiple->scrum->menu->storyGroup = $lang->execution->menu->storyGroup;
|
||||
$lang->project->noMultiple->scrum->menu->qa = $lang->scrum->menu->qa;
|
||||
$lang->project->noMultiple->scrum->menu->devops = $lang->scrum->menu->devops;
|
||||
$lang->project->noMultiple->scrum->menu->doc = $lang->scrum->menu->doc;
|
||||
$lang->project->noMultiple->scrum->menu->build = $lang->scrum->menu->build;
|
||||
$lang->project->noMultiple->scrum->menu->release = $lang->scrum->menu->release;
|
||||
$lang->project->noMultiple->scrum->menu->dynamic = $lang->scrum->menu->dynamic;
|
||||
$lang->project->noMultiple->scrum->menu->settings = $lang->scrum->menu->settings;
|
||||
|
||||
$lang->project->noMultiple->kanban = new stdclass();
|
||||
$lang->project->noMultiple->kanban->menu = new stdclass();
|
||||
$lang->project->noMultiple->kanban->menu->kanban = array('link' => "{$lang->kanban->common}|execution|kanban|executionID=%s");
|
||||
$lang->project->noMultiple->kanban->menu->build = $lang->kanbanProject->menu->build;
|
||||
$lang->project->noMultiple->kanban->menu->settings = $lang->kanbanProject->menu->settings;
|
||||
|
||||
$lang->project->noMultiple->scrum->dividerMenu = ',story,build,';
|
||||
$lang->project->noMultiple->kanban->dividerMenu = '';
|
||||
|
||||
$lang->project->noMultiple->scrum->menuOrder[5] = 'task';
|
||||
$lang->project->noMultiple->scrum->menuOrder[10] = 'kanban';
|
||||
$lang->project->noMultiple->scrum->menuOrder[15] = 'burn';
|
||||
$lang->project->noMultiple->scrum->menuOrder[20] = 'view';
|
||||
$lang->project->noMultiple->scrum->menuOrder[25] = 'story';
|
||||
$lang->project->noMultiple->scrum->menuOrder[30] = 'qa';
|
||||
$lang->project->noMultiple->scrum->menuOrder[35] = 'devops';
|
||||
$lang->project->noMultiple->scrum->menuOrder[40] = 'doc';
|
||||
$lang->project->noMultiple->scrum->menuOrder[45] = 'build';
|
||||
$lang->project->noMultiple->scrum->menuOrder[48] = 'release';
|
||||
$lang->project->noMultiple->scrum->menuOrder[50] = 'dynamic';
|
||||
$lang->project->noMultiple->scrum->menuOrder[55] = 'settings';
|
||||
|
||||
$lang->project->noMultiple->kanban->menuOrder[5] = 'kanban';
|
||||
$lang->project->noMultiple->kanban->menuOrder[10] = 'build';
|
||||
$lang->project->noMultiple->kanban->menuOrder[15] = 'settings';
|
||||
|
||||
/* QA menu.*/
|
||||
$lang->qa->menu = new stdclass();
|
||||
$lang->qa->menu = new stdclass();
|
||||
$lang->qa->menu->index = array('link' => "$lang->dashboard|qa|index");
|
||||
$lang->qa->menu->bug = array('link' => "{$lang->bug->common}|bug|browse|productID=%s", 'subModule' => 'bug');
|
||||
$lang->qa->menu->testcase = array('link' => "{$lang->testcase->shortCommon}|testcase|browse|productID=%s", 'subModule' => 'testcase,story');
|
||||
@@ -406,7 +473,7 @@ $lang->qa->menuOrder[45] = 'automation';
|
||||
$lang->qa->dividerMenu = ',bug,testtask,caselib,';
|
||||
|
||||
/* DevOps menu. */
|
||||
$lang->devops->menu = new stdclass();
|
||||
$lang->devops->menu = new stdclass();
|
||||
$lang->devops->menu->code = array('link' => "{$lang->repo->common}|repo|browse|repoID=%s", 'alias' => 'diff,view,revision,log,blame,showsynccommit');
|
||||
$lang->devops->menu->mr = array('link' => "{$lang->devops->mr}|mr|browse|repoID=%s");
|
||||
$lang->devops->menu->compile = array('link' => "{$lang->devops->compile}|job|browse|repoID=%s", 'subModule' => 'compile,job');
|
||||
@@ -434,14 +501,14 @@ $lang->devops->menu->set['subMenu']->setrules = array('link' => "{$lang->devops
|
||||
$lang->kanban->menu = new stdclass();
|
||||
|
||||
/* Doc menu. */
|
||||
$lang->doc->menu = new stdclass();
|
||||
$lang->doc->menu = new stdclass();
|
||||
$lang->doc->menu->dashboard = array('link' => "{$lang->dashboard}|doc|index");
|
||||
$lang->doc->menu->recent = array('link' => "{$lang->doc->recent}|doc|browse|browseTyp=byediteddate", 'alias' => 'recent');
|
||||
$lang->doc->menu->my = array('link' => "{$lang->doc->my}|doc|browse|browseTyp=openedbyme", 'alias' => 'my');
|
||||
$lang->doc->menu->collect = array('link' => "{$lang->doc->favorite}|doc|browse|browseTyp=collectedbyme", 'alias' => 'collect');
|
||||
$lang->doc->menu->product = array('link' => "{$lang->doc->product}|doc|tableContents|type=product", 'alias' => 'showfiles,product');
|
||||
$lang->doc->menu->api = array('link' => "{$lang->doc->api}|api|index", 'alias' => 'api');
|
||||
if($config->systemMode == 'new') $lang->doc->menu->project = array('link' => "{$lang->doc->project}|doc|tableContents|type=project", 'alias' => 'showfiles,project');
|
||||
$lang->doc->menu->project = array('link' => "{$lang->doc->project}|doc|tableContents|type=project", 'alias' => 'showfiles,project');
|
||||
$lang->doc->menu->execution = array('link' => "{$lang->doc->execution}|doc|tableContents|type=execution", 'alias' => 'showfiles,execution');
|
||||
$lang->doc->menu->custom = array('link' => "{$lang->doc->custom}|doc|tableContents|type=custom", 'alias' => 'custom');
|
||||
|
||||
@@ -453,13 +520,13 @@ $lang->doc->menuOrder[10] = 'recent';
|
||||
$lang->doc->menuOrder[15] = 'my';
|
||||
$lang->doc->menuOrder[20] = 'collect';
|
||||
$lang->doc->menuOrder[25] = 'product';
|
||||
if($config->systemMode == 'new') $lang->doc->menuOrder[30] = 'project';
|
||||
$lang->doc->menuOrder[30] = 'project';
|
||||
$lang->doc->menuOrder[35] = 'execution';
|
||||
$lang->doc->menuOrder[36] = 'api';
|
||||
$lang->doc->menuOrder[40] = 'custom';
|
||||
|
||||
$lang->doc->menu->product['subMenu'] = new stdclass();
|
||||
if($config->systemMode == 'new') $lang->doc->menu->project['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->product['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->project['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->execution['subMenu'] = new stdclass();
|
||||
$lang->doc->menu->custom['subMenu'] = new stdclass();
|
||||
|
||||
@@ -506,21 +573,17 @@ $lang->admin->menu = new stdclass();
|
||||
$lang->admin->menu->index = array('link' => "$lang->indexPage|admin|index", 'alias' => 'register,certifytemail,certifyztmobile,ztcompany');
|
||||
$lang->admin->menu->company = array('link' => "{$lang->personnel->common}|company|browse|", 'subModule' => ',user,dept,group,');
|
||||
$lang->admin->menu->model = array('link' => "$lang->model|custom|browsestoryconcept|", 'class' => 'dropdown dropdown-hover', 'exclude' => 'custom-index,custom-set,custom-product,custom-execution,custom-kanban,custom-required,custom-flow,custom-score,custom-feedback,custom-timezone,custom-mode');
|
||||
$lang->admin->menu->custom = array('link' => "{$lang->custom->common}|custom|index", 'exclude' => 'custom-browsestoryconcept,custom-timezone,custom-estimate,custom-code');
|
||||
$lang->admin->menu->custom = array('link' => "{$lang->custom->common}|custom|index", 'exclude' => 'custom-browsestoryconcept,custom-timezone,custom-estimate,custom-code,custom-mode');
|
||||
$lang->admin->menu->extension = array('link' => "{$lang->extension->common}|extension|browse", 'subModule' => 'extension');
|
||||
$lang->admin->menu->dev = array('link' => "$lang->redev|dev|api", 'alias' => 'db', 'subModule' => 'dev,editor,entry');
|
||||
$lang->admin->menu->message = array('link' => "{$lang->message->common}|message|index", 'subModule' => 'message,mail,webhook');
|
||||
$lang->admin->menu->system = array('link' => "{$lang->admin->system}|backup|index", 'subModule' => 'cron,backup,action,admin,search,convert', 'exclude' => 'admin-index,admin-xuanxuan,admin-register,admin-ztcompany');
|
||||
$lang->admin->menu->system = array('link' => "{$lang->admin->system}|custom|mode", 'subModule' => 'cron,backup,action,admin,search,convert', 'exclude' => 'admin-index,admin-xuanxuan,admin-register,admin-ztcompany');
|
||||
|
||||
$lang->admin->menu->model['dropMenu'] = new stdclass();
|
||||
$lang->admin->menu->model['dropMenu']->allModel = array('link' => "{$lang->globalSetting}|custom|browsestoryconcept|", 'subModule' => 'measurement,report,sqlbuilder,subject,custom,meetingroom,baseline');
|
||||
|
||||
if($config->edition == 'max') $lang->admin->menu->model['dropMenu']->scrum = array('link' => "{$lang->scrumModel}|auditcl|scrumbrowse|processID=0&browseType=scrum", 'subModule' => 'auditcl,process,activity,zoutput,classify,');
|
||||
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->admin->menu->model['dropMenu']->waterfall = array('link' => "{$lang->waterfallModel}|stage|setType|", 'subModule' => 'stage,auditcl,cmcl,process,activity,zoutput,classify,reviewcl,reviewsetting,design');
|
||||
}
|
||||
$lang->admin->menu->model['dropMenu']->waterfall = array('link' => "{$lang->waterfallModel}|stage|setType|", 'subModule' => 'stage,auditcl,cmcl,process,activity,zoutput,classify,reviewcl,reviewsetting,design');
|
||||
|
||||
$lang->admin->menu->allModel['subMenu'] = new stdclass();
|
||||
$lang->admin->menu->allModel['subMenu']->storyConcept = array('link' => "{$lang->storyConcept}|custom|browsestoryconcept|");
|
||||
@@ -571,6 +634,8 @@ $lang->admin->menu->dev['menuOrder'][15] = 'editor';
|
||||
$lang->admin->menu->dev['menuOrder'][20] = 'entry';
|
||||
|
||||
$lang->admin->menu->system['subMenu'] = new stdclass();
|
||||
$lang->admin->menu->system['subMenu']->mode = array('link' => "{$lang->custom->mode}|custom|mode");
|
||||
$lang->admin->menu->system['subMenu']->setModule = array('link' => "{$lang->admin->module}|admin|setmodule");
|
||||
$lang->admin->menu->system['subMenu']->backup = array('link' => "{$lang->backup->common}|backup|index");
|
||||
$lang->admin->menu->system['subMenu']->trash = array('link' => "{$lang->action->trash}|action|trash");
|
||||
$lang->admin->menu->system['subMenu']->safe = array('link' => "$lang->security|admin|safe", 'alias' => 'checkweak,resetpwdsetting');
|
||||
@@ -622,6 +687,7 @@ $lang->navGroup->stakeholder = 'project';
|
||||
|
||||
$lang->navGroup->projectbuild = 'project';
|
||||
$lang->navGroup->projectstory = 'project';
|
||||
$lang->navGroup->projectplan = 'project';
|
||||
$lang->navGroup->review = 'project';
|
||||
$lang->navGroup->reviewissue = 'project';
|
||||
$lang->navGroup->pssp = 'project';
|
||||
@@ -649,7 +715,6 @@ $lang->navGroup->doc = 'doc';
|
||||
$lang->navGroup->doclib = 'doc';
|
||||
$lang->navGroup->api = 'doc';
|
||||
|
||||
|
||||
$lang->navGroup->report = 'report';
|
||||
|
||||
$lang->navGroup->qa = 'qa';
|
||||
@@ -711,3 +776,37 @@ $lang->navGroup->index = 'index';
|
||||
$lang->navGroup->tree = 'tree';
|
||||
$lang->navGroup->misc = 'misc';
|
||||
$lang->navGroup->upgrade = 'upgrade';
|
||||
|
||||
if(!$config->URAndSR) unset($lang->product->menu->requirement, $lang->product->menuOrder[35]);
|
||||
if(!helper::hasFeature('product_roadmap')) unset($lang->product->menu->roadmap, $lang->product->menuOrder[30]);
|
||||
if(!helper::hasFeature('product_track'))
|
||||
{
|
||||
unset($lang->product->menu->track, $lang->product->menuOrder[40]);
|
||||
$lang->product->dividerMenu = str_replace(',track,', ',doc,', $lang->product->dividerMenu);
|
||||
}
|
||||
if(!helper::hasFeature('waterfall')) unset($lang->admin->menu->model['dropMenu']->waterfall);
|
||||
|
||||
if(!helper::hasFeature('devops'))
|
||||
{
|
||||
unset($lang->mainNav->devops, $lang->mainNav->menuOrder[35]);
|
||||
unset($lang->scrum->menu->devops, $lang->scrum->menuOrder[25]);
|
||||
unset($lang->waterfall->menu->devops, $lang->waterfall->menuOrder[35]);
|
||||
}
|
||||
|
||||
if(!helper::hasFeature('kanban'))
|
||||
{
|
||||
unset($lang->mainNav->kanban, $lang->mainNav->menuOrder[40]);
|
||||
$lang->dividerMenu = str_replace(',kanban,' , ',doc,', $lang->dividerMenu);
|
||||
}
|
||||
|
||||
if($config->edition == 'max' and !helper::hasFeature('scrum_auditplan'))
|
||||
{
|
||||
if(!helper::hasFeature('scrum_process'))
|
||||
{
|
||||
$lang->admin->menu->model['dropMenu']->scrum = array('link' => "{$lang->scrumModel}|process|scrumbrowse|processID=0&browseType=scrum", 'subModule' => 'auditcl,process,activity,zoutput,classify,');
|
||||
}
|
||||
else
|
||||
{
|
||||
unset($lang->admin->menu->model['dropMenu']->scrum);
|
||||
}
|
||||
}
|
||||
|
||||
+15
-35
@@ -126,6 +126,7 @@ $lang->nameAB = 'Name';
|
||||
$lang->common = new stdclass();
|
||||
$lang->common->common = 'Module chung';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->repo->codeRepo = 'Code Repo';
|
||||
$lang->app->common = 'APP';
|
||||
$lang->app->serverLink = 'Server Link';
|
||||
|
||||
@@ -137,24 +138,17 @@ list($executionModule, $executionMethod) = explode('-', $config->executionLink);
|
||||
|
||||
/* Main menu. */
|
||||
$lang->mainNav = new stdclass();
|
||||
$lang->mainNav->my = '<i class="icon icon-menu-my"></i> My|my|index|';
|
||||
$lang->mainNav->product = "<i class='icon icon-menu-product'></i> Product|$productModule|$productMethod|";
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->mainNav->project = "<i class='icon icon-project'></i> Project|$projectModule|$projectMethod|";
|
||||
$lang->mainNav->execution = "<i class='icon icon-run'></i> Execution|$executionModule|$executionMethod|";
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->mainNav->execution = "<i class='icon icon-run'></i> $lang->executionCommon|$executionModule|$executionMethod|";
|
||||
}
|
||||
$lang->mainNav->qa = '<i class="icon icon-test"></i> Test|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> Code|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> Doc|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> Statistic|report|productsummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|company|browse|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
|
||||
if($config->systemMode == 'new') $lang->mainNav->program = "<i class='icon icon-program'></i> Program|$programModule|$programMethod|";
|
||||
$lang->mainNav->my = '<i class="icon icon-menu-my"></i> My|my|index|';
|
||||
$lang->mainNav->product = "<i class='icon icon-menu-product'></i> Product|$productModule|$productMethod|";
|
||||
$lang->mainNav->project = "<i class='icon icon-project'></i> Project|$projectModule|$projectMethod|";
|
||||
$lang->mainNav->execution = "<i class='icon icon-run'></i> Execution|$executionModule|$executionMethod|";
|
||||
$lang->mainNav->qa = '<i class="icon icon-test"></i> Test|qa|index|';
|
||||
$lang->mainNav->repo = '<i class="icon icon-code1"></i> Code|repo|browse|';
|
||||
$lang->mainNav->doc = '<i class="icon icon-doc"></i> Doc|doc|index|';
|
||||
$lang->mainNav->report = "<i class='icon icon-statistic'></i> Statistic|report|productsummary|";
|
||||
$lang->mainNav->system = '<i class="icon icon-menu-users"></i> System|company|browse|';
|
||||
$lang->mainNav->admin = '<i class="icon icon-menu-backend"></i> Admin|admin|index|';
|
||||
if($config->systemMode == 'ALM') $lang->mainNav->program = "<i class='icon icon-program'></i> Program|$programModule|$programMethod|";
|
||||
|
||||
$lang->dividerMenu = ',qa,report,admin,';
|
||||
|
||||
@@ -166,14 +160,7 @@ $lang->program->menu->browse = array('link' => 'Program|program|browse|', 'alias
|
||||
|
||||
$lang->project = new stdclass();
|
||||
$lang->project->menu = new stdclass();
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->project->menu->browse = array('link' => 'Project|project|browse|');
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->project->menu->browse = array('link' => "$lang->executionCommon|project|browse|");
|
||||
}
|
||||
$lang->project->menu->browse = array('link' => 'Project|project|browse|');
|
||||
|
||||
$lang->project->dividerMenu = ',execution,programplan,doc,dynamic,';
|
||||
|
||||
@@ -302,15 +289,8 @@ $lang->my->menu = new stdclass();
|
||||
|
||||
$lang->my->menu->index = 'Index|my|index';
|
||||
$lang->my->menu->myWork = array('link' => 'Work|my|work|mode=task');
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->menu->myProject = array('link' => 'Project|my|project|');
|
||||
$lang->my->menu->myExecution = 'Execution|my|execution|type=undone';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->my->menu->myExecution = $lang->executionCommon . '|my|execution|type=undone';
|
||||
}
|
||||
$lang->my->menu->myProject = array('link' => 'Project|my|project|');
|
||||
$lang->my->menu->myExecution = 'Execution|my|execution|type=undone';
|
||||
$lang->my->menu->contribute = array('link' => 'Contribute|my|contribute|mode=task');
|
||||
$lang->my->menu->dynamic = 'Dynamic|my|dynamic|';
|
||||
$lang->my->menu->score = 'Score|my|score|';
|
||||
|
||||
@@ -156,16 +156,18 @@ $lang->pri = '优先级';
|
||||
$lang->delayed = '已延期';
|
||||
|
||||
$lang->common->common = '公有模块';
|
||||
$lang->common->story = '需求';
|
||||
$lang->my->common = '地盘';
|
||||
$lang->program->common = '项目集';
|
||||
$lang->product->common = '产品';
|
||||
$lang->project->common = '项目';
|
||||
$lang->execution->common = $config->systemMode == 'new' ? '执行' : $lang->executionCommon;
|
||||
$lang->execution->common = '执行';
|
||||
$lang->kanban->common = '看板';
|
||||
$lang->qa->common = '测试';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = '文档';
|
||||
$lang->repo->common = '代码';
|
||||
$lang->repo->codeRepo = '代码库';
|
||||
$lang->report->common = '统计';
|
||||
$lang->system->common = '组织';
|
||||
$lang->admin->common = '后台';
|
||||
@@ -181,6 +183,7 @@ $lang->automation->common = '自动化';
|
||||
$lang->team->common = '团队';
|
||||
$lang->user->common = '用户';
|
||||
$lang->custom->common = '自定义';
|
||||
$lang->custom->mode = '模式';
|
||||
$lang->extension->common = '插件';
|
||||
$lang->company->common = '公司';
|
||||
$lang->dept->common = '部门';
|
||||
@@ -200,6 +203,7 @@ $lang->backup->common = '备份';
|
||||
$lang->action->trash = '回收站';
|
||||
$lang->app->common = '应用';
|
||||
$lang->app->serverLink = '服务器链接';
|
||||
$lang->review->common = '审批';
|
||||
|
||||
$lang->personnel->common = '人员';
|
||||
$lang->personnel->invest = '投入人员';
|
||||
@@ -289,6 +293,7 @@ $lang->devops->rules = '指令';
|
||||
$lang->devops->settings = '合并请求设置';
|
||||
$lang->devops->set = '设置';
|
||||
|
||||
$lang->admin->module = '功能设置';
|
||||
$lang->admin->system = '系统';
|
||||
$lang->admin->entry = '应用';
|
||||
$lang->admin->data = '数据';
|
||||
@@ -338,7 +343,7 @@ $lang->exportTypeList['selected'] = '选中记录';
|
||||
|
||||
$lang->visionList = array();
|
||||
$lang->visionList['rnd'] = '研发综合界面';
|
||||
$lang->visionList['lite'] = '迅捷界面';
|
||||
$lang->visionList['lite'] = '运营管理界面';
|
||||
|
||||
$lang->createObjects['todo'] = '待办';
|
||||
$lang->createObjects['effort'] = '日志';
|
||||
@@ -346,7 +351,7 @@ $lang->createObjects['bug'] = 'Bug';
|
||||
$lang->createObjects['story'] = '需求';
|
||||
$lang->createObjects['task'] = '任务';
|
||||
$lang->createObjects['testcase'] = '用例';
|
||||
$lang->createObjects['execution'] = $lang->execution->common;
|
||||
$lang->createObjects['execution'] = '执行';
|
||||
$lang->createObjects['project'] = '项目';
|
||||
$lang->createObjects['product'] = '产品';
|
||||
$lang->createObjects['program'] = '项目集';
|
||||
|
||||
@@ -146,12 +146,13 @@ $lang->my->common = '地盤';
|
||||
$lang->program->common = '項目集';
|
||||
$lang->product->common = '產品';
|
||||
$lang->project->common = '項目';
|
||||
$lang->execution->common = $config->systemMode == 'new' ? '執行' : $lang->executionCommon;
|
||||
$lang->execution->common = '執行';
|
||||
$lang->kanban->common = '看板';
|
||||
$lang->qa->common = '測試';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = '文檔';
|
||||
$lang->repo->common = '代碼';
|
||||
$lang->repo->codeRepo = '代碼庫';
|
||||
$lang->report->common = '統計';
|
||||
$lang->system->common = '組織';
|
||||
$lang->admin->common = '後台';
|
||||
|
||||
+46
-54
@@ -49,40 +49,32 @@ class commonModel extends model
|
||||
global $app;
|
||||
$rawModule = $app->rawModule;
|
||||
|
||||
if($this->config->systemMode == 'classic')
|
||||
if($rawModule == 'task' or $rawModule == 'effort')
|
||||
{
|
||||
if($rawModule == 'task') $this->syncExecutionStatus($objectID);
|
||||
$taskID = $objectID;
|
||||
$execution = $this->syncExecutionStatus($taskID);
|
||||
$project = $this->syncProjectStatus($execution);
|
||||
$this->syncProgramStatus($project);
|
||||
}
|
||||
|
||||
if($this->config->systemMode == 'new')
|
||||
if($rawModule == 'execution')
|
||||
{
|
||||
if($rawModule == 'task' or $rawModule == 'effort')
|
||||
{
|
||||
$taskID = $objectID;
|
||||
$execution = $this->syncExecutionStatus($taskID);
|
||||
$project = $this->syncProjectStatus($execution);
|
||||
$this->syncProgramStatus($project);
|
||||
}
|
||||
if($rawModule == 'execution')
|
||||
{
|
||||
$executionID = $objectID;
|
||||
$execution = $this->dao->select('id, project, grade, parent, status, deleted')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
|
||||
$this->syncExecutionByChild($execution);
|
||||
$project = $this->syncProjectStatus($execution);
|
||||
$this->syncProgramStatus($project);
|
||||
}
|
||||
if($rawModule == 'project')
|
||||
{
|
||||
$projectID = $objectID;
|
||||
$project = $this->dao->select('id, parent, path')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
|
||||
$this->syncProgramStatus($project);
|
||||
}
|
||||
if($rawModule == 'program')
|
||||
{
|
||||
$programID = $objectID;
|
||||
$program = $this->dao->select('id, parent, path')->from(TABLE_PROGRAM)->where('id')->eq($programID)->fetch();
|
||||
$this->syncProgramStatus($program);
|
||||
}
|
||||
$executionID = $objectID;
|
||||
$execution = $this->dao->select('id, project, grade, parent, status, deleted')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
|
||||
$this->syncExecutionByChild($execution);
|
||||
$project = $this->syncProjectStatus($execution);
|
||||
$this->syncProgramStatus($project);
|
||||
}
|
||||
if($rawModule == 'project')
|
||||
{
|
||||
$projectID = $objectID;
|
||||
$project = $this->dao->select('id, parent, path')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
|
||||
$this->syncProgramStatus($project);
|
||||
}
|
||||
if($rawModule == 'program' and $this->config->systemMode == 'ALM')
|
||||
{
|
||||
$programID = $objectID;
|
||||
$program = $this->dao->select('id, parent, path')->from(TABLE_PROGRAM)->where('id')->eq($programID)->fetch();
|
||||
$this->syncProgramStatus($program);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,8 +335,10 @@ class commonModel extends model
|
||||
$this->config->personal = isset($config[$account]) ? $config[$account] : array();
|
||||
|
||||
/* Overide the items defined in config/config.php and config/my.php. */
|
||||
if(isset($this->config->system->common)) $this->app->mergeConfig($this->config->system->common, 'common');
|
||||
if(isset($this->config->system->common)) $this->app->mergeConfig($this->config->system->common, 'common');
|
||||
if(isset($this->config->personal->common)) $this->app->mergeConfig($this->config->personal->common, 'common');
|
||||
|
||||
$this->config->disabledFeatures = $this->config->disabledFeatures . ',' . $this->config->closedFeatures;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -619,15 +613,13 @@ class commonModel extends model
|
||||
if(empty($object)) unset($lang->createIcons['story'], $lang->createIcons['task'], $lang->createIcons['execution']);
|
||||
}
|
||||
|
||||
if($config->edition == 'open') unset($lang->createIcons['effort']);
|
||||
if($config->systemMode == 'classic') unset($lang->createIcons['project'], $lang->createIcons['program']);
|
||||
if($config->edition == 'open') unset($lang->createIcons['effort']);
|
||||
if($config->systemMode == 'light') unset($lang->createIcons['program']);
|
||||
|
||||
/* Check whether the creation permission is available, and print create buttons. */
|
||||
|
||||
foreach($lang->createIcons as $objectType => $objectIcon)
|
||||
{
|
||||
/* Change icon when object type is execution and mode is classic. */
|
||||
if($config->systemMode == 'classic' and $objectType == 'execution') $objectIcon = 'project';
|
||||
|
||||
$createMethod = 'create';
|
||||
$module = $objectType == 'kanbanspace' ? 'kanban' : $objectType;
|
||||
if($objectType == 'effort') $createMethod = 'batchCreate';
|
||||
@@ -939,7 +931,6 @@ class commonModel extends model
|
||||
if($tab == 'product') $currentMethod = 'all';
|
||||
}
|
||||
|
||||
if($config->systemMode == 'classic' and $tab == 'execution') $icon = zget($lang->navIcons, 'project', '');
|
||||
$link = helper::createLink($currentModule, $currentMethod);
|
||||
$className = $tab == 'devops' ? 'btn num' : 'btn';
|
||||
$html = $link ? html::a($link, "$icon {$lang->$tab->common}", '', "class='$className' style='padding-top: 2px'") : "$icon {$lang->$tab->common}";
|
||||
@@ -1174,11 +1165,11 @@ class commonModel extends model
|
||||
{
|
||||
foreach($menuItem->dropMenu as $dropMenuName => $dropMenuItem)
|
||||
{
|
||||
if(empty($dropMenuItem)) continue;
|
||||
if(isset($dropMenuItem->hidden) and $dropMenuItem->hidden) continue;
|
||||
|
||||
/* Parse drop menu link. */
|
||||
$dropMenuLink = $dropMenuItem;
|
||||
if(is_array($dropMenuItem) and isset($dropMenuItem['link'])) $dropMenuLink = $dropMenuLink['link'];
|
||||
$dropMenuLink = zget($dropMenuItem, 'link', $dropMenuItem);
|
||||
|
||||
list($subLabel, $subModule, $subMethod, $subParams) = explode('|', $dropMenuLink);
|
||||
if(!common::hasPriv($subModule, $subMethod)) continue;
|
||||
@@ -1204,7 +1195,7 @@ class commonModel extends model
|
||||
$subActive = 'active';
|
||||
$label = $subLabel;
|
||||
}
|
||||
$dropMenu .= "<li class='$subActive' data-id='$subLabel'>" . html::a($subLink, $subLabel, '', "data-app='$tab'") . '</li>';
|
||||
$dropMenu .= "<li class='$subActive' data-id='$dropMenuName'>" . html::a($subLink, $subLabel, '', "data-app='$tab'") . '</li>';
|
||||
}
|
||||
|
||||
if(empty($dropMenu)) continue;
|
||||
@@ -1249,9 +1240,9 @@ class commonModel extends model
|
||||
echo "<ul id='searchTypeMenu' class='dropdown-menu'>";
|
||||
|
||||
$searchObjects = $lang->searchObjects;
|
||||
if($config->systemMode != 'new') unset($searchObjects['program'], $searchObjects['project']);
|
||||
if($config->systemMode == 'light') unset($searchObjects['program']);
|
||||
|
||||
foreach ($searchObjects as $key => $value)
|
||||
foreach($searchObjects as $key => $value)
|
||||
{
|
||||
$class = $key == $searchObject ? "class='selected'" : '';
|
||||
if($key == 'program') $key = 'program-product';
|
||||
@@ -1583,7 +1574,7 @@ class commonModel extends model
|
||||
$currentMethod = strtolower($method);
|
||||
if(strpos($misc, 'data-app') === false) $misc .= ' data-app="' . $app->tab . '"';
|
||||
|
||||
if(!commonModel::hasPriv($module, $method, $object) and !in_array("$currentModule.$currentMethod", $config->openMethods)) return false;
|
||||
if(!commonModel::hasPriv($module, $method, $object, $vars) and !in_array("$currentModule.$currentMethod", $config->openMethods)) return false;
|
||||
echo html::a(helper::createLink($module, $method, $vars, '', $onlyBody), $label, $target, $misc, $newline);
|
||||
return true;
|
||||
}
|
||||
@@ -1700,7 +1691,6 @@ EOD;
|
||||
if(strtolower($module) == 'story' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'tostory') ($module = 'story') and ($method = 'create');
|
||||
if(strtolower($module) == 'bug' and strtolower($method) == 'createcase') ($module = 'testcase') and ($method = 'create');
|
||||
if($config->systemMode == 'classic' and strtolower($module) == 'project') $module = 'execution';
|
||||
if(!commonModel::hasPriv($module, $method, $object, $vars)) return false;
|
||||
|
||||
$link = helper::createLink($module, $method, $vars, '', $onlyBody, $programID);
|
||||
@@ -2436,8 +2426,6 @@ EOD;
|
||||
|
||||
if(isset($this->app->user))
|
||||
{
|
||||
if(in_array($module, $this->config->programPriv->waterfall) and $this->app->tab == 'project' and $method != 'browse') return true;
|
||||
|
||||
$this->app->user = $this->session->user;
|
||||
if(!commonModel::hasPriv($module, $method))
|
||||
{
|
||||
@@ -2627,21 +2615,24 @@ EOD;
|
||||
foreach($programRights as $programRight) $programRightGroup[strtolower($programRight->module)][strtolower($programRight->method)] = 1;
|
||||
|
||||
/* Reset priv by program privway. */
|
||||
$rights = $this->app->user->rights['rights'];
|
||||
$this->app->user = clone $_SESSION['user'];
|
||||
$rights = $this->app->user->rights['rights'];
|
||||
|
||||
if($this->app->user->account == $program->openedBy or $this->app->user->account == $program->PM) $program->auth = 'extend';
|
||||
|
||||
if($program->auth == 'extend') $this->app->user->rights['rights'] = array_merge_recursive($programRightGroup, $rights);
|
||||
if($program->auth == 'reset')
|
||||
{
|
||||
$recomputedRights = $this->loadModel('user')->authorize($this->app->user->account);
|
||||
$recomputedRights = $recomputedRights['rights'];
|
||||
|
||||
/* If priv way is reset, unset common program priv, and cover by program priv. */
|
||||
foreach($rights as $moduleKey => $methods)
|
||||
$projectPrivs = $this->loadModel('project')->processProjectPrivs($program->multiple ? $program->model : 'noSprint');
|
||||
foreach($projectPrivs as $module => $methods)
|
||||
{
|
||||
if(in_array($moduleKey, $this->config->programPriv->waterfall)) unset($rights[$moduleKey]);
|
||||
foreach($methods as $method => $label)
|
||||
{
|
||||
$module = strtolower($module);
|
||||
$method = strtolower($method);
|
||||
if(isset($rights[$module][$method])) unset($rights[$module][$method]);
|
||||
}
|
||||
}
|
||||
|
||||
$recomputedRights = array_merge($rights, $programRightGroup);
|
||||
@@ -2653,6 +2644,7 @@ EOD;
|
||||
if(isset($projectRights['index']) and !isset($recomputedRights['project']['index'])) $recomputedRights['project']['index'] = 1;
|
||||
|
||||
$this->app->user->rights['rights'] = $recomputedRights;
|
||||
$this->session->set('user', $this->app->user);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3422,7 +3414,7 @@ EOD;
|
||||
* @param int $objectID
|
||||
* @param array $params
|
||||
*/
|
||||
static private function setMenuVarsEx($menu, $objectID, $params = array())
|
||||
static public function setMenuVarsEx($menu, $objectID, $params = array())
|
||||
{
|
||||
if(is_array($menu))
|
||||
{
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php
|
||||
if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}
|
||||
$clientLang = $app->getClientLang();
|
||||
$webRoot = $this->app->getWebRoot();
|
||||
@@ -81,7 +81,7 @@ $xuanExtFile = $extensionRoot . 'xuan/common/ext/view/header.xuanxuan.html.hook.
|
||||
if(file_exists($xuanExtFile)) include $xuanExtFile;
|
||||
?>
|
||||
</head>
|
||||
<?php
|
||||
<?php
|
||||
$bodyClass = $this->app->getViewType() == 'xhtml' ? 'allow-self-open' : '';
|
||||
if(isset($pageBodyClass)) $bodyClass = $bodyClass . ' ' . $pageBodyClass;
|
||||
if($this->moduleName == 'index' && $this->methodName == 'index') $bodyClass .= ' menu-' . ($this->cookie->hideMenu ? 'hide' : 'show');
|
||||
|
||||
@@ -11,7 +11,7 @@ $config->company->dynamic->search['module'] = 'action';
|
||||
|
||||
if($config->vision == 'rnd') $config->company->dynamic->search['fields']['product'] = $lang->action->product;
|
||||
|
||||
if($config->systemMode == 'new') $config->company->dynamic->search['fields']['project'] = '项目';
|
||||
$config->company->dynamic->search['fields']['project'] = '项目';
|
||||
$config->company->dynamic->search['fields']['execution'] = $lang->action->execution;
|
||||
$config->company->dynamic->search['fields']['actor'] = $lang->action->actor;
|
||||
$config->company->dynamic->search['fields']['objectID'] = $lang->action->objectID;
|
||||
|
||||
@@ -222,7 +222,7 @@ class company extends control
|
||||
$this->view->projects = array($this->lang->company->project) + $projects;;
|
||||
|
||||
/* Get executions' list.*/
|
||||
$executions = $this->loadModel('execution')->getPairs(0, 'all', 'nocode');
|
||||
$executions = $this->loadModel('execution')->getPairs(0, 'all', 'nocode|multiple');
|
||||
$executionsIDList = array_keys($executions);
|
||||
$executionsList = $this->execution->getByIdList($executionsIDList);
|
||||
foreach($executionsList as $executionsID => $executionObj)
|
||||
|
||||
@@ -20,7 +20,8 @@
|
||||
|
||||
.c-project, .c-product, .c-execution {width: 110px !important; overflow: unset;}
|
||||
.c-user, .c-order {width: 96px !important; overflow: unset;}
|
||||
.c-date {width: 200px;}
|
||||
#mainMenu .picker .picker-selections{white-space:nowrap;}
|
||||
.picker-drop-menu{width:auto !important; max-width:350px !important;}
|
||||
|
||||
.timeline > li:before {left: -26px;}
|
||||
.timeline > li + li:after {left: -23px;}
|
||||
|
||||
@@ -2,7 +2,7 @@ $('#account, #product, #project, #execution, #orderBy').change(function()
|
||||
{
|
||||
var userID = $('#account').val();
|
||||
var productID = $('#product').length ? $('#product').val() : 0;
|
||||
var projectID = systemMode == 'new' ? $('#project').val() : 0;
|
||||
var projectID = $('#project').val();
|
||||
var executionID = $('#execution').val();
|
||||
var orderBy = $('#orderBy').val();
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('browseType', $browseType);?>
|
||||
<?php js::set('systemMode', $config->systemMode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php foreach($lang->action->periods as $period => $label):?>
|
||||
@@ -32,9 +31,7 @@
|
||||
<?php if($this->config->vision == 'rnd'):?>
|
||||
<div class="input-control space c-product"><?php echo html::select('product', $products, $productID, 'class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<?php endif;?>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<div class="input-control space c-project"><?php echo html::select('project', $projects, $projectID, 'class="form-control chosen" data-max_drop_width="215"');?></div>
|
||||
<?php endif;?>
|
||||
<div class="input-control space c-execution"><?php echo html::select('execution', $executions, $executionID, 'class="form-control chosen" data-max_drop_width="350"'); ?></div>
|
||||
<div class="input-control space c-order"><?php echo html::select('orderBy', $lang->company->order, $orderBy, 'class="form-control chosen" data-max_drop_width="215" data-disable_search="true"'); ?></div>
|
||||
<a class="btn btn-link querybox-toggle" id="bysearchTab"><i class="icon icon-search muted"></i> <?php echo $lang->action->dynamic->search;?></a>
|
||||
|
||||
@@ -17,11 +17,14 @@ $config->custom->requiredModules[15] = 'story';
|
||||
$config->custom->requiredModules[20] = 'productplan';
|
||||
$config->custom->requiredModules[25] = 'release';
|
||||
|
||||
if($config->systemMode == 'new') $config->custom->requiredModules[30] = 'project';
|
||||
$config->custom->requiredModules[30] = 'project';
|
||||
$config->custom->requiredModules[35] = 'execution';
|
||||
$config->custom->requiredModules[40] = 'task';
|
||||
$config->custom->requiredModules[45] = 'build';
|
||||
|
||||
$config->custom->allFeatures = array('program', 'productRR', 'productUR', 'productLine', 'projectScrum', 'projectWaterfall', 'projectKanban', 'execution', 'vision');
|
||||
$config->custom->features = array('waterfall', 'productUR');
|
||||
|
||||
$config->custom->requiredModules[50] = 'bug';
|
||||
$config->custom->requiredModules[55] = 'testcase';
|
||||
$config->custom->requiredModules[60] = 'testsuite';
|
||||
|
||||
+57
-30
@@ -21,11 +21,7 @@ class custom extends control
|
||||
{
|
||||
if($this->config->vision == 'lite') return print(js::locate(inlink('execution')));
|
||||
|
||||
if(($this->config->systemMode == 'new') and common::hasPriv('custom', 'set'))
|
||||
{
|
||||
return print(js::locate(inlink('set', "module=project&field=" . key($this->lang->custom->project->fields))));
|
||||
}
|
||||
|
||||
if(common::hasPriv('custom', 'set')) return print(js::locate(inlink('set', "module=project&field=" . key($this->lang->custom->project->fields))));
|
||||
if(common::hasPriv('custom', 'product')) return print(js::locate(inlink('product')));
|
||||
if(common::hasPriv('custom', 'execution')) return print(js::locate(inlink('execution')));
|
||||
|
||||
@@ -609,7 +605,7 @@ class custom extends control
|
||||
if($this->config->edition != 'max') $this->loadModel('setting')->setItem('system.custom.hourPoint', $this->post->hourPoint);
|
||||
|
||||
$this->app->loadLang('common');
|
||||
$locate = $this->config->systemMode == 'new' ? inlink('flow') : 'top';
|
||||
$locate = inlink('flow');
|
||||
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locate));
|
||||
}
|
||||
@@ -627,42 +623,73 @@ class custom extends control
|
||||
*/
|
||||
public function mode()
|
||||
{
|
||||
$mode = zget($this->config->global, 'mode', 'classic');
|
||||
$mode = zget($this->config->global, 'mode', 'light');
|
||||
if($this->post->mode and $this->post->mode != $mode) // If mode value change.
|
||||
{
|
||||
$mode = fixer::input('post')->get('mode');
|
||||
$this->loadModel('setting')->setItem('system.common.global.mode', $mode);
|
||||
$this->setting->setItem('system.common.global.changedMode', 'yes');
|
||||
$mode = fixer::input('post')->get('mode');
|
||||
$program = isset($_POST['program']) ? $_POST['program'] : 0;
|
||||
|
||||
$sprintConcept = isset($this->config->custom->sprintConcept) ? $this->config->custom->sprintConcept : '0';
|
||||
if($mode == 'new')
|
||||
if($mode == 'light' and empty($program)) $program = $this->loadModel('program')->createDefaultProgram();
|
||||
|
||||
$this->loadModel('setting')->setItem('system.common.global.mode', $mode);
|
||||
$this->setting->setItem('system.common.global.defaultProgram', $program);
|
||||
|
||||
/* Set default program for product and project with no program. */
|
||||
$this->loadModel('upgrade')->relateDefaultProgram($program);
|
||||
|
||||
$this->custom->disableFeaturesByMode($mode);
|
||||
|
||||
if($mode == 'light') $this->custom->processProjectAcl();
|
||||
|
||||
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'top'));
|
||||
}
|
||||
|
||||
$disabledFeatures = array('program', 'productLine');
|
||||
foreach($this->config->custom->features as $feature)
|
||||
{
|
||||
$function = 'has' . ucfirst($feature) . 'Data';
|
||||
if(!$this->custom->$function())
|
||||
{
|
||||
if($sprintConcept == 2) $this->setting->setItem('system.custom.sprintConcept', 1);
|
||||
if($sprintConcept == 1) $this->setting->setItem('system.custom.sprintConcept', 0);
|
||||
return print(js::locate($this->createLink('upgrade', 'mergeTips'), 'parent'));
|
||||
}
|
||||
else
|
||||
{
|
||||
if($sprintConcept == 0) $this->setting->setItem('system.custom.sprintConcept', 1);
|
||||
if($sprintConcept == 1) $this->setting->setItem('system.custom.sprintConcept', 2);
|
||||
return print(js::reload('top'));
|
||||
if(strpos($feature, 'scrum') !== false)
|
||||
{
|
||||
$disabledFeatures['scrum'][] = $feature;
|
||||
}
|
||||
elseif($feature == 'waterfall')
|
||||
{
|
||||
$disabledFeatures[] = 'project' . ucfirst($feature);
|
||||
}
|
||||
else
|
||||
{
|
||||
$disabledFeatures[] = $feature;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($mode == 'new')
|
||||
$enabledScrumFeatures = array();
|
||||
$disabledScrumFeatures = array();
|
||||
foreach($this->config->custom->scrumFeatures as $scrumFeature)
|
||||
{
|
||||
if(isset($this->config->global->upgradeStep) and $this->config->global->upgradeStep == 'mergeProgram') return print(js::locate($this->createLink('upgrade', 'mergeProgram'), 'parent'));
|
||||
|
||||
unset($_SESSION['upgrading']);
|
||||
if(in_array('scrum' . ucfirst($scrumFeature), $disabledFeatures['scrum']))
|
||||
{
|
||||
$disabledScrumFeatures[] = $this->lang->custom->scrum->features[$scrumFeature];
|
||||
}
|
||||
else
|
||||
{
|
||||
$enabledScrumFeatures[] = $this->lang->custom->scrum->features[$scrumFeature];
|
||||
}
|
||||
}
|
||||
|
||||
$this->app->loadLang('upgrade');
|
||||
|
||||
$this->view->title = $this->lang->custom->mode;
|
||||
$this->view->position[] = $this->lang->custom->common;
|
||||
$this->view->position[] = $this->view->title;
|
||||
$this->view->mode = $mode;
|
||||
$this->view->changedMode = zget($this->config->global, 'changedMode', 'no');
|
||||
$this->view->title = $this->lang->custom->mode;
|
||||
$this->view->position[] = $this->lang->custom->common;
|
||||
$this->view->position[] = $this->view->title;
|
||||
$this->view->mode = $mode;
|
||||
$this->view->programs = $this->loadModel('program')->getTopPairs('', 'noclosed', true);
|
||||
$this->view->programID = isset($this->config->global->defaultProgram) ? $this->config->global->defaultProgram : 0;
|
||||
$this->view->disabledFeatures = $disabledFeatures;
|
||||
$this->view->enabledScrumFeatures = implode($this->lang->comma, $enabledScrumFeatures);
|
||||
$this->view->disabledScrumFeatures = implode($this->lang->comma, $disabledScrumFeatures);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
.pd-l-20{padding-left: 20px!important;}
|
||||
#selectProgramModal .modal-dialog {width: 550px}
|
||||
#selectProgramModal .modal-header {border-bottom: 0px}
|
||||
#selectProgramModal .modal-header h4.modal-title{font-weight: 700}
|
||||
#selectProgramModal .modal-footer {border-top: 0px; text-align: center}
|
||||
@@ -1,8 +1,40 @@
|
||||
$(function()
|
||||
{
|
||||
$('#modeTab').addClass('btn-active-text');
|
||||
|
||||
$('[name=mode]').change(function()
|
||||
{
|
||||
$(this).val() == 'new' ? $('#changeModeTips').removeClass('hidden') : $('#changeModeTips').addClass('hidden');
|
||||
$('#submit').prop('disabled', 'disabled');
|
||||
if(mode != $(this).val()) $('#submit').prop('disabled', '');
|
||||
$('#program').closest('tr').toggle(mode == 'ALM' && $(this).val() == 'light');
|
||||
});
|
||||
|
||||
$(document).on('click', '#submit', function()
|
||||
{
|
||||
var selectedMode = $('[name=mode]:checked').val();
|
||||
if(mode == selectedMode) return false;
|
||||
|
||||
if(selectedMode == 'light' && hasProgram)
|
||||
{
|
||||
$('#selectProgramModal').modal('show');
|
||||
}
|
||||
else
|
||||
{
|
||||
bootbox.confirm(changeModeTips, function(result)
|
||||
{
|
||||
if(result) $('#modeForm').submit();
|
||||
});
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$(document).on('click', '.btn-save', function()
|
||||
{
|
||||
setTimeout(function()
|
||||
{
|
||||
$('#selectProgramModal').modal('hide');
|
||||
$('#modeForm').submit();
|
||||
}, 1000);
|
||||
});
|
||||
})
|
||||
|
||||
+29
-27
@@ -33,7 +33,6 @@ $lang->custom->URStory = "User requirements";
|
||||
$lang->custom->SRStory = "Software requirements";
|
||||
$lang->custom->epic = "Epic";
|
||||
$lang->custom->default = "Default";
|
||||
$lang->custom->mode = "Mode";
|
||||
$lang->custom->scrumStory = "Story";
|
||||
$lang->custom->waterfallCommon = "Waterfall";
|
||||
$lang->custom->buildin = "Buildin";
|
||||
@@ -56,9 +55,10 @@ $lang->custom->role = 'Role';
|
||||
$lang->custom->dept = 'Dept';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = 'Enable or Disable Code';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
|
||||
if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = 'Execution';
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->defaultProgram = 'Default program';
|
||||
$lang->custom->selectDefaultProgram = 'Please select default program';
|
||||
$lang->custom->modeManagement = 'Mode Management';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
@@ -89,7 +89,7 @@ $lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
|
||||
$lang->custom->closedKanban = 'Closed ' . $lang->custom->kanban;
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->custom->execution;
|
||||
$lang->custom->object['kanban'] = $lang->custom->kanban;
|
||||
@@ -101,10 +101,10 @@ $lang->custom->object['testtask'] = 'Build';
|
||||
$lang->custom->object['todo'] = 'Todo';
|
||||
$lang->custom->object['user'] = 'User';
|
||||
$lang->custom->object['block'] = 'ClosedBlock';
|
||||
$lang->custom->object['flow'] = '流程';
|
||||
$lang->custom->object['score'] = '积分';
|
||||
$lang->custom->object['flow'] = 'Flow';
|
||||
$lang->custom->object['score'] = 'Score';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[10] = 'product';
|
||||
$lang->custom->menuOrder[15] = 'execution';
|
||||
$lang->custom->menuOrder[20] = 'kanban';
|
||||
@@ -237,25 +237,27 @@ $lang->custom->weekendList[2] = '2-Day Off';
|
||||
$lang->custom->weekendList[1] = '1-Day Off';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
}
|
||||
$lang->custom->sprintConceptList[0] = 'Program Product Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program Product Sprint';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Full Management of Dev';
|
||||
|
||||
$lang->custom->menuTip = 'Click to show/hide navigation bar. Drag to swtich display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeClassicTip = 'The Program module will be hidden, if you switch to the classic mode.';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
$lang->custom->menuTip = 'Click to show/hide the menu. Drag to switch display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->currentModeTips = 'You are currently using %s, you can switch to the %s.';
|
||||
$lang->custom->changeModeTips = 'Please double confirm to switch to %s Mode.';
|
||||
$lang->custom->selectProgramTips = 'After switching to the Light Mode, in order to ensure the consistency of the data structure, you need to select a program as the default program, and subsequent new product and project data are associated with this default program.';
|
||||
|
||||
$lang->custom->modeList['light'] = 'Light Mode';
|
||||
$lang->custom->modeList['ALM'] = 'ALM Mode';
|
||||
|
||||
$lang->custom->modeIntrodutionList['light'] = 'Light Mode suitable for small software development teams.';
|
||||
$lang->custom->modeIntrodutionList['ALM'] = 'ALM Mode suitable for medium and large software R&D teams';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = 'Waterfall';
|
||||
$lang->custom->needClosedFunctions['URStory'] = 'User Story';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = 'Assetlib';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
@@ -273,9 +275,9 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['execution'] = $lang->custom->execution;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. Which of the following units is your company using for scale estimation?";
|
||||
$lang->custom->conceptQuestions['overview'] = "Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "Which of the following units is your company using for scale estimation?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
+29
-27
@@ -33,7 +33,6 @@ $lang->custom->URStory = "User requirements";
|
||||
$lang->custom->SRStory = "Software requirements";
|
||||
$lang->custom->epic = "Epic";
|
||||
$lang->custom->default = "Default";
|
||||
$lang->custom->mode = "Mode";
|
||||
$lang->custom->scrumStory = "Story";
|
||||
$lang->custom->waterfallCommon = "Waterfall";
|
||||
$lang->custom->buildin = "Buildin";
|
||||
@@ -56,9 +55,10 @@ $lang->custom->role = 'Role';
|
||||
$lang->custom->dept = 'Dept';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = 'Enable or Disable Code';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
|
||||
if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = $lang->executionCommon;
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->selectDefaultProgram = 'Please select default program';
|
||||
$lang->custom->defaultProgram = 'Default program';
|
||||
$lang->custom->modeManagement = 'Mode Management';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
@@ -89,7 +89,7 @@ $lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
|
||||
$lang->custom->closedKanban = 'Closed ' . $lang->custom->kanban;
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->custom->execution;
|
||||
$lang->custom->object['kanban'] = $lang->custom->kanban;
|
||||
@@ -101,10 +101,10 @@ $lang->custom->object['testtask'] = 'Request';
|
||||
$lang->custom->object['todo'] = 'Todo';
|
||||
$lang->custom->object['user'] = 'User';
|
||||
$lang->custom->object['block'] = 'Block';
|
||||
$lang->custom->object['flow'] = '流程';
|
||||
$lang->custom->object['score'] = '积分';
|
||||
$lang->custom->object['flow'] = 'Flow';
|
||||
$lang->custom->object['score'] = 'Score';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[10] = 'product';
|
||||
$lang->custom->menuOrder[15] = 'execution';
|
||||
$lang->custom->menuOrder[20] = 'kanban';
|
||||
@@ -237,25 +237,27 @@ $lang->custom->weekendList[2] = '2-Day Off';
|
||||
$lang->custom->weekendList[1] = '1-Day Off';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
}
|
||||
$lang->custom->sprintConceptList[0] = 'Program Product Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program Product Sprint';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Application Lifecycle Management';
|
||||
|
||||
$lang->custom->menuTip = 'Click to show/hide the menu. Drag to switch display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeClassicTip = 'The Program module will be hidden, if you switch to the classic mode.';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
$lang->custom->menuTip = 'Click to show/hide the menu. Drag to switch display order.';
|
||||
$lang->custom->saveFail = 'Failed to save!';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->currentModeTips = 'You are currently using %s, you can switch to the %s.';
|
||||
$lang->custom->changeModeTips = 'Please double confirm to switch to %s Mode.';
|
||||
$lang->custom->selectProgramTips = 'After switching to the Light Mode, in order to ensure the consistency of the data structure, you need to select a program as the default program, and subsequent new product and project data are associated with this default program.';
|
||||
|
||||
$lang->custom->modeList['light'] = 'Light Mode';
|
||||
$lang->custom->modeList['ALM'] = 'ALM Mode';
|
||||
|
||||
$lang->custom->modeIntrodutionList['light'] = 'Light Mode suitable for small software development teams.';
|
||||
$lang->custom->modeIntrodutionList['ALM'] = 'ALM Mode suitable for medium and large software R&D teams';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = 'Waterfall';
|
||||
$lang->custom->needClosedFunctions['URStory'] = 'User Story';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = 'Assetlib';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
@@ -273,9 +275,9 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['execution'] = $lang->custom->execution;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. Which of the following units is your company using for scale estimation?";
|
||||
$lang->custom->conceptQuestions['overview'] = "Which combination of management fits your company?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "Which of the following units is your company using for scale estimation?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
+29
-27
@@ -33,7 +33,6 @@ $lang->custom->URStory = "User requirements";
|
||||
$lang->custom->SRStory = "Software requirements";
|
||||
$lang->custom->epic = "Epic";
|
||||
$lang->custom->default = "Default";
|
||||
$lang->custom->mode = "Mode";
|
||||
$lang->custom->scrumStory = "Story";
|
||||
$lang->custom->waterfallCommon = "Waterfall";
|
||||
$lang->custom->buildin = "Buildin";
|
||||
@@ -56,9 +55,10 @@ $lang->custom->role = 'Role';
|
||||
$lang->custom->dept = 'Dept';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = 'Activer ou Désactiver le Code';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
|
||||
if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = 'Execution';
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->selectDefaultProgram = 'Please select default program';
|
||||
$lang->custom->defaultProgram = 'Default program';
|
||||
$lang->custom->modeManagement = 'Mode Management';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
@@ -89,7 +89,7 @@ $lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
|
||||
$lang->custom->closedKanban = 'Closed ' . $lang->custom->kanban;
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->custom->execution;
|
||||
$lang->custom->object['kanban'] = $lang->custom->kanban;
|
||||
@@ -101,10 +101,10 @@ $lang->custom->object['testtask'] = 'Build';
|
||||
$lang->custom->object['todo'] = 'Agenda';
|
||||
$lang->custom->object['user'] = 'Utilisateur';
|
||||
$lang->custom->object['block'] = 'Bloc';
|
||||
$lang->custom->object['flow'] = '流程';
|
||||
$lang->custom->object['score'] = '积分';
|
||||
$lang->custom->object['flow'] = 'Flow';
|
||||
$lang->custom->object['score'] = 'Score';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[10] = 'product';
|
||||
$lang->custom->menuOrder[15] = 'execution';
|
||||
$lang->custom->menuOrder[20] = 'kanban';
|
||||
@@ -237,25 +237,27 @@ $lang->custom->weekendList[2] = '2-Jour';
|
||||
$lang->custom->weekendList[1] = '1-Jour';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
}
|
||||
$lang->custom->sprintConceptList[0] = 'Program Product Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program Product Sprint';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Application Lifecycle Management';
|
||||
|
||||
$lang->custom->menuTip = "Cliquez pour montrer/cacher le menu. Déplacez pour changer l'ordre d'affichage.";
|
||||
$lang->custom->saveFail = 'Echec de la sauvegarde !';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->changeClassicTip = 'The Program module will be hidden, if you switch to the classic mode.';
|
||||
$lang->custom->changeModeTips = 'Historical deleted data does not participate in the data merging process. After switching the mode, it will not support restoration. Please know.';
|
||||
$lang->custom->menuTip = "Cliquez pour montrer/cacher le menu. Déplacez pour changer l'ordre d'affichage.";
|
||||
$lang->custom->saveFail = 'Echec de la sauvegarde !';
|
||||
$lang->custom->page = ' Page';
|
||||
$lang->custom->currentModeTips = 'You are currently using %s, you can switch to the %s.';
|
||||
$lang->custom->changeModeTips = 'Please double confirm to switch to %s Mode.';
|
||||
$lang->custom->selectProgramTips = 'After switching to the Light Mode, in order to ensure the consistency of the data structure, you need to select a program as the default program, and subsequent new product and project data are associated with this default program.';
|
||||
|
||||
$lang->custom->modeList['light'] = 'Light Mode';
|
||||
$lang->custom->modeList['ALM'] = 'ALM Mode';
|
||||
|
||||
$lang->custom->modeIntrodutionList['light'] = 'Light Mode suitable for small software development teams.';
|
||||
$lang->custom->modeIntrodutionList['ALM'] = 'ALM Mode suitable for medium and large software R&D teams';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = 'Waterfall';
|
||||
$lang->custom->needClosedFunctions['URStory'] = 'User Story';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = 'Assetlib';
|
||||
|
||||
$lang->custom->scoreStatus[1] = 'On';
|
||||
$lang->custom->scoreStatus[0] = 'Off';
|
||||
@@ -273,9 +275,9 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = 'Plan';
|
||||
$lang->custom->moduleName['execution'] = $lang->custom->execution;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. Quelle combinaison de gestion convient le mieux à votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. Which of the following units is your company using for scale estimation?";
|
||||
$lang->custom->conceptQuestions['overview'] = "Quelle combinaison de gestion convient le mieux à votre entreprise ?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "Do you want to use the concept of {$lang->URCommon} and {$lang->SRCommon} in ZenTao?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "Which of the following units is your company using for scale estimation?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
@@ -48,8 +48,8 @@ $lang->custom->switch = "Switch";
|
||||
$lang->custom->oneUnit = "One {$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "Please firstly set the conversion factor from {$lang->hourCommon} to %s";
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->execution = 'Execution';
|
||||
if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = $lang->executionCommon;
|
||||
$lang->custom->execution = 'Execution';
|
||||
$lang->custom->defaultProgram = 'Default program';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
@@ -79,7 +79,7 @@ $lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
$lang->custom->closedExecution = 'Closed ' . $lang->executionCommon;
|
||||
$lang->custom->closedProduct = 'Closed ' . $lang->productCommon;
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['project'] = 'Project';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->custom->execution;
|
||||
$lang->custom->object['story'] = 'Câu chuyện';
|
||||
@@ -199,17 +199,9 @@ $lang->custom->weekendList[2] = '2 ngày nghỉ';
|
||||
$lang->custom->weekendList[1] = '1 ngày nghỉ';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = 'Program - Product - Iteration';
|
||||
$lang->custom->sprintConceptList[1] = 'Program - Product - Sprint';
|
||||
}
|
||||
$lang->custom->sprintConceptList[0] = 'Product - Project';
|
||||
$lang->custom->sprintConceptList[1] = 'Product - Iteration';
|
||||
$lang->custom->sprintConceptList[2] = 'Product - Sprint';
|
||||
|
||||
$lang->custom->workingList['full'] = 'Quản lý vòng đời ứng dụng';
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ $lang->custom->URStory = "用户需求";
|
||||
$lang->custom->SRStory = "软件需求";
|
||||
$lang->custom->epic = "史诗";
|
||||
$lang->custom->default = "默认";
|
||||
$lang->custom->mode = "模式";
|
||||
$lang->custom->scrumStory = "故事";
|
||||
$lang->custom->waterfallCommon = "瀑布";
|
||||
$lang->custom->buildin = "系统内置";
|
||||
@@ -56,9 +55,10 @@ $lang->custom->role = '职位';
|
||||
$lang->custom->dept = '部门';
|
||||
$lang->custom->code = $lang->code;
|
||||
$lang->custom->setCode = '是否启用代号';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->execution = '执行';
|
||||
if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = $lang->executionCommon;
|
||||
$lang->custom->execution = '执行';
|
||||
$lang->custom->selectDefaultProgram = '请选择一个默认项目集';
|
||||
$lang->custom->defaultProgram = '默认项目集';
|
||||
$lang->custom->modeManagement = '模式管理';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = '工时/';
|
||||
$lang->custom->unitList['manhour'] = '人时/';
|
||||
@@ -89,7 +89,7 @@ $lang->custom->closedExecution = '已关闭' . $lang->custom->execution;
|
||||
$lang->custom->closedKanban = '已关闭' . $lang->custom->kanban;
|
||||
$lang->custom->closedProduct = '已关闭' . $lang->productCommon;
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->object['project'] = '项目';
|
||||
$lang->custom->object['project'] = '项目';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->custom->execution;
|
||||
$lang->custom->object['kanban'] = $lang->custom->kanban;
|
||||
@@ -103,8 +103,9 @@ $lang->custom->object['user'] = '用户';
|
||||
$lang->custom->object['block'] = '区块';
|
||||
$lang->custom->object['flow'] = '流程';
|
||||
$lang->custom->object['score'] = '积分';
|
||||
$lang->custom->object['mode'] = '模式';
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[5] = 'project';
|
||||
$lang->custom->menuOrder[10] = 'product';
|
||||
$lang->custom->menuOrder[15] = 'execution';
|
||||
$lang->custom->menuOrder[20] = 'kanban';
|
||||
@@ -120,7 +121,7 @@ $lang->custom->menuOrder[65] = 'flow';
|
||||
$lang->custom->menuOrder[70] = 'score';
|
||||
|
||||
$lang->custom->dividerMenu = ',story,todo,block,';
|
||||
$lang->custom->separatePage = ',execution,product,kanban,flow,score,';
|
||||
$lang->custom->separatePage = ',execution,product,kanban,flow,score';
|
||||
|
||||
$lang->custom->block = new stdclass();
|
||||
$lang->custom->block->fields['closed'] = '关闭的区块';
|
||||
@@ -237,25 +238,27 @@ $lang->custom->weekendList[2] = '双休';
|
||||
$lang->custom->weekendList[1] = '单休';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = '产品 - 项目';
|
||||
$lang->custom->sprintConceptList[1] = '产品 - 迭代';
|
||||
$lang->custom->sprintConceptList[2] = '产品 - 冲刺';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = '项目 - 产品 - 迭代';
|
||||
$lang->custom->sprintConceptList[1] = '项目 - 产品 - 冲刺';
|
||||
}
|
||||
$lang->custom->sprintConceptList[0] = '项目 产品 迭代';
|
||||
$lang->custom->sprintConceptList[1] = '项目 产品 冲刺';
|
||||
|
||||
$lang->custom->workingList['full'] = '完整研发管理工具';
|
||||
|
||||
$lang->custom->menuTip = '点击显示或隐藏导航条目,拖拽来更改显示顺序。';
|
||||
$lang->custom->saveFail = '保存失败!';
|
||||
$lang->custom->page = '页面';
|
||||
$lang->custom->changeClassicTip = '切换为老版本的习惯后,系统将取消项目集功能。';
|
||||
$lang->custom->changeModeTips = '历史删除数据不参与数据归并流程,切换模式后将不支持还原,请知悉';
|
||||
$lang->custom->menuTip = '点击显示或隐藏导航条目,拖拽来更改显示顺序。';
|
||||
$lang->custom->saveFail = '保存失败!';
|
||||
$lang->custom->page = '页面';
|
||||
$lang->custom->currentModeTips = '您当前使用的是%s, 您可以切换到%s';
|
||||
$lang->custom->changeModeTips = '您确定要切换到%s吗?';
|
||||
$lang->custom->selectProgramTips = '切换到轻量管理模式后,为确保数据结构一致,需要选择一个项目集作为默认项目集,后续新增的产品和项目数据都关联在这个默认的项目集下。';
|
||||
|
||||
$lang->custom->modeList['light'] = '轻量级管理模式';
|
||||
$lang->custom->modeList['ALM'] = '全生命周期管理模式';
|
||||
|
||||
$lang->custom->modeIntrodutionList['light'] = '轻量级管理模式适用于小型软件研发团队';
|
||||
$lang->custom->modeIntrodutionList['ALM'] = '全生命周期管理模式适用于中大型软件研发团队';
|
||||
|
||||
$lang->custom->needClosedFunctions['waterfall'] = '瀑布项目';
|
||||
$lang->custom->needClosedFunctions['URStory'] = '用户需求';
|
||||
if($config->edition == 'max') $lang->custom->needClosedFunctions['assetLib'] = '资产库';
|
||||
|
||||
$lang->custom->scoreStatus[1] = '开启';
|
||||
$lang->custom->scoreStatus[0] = '关闭';
|
||||
@@ -273,9 +276,9 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
|
||||
$lang->custom->moduleName['productplan'] = '计划';
|
||||
$lang->custom->moduleName['execution'] = $lang->custom->execution;
|
||||
|
||||
$lang->custom->conceptQuestions['overview'] = "1. 下述哪种组合方式更适合您公司的管理现状?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "2. 是否启用{$lang->URCommon}和{$lang->SRCommon}概念?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "3. 您公司是在使用以下哪种单位来做规模估算?";
|
||||
$lang->custom->conceptQuestions['overview'] = "下述哪种组合方式更适合您公司的管理现状?";
|
||||
$lang->custom->conceptQuestions['URAndSR'] = "是否启用{$lang->URCommon}和{$lang->SRCommon}概念?";
|
||||
$lang->custom->conceptQuestions['storypoint'] = "您公司是在使用以下哪种单位来做规模估算?";
|
||||
|
||||
$lang->custom->conceptOptions = new stdclass;
|
||||
$lang->custom->conceptOptions->story = array();
|
||||
|
||||
@@ -49,9 +49,7 @@ $lang->custom->switch = "切換";
|
||||
$lang->custom->oneUnit = "一個{$lang->hourCommon}";
|
||||
$lang->custom->convertRelationTitle = "請先設置{$lang->hourCommon}轉換為%s的換算係數";
|
||||
$lang->custom->superReviewers = "超級評審人";
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->execution = '執行';
|
||||
if($config->systemMode == 'classic' || !$config->systemMode) $lang->custom->execution = $lang->executionCommon;
|
||||
$lang->custom->execution = '執行';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = '工時/';
|
||||
$lang->custom->unitList['manhour'] = '人時/';
|
||||
@@ -81,7 +79,7 @@ $lang->custom->numberError = '區間必須大於零';
|
||||
$lang->custom->closedExecution = '已關閉' . $lang->custom->execution;
|
||||
$lang->custom->closedProduct = '已關閉' . $lang->productCommon;
|
||||
|
||||
if($config->systemMode == 'new') $lang->custom->object['project'] = '項目';
|
||||
$lang->custom->object['project'] = '項目';
|
||||
$lang->custom->object['product'] = $lang->productCommon;
|
||||
$lang->custom->object['execution'] = $lang->custom->execution;
|
||||
$lang->custom->object['story'] = $lang->SRCommon;
|
||||
@@ -202,17 +200,9 @@ $lang->custom->weekendList[2] = '雙休';
|
||||
$lang->custom->weekendList[1] = '單休';
|
||||
|
||||
global $config;
|
||||
if($config->systemMode == 'classic')
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = '產品 - 項目';
|
||||
$lang->custom->sprintConceptList[1] = '產品 - 迭代';
|
||||
$lang->custom->sprintConceptList[2] = '產品 - 衝刺';
|
||||
}
|
||||
else
|
||||
{
|
||||
$lang->custom->sprintConceptList[0] = '項目 - 產品 - 迭代';
|
||||
$lang->custom->sprintConceptList[1] = '項目 - 產品 - 衝刺';
|
||||
}
|
||||
$lang->custom->sprintConceptList[0] = '產品 - 項目';
|
||||
$lang->custom->sprintConceptList[1] = '產品 - 迭代';
|
||||
$lang->custom->sprintConceptList[2] = '產品 - 衝刺';
|
||||
|
||||
$lang->custom->workingList['full'] = '完整研發管理工具';
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user