* Remove issue and risk to max.
This commit is contained in:
@@ -118,79 +118,6 @@ CREATE TABLE IF NOT EXISTS `zt_designspec` (
|
||||
UNIQUE KEY `design` (`design`,`version`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_issue`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_issue` (
|
||||
`id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`resolvedBy` varchar(30) NOT NULL,
|
||||
`PRJ` varchar(255) NOT NULL,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`desc` text NOT NULL,
|
||||
`pri` char(30) NOT NULL,
|
||||
`severity` char(30) NOT NULL,
|
||||
`type` char(30) NOT NULL,
|
||||
`activity` varchar(255) NOT NULL,
|
||||
`deadline` date NOT NULL,
|
||||
`resolution` char(30) NOT NULL,
|
||||
`resolutionComment` text NOT NULL,
|
||||
`objectID` varchar(255) NOT NULL,
|
||||
`resolvedDate` date NOT NULL,
|
||||
`status` varchar(30) NOT NULL,
|
||||
`owner` varchar(255) NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`activateBy` varchar(30) NOT NULL,
|
||||
`activateDate` date NOT NULL,
|
||||
`closedBy` varchar(30) NOT NULL,
|
||||
`closedDate` date NOT NULL,
|
||||
`assignedTo` varchar(30) NOT NULL,
|
||||
`assignedBy` varchar(30) NOT NULL,
|
||||
`assignedDate` datetime NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `zt_risk` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`PRJ` varchar(255) NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`source` char(30) NOT NULL,
|
||||
`category` char(30) NOT NULL,
|
||||
`strategy` char(30) NOT NULL,
|
||||
`status` varchar(30) NOT NULL DEFAULT 'active',
|
||||
`impact` char(30) NOT NULL,
|
||||
`probability` char(30) NOT NULL,
|
||||
`rate` char(30) NOT NULL,
|
||||
`pri` char(30) NOT NULL,
|
||||
`identifiedDate` date NOT NULL,
|
||||
`prevention` text NOT NULL,
|
||||
`remedy` text NOT NULL,
|
||||
`plannedClosedDate` date NOT NULL,
|
||||
`actualClosedDate` date NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`resolution` text NOT NULL,
|
||||
`resolvedBy` varchar(30) NOT NULL,
|
||||
`activateBy` varchar(30) NOT NULL,
|
||||
`activateDate` date NOT NULL,
|
||||
`assignedTo` varchar(30) NOT NULL,
|
||||
`cancelBy` varchar(30) NOT NULL,
|
||||
`cancelDate` date NOT NULL,
|
||||
`cancelReason` char(30) NOT NULL,
|
||||
`closedBy` char(30) NOT NULL,
|
||||
`closedDate` date NOT NULL,
|
||||
`hangupBy` varchar(30) NOT NULL,
|
||||
`hangupDate` date NOT NULL,
|
||||
`trackedBy` varchar(30) NOT NULL,
|
||||
`trackedDate` date NOT NULL,
|
||||
`assignedDate` date NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_projectspec`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_projectspec` (
|
||||
`project` mediumint(8) NOT NULL,
|
||||
@@ -337,8 +264,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(1, 'my', 'preference'),
|
||||
(1, 'my', 'uploadAvatar'),
|
||||
(1, 'user', 'execution'),
|
||||
(1, 'user', 'issue'),
|
||||
(1, 'user', 'risk'),
|
||||
(1, 'user', 'cropAvatar'),
|
||||
(1, 'program', 'PRJView'),
|
||||
(1, 'search', 'index'),
|
||||
@@ -351,8 +276,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(2, 'my', 'preference'),
|
||||
(2, 'my', 'uploadAvatar'),
|
||||
(2, 'user', 'execution'),
|
||||
(2, 'user', 'issue'),
|
||||
(2, 'user', 'risk'),
|
||||
(2, 'user', 'cropAvatar'),
|
||||
(2, 'search', 'index'),
|
||||
(3, 'product', 'dashboard'),
|
||||
@@ -363,8 +286,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(3, 'my', 'preference'),
|
||||
(3, 'my', 'uploadAvatar'),
|
||||
(3, 'user', 'execution'),
|
||||
(3, 'user', 'issue'),
|
||||
(3, 'user', 'risk'),
|
||||
(3, 'user', 'cropAvatar'),
|
||||
(3, 'search', 'index'),
|
||||
(4, 'product', 'dashboard'),
|
||||
@@ -375,8 +296,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(4, 'my', 'preference'),
|
||||
(4, 'my', 'uploadAvatar'),
|
||||
(4, 'user', 'execution'),
|
||||
(4, 'user', 'issue'),
|
||||
(4, 'user', 'risk'),
|
||||
(4, 'user', 'cropAvatar'),
|
||||
(4, 'program', 'PRJView'),
|
||||
(4, 'search', 'index'),
|
||||
@@ -390,8 +309,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(5, 'my', 'preference'),
|
||||
(5, 'my', 'uploadAvatar'),
|
||||
(5, 'user', 'execution'),
|
||||
(5, 'user', 'issue'),
|
||||
(5, 'user', 'risk'),
|
||||
(5, 'user', 'cropAvatar'),
|
||||
(5, 'program', 'PRJView'),
|
||||
(5, 'search', 'index'),
|
||||
@@ -403,8 +320,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(6, 'my', 'preference'),
|
||||
(6, 'my', 'uploadAvatar'),
|
||||
(6, 'user', 'execution'),
|
||||
(6, 'user', 'issue'),
|
||||
(6, 'user', 'risk'),
|
||||
(6, 'user', 'cropAvatar'),
|
||||
(6, 'program', 'PRJView'),
|
||||
(6, 'search', 'index'),
|
||||
@@ -418,8 +333,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(7, 'my', 'preference'),
|
||||
(7, 'my', 'uploadAvatar'),
|
||||
(7, 'user', 'execution'),
|
||||
(7, 'user', 'issue'),
|
||||
(7, 'user', 'risk'),
|
||||
(7, 'user', 'cropAvatar'),
|
||||
(7, 'program', 'PRJView'),
|
||||
(7, 'search', 'index'),
|
||||
@@ -431,8 +344,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(8, 'my', 'preference'),
|
||||
(8, 'my', 'uploadAvatar'),
|
||||
(8, 'user', 'execution'),
|
||||
(8, 'user', 'issue'),
|
||||
(8, 'user', 'risk'),
|
||||
(8, 'user', 'cropAvatar'),
|
||||
(8, 'program', 'PRJView'),
|
||||
(8, 'search', 'index'),
|
||||
@@ -446,8 +357,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(9, 'my', 'preference'),
|
||||
(9, 'my', 'uploadAvatar'),
|
||||
(9, 'user', 'execution'),
|
||||
(9, 'user', 'issue'),
|
||||
(9, 'user', 'risk'),
|
||||
(9, 'user', 'cropAvatar'),
|
||||
(9, 'program', 'PRJView'),
|
||||
(9, 'search', 'index'),
|
||||
@@ -459,8 +368,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(10, 'my', 'preference'),
|
||||
(10, 'my', 'uploadAvatar'),
|
||||
(10, 'user', 'execution'),
|
||||
(10, 'user', 'issue'),
|
||||
(10, 'user', 'risk'),
|
||||
(10, 'user', 'cropAvatar'),
|
||||
(10, 'search', 'index'),
|
||||
(11, 'product', 'dashboard'),
|
||||
@@ -471,8 +378,6 @@ REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
|
||||
(11, 'my', 'preference'),
|
||||
(11, 'my', 'uploadAvatar'),
|
||||
(11, 'user', 'execution'),
|
||||
(11, 'user', 'issue'),
|
||||
(11, 'user', 'risk'),
|
||||
(11, 'user', 'cropAvatar');
|
||||
|
||||
INSERT INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VALUES
|
||||
|
||||
@@ -540,38 +540,6 @@ CREATE TABLE IF NOT EXISTS `zt_history` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `action` (`action`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_issue`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_issue` (
|
||||
`id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`resolvedBy` varchar(30) NOT NULL,
|
||||
`PRJ` varchar(255) NOT NULL,
|
||||
`title` varchar(255) NOT NULL,
|
||||
`desc` text NOT NULL,
|
||||
`pri` char(30) NOT NULL,
|
||||
`severity` char(30) NOT NULL,
|
||||
`type` char(30) NOT NULL,
|
||||
`activity` varchar(255) NOT NULL,
|
||||
`deadline` date NOT NULL,
|
||||
`resolution` char(30) NOT NULL,
|
||||
`resolutionComment` text NOT NULL,
|
||||
`objectID` varchar(255) NOT NULL,
|
||||
`resolvedDate` date NOT NULL,
|
||||
`status` varchar(30) NOT NULL,
|
||||
`owner` varchar(255) NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`activateBy` varchar(30) NOT NULL,
|
||||
`activateDate` date NOT NULL,
|
||||
`closedBy` varchar(30) NOT NULL,
|
||||
`closedDate` date NOT NULL,
|
||||
`assignedTo` varchar(30) NOT NULL,
|
||||
`assignedBy` varchar(30) NOT NULL,
|
||||
`assignedDate` datetime NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_jenkins`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_jenkins` (
|
||||
`id` smallint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
@@ -875,46 +843,6 @@ CREATE TABLE IF NOT EXISTS `zt_repohistory` (
|
||||
KEY `repo` (`repo`),
|
||||
KEY `revision` (`revision`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_risk`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_risk` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`PRJ` varchar(255) NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`source` char(30) NOT NULL,
|
||||
`category` char(30) NOT NULL,
|
||||
`strategy` char(30) NOT NULL,
|
||||
`status` varchar(30) NOT NULL DEFAULT 'active',
|
||||
`impact` char(30) NOT NULL,
|
||||
`probability` char(30) NOT NULL,
|
||||
`rate` char(30) NOT NULL,
|
||||
`pri` char(30) NOT NULL,
|
||||
`identifiedDate` date NOT NULL,
|
||||
`prevention` text NOT NULL,
|
||||
`remedy` text NOT NULL,
|
||||
`plannedClosedDate` date NOT NULL,
|
||||
`actualClosedDate` date NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`resolution` text NOT NULL,
|
||||
`resolvedBy` varchar(30) NOT NULL,
|
||||
`activateBy` varchar(30) NOT NULL,
|
||||
`activateDate` date NOT NULL,
|
||||
`assignedTo` varchar(30) NOT NULL,
|
||||
`closedBy` varchar(30) NOT NULL,
|
||||
`closedDate` date NOT NULL,
|
||||
`cancelBy` varchar(30) NOT NULL,
|
||||
`cancelDate` date NOT NULL,
|
||||
`cancelReason` char(30) NOT NULL,
|
||||
`hangupBy` varchar(30) NOT NULL,
|
||||
`hangupDate` date NOT NULL,
|
||||
`trackedBy` varchar(30) NOT NULL,
|
||||
`trackedDate` date NOT NULL,
|
||||
`assignedDate` date NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_stakeholder`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_stakeholder` (
|
||||
`id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
|
||||
@@ -250,8 +250,6 @@ $lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchObjects['issue'] = 'Issue';
|
||||
$lang->searchObjects['risk'] = 'Risk';
|
||||
$lang->searchTips = 'ID (strg+g)';
|
||||
|
||||
/* Code formats for import. */
|
||||
@@ -316,11 +314,6 @@ $lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
$lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
@@ -329,11 +322,6 @@ $lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=sto
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = 'Test Task|my|contribute|mode=testtask&type=done';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
|
||||
@@ -683,8 +671,6 @@ $lang->navGroup->reviewissue = 'project';
|
||||
$lang->navGroup->milestone = 'project';
|
||||
$lang->navGroup->pssp = 'project';
|
||||
$lang->navGroup->design = 'project';
|
||||
$lang->navGroup->issue = 'project';
|
||||
$lang->navGroup->risk = 'project';
|
||||
$lang->navGroup->auditplan = 'project';
|
||||
$lang->navGroup->cm = 'project';
|
||||
$lang->navGroup->nc = 'project';
|
||||
@@ -936,6 +922,7 @@ $lang->menu->scrum->projectbuild = array('link' => 'Build|projectbuild|browse|
|
||||
$lang->menu->scrum->projectrelease = array('link' => 'Release|projectrelease|browse');
|
||||
$lang->menu->scrum->projectsetting = array('link' => 'Setting|program|prjview|project={PROJECT}', 'alias' => 'prjedit,prjmanageproducts,prjgroup,prjmanagemembers,prjmanageview,prjmanagepriv,prjwhitelist,prjaddwhitelist');
|
||||
|
||||
$lang->scrum = new stdclass();
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|program|prjview|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|program|PRJManageProducts|project={PROJECT}', 'alias' => 'prjmanageproducts');
|
||||
@@ -954,8 +941,6 @@ $lang->auditplan = new stdclass();
|
||||
$lang->cm = new stdclass();
|
||||
$lang->nc = new stdclass();
|
||||
$lang->pssp = new stdclass();
|
||||
$lang->issue = new stdclass();
|
||||
$lang->risk = new stdclass();
|
||||
$lang->stakeholder = new stdclass();
|
||||
$lang->durationestimation = new stdclass();
|
||||
$lang->projectstory = new stdclass();
|
||||
@@ -969,8 +954,6 @@ $lang->design->menu = new stdclass();
|
||||
$lang->auditplan->menu = new stdclass();
|
||||
$lang->cm->menu = new stdclass();
|
||||
$lang->pssp->menu = new stdclass();
|
||||
$lang->issue->menu = new stdclass();
|
||||
$lang->risk->menu = new stdclass();
|
||||
$lang->stakeholder->menu = new stdclass();
|
||||
$lang->waterfallproduct->menu = new stdclass();
|
||||
$lang->durationestimation->menu = new stdclass();
|
||||
@@ -997,7 +980,7 @@ $lang->design->menu->ads = array('link' => 'ADS|design|browse|productID={PR
|
||||
$lang->design->menu->bysearch = array('link' => '<a href="javascript:;" class="querybox-toggle"><i class="icon-search icon"></i> ' . $lang->searchAB . '</a>');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'old')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
|
||||
@@ -250,8 +250,6 @@ $lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchObjects['issue'] = 'Issue';
|
||||
$lang->searchObjects['risk'] = 'Risk';
|
||||
$lang->searchTips = 'ID (ctrl+g)';
|
||||
|
||||
/* Code formats for import. */
|
||||
@@ -316,11 +314,6 @@ $lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
$lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
@@ -329,11 +322,6 @@ $lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=sto
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = 'Test Task|my|contribute|mode=testtask&type=done';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
|
||||
@@ -683,8 +671,6 @@ $lang->navGroup->reviewissue = 'project';
|
||||
$lang->navGroup->milestone = 'project';
|
||||
$lang->navGroup->pssp = 'project';
|
||||
$lang->navGroup->design = 'project';
|
||||
$lang->navGroup->issue = 'project';
|
||||
$lang->navGroup->risk = 'project';
|
||||
$lang->navGroup->auditplan = 'project';
|
||||
$lang->navGroup->cm = 'project';
|
||||
$lang->navGroup->nc = 'project';
|
||||
@@ -936,6 +922,7 @@ $lang->menu->scrum->projectbuild = array('link' => 'Build|projectbuild|browse|
|
||||
$lang->menu->scrum->projectrelease = array('link' => 'Release|projectrelease|browse');
|
||||
$lang->menu->scrum->projectsetting = array('link' => 'Setting|program|prjview|project={PROJECT}', 'alias' => 'prjedit,prjmanageproducts,prjgroup,prjmanagemembers,prjmanageview,prjmanagepriv,prjwhitelist,prjaddwhitelist');
|
||||
|
||||
$lang->scrum = new stdclass();
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|program|prjview|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|program|PRJManageProducts|project={PROJECT}', 'alias' => 'prjmanageproducts');
|
||||
@@ -954,8 +941,6 @@ $lang->auditplan = new stdclass();
|
||||
$lang->cm = new stdclass();
|
||||
$lang->nc = new stdclass();
|
||||
$lang->pssp = new stdclass();
|
||||
$lang->issue = new stdclass();
|
||||
$lang->risk = new stdclass();
|
||||
$lang->stakeholder = new stdclass();
|
||||
$lang->durationestimation = new stdclass();
|
||||
$lang->projectstory = new stdclass();
|
||||
@@ -969,8 +954,6 @@ $lang->design->menu = new stdclass();
|
||||
$lang->auditplan->menu = new stdclass();
|
||||
$lang->cm->menu = new stdclass();
|
||||
$lang->pssp->menu = new stdclass();
|
||||
$lang->issue->menu = new stdclass();
|
||||
$lang->risk->menu = new stdclass();
|
||||
$lang->stakeholder->menu = new stdclass();
|
||||
$lang->waterfallproduct->menu = new stdclass();
|
||||
$lang->durationestimation->menu = new stdclass();
|
||||
@@ -997,7 +980,7 @@ $lang->design->menu->ads = array('link' => 'ADS|design|browse|productID={PR
|
||||
$lang->design->menu->bysearch = array('link' => '<a href="javascript:;" class="querybox-toggle"><i class="icon-search icon"></i> ' . $lang->searchAB . '</a>');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'old')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
|
||||
@@ -250,8 +250,6 @@ $lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchObjects['issue'] = 'Issue';
|
||||
$lang->searchObjects['risk'] = 'Risk';
|
||||
$lang->searchTips = 'ID (ctrl+g)';
|
||||
|
||||
/* Code formats for import. */
|
||||
@@ -316,11 +314,6 @@ $lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
$lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
@@ -329,11 +322,6 @@ $lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=sto
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = 'Test Task|my|contribute|mode=testtask&type=done';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
|
||||
@@ -683,8 +671,6 @@ $lang->navGroup->reviewissue = 'project';
|
||||
$lang->navGroup->milestone = 'project';
|
||||
$lang->navGroup->pssp = 'project';
|
||||
$lang->navGroup->design = 'project';
|
||||
$lang->navGroup->issue = 'project';
|
||||
$lang->navGroup->risk = 'project';
|
||||
$lang->navGroup->auditplan = 'project';
|
||||
$lang->navGroup->cm = 'project';
|
||||
$lang->navGroup->nc = 'project';
|
||||
@@ -936,6 +922,7 @@ $lang->menu->scrum->projectbuild = array('link' => 'Build|projectbuild|browse|
|
||||
$lang->menu->scrum->projectrelease = array('link' => 'Release|projectrelease|browse');
|
||||
$lang->menu->scrum->projectsetting = array('link' => 'Setting|program|prjview|project={PROJECT}', 'alias' => 'prjedit,prjmanageproducts,prjgroup,prjmanagemembers,prjmanageview,prjmanagepriv,prjwhitelist,prjaddwhitelist');
|
||||
|
||||
$lang->scrum = new stdclass();
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|program|prjview|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|program|PRJManageProducts|project={PROJECT}', 'alias' => 'prjmanageproducts');
|
||||
@@ -954,8 +941,6 @@ $lang->auditplan = new stdclass();
|
||||
$lang->cm = new stdclass();
|
||||
$lang->nc = new stdclass();
|
||||
$lang->pssp = new stdclass();
|
||||
$lang->issue = new stdclass();
|
||||
$lang->risk = new stdclass();
|
||||
$lang->stakeholder = new stdclass();
|
||||
$lang->durationestimation = new stdclass();
|
||||
$lang->projectstory = new stdclass();
|
||||
@@ -969,8 +954,6 @@ $lang->design->menu = new stdclass();
|
||||
$lang->auditplan->menu = new stdclass();
|
||||
$lang->cm->menu = new stdclass();
|
||||
$lang->pssp->menu = new stdclass();
|
||||
$lang->issue->menu = new stdclass();
|
||||
$lang->risk->menu = new stdclass();
|
||||
$lang->stakeholder->menu = new stdclass();
|
||||
$lang->waterfallproduct->menu = new stdclass();
|
||||
$lang->durationestimation->menu = new stdclass();
|
||||
@@ -997,7 +980,7 @@ $lang->design->menu->ads = array('link' => 'ADS|design|browse|productID={PR
|
||||
$lang->design->menu->bysearch = array('link' => '<a href="javascript:;" class="querybox-toggle"><i class="icon-search icon"></i> ' . $lang->searchAB . '</a>');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'old')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
|
||||
@@ -250,8 +250,6 @@ $lang->searchObjects['program'] = 'Program';
|
||||
$lang->searchObjects['project'] = 'Project';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['user'] = 'User';
|
||||
$lang->searchObjects['issue'] = 'Issue';
|
||||
$lang->searchObjects['risk'] = 'Risk';
|
||||
$lang->searchTips = 'ID (ctrl+g)';
|
||||
|
||||
/* Code formats for import. */
|
||||
@@ -316,11 +314,6 @@ $lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = 'Test Case|my|work|mode=testcase&type=assigntome';
|
||||
$lang->my->workMenu->testtask = 'Test Task|my|work|mode=testtask&type=wait';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->workMenu->issue = 'Issue|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = 'Risk|my|work|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = 'Task|my|contribute|mode=task';
|
||||
@@ -329,11 +322,6 @@ $lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=sto
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = 'Test Case|my|contribute|mode=testtask&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = 'Test Task|my|contribute|mode=testtask&type=done';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->contributeMenu->issue = 'Issue|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = 'Risk|my|contribute|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
|
||||
@@ -683,8 +671,6 @@ $lang->navGroup->reviewissue = 'project';
|
||||
$lang->navGroup->milestone = 'project';
|
||||
$lang->navGroup->pssp = 'project';
|
||||
$lang->navGroup->design = 'project';
|
||||
$lang->navGroup->issue = 'project';
|
||||
$lang->navGroup->risk = 'project';
|
||||
$lang->navGroup->auditplan = 'project';
|
||||
$lang->navGroup->cm = 'project';
|
||||
$lang->navGroup->nc = 'project';
|
||||
@@ -936,6 +922,7 @@ $lang->menu->scrum->projectbuild = array('link' => 'Build|projectbuild|browse|
|
||||
$lang->menu->scrum->projectrelease = array('link' => 'Release|projectrelease|browse');
|
||||
$lang->menu->scrum->projectsetting = array('link' => 'Setting|program|prjview|project={PROJECT}', 'alias' => 'prjedit,prjmanageproducts,prjgroup,prjmanagemembers,prjmanageview,prjmanagepriv,prjwhitelist,prjaddwhitelist');
|
||||
|
||||
$lang->scrum = new stdclass();
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => 'View|program|prjview|project={PROJECT}');
|
||||
$lang->scrum->setMenu->products = array('link' => 'Product|program|PRJManageProducts|project={PROJECT}', 'alias' => 'prjmanageproducts');
|
||||
@@ -954,8 +941,6 @@ $lang->auditplan = new stdclass();
|
||||
$lang->cm = new stdclass();
|
||||
$lang->nc = new stdclass();
|
||||
$lang->pssp = new stdclass();
|
||||
$lang->issue = new stdclass();
|
||||
$lang->risk = new stdclass();
|
||||
$lang->stakeholder = new stdclass();
|
||||
$lang->durationestimation = new stdclass();
|
||||
$lang->projectstory = new stdclass();
|
||||
@@ -969,8 +954,6 @@ $lang->design->menu = new stdclass();
|
||||
$lang->auditplan->menu = new stdclass();
|
||||
$lang->cm->menu = new stdclass();
|
||||
$lang->pssp->menu = new stdclass();
|
||||
$lang->issue->menu = new stdclass();
|
||||
$lang->risk->menu = new stdclass();
|
||||
$lang->stakeholder->menu = new stdclass();
|
||||
$lang->waterfallproduct->menu = new stdclass();
|
||||
$lang->durationestimation->menu = new stdclass();
|
||||
@@ -997,7 +980,7 @@ $lang->design->menu->ads = array('link' => 'ADS|design|browse|productID={PR
|
||||
$lang->design->menu->bysearch = array('link' => '<a href="javascript:;" class="querybox-toggle"><i class="icon-search icon"></i> ' . $lang->searchAB . '</a>');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'old')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
|
||||
@@ -249,8 +249,6 @@ $lang->searchObjects['program'] = '项目集';
|
||||
$lang->searchObjects['project'] = '项目';
|
||||
$lang->searchObjects['execution'] = $lang->execution->common;
|
||||
$lang->searchObjects['user'] = '用户';
|
||||
$lang->searchObjects['issue'] = '问题';
|
||||
$lang->searchObjects['risk'] = '风险';
|
||||
$lang->searchTips = '编号(ctrl+g)';
|
||||
|
||||
/* 导入支持的编码格式。*/
|
||||
@@ -315,11 +313,6 @@ $lang->my->workMenu->story = "$lang->SRCommon|my|work|mode=story";
|
||||
$lang->my->workMenu->bug = 'Bug|my|work|mode=bug';
|
||||
$lang->my->workMenu->testcase = '用例|my|work|mode=testcase&type=assigntome';
|
||||
$lang->my->workMenu->testtask = '测试单|my|work|mode=testtask&type=wait';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->workMenu->issue = '问题|my|work|mode=issue';
|
||||
$lang->my->workMenu->risk = '风险|my|work|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->contributeMenu = new stdclass();
|
||||
$lang->my->contributeMenu->task = '任务|my|contribute|mode=task';
|
||||
@@ -328,11 +321,6 @@ $lang->my->contributeMenu->story = "$lang->SRCommon|my|contribute|mode=sto
|
||||
$lang->my->contributeMenu->bug = 'Bug|my|contribute|mode=bug';
|
||||
$lang->my->contributeMenu->testcase = '用例|my|contribute|mode=testcase&type=openedbyme';
|
||||
$lang->my->contributeMenu->testtask = '测试单|my|contribute|mode=testtask&type=done';
|
||||
if($config->systemMode == 'new')
|
||||
{
|
||||
$lang->my->contributeMenu->issue = '问题|my|contribute|mode=issue';
|
||||
$lang->my->contributeMenu->risk = '风险|my|contribute|mode=risk';
|
||||
}
|
||||
|
||||
$lang->my->dividerMenu = ',myProject,team,';
|
||||
|
||||
@@ -681,8 +669,6 @@ $lang->navGroup->reviewissue = 'project';
|
||||
$lang->navGroup->milestone = 'project';
|
||||
$lang->navGroup->pssp = 'project';
|
||||
$lang->navGroup->design = 'project';
|
||||
$lang->navGroup->issue = 'project';
|
||||
$lang->navGroup->risk = 'project';
|
||||
$lang->navGroup->auditplan = 'project';
|
||||
$lang->navGroup->cm = 'project';
|
||||
$lang->navGroup->nc = 'project';
|
||||
@@ -934,6 +920,7 @@ $lang->menu->scrum->projectbuild = array('link' => '版本|projectbuild|browse
|
||||
$lang->menu->scrum->projectrelease = array('link' => '发布|projectrelease|browse');
|
||||
$lang->menu->scrum->projectsetting = array('link' => '设置|program|prjview|project={PROJECT}', 'alias' => 'prjedit,prjmanageproducts,prjgroup,prjmanagemembers,prjmanageview,prjmanagepriv,prjwhitelist,prjaddwhitelist');
|
||||
|
||||
$lang->scrum = new stdclass();
|
||||
$lang->scrum->setMenu = new stdclass();
|
||||
$lang->scrum->setMenu->view = array('link' => '概况|program|prjview|project={PROJECT}', 'alias' => 'prjedit');
|
||||
$lang->scrum->setMenu->products = array('link' => '产品|program|PRJManageProducts|project={PROJECT}', 'alias' => 'prjmanageproducts');
|
||||
@@ -952,8 +939,6 @@ $lang->auditplan = new stdclass();
|
||||
$lang->cm = new stdclass();
|
||||
$lang->nc = new stdclass();
|
||||
$lang->pssp = new stdclass();
|
||||
$lang->issue = new stdclass();
|
||||
$lang->risk = new stdclass();
|
||||
$lang->stakeholder = new stdclass();
|
||||
$lang->durationestimation = new stdclass();
|
||||
$lang->projectstory = new stdclass();
|
||||
@@ -967,8 +952,6 @@ $lang->design->menu = new stdclass();
|
||||
$lang->auditplan->menu = new stdclass();
|
||||
$lang->cm->menu = new stdclass();
|
||||
$lang->pssp->menu = new stdclass();
|
||||
$lang->issue->menu = new stdclass();
|
||||
$lang->risk->menu = new stdclass();
|
||||
$lang->stakeholder->menu = new stdclass();
|
||||
$lang->waterfallproduct->menu = new stdclass();
|
||||
$lang->durationestimation->menu = new stdclass();
|
||||
@@ -995,7 +978,7 @@ $lang->design->menu->ads = array('link' => '接口设计|design|browse|prod
|
||||
$lang->design->menu->bysearch = array('link' => '<a href="javascript:;" class="querybox-toggle"><i class="icon-search icon"></i> ' . $lang->searchAB . '</a>');
|
||||
|
||||
$lang->nc->menu = $lang->auditplan->menu;
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'issue', 'risk', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
$lang->noMenuModule = array('report', 'my', 'todo', 'effort', 'program', 'product', 'productplan', 'projectbuild', 'projectrelease', 'projectstory', 'story', 'branch', 'release', 'attend', 'leave', 'makeup', 'overtime', 'lieu', 'custom', 'admin', 'mail', 'extension', 'dev', 'backup', 'action', 'cron', 'pssp', 'sms', 'message', 'webhook', 'search', 'score', 'stage');
|
||||
if($config->systemMode == 'old')
|
||||
{
|
||||
$lang->noMenuModule[] = 'project';
|
||||
|
||||
@@ -63,8 +63,6 @@ $lang->moduleOrder[205] = 'message';
|
||||
|
||||
$lang->moduleOrder[210] = 'design';
|
||||
$lang->moduleOrder[215] = 'programplan';
|
||||
$lang->moduleOrder[220] = 'issue';
|
||||
$lang->moduleOrder[225] = 'risk';
|
||||
|
||||
$lang->moduleOrder[235] = 'budget';
|
||||
$lang->moduleOrder[240] = 'workestimation';
|
||||
@@ -103,8 +101,6 @@ $lang->resource->my->bug = 'bug';
|
||||
$lang->resource->my->testtask = 'testtask';
|
||||
$lang->resource->my->testcase = 'testcase';
|
||||
$lang->resource->my->execution = 'execution';
|
||||
$lang->resource->my->issue = 'issue';
|
||||
$lang->resource->my->risk = 'risk';
|
||||
|
||||
$lang->my->methodOrder[1] = 'index';
|
||||
$lang->my->methodOrder[5] = 'todo';
|
||||
@@ -128,8 +124,6 @@ $lang->my->methodOrder[90] = 'bug';
|
||||
$lang->my->methodOrder[95] = 'testtask';
|
||||
$lang->my->methodOrder[100] = 'testcase';
|
||||
$lang->my->methodOrder[105] = 'execution';
|
||||
$lang->my->methodOrder[110] = 'issue';
|
||||
$lang->my->methodOrder[115] = 'risk';
|
||||
|
||||
/* Todo. */
|
||||
$lang->resource->todo = new stdclass();
|
||||
@@ -298,34 +292,6 @@ $lang->issue->methodOrder[50] = 'activate';
|
||||
$lang->issue->methodOrder[55] = 'resolve';
|
||||
$lang->issue->methodOrder[60] = 'view';
|
||||
|
||||
/* Risk . */
|
||||
$lang->resource->risk = new stdclass();
|
||||
$lang->resource->risk->browse = 'browse';
|
||||
$lang->resource->risk->create = 'create';
|
||||
$lang->resource->risk->edit = 'edit';
|
||||
$lang->resource->risk->delete = 'delete';
|
||||
$lang->resource->risk->activate = 'activate';
|
||||
$lang->resource->risk->close = 'close';
|
||||
$lang->resource->risk->hangup = 'hangup';
|
||||
$lang->resource->risk->batchCreate = 'batchCreate';
|
||||
$lang->resource->risk->cancel = 'cancel';
|
||||
$lang->resource->risk->track = 'track';
|
||||
$lang->resource->risk->view = 'view';
|
||||
$lang->resource->risk->assignTo = 'assignTo';
|
||||
|
||||
$lang->risk->methodOrder[5] = 'browse';
|
||||
$lang->risk->methodOrder[10] = 'create';
|
||||
$lang->risk->methodOrder[15] = 'edit';
|
||||
$lang->risk->methodOrder[20] = 'delete';
|
||||
$lang->risk->methodOrder[25] = 'activate';
|
||||
$lang->risk->methodOrder[30] = 'close';
|
||||
$lang->risk->methodOrder[35] = 'hangup';
|
||||
$lang->risk->methodOrder[40] = 'batchCreate';
|
||||
$lang->risk->methodOrder[45] = 'cancel';
|
||||
$lang->risk->methodOrder[50] = 'track';
|
||||
$lang->risk->methodOrder[55] = 'view';
|
||||
$lang->risk->methodOrder[60] = 'assignTo';
|
||||
|
||||
/* Product. */
|
||||
$lang->resource->product = new stdclass();
|
||||
$lang->resource->product->index = 'index';
|
||||
@@ -1308,8 +1274,6 @@ $lang->resource->user->bug = 'bug';
|
||||
$lang->resource->user->testTask = 'testTask';
|
||||
$lang->resource->user->testCase = 'testCase';
|
||||
$lang->resource->user->execution = 'execution';
|
||||
$lang->resource->user->issue = 'issue';
|
||||
$lang->resource->user->risk = 'risk';
|
||||
$lang->resource->user->dynamic = 'dynamic';
|
||||
$lang->resource->user->cropAvatar = 'cropAvatar';
|
||||
$lang->resource->user->profile = 'profile';
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
$config->issue->create = new stdclass();
|
||||
$config->issue->edit = new stdclass();
|
||||
|
||||
$config->issue->create->requiredFields = 'title,type,severity';
|
||||
$config->issue->edit->requiredFields = 'title,type,severity';
|
||||
|
||||
$config->issue->editor = new stdclass();
|
||||
$config->issue->editor->view = array('id' => 'comment,lastComment', 'tools' => 'simpleTools');
|
||||
$config->issue->editor->create = array('id' => 'desc', 'tools' => 'simpleTools');
|
||||
$config->issue->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools');
|
||||
$config->issue->editor->confirm = array('id' => 'desc', 'tools' => 'simpleTools');
|
||||
$config->issue->editor->cancel = array('id' => 'desc', 'tools' => 'simpleTools');
|
||||
$config->issue->editor->resolve = array('id' => 'spec,verify,steps,desc,resolutionComment', 'tools' => 'simpleTools');
|
||||
|
||||
global $lang;
|
||||
|
||||
$config->issue->search['module'] = 'issue';
|
||||
|
||||
$config->issue->search['fields']['title'] = $lang->issue->title;
|
||||
$config->issue->search['fields']['id'] = $lang->issue->id;
|
||||
$config->issue->search['fields']['pri'] = $lang->issue->pri;
|
||||
$config->issue->search['fields']['severity'] = $lang->issue->severity;
|
||||
$config->issue->search['fields']['type'] = $lang->issue->type;
|
||||
$config->issue->search['fields']['ceratedBy'] = $lang->issue->createdBy;
|
||||
$config->issue->search['fields']['createdDate'] = $lang->issue->createdDate;
|
||||
$config->issue->search['fields']['closedBy'] = $lang->issue->closedBy;
|
||||
$config->issue->search['fields']['closedDate'] = $lang->issue->closedDate;
|
||||
$config->issue->search['fields']['assignedTo'] = $lang->issue->assignedTo;
|
||||
$config->issue->search['fields']['assignedDate'] = $lang->issue->assignedDate;
|
||||
|
||||
$config->issue->search['params']['title'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->issue->search['params']['id'] = array('operator' => '=', 'control' => 'input', 'values' => '');
|
||||
$config->issue->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->issue->priList);
|
||||
$config->issue->search['params']['severity'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->issue->severityList);
|
||||
$config->issue->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->issue->typeList);
|
||||
$config->issue->search['params']['ceratedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->issue->search['params']['createdDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->issue->search['params']['closeBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->issue->search['params']['closedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->issue->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->issue->search['params']['assignedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
@@ -1,518 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yong Lei <leiyong@easycorp.ltd>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class issue extends control
|
||||
{
|
||||
/**
|
||||
* Get issue list data.
|
||||
*
|
||||
* @param string $browseType bySearch|open|assignTo|closed|suspended|canceled
|
||||
* @param int $param
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($browseType = 'all', $param = 0, $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('issueList', $uri);
|
||||
|
||||
/* Load pager */
|
||||
$this->app->loadClass('pager', true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Build the search form. */
|
||||
$browseType = strtolower($browseType);
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$actionURL = $this->createLink('issue', 'browse', "browseType=bysearch&queryID=myQueryID");
|
||||
$this->issue->buildSearchForm($actionURL, $queryID);
|
||||
|
||||
$this->view->title = $this->lang->issue->common . $this->lang->colon . $this->lang->issue->browse;
|
||||
$this->view->position[] = $this->lang->issue->browse;
|
||||
|
||||
$this->view->pager = $pager;
|
||||
$this->view->param = $param;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->issueList = $this->issue->getList($this->session->PRJ, $browseType, $queryID, $orderBy, $pager);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter|pofirst|nodeleted');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an issue.
|
||||
*
|
||||
* @param string $from issue|stakeholder
|
||||
* @param string $owner
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create($from = 'issue', $owner = '')
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$issueID = $this->issue->create();
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
$this->loadModel('action')->create('issue', $issueID, 'Opened');
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('browse', 'browseType=all')));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->issue->common . $this->lang->colon . $this->lang->issue->create;
|
||||
$this->view->position[] = $this->lang->issue->common;
|
||||
$this->view->position[] = $this->lang->issue->create;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
|
||||
$this->view->owners = $this->loadModel('stakeholder')->getStakeholders4Issue();
|
||||
$this->view->from = $from;
|
||||
$this->view->owner = $owner;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch create issues.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchCreate()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$issues = $this->issue->batchCreate();
|
||||
foreach($issues as $issue) $this->loadModel('action')->create('issue', $issue, 'Opened');
|
||||
|
||||
die(js::locate($this->inLink('browse'), 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->issue->common . $this->lang->colon . $this->lang->issue->batchCreate;
|
||||
$this->view->position[] = $this->lang->issue->common;
|
||||
$this->view->position[] = $this->lang->issue->batchCreate;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($issueID = 0, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->issue->confirmDelete, inLink('delete', "issueID=$issueID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->issue->delete(TABLE_ISSUE, $issueID);
|
||||
die(js::locate(inLink('browse'), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($issueID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->issue->update($issueID);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
$actionID = $this->loadModel('action')->create('issue', $issueID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('browse', 'browseType=all')));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->issue->common . $this->lang->colon . $this->lang->issue->edit;
|
||||
$this->view->position[] = $this->lang->issue->common;
|
||||
$this->view->position[] = $this->lang->issue->edit;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
|
||||
$this->view->issue = $this->issue->getByID($issueID);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function assignTo($issueID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->issue->assignTo($issueID);
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$actionID = $this->loadModel('action')->create('issue', $issueID, 'Assigned', '', $this->post->assignedTo);
|
||||
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
die(js::closeModal('parent.parent', 'this'));
|
||||
}
|
||||
|
||||
$this->view->issue = $this->issue->getByID($issueID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Close an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function close($issueID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->issue->close($issueID);
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$actionID = $this->loadModel('action')->create('issue', $issueID, 'Closed');
|
||||
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
die(js::closeModal('parent.parent', 'this'));
|
||||
}
|
||||
|
||||
$this->view->issue = $this->issue->getByID($issueID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm the issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function confirm($issueID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->issue->confirm($issueID);
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$actionID = $this->loadModel('action')->create('issue', $issueID, 'Confirmed');
|
||||
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
die(js::closeModal('parent.parent', 'this'));
|
||||
}
|
||||
|
||||
$this->view->issue = $this->issue->getByID($issueID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancel an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function cancel($issueID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->issue->cancel($issueID);
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$actionID = $this->loadModel('action')->create('issue', $issueID, 'Canceled');
|
||||
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
die(js::closeModal('parent.parent', 'this'));
|
||||
}
|
||||
|
||||
$this->view->issue = $this->issue->getByID($issueID);
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function activate($issueID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->issue->activate($issueID);
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$actionID = $this->loadModel('action')->create('issue', $issueID, 'Activated');
|
||||
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
die(js::closeModal('parent.parent', 'this'));
|
||||
}
|
||||
|
||||
$this->view->issue = $this->issue->getByID($issueID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function resolve($issueID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$data = fixer::input('post')->stripTags('steps', $this->config->allowedTags)->get();
|
||||
$resolution = $data->resolution;
|
||||
unset($_POST['resolution'], $_POST['resolvedBy'], $_POST['resolvedDate']);
|
||||
|
||||
$objectID = '';
|
||||
if($resolution == 'totask')
|
||||
{
|
||||
$objectID = $this->issue->createTask($issueID);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
$objectLink = html::a($this->createLink('task', 'view', "id=$objectID"), $this->post->name);
|
||||
$comment = sprintf($this->lang->issue->logComments[$resolution], $objectLink, "data-toggle='modal'");
|
||||
|
||||
$this->loadModel('action')->create('task', $objectID, 'Opened', '');
|
||||
$this->loadModel('action')->create('issue', $issueID, 'Resolved', $comment);
|
||||
}
|
||||
|
||||
if($resolution == 'tostory')
|
||||
{
|
||||
$objectID = $this->issue->createStory($issueID);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
$objectLink = html::a($this->createLink('story', 'view', "id=$objectID"), $this->post->title, "data-toggle='modal'");
|
||||
$comment = sprintf($this->lang->issue->logComments[$resolution], $objectLink);
|
||||
|
||||
$this->loadModel('action')->create('story', $objectID, 'Opened', '');
|
||||
$this->loadModel('action')->create('issue', $issueID, 'Resolved', $comment);
|
||||
}
|
||||
|
||||
if($resolution == 'tobug')
|
||||
{
|
||||
$objectID = $this->issue->createBug($issueID);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
$objectLink = html::a($this->createLink('bug', 'view', "id=$objectID"), $this->post->title, "data-toggle='modal'");
|
||||
$comment = sprintf($this->lang->issue->logComments[$resolution], $objectLink);
|
||||
|
||||
$this->loadModel('action')->create('bug', $objectID, 'Opened', '');
|
||||
$this->loadModel('action')->create('issue', $issueID, 'Resolved', $comment);
|
||||
}
|
||||
|
||||
if($resolution == 'torisk')
|
||||
{
|
||||
$objectID = $this->issue->createRisk($issueID);
|
||||
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
$objectLink = html::a($this->createLink('risk', 'view', "id=$objectID"), $this->post->name, '', "class='iframe'");
|
||||
$comment = sprintf($this->lang->issue->logComments[$resolution], $objectLink);
|
||||
|
||||
$this->loadModel('action')->create('risk', $objectID, 'Opened', '');
|
||||
$this->loadModel('action')->create('issue', $issueID, 'Resolved', $comment);
|
||||
}
|
||||
|
||||
$this->issue->resolve($issueID, $data);
|
||||
if($resolution == 'resolved') $this->loadModel('action')->create('issue', $issueID, 'Resolved');
|
||||
$this->dao->update(TABLE_ISSUE)->set('objectID')->eq($objectID)->where('id')->eq($issueID)->exec();
|
||||
|
||||
if(isonlybody()) $this->send(array('locate' => 'parent', 'message' => $this->lang->saveSuccess, 'result' => 'success'));
|
||||
die(js::locate(inLink('browse'), 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->issue->resolve;
|
||||
$this->view->issue = $this->issue->getByID($issueID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get different types of resolution forms.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetResolveForm()
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
$issue = $this->issue->getByID($data->issueID);
|
||||
$users = $this->loadModel('user')->getPairs('noclosed|nodeleted');
|
||||
|
||||
$task = new stdClass();
|
||||
$task->module = 0;
|
||||
$task->assignedTo = '';
|
||||
$task->name = $issue->title;
|
||||
$task->type = '';
|
||||
$task->estimate = '';
|
||||
$task->desc = $issue->desc;
|
||||
$task->estStarted = '';
|
||||
$task->deadline = '';
|
||||
|
||||
$this->view->resolution = $data->mode;
|
||||
$this->view->issue = $issue;
|
||||
$this->view->users = $users;
|
||||
$this->view->task = $task;
|
||||
|
||||
if(in_array($data->mode, array('tostory', 'tobug', 'totask')))
|
||||
{
|
||||
$this->loadModel('task');
|
||||
$this->loadModel('tree');
|
||||
$this->loadModel('project');
|
||||
$projects = $this->project->getExecutionsByProject($this->session->PRJ, 'all', 0, true);
|
||||
|
||||
$projectID = $this->session->project;
|
||||
$projectID = isset($projects[$projectID]) ? $projectID : key($projects);
|
||||
|
||||
$moduleOptionMenu = array('' => '/');
|
||||
if($data->mode == 'totask') $moduleOptionMenu = $this->tree->getOptionMenu($projectID, 'task');
|
||||
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->showAllModule = 'allModule';;
|
||||
$this->view->projects = $projects;
|
||||
$this->view->projectID = $projectID;
|
||||
$this->view->moduleID = 0;
|
||||
$this->view->branch = 0;
|
||||
}
|
||||
|
||||
if(in_array($data->mode, array('tostory', 'tobug')))
|
||||
{
|
||||
$products = $this->loadModel('product')->getProductPairsByProject($this->session->PRJ);
|
||||
$productID = $this->session->product;
|
||||
$productID = isset($products[$productID]) ? $productID : key($products);
|
||||
$branches = $this->loadModel('branch')->getPairs($productID, 'noempty');
|
||||
|
||||
$module = $data->mode == 'tostory' ? 'story' : 'bug';
|
||||
$moduleOptionMenu = $this->tree->getOptionMenu($productID, $module);
|
||||
|
||||
$this->view->moduleOptionMenu = $moduleOptionMenu;
|
||||
$this->view->branches = $branches;
|
||||
$this->view->products = $products;
|
||||
$this->view->productID = $productID;
|
||||
}
|
||||
|
||||
switch($data->mode)
|
||||
{
|
||||
case 'totask':
|
||||
$this->loadModel('story');
|
||||
|
||||
$this->view->project = $this->project->getById($projectID);
|
||||
$this->view->members = $this->project->getTeamMemberPairs($projectID, 'nodeleted');
|
||||
$this->view->stories = $this->story->getProjectStoryPairs($projectID, 0, 0);
|
||||
$this->view->showFields = $this->config->task->custom->createFields;
|
||||
|
||||
$this->display('issue', 'taskform');
|
||||
break;
|
||||
case 'tobug':
|
||||
$this->loadModel('bug');
|
||||
$this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID, '', 'noempty,noterminate,nodone');
|
||||
$this->view->buildID = 0;
|
||||
$this->view->showFields = $this->config->bug->custom->createFields;
|
||||
|
||||
$this->display('issue', 'bugform');
|
||||
break;
|
||||
case 'tostory':
|
||||
$this->loadModel('story');
|
||||
$this->view->plans = $this->loadModel('productplan')->getPairsForStory($productID, key($branches), true);
|
||||
$this->view->showFields = $this->config->story->custom->createFields;
|
||||
$this->display('issue', 'storyform');
|
||||
break;
|
||||
case 'torisk':
|
||||
$this->app->loadLang('risk');
|
||||
$this->display('issue', 'riskform');
|
||||
break;
|
||||
case 'resolved':
|
||||
$this->display('issue', 'resolveform');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: return issues of a user in html select.
|
||||
*
|
||||
* @param int $userID
|
||||
* @param string $id
|
||||
* @param string $status
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetUserIssues($userID = '', $id = '', $status = 'all')
|
||||
{
|
||||
if($userID == '') $userID = $this->app->user->id;
|
||||
$user = $this->loadModel('user')->getById($userID, 'id');
|
||||
$account = $user->account;
|
||||
|
||||
$issues = $this->issue->getUserIssuePairs($account, 0, $status);
|
||||
|
||||
if($id) die(html::select("issues[$id]", $issues, '', 'class="form-control"'));
|
||||
die(html::select('issue', $issues, '', 'class=form-control'));
|
||||
}
|
||||
|
||||
/**
|
||||
* View an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($issueID)
|
||||
{
|
||||
/* Set actions and get issue by id. */
|
||||
$issue = $this->issue->getByID($issueID);
|
||||
if(!$issue) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
$this->session->PRJ = $issue->PRJ;
|
||||
$this->commonAction($issueID, 'issue');
|
||||
|
||||
$this->view->title = $this->lang->issue->common . $this->lang->colon . $issue->title;
|
||||
$this->view->position[] = $this->lang->issue->common;
|
||||
$this->view->position[] = $this->lang->issue->basicInfo;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter|pofirst|nodeleted');
|
||||
$this->view->issue = $issue;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Common actions of issue module.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @param int $object
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function commonAction($issueID, $object)
|
||||
{
|
||||
$this->view->actions = $this->loadModel('action')->getList($object, $issueID);
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module lang file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = 'Issue';
|
||||
$lang->issue->browse = 'List';
|
||||
$lang->issue->resolvedBy = 'Resolved By';
|
||||
$lang->issue->project = 'Linked Project';
|
||||
$lang->issue->title = 'Title';
|
||||
$lang->issue->desc = 'Description';
|
||||
$lang->issue->pri = 'Priority';
|
||||
$lang->issue->severity = 'Severity';
|
||||
$lang->issue->type = 'Type';
|
||||
$lang->issue->effectedArea = 'Impact';
|
||||
$lang->issue->activity = 'Activities';
|
||||
$lang->issue->deadline = 'Deadline';
|
||||
$lang->issue->resolution = 'Resolution';
|
||||
$lang->issue->resolutionComment = 'Comment';
|
||||
$lang->issue->resolvedDate = 'Resolved Date';
|
||||
$lang->issue->status = 'Status';
|
||||
$lang->issue->createdBy = 'CreatedBy';
|
||||
$lang->issue->createdDate = 'CreatedDate';
|
||||
$lang->issue->owner = 'Owner';
|
||||
$lang->issue->editedBy = 'EditedBy';
|
||||
$lang->issue->editedDate = 'EditedDate';
|
||||
$lang->issue->activateBy = 'ActivatedBy';
|
||||
$lang->issue->activateDate = 'ActivatedDate';
|
||||
$lang->issue->closedBy = 'ClosedBy';
|
||||
$lang->issue->closedDate = 'ClosedDate';
|
||||
$lang->issue->assignedTo = 'AssignedTo';
|
||||
$lang->issue->assignedBy = 'AssignedBy';
|
||||
$lang->issue->assignedDate = 'AssignedDate';
|
||||
$lang->issue->resolve = 'Resolved';
|
||||
$lang->issue->id = 'ID';
|
||||
$lang->issue->confirm = 'Confirm';
|
||||
|
||||
$lang->issue->view = 'Issue Details';
|
||||
$lang->issue->close = 'Closed';
|
||||
$lang->issue->cancel = 'Cancel';
|
||||
$lang->issue->delete = 'Delete';
|
||||
$lang->issue->search = 'Search';
|
||||
$lang->issue->basicInfo = 'Basic Information';
|
||||
$lang->issue->activate = 'Activate';
|
||||
$lang->issue->assignTo = 'Assign';
|
||||
$lang->issue->create = 'Create Issue';
|
||||
$lang->issue->edit = 'Edit';
|
||||
$lang->issue->batchCreate = 'Batch Create';
|
||||
$lang->issue->deleted = 'Deleted';
|
||||
|
||||
$lang->issue->labelList['all'] = 'All';
|
||||
$lang->issue->labelList['open'] = 'Open';
|
||||
$lang->issue->labelList['assignto'] = 'AssignedToMe';
|
||||
$lang->issue->labelList['closed'] = 'Closed';
|
||||
$lang->issue->labelList['suspended'] = 'Suspended';
|
||||
$lang->issue->labelList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->issue->priList[''] = '';
|
||||
$lang->issue->priList['1'] = 1;
|
||||
$lang->issue->priList['2'] = 2;
|
||||
$lang->issue->priList['3'] = 3;
|
||||
$lang->issue->priList['4'] = 4;
|
||||
|
||||
$lang->issue->severityList[''] = '';
|
||||
$lang->issue->severityList['1'] = '1';
|
||||
$lang->issue->severityList['2'] = '2';
|
||||
$lang->issue->severityList['3'] = '3';
|
||||
$lang->issue->severityList['4'] = '4';
|
||||
|
||||
$lang->issue->typeList[''] = '';
|
||||
$lang->issue->typeList['design'] = 'Design';
|
||||
$lang->issue->typeList['code'] = 'Code';
|
||||
$lang->issue->typeList['performance'] = 'Performance';
|
||||
$lang->issue->typeList['version'] = 'Version';
|
||||
$lang->issue->typeList['storyadd'] = 'New Story';
|
||||
$lang->issue->typeList['storychanged'] = 'Story Change';
|
||||
$lang->issue->typeList['storyremoved'] = 'Story Deleted';
|
||||
$lang->issue->typeList['data'] = 'Data';
|
||||
|
||||
$lang->issue->resolutionList['resolved'] = 'Resolved';
|
||||
$lang->issue->resolutionList['tostory'] = 'To Story';
|
||||
$lang->issue->resolutionList['tobug'] = 'To Bug';
|
||||
$lang->issue->resolutionList['torisk'] = 'To Risk';
|
||||
$lang->issue->resolutionList['totask'] = 'To Task';
|
||||
|
||||
$lang->issue->statusList['unconfirmed'] = 'Unconfirmed';
|
||||
$lang->issue->statusList['confirmed'] = 'Confirmed';
|
||||
$lang->issue->statusList['resolved'] = 'Resolved';
|
||||
$lang->issue->statusList['canceled'] = 'Canceled';
|
||||
$lang->issue->statusList['closed'] = 'Closed';
|
||||
$lang->issue->statusList['active'] = 'Active';
|
||||
|
||||
$lang->issue->resolveMethods = array();
|
||||
$lang->issue->resolveMethods['resolved'] = 'Resolved';
|
||||
$lang->issue->resolveMethods['totask'] = 'To Task';
|
||||
$lang->issue->resolveMethods['tobug'] = 'To Bug';
|
||||
$lang->issue->resolveMethods['tostory'] = 'To Story';
|
||||
$lang->issue->resolveMethods['torisk'] = 'To Risk';
|
||||
|
||||
$lang->issue->confirmDelete = 'Do you want to delete this issue?';
|
||||
$lang->issue->typeEmpty = 'ID: %s Type cannot be empty.';
|
||||
$lang->issue->titleEmpty = 'ID: %s Title cannot be empty.';
|
||||
$lang->issue->severityEmpty = 'ID: %s Severity cannot be empty.';
|
||||
|
||||
$lang->issue->logComments = array();
|
||||
$lang->issue->logComments['totask'] = " created Task %s";
|
||||
$lang->issue->logComments['tostory'] = " created Story %s";
|
||||
$lang->issue->logComments['tobug'] = " created Bug %s" ;
|
||||
$lang->issue->logComments['torisk'] = " created Risk %s";
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module lang file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = 'Issue';
|
||||
$lang->issue->browse = 'List';
|
||||
$lang->issue->resolvedBy = 'Resolved By';
|
||||
$lang->issue->project = 'Linked Project';
|
||||
$lang->issue->title = 'Title';
|
||||
$lang->issue->desc = 'Description';
|
||||
$lang->issue->pri = 'Priority';
|
||||
$lang->issue->severity = 'Severity';
|
||||
$lang->issue->type = 'Type';
|
||||
$lang->issue->effectedArea = 'Impact';
|
||||
$lang->issue->activity = 'Activities';
|
||||
$lang->issue->deadline = 'Deadline';
|
||||
$lang->issue->resolution = 'Resolution';
|
||||
$lang->issue->resolutionComment = 'Comment';
|
||||
$lang->issue->resolvedDate = 'Resolved Date';
|
||||
$lang->issue->status = 'Status';
|
||||
$lang->issue->createdBy = 'CreatedBy';
|
||||
$lang->issue->createdDate = 'CreatedDate';
|
||||
$lang->issue->owner = 'Owner';
|
||||
$lang->issue->editedBy = 'EditedBy';
|
||||
$lang->issue->editedDate = 'EditedDate';
|
||||
$lang->issue->activateBy = 'ActivatedBy';
|
||||
$lang->issue->activateDate = 'ActivatedDate';
|
||||
$lang->issue->closedBy = 'ClosedBy';
|
||||
$lang->issue->closedDate = 'ClosedDate';
|
||||
$lang->issue->assignedTo = 'AssignedTo';
|
||||
$lang->issue->assignedBy = 'AssignedBy';
|
||||
$lang->issue->assignedDate = 'AssignedDate';
|
||||
$lang->issue->resolve = 'Resolved';
|
||||
$lang->issue->id = 'ID';
|
||||
$lang->issue->confirm = 'Confirm';
|
||||
|
||||
$lang->issue->view = 'Issue Details';
|
||||
$lang->issue->close = 'Closed';
|
||||
$lang->issue->cancel = 'Cancel';
|
||||
$lang->issue->delete = 'Delete';
|
||||
$lang->issue->search = 'Search';
|
||||
$lang->issue->basicInfo = 'Basic Information';
|
||||
$lang->issue->activate = 'Activate';
|
||||
$lang->issue->assignTo = 'Assign';
|
||||
$lang->issue->create = 'Create Issue';
|
||||
$lang->issue->edit = 'Edit';
|
||||
$lang->issue->batchCreate = 'Batch Create';
|
||||
$lang->issue->deleted = 'Deleted';
|
||||
|
||||
$lang->issue->labelList['all'] = 'All';
|
||||
$lang->issue->labelList['open'] = 'Open';
|
||||
$lang->issue->labelList['assignto'] = 'AssignedToMe';
|
||||
$lang->issue->labelList['closed'] = 'Closed';
|
||||
$lang->issue->labelList['suspended'] = 'Suspended';
|
||||
$lang->issue->labelList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->issue->priList[''] = '';
|
||||
$lang->issue->priList['1'] = 1;
|
||||
$lang->issue->priList['2'] = 2;
|
||||
$lang->issue->priList['3'] = 3;
|
||||
$lang->issue->priList['4'] = 4;
|
||||
|
||||
$lang->issue->severityList[''] = '';
|
||||
$lang->issue->severityList['1'] = '1';
|
||||
$lang->issue->severityList['2'] = '2';
|
||||
$lang->issue->severityList['3'] = '3';
|
||||
$lang->issue->severityList['4'] = '4';
|
||||
|
||||
$lang->issue->typeList[''] = '';
|
||||
$lang->issue->typeList['design'] = 'Design';
|
||||
$lang->issue->typeList['code'] = 'Code';
|
||||
$lang->issue->typeList['performance'] = 'Performance';
|
||||
$lang->issue->typeList['version'] = 'Version';
|
||||
$lang->issue->typeList['storyadd'] = 'New Story';
|
||||
$lang->issue->typeList['storychanged'] = 'Story Change';
|
||||
$lang->issue->typeList['storyremoved'] = 'Story Deleted';
|
||||
$lang->issue->typeList['data'] = 'Data';
|
||||
|
||||
$lang->issue->resolutionList['resolved'] = 'Resolved';
|
||||
$lang->issue->resolutionList['tostory'] = 'To Story';
|
||||
$lang->issue->resolutionList['tobug'] = 'To Bug';
|
||||
$lang->issue->resolutionList['torisk'] = 'To Risk';
|
||||
$lang->issue->resolutionList['totask'] = 'To Task';
|
||||
|
||||
$lang->issue->statusList['unconfirmed'] = 'Unconfirmed';
|
||||
$lang->issue->statusList['confirmed'] = 'Confirmed';
|
||||
$lang->issue->statusList['resolved'] = 'Resolved';
|
||||
$lang->issue->statusList['canceled'] = 'Canceled';
|
||||
$lang->issue->statusList['closed'] = 'Closed';
|
||||
$lang->issue->statusList['active'] = 'Active';
|
||||
|
||||
$lang->issue->resolveMethods = array();
|
||||
$lang->issue->resolveMethods['resolved'] = 'Resolved';
|
||||
$lang->issue->resolveMethods['totask'] = 'To Task';
|
||||
$lang->issue->resolveMethods['tobug'] = 'To Bug';
|
||||
$lang->issue->resolveMethods['tostory'] = 'To Story';
|
||||
$lang->issue->resolveMethods['torisk'] = 'To Risk';
|
||||
|
||||
$lang->issue->confirmDelete = 'Do you want to delete this issue?';
|
||||
$lang->issue->typeEmpty = 'ID: %s Type cannot be empty.';
|
||||
$lang->issue->titleEmpty = 'ID: %s Title cannot be empty.';
|
||||
$lang->issue->severityEmpty = 'ID: %s Severity cannot be empty.';
|
||||
|
||||
$lang->issue->logComments = array();
|
||||
$lang->issue->logComments['totask'] = " created Task %s";
|
||||
$lang->issue->logComments['tostory'] = " created Story %s";
|
||||
$lang->issue->logComments['tobug'] = " created Bug %s" ;
|
||||
$lang->issue->logComments['torisk'] = " created Risk %s";
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module lang file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = 'Issue';
|
||||
$lang->issue->browse = 'List';
|
||||
$lang->issue->resolvedBy = 'Resolved By';
|
||||
$lang->issue->project = 'Linked Project';
|
||||
$lang->issue->title = 'Title';
|
||||
$lang->issue->desc = 'Description';
|
||||
$lang->issue->pri = 'Priority';
|
||||
$lang->issue->severity = 'Severity';
|
||||
$lang->issue->type = 'Type';
|
||||
$lang->issue->effectedArea = 'Impact';
|
||||
$lang->issue->activity = 'Activities';
|
||||
$lang->issue->deadline = 'Deadline';
|
||||
$lang->issue->resolution = 'Resolution';
|
||||
$lang->issue->resolutionComment = 'Comment';
|
||||
$lang->issue->resolvedDate = 'Resolved Date';
|
||||
$lang->issue->status = 'Status';
|
||||
$lang->issue->createdBy = 'CreatedBy';
|
||||
$lang->issue->createdDate = 'CreatedDate';
|
||||
$lang->issue->owner = 'Owner';
|
||||
$lang->issue->editedBy = 'EditedBy';
|
||||
$lang->issue->editedDate = 'EditedDate';
|
||||
$lang->issue->activateBy = 'ActivatedBy';
|
||||
$lang->issue->activateDate = 'ActivatedDate';
|
||||
$lang->issue->closedBy = 'ClosedBy';
|
||||
$lang->issue->closedDate = 'ClosedDate';
|
||||
$lang->issue->assignedTo = 'AssignedTo';
|
||||
$lang->issue->assignedBy = 'AssignedBy';
|
||||
$lang->issue->assignedDate = 'AssignedDate';
|
||||
$lang->issue->resolve = 'Resolved';
|
||||
$lang->issue->id = 'ID';
|
||||
$lang->issue->confirm = 'Confirm';
|
||||
|
||||
$lang->issue->view = 'Issue Details';
|
||||
$lang->issue->close = 'Closed';
|
||||
$lang->issue->cancel = 'Cancel';
|
||||
$lang->issue->delete = 'Delete';
|
||||
$lang->issue->search = 'Search';
|
||||
$lang->issue->basicInfo = 'Basic Information';
|
||||
$lang->issue->activate = 'Activate';
|
||||
$lang->issue->assignTo = 'Assign';
|
||||
$lang->issue->create = 'Create Issue';
|
||||
$lang->issue->edit = 'Edit';
|
||||
$lang->issue->batchCreate = 'Batch Create';
|
||||
$lang->issue->deleted = 'Deleted';
|
||||
|
||||
$lang->issue->labelList['all'] = 'All';
|
||||
$lang->issue->labelList['open'] = 'Open';
|
||||
$lang->issue->labelList['assignto'] = 'AssignedToMe';
|
||||
$lang->issue->labelList['closed'] = 'Closed';
|
||||
$lang->issue->labelList['suspended'] = 'Suspended';
|
||||
$lang->issue->labelList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->issue->priList[''] = '';
|
||||
$lang->issue->priList['1'] = 1;
|
||||
$lang->issue->priList['2'] = 2;
|
||||
$lang->issue->priList['3'] = 3;
|
||||
$lang->issue->priList['4'] = 4;
|
||||
|
||||
$lang->issue->severityList[''] = '';
|
||||
$lang->issue->severityList['1'] = '1';
|
||||
$lang->issue->severityList['2'] = '2';
|
||||
$lang->issue->severityList['3'] = '3';
|
||||
$lang->issue->severityList['4'] = '4';
|
||||
|
||||
$lang->issue->typeList[''] = '';
|
||||
$lang->issue->typeList['design'] = 'Design';
|
||||
$lang->issue->typeList['code'] = 'Code';
|
||||
$lang->issue->typeList['performance'] = 'Performance';
|
||||
$lang->issue->typeList['version'] = 'Version';
|
||||
$lang->issue->typeList['storyadd'] = 'New Story';
|
||||
$lang->issue->typeList['storychanged'] = 'Story Change';
|
||||
$lang->issue->typeList['storyremoved'] = 'Story Deleted';
|
||||
$lang->issue->typeList['data'] = 'Data';
|
||||
|
||||
$lang->issue->resolutionList['resolved'] = 'Resolved';
|
||||
$lang->issue->resolutionList['tostory'] = 'To Story';
|
||||
$lang->issue->resolutionList['tobug'] = 'To Bug';
|
||||
$lang->issue->resolutionList['torisk'] = 'To Risk';
|
||||
$lang->issue->resolutionList['totask'] = 'To Task';
|
||||
|
||||
$lang->issue->statusList['unconfirmed'] = 'Unconfirmed';
|
||||
$lang->issue->statusList['confirmed'] = 'Confirmed';
|
||||
$lang->issue->statusList['resolved'] = 'Resolved';
|
||||
$lang->issue->statusList['canceled'] = 'Canceled';
|
||||
$lang->issue->statusList['closed'] = 'Closed';
|
||||
$lang->issue->statusList['active'] = 'Active';
|
||||
|
||||
$lang->issue->resolveMethods = array();
|
||||
$lang->issue->resolveMethods['resolved'] = 'Resolved';
|
||||
$lang->issue->resolveMethods['totask'] = 'To Task';
|
||||
$lang->issue->resolveMethods['tobug'] = 'To Bug';
|
||||
$lang->issue->resolveMethods['tostory'] = 'To Story';
|
||||
$lang->issue->resolveMethods['torisk'] = 'To Risk';
|
||||
|
||||
$lang->issue->confirmDelete = 'Do you want to delete this issue?';
|
||||
$lang->issue->typeEmpty = 'ID: %s Type cannot be empty.';
|
||||
$lang->issue->titleEmpty = 'ID: %s Title cannot be empty.';
|
||||
$lang->issue->severityEmpty = 'ID: %s Severity cannot be empty.';
|
||||
|
||||
$lang->issue->logComments = array();
|
||||
$lang->issue->logComments['totask'] = " created Task %s";
|
||||
$lang->issue->logComments['tostory'] = " created Story %s";
|
||||
$lang->issue->logComments['tobug'] = " created Bug %s" ;
|
||||
$lang->issue->logComments['torisk'] = " created Risk %s";
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module lang file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = 'Issue';
|
||||
$lang->issue->browse = 'List';
|
||||
$lang->issue->resolvedBy = 'Resolved By';
|
||||
$lang->issue->project = 'Linked Project';
|
||||
$lang->issue->title = 'Title';
|
||||
$lang->issue->desc = 'Description';
|
||||
$lang->issue->pri = 'Priority';
|
||||
$lang->issue->severity = 'Severity';
|
||||
$lang->issue->type = 'Type';
|
||||
$lang->issue->effectedArea = 'Impact';
|
||||
$lang->issue->activity = 'Activities';
|
||||
$lang->issue->deadline = 'Deadline';
|
||||
$lang->issue->resolution = 'Resolution';
|
||||
$lang->issue->resolutionComment = 'Comment';
|
||||
$lang->issue->resolvedDate = 'Resolved Date';
|
||||
$lang->issue->status = 'Status';
|
||||
$lang->issue->createdBy = 'CreatedBy';
|
||||
$lang->issue->createdDate = 'CreatedDate';
|
||||
$lang->issue->owner = 'Owner';
|
||||
$lang->issue->editedBy = 'EditedBy';
|
||||
$lang->issue->editedDate = 'EditedDate';
|
||||
$lang->issue->activateBy = 'ActivatedBy';
|
||||
$lang->issue->activateDate = 'ActivatedDate';
|
||||
$lang->issue->closedBy = 'ClosedBy';
|
||||
$lang->issue->closedDate = 'ClosedDate';
|
||||
$lang->issue->assignedTo = 'AssignedTo';
|
||||
$lang->issue->assignedBy = 'AssignedBy';
|
||||
$lang->issue->assignedDate = 'AssignedDate';
|
||||
$lang->issue->resolve = 'Resolved';
|
||||
$lang->issue->id = 'ID';
|
||||
$lang->issue->confirm = 'Confirm';
|
||||
|
||||
$lang->issue->view = 'Issue Details';
|
||||
$lang->issue->close = 'Closed';
|
||||
$lang->issue->cancel = 'Cancel';
|
||||
$lang->issue->delete = 'Delete';
|
||||
$lang->issue->search = 'Search';
|
||||
$lang->issue->basicInfo = 'Basic Information';
|
||||
$lang->issue->activate = 'Activate';
|
||||
$lang->issue->assignTo = 'Assign';
|
||||
$lang->issue->create = 'Create Issue';
|
||||
$lang->issue->edit = 'Edit';
|
||||
$lang->issue->batchCreate = 'Batch Create';
|
||||
$lang->issue->deleted = 'Deleted';
|
||||
|
||||
$lang->issue->labelList['all'] = 'All';
|
||||
$lang->issue->labelList['open'] = 'Open';
|
||||
$lang->issue->labelList['assignto'] = 'AssignedToMe';
|
||||
$lang->issue->labelList['closed'] = 'Closed';
|
||||
$lang->issue->labelList['suspended'] = 'Suspended';
|
||||
$lang->issue->labelList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->issue->priList[''] = '';
|
||||
$lang->issue->priList['1'] = 1;
|
||||
$lang->issue->priList['2'] = 2;
|
||||
$lang->issue->priList['3'] = 3;
|
||||
$lang->issue->priList['4'] = 4;
|
||||
|
||||
$lang->issue->severityList[''] = '';
|
||||
$lang->issue->severityList['1'] = '1';
|
||||
$lang->issue->severityList['2'] = '2';
|
||||
$lang->issue->severityList['3'] = '3';
|
||||
$lang->issue->severityList['4'] = '4';
|
||||
|
||||
$lang->issue->typeList[''] = '';
|
||||
$lang->issue->typeList['design'] = 'Design';
|
||||
$lang->issue->typeList['code'] = 'Code';
|
||||
$lang->issue->typeList['performance'] = 'Performance';
|
||||
$lang->issue->typeList['version'] = 'Version';
|
||||
$lang->issue->typeList['storyadd'] = 'New Story';
|
||||
$lang->issue->typeList['storychanged'] = 'Story Change';
|
||||
$lang->issue->typeList['storyremoved'] = 'Story Deleted';
|
||||
$lang->issue->typeList['data'] = 'Data';
|
||||
|
||||
$lang->issue->resolutionList['resolved'] = 'Resolved';
|
||||
$lang->issue->resolutionList['tostory'] = 'To Story';
|
||||
$lang->issue->resolutionList['tobug'] = 'To Bug';
|
||||
$lang->issue->resolutionList['torisk'] = 'To Risk';
|
||||
$lang->issue->resolutionList['totask'] = 'To Task';
|
||||
|
||||
$lang->issue->statusList['unconfirmed'] = 'Unconfirmed';
|
||||
$lang->issue->statusList['confirmed'] = 'Confirmed';
|
||||
$lang->issue->statusList['resolved'] = 'Resolved';
|
||||
$lang->issue->statusList['canceled'] = 'Canceled';
|
||||
$lang->issue->statusList['closed'] = 'Closed';
|
||||
$lang->issue->statusList['active'] = 'Active';
|
||||
|
||||
$lang->issue->resolveMethods = array();
|
||||
$lang->issue->resolveMethods['resolved'] = 'Resolved';
|
||||
$lang->issue->resolveMethods['totask'] = 'To Task';
|
||||
$lang->issue->resolveMethods['tobug'] = 'To Bug';
|
||||
$lang->issue->resolveMethods['tostory'] = 'To Story';
|
||||
$lang->issue->resolveMethods['torisk'] = 'To Risk';
|
||||
|
||||
$lang->issue->confirmDelete = 'Do you want to delete this issue?';
|
||||
$lang->issue->typeEmpty = 'ID: %s Type cannot be empty.';
|
||||
$lang->issue->titleEmpty = 'ID: %s Title cannot be empty.';
|
||||
$lang->issue->severityEmpty = 'ID: %s Severity cannot be empty.';
|
||||
|
||||
$lang->issue->logComments = array();
|
||||
$lang->issue->logComments['totask'] = " created Task %s";
|
||||
$lang->issue->logComments['tostory'] = " created Story %s";
|
||||
$lang->issue->logComments['tobug'] = " created Bug %s" ;
|
||||
$lang->issue->logComments['torisk'] = " created Risk %s";
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module lang file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = '问题';
|
||||
$lang->issue->browse = '问题列表';
|
||||
$lang->issue->resolvedBy = '解决者';
|
||||
$lang->issue->project = '所属项目';
|
||||
$lang->issue->title = '标题';
|
||||
$lang->issue->desc = '描述';
|
||||
$lang->issue->pri = '优先级';
|
||||
$lang->issue->severity = '严重程度';
|
||||
$lang->issue->type = '类别';
|
||||
$lang->issue->effectedArea = '受影响的活动';
|
||||
$lang->issue->activity = '活动列表';
|
||||
$lang->issue->deadline = '计划解决日期';
|
||||
$lang->issue->resolution = '解决方式';
|
||||
$lang->issue->resolutionComment = '解决方案';
|
||||
$lang->issue->resolvedDate = '实际解决日期';
|
||||
$lang->issue->status = '结果';
|
||||
$lang->issue->createdBy = '由谁创建';
|
||||
$lang->issue->createdDate = '创建日期';
|
||||
$lang->issue->owner = '提出人';
|
||||
$lang->issue->editedBy = '由谁编辑';
|
||||
$lang->issue->editedDate = '编辑日期';
|
||||
$lang->issue->activateBy = '由谁激活';
|
||||
$lang->issue->activateDate = '激活日期';
|
||||
$lang->issue->closedBy = '由谁关闭';
|
||||
$lang->issue->closedDate = '关闭日期';
|
||||
$lang->issue->assignedTo = '指派给';
|
||||
$lang->issue->assignedBy = '由谁指派';
|
||||
$lang->issue->assignedDate = '指派时间';
|
||||
$lang->issue->resolve = '解决';
|
||||
$lang->issue->id = '编号';
|
||||
$lang->issue->confirm = '确认';
|
||||
|
||||
$lang->issue->view = '问题详情';
|
||||
$lang->issue->close = '关闭';
|
||||
$lang->issue->cancel = '取消';
|
||||
$lang->issue->delete = '删除';
|
||||
$lang->issue->search = '搜索';
|
||||
$lang->issue->basicInfo = '基本信息';
|
||||
$lang->issue->activate = '激活';
|
||||
$lang->issue->assignTo = '指派';
|
||||
$lang->issue->create = '新建问题';
|
||||
$lang->issue->edit = '编辑';
|
||||
$lang->issue->batchCreate = '批量新建';
|
||||
$lang->issue->deleted = '已删除';
|
||||
|
||||
$lang->issue->labelList['all'] = '全部';
|
||||
$lang->issue->labelList['open'] = '开放';
|
||||
$lang->issue->labelList['assignto'] = '指派给我';
|
||||
$lang->issue->labelList['closed'] = '已关闭';
|
||||
$lang->issue->labelList['suspended'] = '已挂起';
|
||||
$lang->issue->labelList['canceled'] = '已取消';
|
||||
|
||||
$lang->issue->priList[''] = '';
|
||||
$lang->issue->priList['1'] = 1;
|
||||
$lang->issue->priList['2'] = 2;
|
||||
$lang->issue->priList['3'] = 3;
|
||||
$lang->issue->priList['4'] = 4;
|
||||
|
||||
$lang->issue->severityList[''] = '';
|
||||
$lang->issue->severityList['1'] = '严重';
|
||||
$lang->issue->severityList['2'] = '较严重';
|
||||
$lang->issue->severityList['3'] = '较小';
|
||||
$lang->issue->severityList['4'] = '建议';
|
||||
|
||||
$lang->issue->typeList[''] = '';
|
||||
$lang->issue->typeList['design'] = '设计问题';
|
||||
$lang->issue->typeList['code'] = '程序缺陷';
|
||||
$lang->issue->typeList['performance'] = '性能问题';
|
||||
$lang->issue->typeList['version'] = '版本控制';
|
||||
$lang->issue->typeList['storyadd'] = '需求新增';
|
||||
$lang->issue->typeList['storychanged'] = '需求修改';
|
||||
$lang->issue->typeList['storyremoved'] = '需求删除';
|
||||
$lang->issue->typeList['data'] = '数据问题';
|
||||
|
||||
$lang->issue->resolutionList['resolved'] = '已解决';
|
||||
$lang->issue->resolutionList['tostory'] = '转需求';
|
||||
$lang->issue->resolutionList['tobug'] = '转BUG';
|
||||
$lang->issue->resolutionList['torisk'] = '转风险';
|
||||
$lang->issue->resolutionList['totask'] = '转任务';
|
||||
|
||||
$lang->issue->statusList['unconfirmed'] = '待确认';
|
||||
$lang->issue->statusList['confirmed'] = '已确认';
|
||||
$lang->issue->statusList['resolved'] = '已解决';
|
||||
$lang->issue->statusList['canceled'] = '取消';
|
||||
$lang->issue->statusList['closed'] = '已关闭';
|
||||
$lang->issue->statusList['active'] = '激活';
|
||||
|
||||
$lang->issue->resolveMethods = array();
|
||||
$lang->issue->resolveMethods['resolved'] = '已解决';
|
||||
$lang->issue->resolveMethods['totask'] = '转任务';
|
||||
$lang->issue->resolveMethods['tobug'] = '转BUG';
|
||||
$lang->issue->resolveMethods['tostory'] = '转需求';
|
||||
$lang->issue->resolveMethods['torisk'] = '转风险';
|
||||
|
||||
$lang->issue->confirmDelete = '您确认删除该问题?';
|
||||
$lang->issue->typeEmpty = 'ID:%s的类别不能为空。';
|
||||
$lang->issue->titleEmpty = 'ID:%s的标题不能为空。';
|
||||
$lang->issue->severityEmpty = 'ID:%s的严重程度不能为空。';
|
||||
|
||||
$lang->issue->logComments = array();
|
||||
$lang->issue->logComments['totask'] = "创建了任务:%s。";
|
||||
$lang->issue->logComments['tostory'] = "创建了需求:%s。";
|
||||
$lang->issue->logComments['tobug'] = "创建了BUG:%s。";
|
||||
$lang->issue->logComments['torisk'] = "创建了风险:%s。";
|
||||
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue module lang file of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青島易軟天創網絡科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
$lang->issue->common = '問題';
|
||||
$lang->issue->browse = '問題列表';
|
||||
$lang->issue->resolvedBy = '解決者';
|
||||
$lang->issue->project = '所屬項目';
|
||||
$lang->issue->title = '標題';
|
||||
$lang->issue->desc = '描述';
|
||||
$lang->issue->pri = '優先順序';
|
||||
$lang->issue->severity = '嚴重程度';
|
||||
$lang->issue->type = '類別';
|
||||
$lang->issue->effectedArea = '受影響的活動';
|
||||
$lang->issue->activity = '活動列表';
|
||||
$lang->issue->deadline = '計劃解決日期';
|
||||
$lang->issue->resolution = '解決方式';
|
||||
$lang->issue->resolutionComment = '解決方案';
|
||||
$lang->issue->resolvedDate = '實際解決日期';
|
||||
$lang->issue->status = '結果';
|
||||
$lang->issue->createdBy = '由誰創建';
|
||||
$lang->issue->createdDate = '創建日期';
|
||||
$lang->issue->owner = '提出人';
|
||||
$lang->issue->editedBy = '由誰編輯';
|
||||
$lang->issue->editedDate = '編輯日期';
|
||||
$lang->issue->activateBy = '由誰激活';
|
||||
$lang->issue->activateDate = '激活日期';
|
||||
$lang->issue->closedBy = '由誰關閉';
|
||||
$lang->issue->closedDate = '關閉日期';
|
||||
$lang->issue->assignedTo = '指派給';
|
||||
$lang->issue->assignedBy = '由誰指派';
|
||||
$lang->issue->assignedDate = '指派時間';
|
||||
$lang->issue->resolve = '解決';
|
||||
$lang->issue->id = '編號';
|
||||
$lang->issue->confirm = '確認';
|
||||
|
||||
$lang->issue->view = '問題詳情';
|
||||
$lang->issue->close = '關閉';
|
||||
$lang->issue->cancel = '取消';
|
||||
$lang->issue->delete = '刪除';
|
||||
$lang->issue->search = '搜索';
|
||||
$lang->issue->basicInfo = '基本信息';
|
||||
$lang->issue->activate = '激活';
|
||||
$lang->issue->assignTo = '指派';
|
||||
$lang->issue->create = '新建問題';
|
||||
$lang->issue->edit = '編輯';
|
||||
$lang->issue->batchCreate = '批量新建';
|
||||
$lang->issue->deleted = '已刪除';
|
||||
|
||||
$lang->issue->labelList['all'] = '全部';
|
||||
$lang->issue->labelList['open'] = '開放';
|
||||
$lang->issue->labelList['assignto'] = '指派給我';
|
||||
$lang->issue->labelList['closed'] = '已關閉';
|
||||
$lang->issue->labelList['suspended'] = '已掛起';
|
||||
$lang->issue->labelList['canceled'] = '已取消';
|
||||
|
||||
$lang->issue->priList[''] = '';
|
||||
$lang->issue->priList['1'] = 1;
|
||||
$lang->issue->priList['2'] = 2;
|
||||
$lang->issue->priList['3'] = 3;
|
||||
$lang->issue->priList['4'] = 4;
|
||||
|
||||
$lang->issue->severityList[''] = '';
|
||||
$lang->issue->severityList['1'] = '嚴重';
|
||||
$lang->issue->severityList['2'] = '較嚴重';
|
||||
$lang->issue->severityList['3'] = '較小';
|
||||
$lang->issue->severityList['4'] = '建議';
|
||||
|
||||
$lang->issue->typeList[''] = '';
|
||||
$lang->issue->typeList['design'] = '設計問題';
|
||||
$lang->issue->typeList['code'] = '程序缺陷';
|
||||
$lang->issue->typeList['performance'] = '性能問題';
|
||||
$lang->issue->typeList['version'] = '版本控制';
|
||||
$lang->issue->typeList['storyadd'] = '需求新增';
|
||||
$lang->issue->typeList['storychanged'] = '需求修改';
|
||||
$lang->issue->typeList['storyremoved'] = '需求刪除';
|
||||
$lang->issue->typeList['data'] = '數據問題';
|
||||
|
||||
$lang->issue->resolutionList['resolved'] = '已解決';
|
||||
$lang->issue->resolutionList['tostory'] = '轉需求';
|
||||
$lang->issue->resolutionList['tobug'] = '轉BUG';
|
||||
$lang->issue->resolutionList['torisk'] = '轉風險';
|
||||
$lang->issue->resolutionList['totask'] = '轉任務';
|
||||
|
||||
$lang->issue->statusList['unconfirmed'] = '待確認';
|
||||
$lang->issue->statusList['confirmed'] = '已確認';
|
||||
$lang->issue->statusList['resolved'] = '已解決';
|
||||
$lang->issue->statusList['canceled'] = '取消';
|
||||
$lang->issue->statusList['closed'] = '已關閉';
|
||||
$lang->issue->statusList['active'] = '激活';
|
||||
|
||||
$lang->issue->resolveMethods = array();
|
||||
$lang->issue->resolveMethods['resolved'] = '已解決';
|
||||
$lang->issue->resolveMethods['totask'] = '轉任務';
|
||||
$lang->issue->resolveMethods['tobug'] = '轉BUG';
|
||||
$lang->issue->resolveMethods['tostory'] = '轉需求';
|
||||
$lang->issue->resolveMethods['torisk'] = '轉風險';
|
||||
|
||||
$lang->issue->confirmDelete = '您確認刪除該問題?';
|
||||
$lang->issue->typeEmpty = 'ID:%s的類別不能為空。';
|
||||
$lang->issue->titleEmpty = 'ID:%s的標題不能為空。';
|
||||
$lang->issue->severityEmpty = 'ID:%s的嚴重程度不能為空。';
|
||||
|
||||
$lang->issue->logComments = array();
|
||||
$lang->issue->logComments['totask'] = "創建了任務:%s。";
|
||||
$lang->issue->logComments['tostory'] = "創建了需求:%s。";
|
||||
$lang->issue->logComments['tobug'] = "創建了BUG:%s。";
|
||||
$lang->issue->logComments['torisk'] = "創建了風險:%s。";
|
||||
@@ -1,520 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yong Lei <leiyong@easycorp.ltd>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class issueModel extends model
|
||||
{
|
||||
/**
|
||||
* Create an issue.
|
||||
*
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$now = helper::now();
|
||||
$issue = fixer::input('post')
|
||||
->add('createdBy', $this->app->user->account)
|
||||
->add('createdDate', $now)
|
||||
->add('status', 'unconfirmed')
|
||||
->add('PRJ', $this->session->PRJ)
|
||||
->remove('labels,files')
|
||||
->addIF($this->post->assignedTo, 'assignedBy', $this->app->user->account)
|
||||
->addIF($this->post->assignedTo, 'assignedDate', $now)
|
||||
->stripTags($this->config->issue->editor->create['id'], $this->config->allowedTags)
|
||||
->get();
|
||||
|
||||
$this->dao->insert(TABLE_ISSUE)->data($issue)->batchCheck($this->config->issue->create->requiredFields, 'notempty')->exec();
|
||||
$issueID = $this->dao->lastInsertID();
|
||||
$this->loadModel('file')->saveUpload('issue', $issueID);
|
||||
|
||||
return $issueID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get stakeholder issue list data.
|
||||
*
|
||||
* @param string $owner
|
||||
* @param string $activityID
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getStakeholderIssue($owner = '', $activityID = 0, $pager = null)
|
||||
{
|
||||
$issueList = $this->dao->select('*')->from(TABLE_ISSUE)
|
||||
->where('deleted')->eq('0')
|
||||
->beginIF($owner)->andWhere('owner')->eq($owner)->fi()
|
||||
->beginIF($activityID)->andWhere('activity')->eq($activityID)->fi()
|
||||
->orderBy('id_desc')
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
return $issueList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a issue details.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return object|bool
|
||||
*/
|
||||
public function getByID($issueID)
|
||||
{
|
||||
$issue = $this->dao->select('*')->from(TABLE_ISSUE)->where('id')->eq($issueID)->fetch();
|
||||
if(!$issue) return false;
|
||||
|
||||
$issue->files = $this->loadModel('file')->getByObject('issue', $issue->id);
|
||||
return $issue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get issue list data.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $browseType bySearch|open|assignTo|closed|suspended|canceled
|
||||
* @param int $queryID
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getList($projectID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null)
|
||||
{
|
||||
$issueQuery = '';
|
||||
if($browseType == 'bysearch')
|
||||
{
|
||||
$query = $queryID ? $this->loadModel('search')->getQuery($queryID) : '';
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('issueQuery', $query->sql);
|
||||
$this->session->set('issueForm', $query->form);
|
||||
}
|
||||
if($this->session->issueQuery == false) $this->session->set('issueQuery', ' 1=1');
|
||||
$issueQuery = $this->session->issueQuery;
|
||||
}
|
||||
|
||||
$issueList = $this->dao->select('*')->from(TABLE_ISSUE)
|
||||
->where('deleted')->eq('0')
|
||||
->beginIF($projectID)->andWhere('PRJ')->eq($projectID)->fi()
|
||||
->beginIF($browseType == 'open')->andWhere('status')->eq('active')->fi()
|
||||
->beginIF($browseType == 'assignto')->andWhere('assignedTo')->eq($this->app->user->account)->fi()
|
||||
->beginIF($browseType == 'closed')->andWhere('status')->eq('closed')->fi()
|
||||
->beginIF($browseType == 'suspended')->andWhere('status')->eq('suspended')->fi()
|
||||
->beginIF($browseType == 'canceled')->andWhere('status')->eq('canceled')->fi()
|
||||
->beginIF($browseType == 'bysearch')->andWhere($issueQuery)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
return $issueList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the issue in the block.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $browseType open|assignto|closed|suspended|canceled
|
||||
* @param int $limit
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getBlockIssues($projectID = 0, $browseType = 'all', $limit = 15, $orderBy = 'id_desc')
|
||||
{
|
||||
$issueList = $this->dao->select('*')->from(TABLE_ISSUE)
|
||||
->where('deleted')->eq('0')
|
||||
->beginIF($projectID)->andWhere('PRJ')->eq($projectID)->fi()
|
||||
->beginIF($browseType == 'open')->andWhere('status')->eq('active')->fi()
|
||||
->beginIF($browseType == 'assignto')->andWhere('assignedTo')->eq($this->app->user->account)->fi()
|
||||
->beginIF($browseType == 'closed')->andWhere('status')->eq('closed')->fi()
|
||||
->beginIF($browseType == 'suspended')->andWhere('status')->eq('suspended')->fi()
|
||||
->beginIF($browseType == 'canceled')->andWhere('status')->eq('canceled')->fi()
|
||||
->orderBy($orderBy)
|
||||
->limit($limit)
|
||||
->fetchAll();
|
||||
|
||||
return $issueList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user issues.
|
||||
*
|
||||
* @param string $browseType open|assignto|closed|suspended|canceled
|
||||
* @param string $account
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUserIssues($type = 'assignedTo', $account = '', $orderBy = 'id_desc', $pager)
|
||||
{
|
||||
if(empty($account)) $account = $this->app->user->account;
|
||||
|
||||
$issueList = $this->dao->select('*')->from(TABLE_ISSUE)
|
||||
->where('deleted')->eq('0')
|
||||
->andWhere($type)->eq($account)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
return $issueList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get activity list.
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getActivityPairs()
|
||||
{
|
||||
return $this->dao->select('id,name')->from(TABLE_ACTIVITY)->where('deleted')->eq('0')->orderBy('id_desc')->fetchPairs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get issue pairs of a user.
|
||||
*
|
||||
* @param string $account
|
||||
* @param int $limit
|
||||
* @param string $status all|unconfirmed|active|suspended|resolved|closed|canceled
|
||||
* @param array $skipProjectIDList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUserIssuePairs($account, $limit = 0, $status = 'all', $skipProjectIDList = array())
|
||||
{
|
||||
$stmt = $this->dao->select('t1.id, t1.title, t2.name as project')
|
||||
->from(TABLE_ISSUE)->alias('t1')
|
||||
->leftjoin(TABLE_PROJECT)->alias('t2')->on('t1.PRJ = t2.id')
|
||||
->where('t1.assignedTo')->eq($account)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->beginIF($status != 'all')->andWhere('t1.status')->in($status)->fi()
|
||||
->beginIF(!empty($skipProjectIDList))->andWhere('t1.PRJ')->notin($skipProjectIDList)->fi()
|
||||
->beginIF($limit)->limit($limit)->fi()
|
||||
->query();
|
||||
|
||||
$issues = array();
|
||||
while($issue = $stmt->fetch())
|
||||
{
|
||||
$issues[$issue->id] = $issue->project . ' / ' . $issue->title;
|
||||
}
|
||||
return $issues;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function update($issueID)
|
||||
{
|
||||
$oldIssue = $this->getByID($issueID);
|
||||
|
||||
$now = helper::now();
|
||||
$issue = fixer::input('post')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', $now)
|
||||
->remove('labels,files')
|
||||
->addIF($this->post->assignedTo, 'assignedBy', $this->app->user->account)
|
||||
->addIF($this->post->assignedTo, 'assignedDate', $now)
|
||||
->stripTags($this->config->issue->editor->edit['id'], $this->config->allowedTags)
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_ISSUE)->data($issue)
|
||||
->where('id')->eq($issueID)
|
||||
->batchCheck($this->config->issue->edit->requiredFields, 'notempty')
|
||||
->exec();
|
||||
|
||||
$this->loadModel('file')->saveUpload('issue', $issueID);
|
||||
|
||||
return common::createChanges($oldIssue, $issue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update assignor.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function assignTo($issueID)
|
||||
{
|
||||
$oldIssue = $this->getByID($issueID);
|
||||
|
||||
$now = helper::now();
|
||||
$issue = fixer::input('post')
|
||||
->add('assignedBy', $this->app->user->account)
|
||||
->add('assignedDate', $now)
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', $now)
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec();
|
||||
|
||||
return common::createChanges($oldIssue, $issue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Close an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function close($issueID)
|
||||
{
|
||||
$oldIssue = $this->getByID($issueID);
|
||||
$issue = fixer::input('post')
|
||||
->add('closedBy', $this->app->user->account)
|
||||
->add('status', 'closed')
|
||||
->add('assignedTo', 'closed')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::now())
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec();
|
||||
|
||||
return common::createChanges($oldIssue, $issue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Confirm an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function confirm($issueID)
|
||||
{
|
||||
$oldIssue = $this->getByID($issueID);
|
||||
$issue = fixer::input('post')
|
||||
->add('status', 'confirmed')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::now())
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec();
|
||||
|
||||
return common::createChanges($oldIssue, $issue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancel an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function cancel($issueID)
|
||||
{
|
||||
$oldIssue = $this->getByID($issueID);
|
||||
$issue = fixer::input('post')
|
||||
->add('status', 'canceled')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::now())
|
||||
->get();
|
||||
$this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec();
|
||||
|
||||
return common::createChanges($oldIssue, $issue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function activate($issueID)
|
||||
{
|
||||
$oldIssue = $this->getByID($issueID);
|
||||
|
||||
$now = helper::now();
|
||||
$issue = fixer::input('post')
|
||||
->add('status', 'active')
|
||||
->add('activateBy', $this->app->user->account)
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', $now)
|
||||
->add('assignedBy', $this->app->user->account)
|
||||
->add('assignedDate', $now)
|
||||
->addIF($this->post->assignedTo == '', 'assignedTo', $this->app->user->account)
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec();
|
||||
|
||||
return common::createChanges($oldIssue, $issue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch create issue.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function batchCreate()
|
||||
{
|
||||
$now = helper::now();
|
||||
$data = fixer::input('post')->get();
|
||||
|
||||
$issues = array();
|
||||
foreach($data->dataList as $index => $issue)
|
||||
{
|
||||
if(!trim($issue['title'])) continue;
|
||||
|
||||
$issue['createdBy'] = $this->app->user->account;
|
||||
$issue['createdDate'] = $now;
|
||||
$issue['PRJ'] = $this->session->PRJ;
|
||||
$issue['status'] = 'unconfirmed';
|
||||
|
||||
if($issue['assignedTo'])
|
||||
{
|
||||
$issue['assignedBy'] = $this->app->user->account;
|
||||
$issue['assignedDate'] = $now;
|
||||
}
|
||||
|
||||
if(empty($issue['title'])) die(js::error(sprintf($this->lang->issue->titleEmpty, $index)));
|
||||
if(empty($issue['type'])) die(js::error(sprintf($this->lang->issue->typeEmpty, $index)));
|
||||
if(empty($issue['severity'])) die(js::error(sprintf($this->lang->issue->severityEmpty, $index)));
|
||||
|
||||
$issues[] = $issue;
|
||||
}
|
||||
|
||||
$issueIdList = array();
|
||||
foreach($issues as $issue)
|
||||
{
|
||||
$this->dao->insert(TABLE_ISSUE)->data($issue)->exec();
|
||||
$issueIdList[] = $this->dao->lastInsertId();
|
||||
}
|
||||
|
||||
return $issueIdList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve an issue.
|
||||
*
|
||||
* @param int $issueID
|
||||
* @param object $data
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function resolve($issueID, $data)
|
||||
{
|
||||
$issue = new stdClass();
|
||||
$issue->resolution = $data->resolution;
|
||||
$issue->resolutionComment = isset($data->resolutionComment) ? $data->resolutionComment : '';
|
||||
$issue->resolvedBy = $data->resolvedBy;
|
||||
$issue->resolvedDate = $data->resolvedDate;
|
||||
$issue->status = 'resolved';
|
||||
$issue->editedBy = $this->app->user->account;
|
||||
$issue->editedDate = helper::now();
|
||||
|
||||
$this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an task.
|
||||
*
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function createTask()
|
||||
{
|
||||
$projectID = $this->post->project;
|
||||
$tasks = $this->loadModel('task')->create($projectID);
|
||||
if(dao::isError()) return false;
|
||||
|
||||
$task = current($tasks);
|
||||
return $task['id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a story.
|
||||
*
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function createStory()
|
||||
{
|
||||
$storyResult = $this->loadModel('story')->create();
|
||||
if(dao::isError()) return false;
|
||||
return $storyResult['id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a bug.
|
||||
*
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function createBug()
|
||||
{
|
||||
$bugResult = $this->loadModel('bug')->create();
|
||||
if(dao::isError()) return false;
|
||||
return $bugResult['id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a risk.
|
||||
*
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function createRisk()
|
||||
{
|
||||
$riskID = $this->loadModel('risk')->create();
|
||||
if(dao::isError()) return false;
|
||||
return $riskID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build issue search form.
|
||||
*
|
||||
* @param string $actionURL
|
||||
* @param int $queryID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function buildSearchForm($actionURL, $queryID)
|
||||
{
|
||||
$this->config->issue->search['actionURL'] = $actionURL;
|
||||
$this->config->issue->search['queryID'] = $queryID;
|
||||
|
||||
$this->loadModel('search')->setSearchParams($this->config->issue->search);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust the action is clickable.
|
||||
*
|
||||
* @param object $issue
|
||||
* @param string $action
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function isClickable($issue, $action)
|
||||
{
|
||||
$action = strtolower($action);
|
||||
|
||||
if($action == 'confirm') return $issue->status == 'unconfirmed';
|
||||
if($action == 'resolve') return $issue->status == 'active' || $issue->status == 'confirmed';
|
||||
if($action == 'close') return $issue->status != 'closed';
|
||||
if($action == 'activate') return $issue->status == 'closed';
|
||||
if($action == 'cancel') return $issue->status != 'canceled' && $issue->status != 'closed';
|
||||
if($action == 'assignto') return $issue->status != 'closed';
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The active of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='label label-id'><?php echo $issue->id;?></span>
|
||||
<?php echo "<span title='$issue->title'>" . $issue->title . '</span>';?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 282px; overflow: auto;">
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->assignedTo;?></th>
|
||||
<td colspan='2'><?php echo html::select('assignedTo', $users, '', 'class="form-control chosen"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->activateDate;?></th>
|
||||
<td colspan='2'><?php echo html::input('activateDate', helper::now(), 'class="form-control form-datetime"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The assign of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='label label-id'><?php echo $issue->id;?></span>
|
||||
<?php echo "<span title='$issue->title'>" . $issue->title . '</span>';?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 320px; overflow: auto;">
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->assignedTo;?></th>
|
||||
<td colspan='2'><?php echo html::select('assignedTo', $users, $issue->assignedTo, 'class="form-control chosen"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The batch create view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id = "mainContent" class="main-content fade in">
|
||||
<div class="main-header">
|
||||
<h2><?php echo $lang->issue->batchCreate;?></h2>
|
||||
</div>
|
||||
<form id="batchCreateForm" target="hiddenwin" method="post">
|
||||
<table class="table table-form">
|
||||
<thead>
|
||||
<tr class="text-center">
|
||||
<th class="w-50px"><?php echo $lang->issue->id;?></th>
|
||||
<th class="required"><?php echo $lang->issue->title;?></th>
|
||||
<th class="w-140px required"><?php echo $lang->issue->type;?></th>
|
||||
<th class="w-120px required"><?php echo $lang->issue->severity;?></th>
|
||||
<th class="w-150px"><?php echo $lang->issue->desc;?></th>
|
||||
<th class="w-100px"><?php echo $lang->issue->pri;?></th>
|
||||
<th class="w-120px"><?php echo $lang->issue->deadline;?></th>
|
||||
<th class="w-120px"><?php echo $lang->issue->assignedTo;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php for($i = 1;$i <= 10;$i++):?>
|
||||
<tr data-key="<?php echo $i;?>">
|
||||
<td><?php echo $i;?></td>
|
||||
<td><?php echo html::input("dataList[$i][title]", '', 'id="dataList' . $i . 'title" class="form-control" autocomplete="off"')?></td>
|
||||
<td><?php echo html::select("dataList[$i][type]", $lang->issue->typeList, '', 'class="form-control chosen" id="dataList' . $i . 'type"')?></td>
|
||||
<td><?php echo html::select("dataList[$i][severity]", $lang->issue->severityList, '', 'class="form-control chosen" id="dataList' . $i . 'severity"')?></td>
|
||||
<td><?php echo html::textarea("dataList[$i][desc]", '', 'class="form-control" id="dataList' . $i . 'desc" rows="1"');?></td>
|
||||
<td><?php echo html::select("dataList[$i][pri]", $lang->issue->priList, '', 'class="form-control chosen" id="dataList' . $i . 'pri"')?></td>
|
||||
<td><?php echo html::input("dataList[$i][deadline]", '', 'class="form-control form-date" id="dataList' . $i . 'deadline"');?></td>
|
||||
<td><?php echo html::select("dataList[$i][assignedTo]", $users, '', 'class="form-control chosen" id="dataList' . $i . 'assignedTo"')?></td>
|
||||
</tr>
|
||||
<?php endfor;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="form-actions text-center">
|
||||
<?php echo html::submitButton() . html::backButton();?>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,93 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
foreach($lang->issue->labelList as $label => $labelName)
|
||||
{
|
||||
$active = $browseType == $label ? 'btn-active-text' : '';
|
||||
echo html::a($this->createLink('issue', 'browse', 'browseType=' . $label), '<span class="text">' . $labelName . '</span>', '', "class='btn btn-link $active'");
|
||||
}
|
||||
?>
|
||||
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->issue->search;?></a>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php common::printLink('issue', 'batchCreate', '', "<i class='icon icon-plus'></i>" . $lang->issue->batchCreate, '', "class='btn btn-secondary'");?>
|
||||
<?php common::printLink('issue', 'create', '', "<i class='icon icon-plus'></i>" . $lang->issue->create, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainContent" class="main-row">
|
||||
<div class="main-col">
|
||||
<div class="cell<?php if($browseType == 'bysearch') echo ' show';?>" id="queryBox" data-module="issue"></div>
|
||||
<?php if($issueList):?>
|
||||
<form class="main-table" data-ride="table" method="post" id="issueForm">
|
||||
<table id="issueList" class="table has-sort-head" id="issueTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<?php $vars = "browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class="c-id w-60px"><?php echo common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class="w-80px"><?php echo $lang->issue->type;?></th>
|
||||
<th class="w-auto"><?php echo $lang->issue->title;?></th>
|
||||
<th class="w-80px"><?php echo $lang->issue->severity;?></th>
|
||||
<th class="w-60px"><?php echo $lang->issue->pri;?></th>
|
||||
<th class="w-90px"><?php echo $lang->issue->assignedTo;?></th>
|
||||
<th class="w-90px"><?php echo $lang->issue->owner;?></th>
|
||||
<th class="w-80px"><?php echo $lang->issue->status;?></th>
|
||||
<th class="w-140px"><?php echo $lang->issue->createdDate;?></th>
|
||||
<th class="c-actions w-200px"><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($issueList as $id => $issue):?>
|
||||
<tr>
|
||||
<td class="c-id"><?php printf('%03d', $issue->id);?></td>
|
||||
<td title="<?php echo zget($lang->issue->typeList, $issue->type);?>"><?php echo zget($lang->issue->typeList, $issue->type);?></td>
|
||||
<td class="text-ellipsis" title="<?php echo $issue->title;?>"><?php common::printLink('issue', 'view', "id=$issue->id", $issue->title);?></td>
|
||||
<td title="<?php echo zget($lang->issue->severityList, $issue->severity);?>"><?php echo zget($lang->issue->severityList, $issue->severity);?></td>
|
||||
<td title="<?php echo $issue->pri;?>"><?php echo $issue->pri;?></td>
|
||||
<td title="<?php echo zget($users, $issue->assignedTo);?>"><?php echo zget($users, $issue->assignedTo);?></td>
|
||||
<td title="<?php echo zget($users, $issue->owner);?>"><?php echo zget($users, $issue->owner);?></td>
|
||||
<td title="<?php echo zget($lang->issue->statusList, $issue->status);?>"><?php echo zget($lang->issue->statusList, $issue->status);?></td>
|
||||
<td title="<?php echo $issue->createdDate;?>"><?php echo $issue->createdDate;?></td>
|
||||
<td class="c-actions">
|
||||
<?php
|
||||
$params = "issueID=$issue->id";
|
||||
echo common::printIcon('issue', 'confirm', $params, $issue, 'list', 'ok', '', 'iframe', 'yes', '', $lang->issue->confirm);
|
||||
echo common::printIcon('issue', 'resolve', $params, $issue, 'list', 'checked', '', 'iframe', 'yes', '', $lang->issue->resolve);
|
||||
echo common::printIcon('issue', 'assignTo', $params, $issue, 'list', 'hand-right', '', 'iframe', 'yes', '', $lang->issue->assignTo);
|
||||
echo common::printIcon('issue', 'close', $params, $issue, 'list', 'off', '', 'iframe', 'yes');
|
||||
echo common::printIcon('issue', 'cancel', $params, $issue, 'list', 'ban-circle', '', 'iframe', 'yes');
|
||||
echo common::printIcon('issue', 'activate', $params, $issue, 'list', 'magic', '', 'iframe', 'yes', '', $lang->issue->activate);
|
||||
echo common::printIcon('issue', 'edit', $params, $issue, 'list', 'edit');
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if($issueList):?>
|
||||
<div class='table-footer'>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</form>
|
||||
<?php else:?>
|
||||
<div class="table-empty-tip">
|
||||
<?php echo $lang->noData;?>
|
||||
<?php echo html::a($this->createLink('issue', 'create'), '<i class="icon icon-plus"></i> ' . $lang->issue->create, '', 'class="btn btn-info"')?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,747 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The create bug view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolution;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolution', $lang->issue->resolveMethods, $resolution, 'class="form-control chosen" onchange="getSolutions()"');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-110px'><?php echo $lang->bug->product;?></th>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select('product', $products, $productID, "onchange='loadAll(this.value);' class='form-control chosen control-product'");?>
|
||||
<?php if($this->session->currentProductType != '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'>
|
||||
<span class="input-group-addon"><?php echo $lang->bug->module?></span>
|
||||
<?php
|
||||
echo html::select('module', $moduleOptionMenu, $moduleID, "onchange='loadModuleRelated()' class='form-control chosen'");
|
||||
if(count($moduleOptionMenu) == 1)
|
||||
{
|
||||
echo "<span class='input-group-addon'>";
|
||||
echo html::a($this->createLink('tree', 'browse', "rootID=$productID&view=bug¤tModuleID=0&branch=$branch", '', true), $lang->tree->manage, '', "class='text-primary' data-toggle='modal' data-type='iframe' data-width='95%'");
|
||||
echo ' ';
|
||||
echo html::a("javascript:void(0)", $lang->refresh, '', "class='refresh' onclick='loadProductModules($productID)'");
|
||||
echo '</span>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->type;?></th>
|
||||
<?php $showOS = strpos(",$showFields,", ',os,') !== false;?>
|
||||
<?php $showBrowser = strpos(",$showFields,", ',browser,') !== false;?>
|
||||
<td>
|
||||
<div class='input-group' id='bugTypeInputGroup'>
|
||||
<?php echo html::select('type', $lang->bug->typeList, '', "class='form-control'");?>
|
||||
<?php if($showOS):?>
|
||||
<span class='input-group-addon fix-border'><?php echo $lang->bug->os?></span>
|
||||
<?php echo html::select('os', $lang->bug->osList, '', "class='form-control w-120px'");?>
|
||||
<?php endif;?>
|
||||
<?php if($showBrowser):?>
|
||||
<span class='input-group-addon fix-border'><?php echo $lang->bug->browser?></span>
|
||||
<?php echo html::select('browser', $lang->bug->browserList, '', "class='form-control w-100px'");?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->project;?></th>
|
||||
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $projectID, "class='form-control chosen' onchange='loadProjectRelated(this.value)'");?></span></td>
|
||||
<td>
|
||||
<div class='input-group required' id='buildBox'>
|
||||
<span class="input-group-addon"><?php echo $lang->bug->openedBuild?></span>
|
||||
<?php echo html::select('openedBuild[]', $builds, $buildID, "size=4 multiple=multiple class='chosen form-control'");?>
|
||||
<span class='input-group-addon fix-border' id='buildBoxActions'></span>
|
||||
<div class='input-group-btn'><?php echo html::commonButton($lang->bug->allBuilds, "class='btn' id='all' data-toggle='tooltip' onclick='loadAllBuilds()'")?></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><nobr><?php echo $lang->bug->lblAssignedTo;?></nobr></th>
|
||||
<td>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select('assignedTo', $users, '', "class='form-control chosen'");?>
|
||||
<span class='input-group-btn'><?php echo html::commonButton($lang->bug->allUsers, "class='btn btn-default' onclick='loadAllUsers()' data-toggle='tooltip'");?></span>
|
||||
</div>
|
||||
</td>
|
||||
<?php $showDeadline = strpos(",$showFields,", ',deadline,') !== false;?>
|
||||
<?php if($showDeadline):?>
|
||||
<td id='deadlineTd'>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon'><?php echo $lang->bug->deadline?></span>
|
||||
<span><?php echo html::input('deadline', $issue->deadline, "class='form-control form-date'");?></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->title;?></th>
|
||||
<td colspan='2'>
|
||||
<div class="input-group title-group required">
|
||||
<div class="input-control has-icon-right">
|
||||
<?php echo html::input('title', $issue->title, "class='form-control'");?>
|
||||
</div>
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->bug->pri;?></span>
|
||||
<div class="input-group-btn pri-selector" data-type="pri">
|
||||
<?php echo html::select('pri', $lang->bug->priList, $issue->pri, "class='form-control'");?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->bug->steps;?></th>
|
||||
<td colspan='2'>
|
||||
<?php echo html::textarea('steps', $issue->desc, "rows='10' class='form-control'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedBy;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolvedBy', $users, $this->app->user->account, "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedDate;?></th>
|
||||
<td>
|
||||
<div class='input-group has-icon-right'>
|
||||
<?php echo html::input('resolvedDate', date('Y-m-d'), "class='form-control form-date'");?>
|
||||
<label for="date" class="input-control-icon-right"><i class="icon icon-delay"></i></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<div class='form-action'><?php echo html::submitButton();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
js::set('holders', $lang->bug->placeholder);
|
||||
js::set('page', 'create');
|
||||
js::set('createRelease', $lang->release->create);
|
||||
js::set('createBuild', $lang->build->create);
|
||||
js::set('refresh', $lang->refresh);
|
||||
?>
|
||||
<script>
|
||||
$(function()
|
||||
{
|
||||
var page = window.page || '';
|
||||
var flow = window.flow;
|
||||
|
||||
$('#subNavbar a[data-toggle=dropdown]').parent().addClass('dropdown dropdown-hover');
|
||||
if(page == 'create')
|
||||
{
|
||||
var productID = $('#product').val();
|
||||
var moduleID = $('#module').val();
|
||||
var assignedto = $('#assignedTo').val();
|
||||
changeProductConfirmed = true;
|
||||
oldStoryID = $('#story').val() || 0;
|
||||
oldProjectID = 0;
|
||||
oldOpenedBuild = '';
|
||||
oldTaskID = $('#oldTaskID').val() || 0;
|
||||
notice();
|
||||
}
|
||||
|
||||
if(page == 'create' || page == 'edit' || page == 'assignedto' || page == 'confirmbug')
|
||||
{
|
||||
oldProductID = $('#product').val();
|
||||
$("#story, #task, #mailto").chosen();
|
||||
}
|
||||
|
||||
if(window.flow != 'full')
|
||||
{
|
||||
$('.querybox-toggle').click(function()
|
||||
{
|
||||
$(this).parent().toggleClass('active');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Load all fields.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAll(productID)
|
||||
{
|
||||
if(page == 'create')
|
||||
{
|
||||
loadProjectTeamMembers(productID);
|
||||
}
|
||||
|
||||
if(!changeProductConfirmed)
|
||||
{
|
||||
firstChoice = confirm(confirmChangeProduct);
|
||||
changeProductConfirmed = true; // Only notice the user one time.
|
||||
|
||||
if(!firstChoice)
|
||||
{
|
||||
$('#product').val(oldProductID);//Revert old product id if confirm is no.
|
||||
$('#product').trigger("chosen:updated");
|
||||
$('#product').chosen();
|
||||
return true;
|
||||
}
|
||||
|
||||
loadAll(productID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#taskIdBox').innerHTML = '<select id="task"></select>'; // Reset the task.
|
||||
$('#task').chosen();
|
||||
loadProductBranches(productID)
|
||||
loadProductModules(productID);
|
||||
loadProductProjects(productID);
|
||||
loadProductBuilds(productID);
|
||||
loadProductplans(productID);
|
||||
loadProductStories(productID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load by branch.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadBranch()
|
||||
{
|
||||
$('#taskIdBox').innerHTML = '<select id="task"></select>'; // Reset the task.
|
||||
$('#task').chosen();
|
||||
productID = $('#product').val();
|
||||
loadProductModules(productID);
|
||||
loadProductProjects(productID);
|
||||
loadProductBuilds(productID);
|
||||
loadProductplans(productID);
|
||||
loadProductStories(productID);
|
||||
}
|
||||
|
||||
/**
|
||||
*Load all builds of one project or product.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAllBuilds(that)
|
||||
{
|
||||
if(page == 'resolve')
|
||||
{
|
||||
oldResolvedBuild = $('#resolvedBuild').val() ? $('#resolvedBuild').val() : 0;
|
||||
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=0&index=0&type=all');
|
||||
$('#resolvedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
else
|
||||
{
|
||||
productID = $('#product').val();
|
||||
projectID = $('#project').val();
|
||||
if(page == 'edit') buildBox = $(that).closest('.input-group').attr('id');
|
||||
|
||||
if(projectID)
|
||||
{
|
||||
loadAllProjectBuilds(projectID, productID);
|
||||
}
|
||||
else
|
||||
{
|
||||
loadAllProductBuilds(productID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load all builds of the project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAllProjectBuilds(projectID, productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
if(page == 'create')
|
||||
{
|
||||
oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0;
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&needCreate=true&type=all');
|
||||
$.get(link, function(data)
|
||||
{
|
||||
if(!data) data = '<select id="openedBuild" name="openedBuild" class="form-control" multiple=multiple></select>';
|
||||
$('#openedBuild').replaceWith(data);
|
||||
$('#openedBuild_chosen').remove();
|
||||
$("#openedBuild").chosen();
|
||||
notice();
|
||||
})
|
||||
}
|
||||
if(page == 'edit')
|
||||
{
|
||||
if(buildBox == 'openedBuildBox')
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&needCreate=true&type=all');
|
||||
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
if(buildBox == 'resolvedBuildBox')
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=0&index=0&needCreate=true&type=all');
|
||||
$('#resolvedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load all builds of the product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAllProductBuilds(productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
if(page == 'create')
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&type=all');
|
||||
$.get(link, function(data)
|
||||
{
|
||||
if(!data) data = '<select id="openedBuild" name="openedBuild" class="form-control" multiple=multiple></select>';
|
||||
$('#openedBuild').replaceWith(data);
|
||||
$('#openedBuild_chosen').remove();
|
||||
$("#openedBuild").chosen();
|
||||
notice();
|
||||
})
|
||||
}
|
||||
if(page == 'edit')
|
||||
{
|
||||
if(buildBox == 'openedBuildBox')
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch + '&index=0&type=all');
|
||||
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
if(buildBox == 'resolvedBuildBox')
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=0&index=0&type=all');
|
||||
$('#resolvedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product's modules.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductModules(productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=bug&branch=' + branch + '&rootModuleID=0&returnType=html&fieldID=&needManage=true');
|
||||
$('#moduleIdBox').load(link, function()
|
||||
{
|
||||
$(this).find('select').chosen()
|
||||
if(typeof(bugModule) == 'string') $('#moduleIdBox').prepend("<span class='input-group-addon' style='border-left-width: 1px;'>" + bugModule + "</span>");
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product stories
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductStories(productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('story', 'ajaxGetProductStories', 'productID=' + productID + '&branch=' + branch + '&moduleId=0&storyID=' + oldStoryID);
|
||||
$('#storyIdBox').load(link, function(){$('#story').chosen();});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load projects of product.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductProjects(productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('product', 'ajaxGetProjects', 'productID=' + productID + '&projectID=' + oldProjectID + '&branch=' + branch);
|
||||
$('#projectIdBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product plans.
|
||||
*
|
||||
* @param productID $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductplans(productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('productplan', 'ajaxGetProductplans', 'productID=' + productID + '&branch=' + branch);
|
||||
$('#planIdBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product builds.
|
||||
*
|
||||
* @param productID $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductBuilds(productID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
|
||||
|
||||
if(page == 'create')
|
||||
{
|
||||
$.get(link, function(data)
|
||||
{
|
||||
if(!data) data = '<select id="openedBuild" name="openedBuild" class="form-control" multiple=multiple></select>';
|
||||
$('#openedBuild').replaceWith(data);
|
||||
$('#openedBuild_chosen').remove();
|
||||
$("#openedBuild").chosen();
|
||||
notice();
|
||||
})
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
|
||||
$('#resolvedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load project related bugs and tasks.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProjectRelated(projectID)
|
||||
{
|
||||
if(projectID)
|
||||
{
|
||||
loadProjectTasks(projectID);
|
||||
loadProjectStories(projectID);
|
||||
loadProjectBuilds(projectID);
|
||||
loadAssignedTo(projectID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#taskIdBox').innerHTML = '<select id="task"></select>'; // Reset the task.
|
||||
loadProductStories($('#product').val());
|
||||
loadProductBuilds($('#product').val());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load project tasks.
|
||||
*
|
||||
* @param projectID $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProjectTasks(projectID)
|
||||
{
|
||||
link = createLink('task', 'ajaxGetProjectTasks', 'projectID=' + projectID + '&taskID=' + oldTaskID);
|
||||
$.post(link, function(data)
|
||||
{
|
||||
if(!data) data = '<select id="task" name="task" class="form-control"></select>';
|
||||
$('#task').replaceWith(data);
|
||||
$('#task_chosen').remove();
|
||||
$("#task").chosen();
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Load project stories.
|
||||
*
|
||||
* @param projectID $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProjectStories(projectID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('story', 'ajaxGetProjectStories', 'projectID=' + projectID + '&productID=' + $('#product').val() + '&branch=' + branch + '&moduleID=0&storyID=' + oldStoryID);
|
||||
$('#storyIdBox').load(link, function(){$('#story').chosen();});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load builds of a project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProjectBuilds(projectID)
|
||||
{
|
||||
branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
productID = $('#product').val();
|
||||
oldOpenedBuild = $('#openedBuild').val() ? $('#openedBuild').val() : 0;
|
||||
|
||||
if(page == 'create')
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch + "&index=0&needCreate=true");
|
||||
$.get(link, function(data)
|
||||
{
|
||||
if(!data) data = '<select id="openedBuild" name="openedBuild" class="form-control" multiple=multiple></select>';
|
||||
$('#openedBuild').replaceWith(data);
|
||||
$('#openedBuild_chosen').remove();
|
||||
$("#openedBuild").chosen();
|
||||
notice();
|
||||
})
|
||||
}
|
||||
else
|
||||
{
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + '&branch=' + branch);
|
||||
$('#openedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
|
||||
oldResolvedBuild = $('#resolvedBuild').val() ? $('#resolvedBuild').val() : 0;
|
||||
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild + '&branch=' + branch);
|
||||
$('#resolvedBuildBox').load(link, function(){$(this).find('select').chosen()});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set story field.
|
||||
*
|
||||
* @param moduleID $moduleID
|
||||
* @param productID $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function setStories(moduleID, productID)
|
||||
{
|
||||
var branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
link = createLink('story', 'ajaxGetProductStories', 'productID=' + productID + '&branch=' + branch + '&moduleID=' + moduleID);
|
||||
$.get(link, function(stories)
|
||||
{
|
||||
if(!stories) stories = '<select id="story" name="story" class="form-control"></select>';
|
||||
$('#story').replaceWith(stories);
|
||||
$('#story_chosen').remove();
|
||||
$("#story").chosen();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load product branches.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductBranches(productID)
|
||||
{
|
||||
$('#branch').remove();
|
||||
$('#branch_chosen').remove();
|
||||
$.get(createLink('branch', 'ajaxGetBranches', "productID=" + productID), function(data)
|
||||
{
|
||||
if(data)
|
||||
{
|
||||
$('#product').closest('.input-group').append(data);
|
||||
$('#branch').css('width', page == 'create' ? '120px' : '65px');
|
||||
$('#branch').chosen();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Load team members of the project as assignedTo list.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAssignedTo(projectID)
|
||||
{
|
||||
link = createLink('bug', 'ajaxLoadAssignedTo', 'projectID=' + projectID + '&selectedUser=' + $('#assignedTo').val());
|
||||
$.get(link, function(data)
|
||||
{
|
||||
$('#assignedTo_chosen').remove();
|
||||
$('#assignedTo').replaceWith(data);
|
||||
$('#assignedTo').chosen();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* notice for create build.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function notice()
|
||||
{
|
||||
$('#buildBoxActions').empty().hide();
|
||||
if($('#openedBuild').find('option').length <= 1)
|
||||
{
|
||||
var html = '';
|
||||
if($('#project').length == 0 || $('#project').val() == '')
|
||||
{
|
||||
var branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
var link = createLink('release', 'create', 'productID=' + $('#product').val() + '&branch=' + branch);
|
||||
html += '<a href="' + link + '" target="_blank" style="padding-right:5px">' + createBuild + '</a> ';
|
||||
html += '<a href="javascript:loadProductBuilds(' + $('#product').val() + ')">' + refresh + '</a>';
|
||||
}
|
||||
else
|
||||
{
|
||||
projectID = $('#project').val();
|
||||
html += '<a href="' + createLink('build', 'create','projectID=' + projectID) + '" target="_blank" style="padding-right:5px">' + createBuild + '</a> ';
|
||||
html += '<a href="javascript:loadProjectBuilds(' + projectID + ')">' + refresh + '</a>';
|
||||
}
|
||||
var $bba = $('#buildBoxActions');
|
||||
if($bba.length)
|
||||
{
|
||||
$bba.html(html);
|
||||
$bba.show();
|
||||
}
|
||||
else
|
||||
{
|
||||
if($('#buildBox').closest('tr').find('td').size() > 1)
|
||||
{
|
||||
$('#buildBox').closest('td').next().attr('id', 'buildBoxActions');
|
||||
$('#buildBox').closest('td').next().html(html);
|
||||
}
|
||||
else
|
||||
{
|
||||
html = "<td id='buildBoxActions'>" + html + '</td>';
|
||||
$('#buildBox').closest('td').after(html);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load all users as assignedTo list.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAllUsers()
|
||||
{
|
||||
var link = createLink('bug', 'ajaxLoadAllUsers', 'selectedUser=' + $('#assignedTo').val());
|
||||
$.get(link, function(data)
|
||||
{
|
||||
if(data)
|
||||
{
|
||||
var moduleID = $('#module').val();
|
||||
var productID = $('#product').val();
|
||||
setAssignedTo(moduleID, productID);
|
||||
$('#assignedTo').empty().append($(data).find('option')).trigger('chosen:updated').trigger('chosen:activate');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Load team members of the latest project of a product as assignedTo list.
|
||||
*
|
||||
* @param $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProjectTeamMembers(productID)
|
||||
{
|
||||
var link = createLink('bug', 'ajaxLoadProjectTeamMembers', 'productID=' + productID + '&selectedUser=' + $('#assignedTo').val());
|
||||
$('#assignedToBox').load(link, function(){$('#assignedTo').chosen();});
|
||||
}
|
||||
|
||||
/**
|
||||
* load assignedTo and stories of module.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadModuleRelated()
|
||||
{
|
||||
var moduleID = $('#module').val();
|
||||
var productID = $('#product').val();
|
||||
setAssignedTo(moduleID, productID);
|
||||
setStories(moduleID, productID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the assignedTo field.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function setAssignedTo(moduleID, productID)
|
||||
{
|
||||
if(typeof(productID) == 'undefined') productID = $('#product').val();
|
||||
if(typeof(moduleID) == 'undefined') moduleID = $('#module').val();
|
||||
var link = createLink('bug', 'ajaxGetModuleOwner', 'moduleID=' + moduleID + '&productID=' + productID);
|
||||
$.get(link, function(owner)
|
||||
{
|
||||
$('#assignedTo').val(owner);
|
||||
$("#assignedTo").trigger("chosen:updated");
|
||||
});
|
||||
}
|
||||
|
||||
$(function()
|
||||
{
|
||||
if($('#project').val()) loadProjectRelated($('#project').val());
|
||||
|
||||
$('[data-toggle=tooltip]').tooltip();
|
||||
|
||||
// adjust size of bug type input group
|
||||
var adjustBugTypeGroup = function()
|
||||
{
|
||||
var $group = $('#bugTypeInputGroup');
|
||||
var width = ($group.parent().width()), addonWidth = 0;
|
||||
var $controls = $group.find('.chosen-single');
|
||||
$group.children('.input-group-addon').each(function()
|
||||
{
|
||||
addonWidth += $(this).outerWidth();
|
||||
});
|
||||
var bestWidth = Math.floor((width - addonWidth)/$controls.length);
|
||||
$controls.css('width', bestWidth);
|
||||
var lastWidth = width - addonWidth - bestWidth * ($controls.length - 1);
|
||||
$controls.last().css('width', lastWidth);
|
||||
};
|
||||
adjustBugTypeGroup();
|
||||
$(window).on('resize', adjustBugTypeGroup);
|
||||
|
||||
// init pri and severity selector
|
||||
$('#severity, #pri').on('change', function()
|
||||
{
|
||||
var $select = $(this);
|
||||
var $selector = $select.closest('.pri-selector');
|
||||
var value = $select.val();
|
||||
$selector.find('.pri-text').html($selector.data('type') === 'severity' ? '<span class="label-severity" data-severity="' + value + '" title="' + value + '"></span>' : '<span class="label-pri label-pri-' + value + '" title="' + value + '">' + value + '</span>');
|
||||
});
|
||||
loadAll(<?php echo $productID;?>);
|
||||
});
|
||||
</script>
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The cancel of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='label label-id'><?php echo $issue->id;?></span>
|
||||
<?php echo "<span title='$issue->title'>" . $issue->title . '</span>';?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 282px; overflow: auto;">
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->title;?></th>
|
||||
<td colspan='2'><?php echo $issue->title;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->desc;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('desc', $issue->desc, 'row="6"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The close of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='label label-id'><?php echo $issue->id;?></span>
|
||||
<?php echo "<span title='$issue->title'>" . $issue->title . '</span>';?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 282px; overflow: auto;">
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->closedDate;?></th>
|
||||
<td colspan='2'><?php echo html::input('closedDate', helper::now(), 'class="form-control form-datetime"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolution;?></th>
|
||||
<td colspan='2'><?php echo html::select('resolution', $lang->issue->resolutionList, '', 'class="form-control chosen"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The cancel of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Jia Fu <fujia@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: complete.html.php 935 2010-07-06 07:49:24Z jajacn@126.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='label label-id'><?php echo $issue->id;?></span>
|
||||
<?php echo "<span title='$issue->title'>" . $issue->title . '</span>';?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 282px; overflow: auto;">
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->title;?></th>
|
||||
<td colspan='2'><?php echo $issue->title;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->desc;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('desc', $issue->desc, 'row="6"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'>
|
||||
<?php echo html::submitButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,83 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The create view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div class="main-content" id="mainCentent" <?php if(isonlybody()) echo 'style="margin-top: 40px;"';?>>
|
||||
<div class="center-block">
|
||||
<div class="main-header">
|
||||
<h2><?php echo $lang->issue->create;?></h2>
|
||||
</div>
|
||||
<form method="post" class="main-form form-ajax" enctype="multipart/form-data" id="issueForm">
|
||||
<table class="table table-form">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->type;?></th>
|
||||
<td class="required"><?php echo html::select('type', $lang->issue->typeList, '', 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->title;?></th>
|
||||
<td class="required"><?php echo html::input('title', '', 'class="form-control"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->severity;?></th>
|
||||
<td class="required"><?php echo html::select('severity', $lang->issue->severityList, '', 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->pri;?></th>
|
||||
<td><?php echo html::select('pri', $lang->issue->priList, '', 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, '', 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->deadline;?></th>
|
||||
<td><?php echo html::input('deadline', '', 'class="form-control form-date"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php if($from == 'stakeholder'):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->owner;?></th>
|
||||
<td><?php echo html::select('owner', $owners, $owner, 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->desc;?></th>
|
||||
<td colspan="3"><?php echo html::textarea('desc', '', 'row="6"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'><?php echo html::submitButton() . html::backButton();?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,75 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div class="main-content" id="mainCentent">
|
||||
<div class="panel-heading">
|
||||
<strong><?php echo $lang->issue->edit;?></strong>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form method="post" class="main-form form-ajax" enctype="multipart/form-data" id="issueForm">
|
||||
<table class="table table-form">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->type;?></th>
|
||||
<td class="required"><?php echo html::select('type', $lang->issue->typeList, $issue->type, 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->title;?></th>
|
||||
<td class="required"><?php echo html::input('title', $issue->title, 'class="form-control"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->severity;?></th>
|
||||
<td class="required"><?php echo html::select('severity', $lang->issue->severityList, $issue->severity, 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->pri;?></th>
|
||||
<td><?php echo html::select('pri', $lang->issue->priList, $issue->pri, 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->deadline;?></th>
|
||||
<td><?php echo html::input('deadline', $issue->deadline, 'class="form-control form-date"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, $issue->assignedTo, 'class="form-control chosen"');?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->desc;?></th>
|
||||
<td colspan="3"><?php echo html::textarea('desc', $issue->desc, 'row="6"');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->files;?></th>
|
||||
<td><?php echo $this->fetch('file', 'buildform');?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='text-center form-actions'><?php echo html::submitButton() . html::backButton();?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,131 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The resolve view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
include '../../common/view/header.html.php';
|
||||
include '../../common/view/kindeditor.html.php';
|
||||
include '../../common/view/datepicker.html.php';
|
||||
include '../../common/view/sortable.html.php';
|
||||
?>
|
||||
<?php
|
||||
echo js::set('issueID', $issue->id);
|
||||
echo js::set('resolveLink', $this->createLink('issue', 'ajaxGetResolveForm'));
|
||||
;?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='label label-id'><?php echo $issue->id;?></span>
|
||||
<?php echo "<span title='$issue->title'>" . $issue->title . '</span>';?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body" style="min-height: 282px; overflow: auto;">
|
||||
<form class='form-ajax' method='post'>
|
||||
<table class="table table-form" id="solutionTable">
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolution;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolution', $lang->issue->resolveMethods, 'resolved', 'class="form-control chosen" onchange="getSolutions()"');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolutionComment;?></th>
|
||||
<td colspan='3'><textarea name='resolutionComment' class='form-control' rows='5' id='resolutionComment'><?php echo $issue->resolutionComment;?></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedBy;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolvedBy', $users, $this->app->user->account, "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedDate;?></th>
|
||||
<td>
|
||||
<div class='input-group has-icon-right'>
|
||||
<?php echo html::input('resolvedDate', date('Y-m-d'), "class='form-control form-date'");?>
|
||||
<label for="date" class="input-control-icon-right"><i class="icon icon-delay"></i></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<div class='form-action'><?php echo html::submitButton();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php echo html::hidden('PRJ', $this->session->PRJ);?>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
function getSolutions()
|
||||
{
|
||||
parent.$('#triggerModal .modal-body').height($('.modal-body').css('min-height'));
|
||||
|
||||
var mode = $("#resolution").val();
|
||||
$.ajax(
|
||||
{
|
||||
url: resolveLink,
|
||||
dataType: "html",
|
||||
data:{mode: mode, issueID: issueID},
|
||||
type: "post",
|
||||
success:function(data)
|
||||
{
|
||||
$("#solutionTable").html(data);
|
||||
$("#resolution").chosen();
|
||||
$("#resolvedBy").chosen();
|
||||
$("#resolvedDate").fixedDate().datepicker();
|
||||
|
||||
if(mode == 'tostory' || mode == 'tobug' || mode == 'totask')
|
||||
{
|
||||
$("#module").chosen();
|
||||
$("#type").chosen();
|
||||
$("#assignedTo").chosen();
|
||||
$("#pri").chosen();
|
||||
}
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case 'totask':
|
||||
$("#project").chosen();
|
||||
$("#desc").kindeditor();
|
||||
$("#estStarted").fixedDate().datepicker();
|
||||
$("#deadline").fixedDate().datepicker();
|
||||
break;
|
||||
case 'tobug':
|
||||
$("#product").chosen();
|
||||
$("#openedBuild").chosen();
|
||||
$("#steps").kindeditor();
|
||||
$("#deadline").fixedDate().datepicker();
|
||||
$("#story").chosen();
|
||||
break;
|
||||
case 'tostory':
|
||||
$("#product").chosen();
|
||||
$("#spec").kindeditor();
|
||||
$("#verify").kindeditor();
|
||||
break;
|
||||
case 'torisk':
|
||||
$("#source").chosen();
|
||||
$("#category").chosen();
|
||||
$("#strategy").chosen();
|
||||
break;
|
||||
case 'resolved':
|
||||
$("#resolutionComment").kindeditor();
|
||||
break;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The resolve view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolution;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolution', $lang->issue->resolveMethods, 'resolved', 'class="form-control chosen" onchange="getSolutions()"');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolutionComment;?></th>
|
||||
<td colspan='3'><textarea name='resolutionComment' class='form-control' rows='5' id='resolutionComment'><?php echo $issue->resolutionComment;?></textarea></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedBy;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolvedBy', $users, $this->app->user->account, "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedDate;?></th>
|
||||
<td>
|
||||
<div class='input-group has-icon-right'>
|
||||
<?php echo html::input('resolvedDate', date('Y-m-d'), "class='form-control form-date'");?>
|
||||
<label for="date" class="input-control-icon-right"><i class="icon icon-delay"></i></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<div class='form-action'><?php echo html::submitButton();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1,63 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The create risk view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolution;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolution', $lang->issue->resolveMethods, $resolution, 'class="form-control chosen" onchange="getSolutions()"');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->name;?></th>
|
||||
<td class="required">
|
||||
<?php echo html::input('name', $issue->title, "class='form-control'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->source;?></th>
|
||||
<td>
|
||||
<?php echo html::select('source', $lang->risk->sourceList, '', "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->category;?></th>
|
||||
<td>
|
||||
<?php echo html::select('category', $lang->risk->categoryList, '', "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->strategy;?></th>
|
||||
<td>
|
||||
<?php echo html::select('strategy', $lang->risk->strategyList, '', "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedBy;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolvedBy', $users, $this->app->user->account, "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedDate;?></th>
|
||||
<td>
|
||||
<div class='input-group has-icon-right'>
|
||||
<?php echo html::input('resolvedDate', date('Y-m-d'), "class='form-control form-date'");?>
|
||||
<label for="date" class="input-control-icon-right"><i class="icon icon-delay"></i></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<div class='form-action'><?php echo html::submitButton();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1,242 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The create story view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolution;?></th>
|
||||
<td colspan='2'>
|
||||
<?php echo html::select('resolution', $lang->issue->resolveMethods, $resolution, 'class="form-control chosen" onchange="getSolutions()"');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-110px'><?php echo $lang->story->product;?></th>
|
||||
<td colspan='2'>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select('product', $products, $productID, "onchange='loadProduct(this.value);' class='form-control chosen control-product'");?>
|
||||
<?php if($this->session->currentProductType != '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 colspan='2'>
|
||||
<div class='input-group' id='moduleIdBox'>
|
||||
<span class="input-group-addon"><?php echo $lang->story->module;?></span>
|
||||
<?php
|
||||
echo html::select('module', $moduleOptionMenu, $moduleID, "class='form-control chosen'");
|
||||
if(count($moduleOptionMenu) == 1)
|
||||
{
|
||||
echo "<span class='input-group-addon'>";
|
||||
echo html::a($this->createLink('tree', 'browse', "rootID=$productID&view=bug¤tModuleID=0&branch=$branch", '', true), $lang->tree->manage, '', "class='text-primary' data-toggle='modal' data-type='iframe' data-width='90%'");
|
||||
echo ' ';
|
||||
echo html::a("javascript:void(0)", $lang->refresh, '', "class='refresh' onclick='loadProductModules($productID)'");
|
||||
echo '</span>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='planTh'><?php echo $lang->story->planAB;?></th>
|
||||
<td colspan='2'>
|
||||
<div class='input-group' id='planIdBox'>
|
||||
<?php
|
||||
echo html::select('plan', $plans, 0, "class='form-control chosen'");
|
||||
if(count($plans) == 1)
|
||||
{
|
||||
echo "<div class='input-group-btn'>";
|
||||
echo html::a($this->createLink('productplan', 'create', "productID=$productID&branch=$branch", '', true), "<i class='icon icon-plus'></i>", '', "class='btn btn-icon' data-toggle='modal' data-type='iframe' data-width='95%' title='{$lang->productplan->create}'");
|
||||
echo '</div>';
|
||||
echo "<div class='input-group-btn'>";
|
||||
echo html::a("javascript:void(0)", "<i class='icon icon-refresh'></i>", '', "class='btn btn-icon refresh' data-toggle='tooltip' title='{$lang->refresh}' onclick='loadProductPlans($productID)'");
|
||||
echo '</div>';
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</td>
|
||||
<?php if(strpos(",$showFields,", ',source,') !== false):?>
|
||||
<td colspan="2" class='sourceTd'>
|
||||
<div class="input-group">
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon"><?php echo $lang->story->source;?></div>
|
||||
<?php echo html::select('source', $lang->story->sourceList, 0, "class='form-control chosen'");?>
|
||||
<span class='input-group-addon'><?php echo $lang->story->sourceNote;?></span>
|
||||
<?php echo html::input('sourceNote', '', "class='form-control' style='width:140px;'");?>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->reviewedBy;?></th>
|
||||
<td colspan='2'><?php echo html::select('assignedTo', $users, '', "class='form-control chosen'");?></td>
|
||||
<?php if(!$this->story->checkForceReview()):?>
|
||||
<td colspan='2'>
|
||||
<div class='checkbox-primary'>
|
||||
<input id='needNotReview' name='needNotReview' value='1' type='checkbox' class='no-margin'/>
|
||||
<label for='needNotReview'><?php echo $lang->story->needNotReview;?></label>
|
||||
</div>
|
||||
</td>
|
||||
<?php endif;?>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->title;?></th>
|
||||
<td colspan="4">
|
||||
<div class="input-group title-group">
|
||||
<div class="input-control has-icon-right required">
|
||||
<?php echo html::input('title', $issue->title, "class='form-control'");?>
|
||||
</div>
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->story->pri;?></span>
|
||||
<div class="input-group-btn pri-selector w-80px" data-type="pri">
|
||||
<?php echo html::select('pri', $lang->story->priList, $issue->pri, "class='form-control'");?>
|
||||
</div>
|
||||
<div class='table-col w-120px'>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->story->estimateAB;?></span>
|
||||
<input type="text" name="estimate" id="estimate" value="" class="form-control" autocomplete="off" placeholder='<?php echo $lang->story->hour;?>' />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->spec;?></th>
|
||||
<td colspan="4">
|
||||
<?php echo html::textarea('spec', $issue->desc, "rows='9' class='form-control kindeditor disabled-ie-placeholder' hidefocus='true' placeholder='" . htmlspecialchars($lang->story->specTemplate . "\n" . $lang->noticePasteImg) . "'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php if(strpos(",$showFields,", ',verify,') !== false):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->verify;?></th>
|
||||
<td colspan="4"><?php echo html::textarea('verify', '', "rows='6' class='form-control kindeditor' hidefocus='true'");?></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedBy;?></th>
|
||||
<td colspan='2'>
|
||||
<?php echo html::select('resolvedBy', $users, $this->app->user->account, "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedDate;?></th>
|
||||
<td colspan='2'>
|
||||
<div class='input-group has-icon-right'>
|
||||
<?php echo html::input('resolvedDate', date('Y-m-d'), "class='form-control form-date'");?>
|
||||
<label for="date" class="input-control-icon-right"><i class="icon icon-delay"></i></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<input type="hidden" name="type" value="story">
|
||||
<div class='form-action'><?php echo html::submitButton();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php js::set('storyModule', $lang->story->module);?>
|
||||
<script>
|
||||
$("#product").change();
|
||||
|
||||
/**
|
||||
* Load branches and modules according to the product.
|
||||
*
|
||||
* @param int productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProduct(productID)
|
||||
{
|
||||
loadProductBranches(productID)
|
||||
loadProductModules(productID);
|
||||
loadProductPlans(productID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get modules and plans by branch.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadBranch()
|
||||
{
|
||||
var branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
loadProductModules($('#product').val(), branch);
|
||||
loadProductPlans($('#product').val(), branch);
|
||||
}
|
||||
|
||||
/**
|
||||
* Acquire plans based on products and product branches.
|
||||
*
|
||||
* @param int productID
|
||||
* @param int branch
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductPlans(productID, branch)
|
||||
{
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
if(!branch) branch = 0;
|
||||
var planLink = createLink('product', 'ajaxGetPlans', 'productID=' + productID + '&branch=' + branch + '&planID=' + $('#plan').val() + '&fieldID=&needCreate=true');
|
||||
var planIdBox = $('#planIdBox');
|
||||
planIdBox.load(planLink, function()
|
||||
{
|
||||
planIdBox.find('#plan').chosen();
|
||||
planIdBox.fixInputGroup();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Get product branches.
|
||||
*
|
||||
* @param int productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductBranches(productID)
|
||||
{
|
||||
$('#branch').remove();
|
||||
$('#branch_chosen').remove();
|
||||
$.get(createLink('branch', 'ajaxGetBranches', "productID=" + productID), function(data)
|
||||
{
|
||||
var $product = $('#product');
|
||||
var $inputGroup = $product.closest('.input-group');
|
||||
$inputGroup.find('.input-group-addon').toggleClass('hidden', !data);
|
||||
if(data)
|
||||
{
|
||||
$inputGroup.append(data);
|
||||
$('#branch').css('width', config.currentMethod == 'create' ? '120px' : '65px').chosen();
|
||||
}
|
||||
$inputGroup.fixInputGroup();
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the product module.
|
||||
*
|
||||
* @param int productID
|
||||
* @param int branch
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProductModules(productID, branch)
|
||||
{
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
if(!branch) branch = 0;
|
||||
var moduleLink = createLink('tree', 'ajaxGetOptionMenu', 'productID=' + productID + '&viewtype=story&branch=' + branch + '&rootModuleID=0&returnType=html&fieldID=&needManage=true');
|
||||
var moduleIdBox = $('#moduleIdBox');
|
||||
moduleIdBox.load(moduleLink, function()
|
||||
{
|
||||
moduleIdBox.find('#module').chosen();
|
||||
if(typeof(storyModule) == 'string') moduleIdBox.prepend("<span class='input-group-addon'>" + storyModule + "</span>");
|
||||
moduleIdBox.fixInputGroup();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -1,157 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The create task view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolution;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolution', $lang->issue->resolveMethods, $resolution, 'class="form-control chosen" onchange="getSolutions()"');?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->project;?></th>
|
||||
<td class="required"><?php echo html::select('project', $projects, $projectID, "class='form-control chosen' onchange='loadAll(this.value)'");?></td><td></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->type;?></th>
|
||||
<td class="required"><?php echo html::select('type', $lang->task->typeList, $task->type, "class='form-control chosen'");?></td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->module;?></th>
|
||||
<td id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $task->module, "class='form-control chosen'");?></td>
|
||||
<td>
|
||||
<div class="checkbox-primary">
|
||||
<input type="checkbox" id="showAllModule" <?php if($showAllModule) echo 'checked';?>><label for="showAllModule" class="no-margin"><?php echo $lang->task->allModule;?></label>
|
||||
</div>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->assignedTo;?></th>
|
||||
<td>
|
||||
<div class="input-group" id="dataPlanGroup">
|
||||
<?php echo html::select('assignedTo[]', $members, $task->assignedTo, "class='form-control chosen'");?>
|
||||
<span class="input-group-btn team-group hidden"><a class="btn br-0" href="#modalTeam" data-toggle="modal"><?php echo $lang->task->team;?></a></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->name;?></th>
|
||||
<td colspan='3'>
|
||||
<div class="input-group title-group">
|
||||
<div class="input-control has-icon-right required">
|
||||
<?php echo html::input('name', $task->name, "class='form-control'");?>
|
||||
</div>
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->task->pri;?></span>
|
||||
<div class="input-group-btn pri-selector" data-type="pri">
|
||||
<?php echo html::select('pri', $lang->task->priList, $issue->pri, "class='form-control'");?>
|
||||
</div>
|
||||
<div class='table-col w-120px'>
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon fix-border br-0"><?php echo $lang->task->estimateAB;?></span>
|
||||
<input type="text" name="estimate" id="estimate" value="<?php echo $task->estimate;?>" class="form-control" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->desc;?></th>
|
||||
<td colspan='3'>
|
||||
<?php echo html::textarea('desc', $task->desc, "rows='10' class='form-control'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
$hiddenEstStarted = strpos(",$showFields,", ',estStarted,') === false;
|
||||
$hiddenDeadline = strpos(",$showFields,", ',deadline,') === false;
|
||||
?>
|
||||
<?php if(!$hiddenEstStarted or !$hiddenDeadline):?>
|
||||
<tr>
|
||||
<th><?php echo $lang->task->datePlan;?></th>
|
||||
<td colspan='2'>
|
||||
<div class='input-group required'>
|
||||
<?php if(!$hiddenEstStarted):?>
|
||||
<?php echo html::input('estStarted', $task->estStarted, "class='form-control form-date' placeholder='{$lang->task->estStarted}'");?>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if(!$hiddenEstStarted and !$hiddenDeadline):?>
|
||||
<span class='input-group-addon fix-border'>~</span>
|
||||
<?php endif;?>
|
||||
|
||||
<?php if(!$hiddenDeadline):?>
|
||||
<?php echo html::input('deadline', $task->deadline, "class='form-control form-date' placeholder='{$lang->task->deadline}'");?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedBy;?></th>
|
||||
<td>
|
||||
<?php echo html::select('resolvedBy', $users, $this->app->user->account, "class='form-control chosen'");?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->issue->resolvedDate;?></th>
|
||||
<td>
|
||||
<div class='input-group has-icon-right'>
|
||||
<?php echo html::input('resolvedDate', date('Y-m-d'), "class='form-control form-date'");?>
|
||||
<label for="date" class="input-control-icon-right"><i class="icon icon-delay"></i></label>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
<?php echo html::hidden('status', 'wait');?>
|
||||
<div class='form-action'><?php echo html::submitButton();?></div>
|
||||
</td>
|
||||
</tr>
|
||||
<script>
|
||||
/**
|
||||
* Load module and members.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadAll(projectID)
|
||||
{
|
||||
var moduleID = $('#moduleIdBox #module').val();
|
||||
var extra = $(this).prop('checked') ? 'allModule' : '';
|
||||
$('#moduleIdBox').load(createLink('tree', 'ajaxGetOptionMenu', "rootID=" + projectID + '&viewType=task&branch=0&rootModuleID=0&returnType=html&fieldID=&needManage=0&extra=' + extra), function()
|
||||
{
|
||||
$('#moduleIdBox #module').val(moduleID).attr('onchange', "setStories(this.value, " + projectID + ")").chosen();
|
||||
});
|
||||
|
||||
loadProjectMembers(projectID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load team members of the project.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function loadProjectMembers(projectID)
|
||||
{
|
||||
$.get(createLink('project', 'ajaxGetMembers', 'projectID=' + projectID + '&assignedTo=' + $('#assignedTo').val()), function(data)
|
||||
{
|
||||
$('#assignedTo_chosen').remove();
|
||||
$('#assignedTo').next('.picker').remove();
|
||||
$('#assignedTo').replaceWith(data);
|
||||
$('#assignedTo').attr('name', 'assignedTo[]').chosen();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@@ -1,170 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The details view of issue module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology C
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Congzhi Chen <congzhi@cnezsoft.com>
|
||||
* @package issue
|
||||
* @version $Id: view.html.php 4488 2013-02-27 02:54:49Z chencongzhi520@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php
|
||||
$browseLink = $app->session->issueList != false ? $app->session->issueList : $this->createLink('issue', 'browse');
|
||||
$createLink = $this->createLink('issue', 'create');
|
||||
|
||||
$dateFiled = array('deadline', 'resolvedDate', 'createdDate', 'editedDate', 'activateDate', 'closedDate', 'assignedDate');
|
||||
foreach($issue as $field => $value)
|
||||
{
|
||||
if(in_array($field, $dateFiled) && strpos($value, '0000') === 0) $issue->$field = '';
|
||||
}
|
||||
?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php if(!isonlybody()):?>
|
||||
<?php echo html::a($browseLink, '<i class="icon icon-back icon-sm"></i>' . $lang->goback, '', 'class="btn btn-secondary"');?>
|
||||
<div class="divider"></div>
|
||||
<?php endif;?>
|
||||
<div class="page-title">
|
||||
<span class="label label-id"><?php echo $issue->id?></span>
|
||||
<span class="text" title="<?php echo $issue->title?>"><?php echo $issue->title?></span>
|
||||
<?php if($issue->deleted):?>
|
||||
<span class='label label-danger'><?php echo $lang->issue->deleted;?></span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php if(!isonlybody()):?>
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php if(common::hasPriv('issue', 'create')) echo html::a($createLink, "<i class='icon icon-plus'></i> {$lang->issue->create}", '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<div class="main-row" id="mainContent">
|
||||
<div class="main-col col-8">
|
||||
<div class="cell">
|
||||
<div class="detail">
|
||||
<div class="detail-title"><?php echo $lang->issue->desc;?></div>
|
||||
<div class="detail-content article-content">
|
||||
<?php echo !empty($issue->desc) ? $issue->desc : '<div class="text-center text-muted">' . $lang->noData . '</div>';?>
|
||||
</div>
|
||||
</div>
|
||||
<?php if($issue->files):?>
|
||||
<div class="detail"><?php echo $this->fetch('file', 'printFiles', array('files' => $issue->files, 'fieldset' => 'true'));?></div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php $actionFormLink = $this->createLink('action', 'comment', "objectType=issue&objectID=$issue->id");?>
|
||||
<div class="cell"><?php include '../../common/view/action.html.php';?></div>
|
||||
<div class='main-actions'>
|
||||
<div class="btn-toolbar">
|
||||
<?php common::printBack($browseLink);?>
|
||||
<?php if(!isonlybody()) echo "<div class='divider'></div>";?>
|
||||
<?php if(!$issue->deleted):?>
|
||||
<?php
|
||||
$params = "issueID=$issue->id";
|
||||
common::printIcon('issue', 'confirm', $params, $issue, 'button', 'start', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('issue', 'resolve', $params, $issue, 'button', 'checked', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('issue', 'assignTo', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('issue', 'cancel', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('issue', 'close', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('issue', 'activate', $params, $issue, 'button', '', '', 'iframe showinonlybody', true);
|
||||
echo "<div class='divider'></div>";
|
||||
common::printIcon('issue', 'edit', $params, $issue);
|
||||
common::printIcon('issue', 'delete', $params, $issue, 'button', 'trash', 'hiddenwin');
|
||||
?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="side-col col-4">
|
||||
<div class="cell">
|
||||
<details class="detail" open="">
|
||||
<summary class="detail-title"><?php echo $lang->issue->basicInfo;?></summary>
|
||||
<div class="detail-content">
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-100px"><?php echo $lang->issue->id;?></th>
|
||||
<td><?php echo $issue->id;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->type;?></th>
|
||||
<td><?php echo zget($lang->issue->typeList, $issue->type);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->severity;?></th>
|
||||
<td><?php echo zget($lang->issue->severityList, $issue->severity);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->pri;?></th>
|
||||
<td><?php echo $issue->pri;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->deadline;?></th>
|
||||
<td><?php echo $issue->deadline;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->resolvedDate;?></th>
|
||||
<td><?php echo $issue->resolvedDate;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->owner;?></th>
|
||||
<td><?php echo zget($users, $issue->owner);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->assignedTo;?></th>
|
||||
<td><?php echo zget($users, $issue->assignedTo);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->createdBy;?></th>
|
||||
<td><?php echo zget($users, $issue->createdBy);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->createdDate;?></th>
|
||||
<td><?php echo $issue->createdDate;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->editedBy;?></th>
|
||||
<td><?php echo zget($users, $issue->editedBy);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->editedDate;?></th>
|
||||
<td><?php echo $issue->editedDate;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->assignedBy;?></th>
|
||||
<td><?php echo zget($users, $issue->assignedBy);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->assignedDate;?></th>
|
||||
<td><?php echo $issue->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->closedDate;?></th>
|
||||
<td><?php echo $issue->closedDate;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->activateBy;?></th>
|
||||
<td><?php echo zget($users, $issue->activateBy);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->activateDate;?></th>
|
||||
<td><?php echo $issue->activateDate;?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->closedBy;?></th>
|
||||
<td><?php echo zget($users, $issue->closedBy);?></td>
|
||||
</tr>
|
||||
<tr valign="middle">
|
||||
<th class="thWidth w-80px"><?php echo $lang->issue->status;?></th>
|
||||
<td><?php echo zget($lang->issue->statusList, $issue->status);?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,87 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The issue view file of my module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package my
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
if($app->rawMethod == 'work') echo html::a(inlink($app->rawMethod, "mode=$mode&type=assignedTo"), "<span class='text'>{$lang->my->taskMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
if($app->rawMethod == 'contribute')
|
||||
{
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=createdBy"), "<span class='text'>{$lang->my->taskMenu->openedByMe}</span>" . ($type == 'createdBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'createdBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=closedBy"), "<span class='text'>{$lang->my->taskMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainContent">
|
||||
<?php if(empty($issues)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->noData;?></span></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<form id='myTaskForm' class="main-table table-issue" data-ride="table" method="post">
|
||||
<table class="table has-sort-head table-fixed" id='issuetable'>
|
||||
<?php $vars = "mode=$mode&type=$type&orderBy=%s&recTotal=$pager->recTotal&recPerPage=$pager->recPerPage&pageID=$pager->pageID"; ?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="c-id w-50px"><?php echo common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class="w-80px"><?php echo $lang->issue->type;?></th>
|
||||
<th style="width:auto"><?php echo $lang->issue->title;?></th>
|
||||
<th class="w-70px"><?php echo $lang->issue->severity;?></th>
|
||||
<th class="w-60px"><?php echo $lang->issue->pri;?></th>
|
||||
<th class="w-80px"><?php echo $lang->issue->assignedTo;?></th>
|
||||
<th class="w-80px"><?php echo $lang->issue->owner;?></th>
|
||||
<th class="w-70px"><?php echo $lang->issue->status;?></th>
|
||||
<th class="w-100px"><?php echo $lang->issue->createdDate;?></th>
|
||||
<th class="c-actions w-200px"><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($issues as $issue):?>
|
||||
<tr>
|
||||
<td class="c-id"><?php printf('%03d', $issue->id);?></td>
|
||||
<td title="<?php echo zget($lang->issue->typeList, $issue->type);?>"><?php echo zget($lang->issue->typeList, $issue->type);?></td>
|
||||
<td class="text-ellipsis" title="<?php echo $issue->title;?>"><?php echo html::a($this->createLink('issue', 'view', "id=$issue->id", '', '', $issue->PRJ), $issue->title, '', "data-group='project'");?></td>
|
||||
<td title="<?php echo zget($lang->issue->severityList, $issue->severity);?>"><?php echo zget($lang->issue->severityList, $issue->severity);?></td>
|
||||
<td title="<?php echo $issue->pri;?>"><?php echo $issue->pri;?></td>
|
||||
<td title="<?php echo zget($users, $issue->assignedTo);?>"><?php echo zget($users, $issue->assignedTo);?></td>
|
||||
<td title="<?php echo zget($users, $issue->owner);?>"><?php echo zget($users, $issue->owner);?></td>
|
||||
<td title="<?php echo zget($lang->issue->statusList, $issue->status);?>"><?php echo zget($lang->issue->statusList, $issue->status);?></td>
|
||||
<?php $issue->createdDate = substr($issue->createdDate, 0, 10)?>
|
||||
<td title="<?php echo $issue->createdDate;?>"><?php echo $issue->createdDate;?></td>
|
||||
<td class="c-actions">
|
||||
<?php
|
||||
$params = "issueID=$issue->id";
|
||||
echo common::printIcon('issue', 'resolve', $params, $issue, 'list', 'checked', '', 'iframe', 'yes', '', $lang->issue->resolve);
|
||||
echo common::printIcon('issue', 'assignTo', $params, $issue, 'list', 'hand-right', '', 'iframe', 'yes', '', $lang->issue->assignTo);
|
||||
echo common::printIcon('issue', 'close', $params, $issue, 'list', 'off', '', 'iframe', 'yes');
|
||||
echo common::printIcon('issue', 'cancel', $params, $issue, 'list', 'ban-circle', '', 'iframe', 'yes');
|
||||
echo common::printIcon('issue', 'activate', $params, $issue, 'list', 'magic', '', 'iframe', 'yes', '', $lang->issue->activate);
|
||||
echo common::printIcon('issue', 'edit', $params, $issue, 'list', 'edit');
|
||||
$deleteClass = common::hasPriv('issue', 'delete') ? 'btn' : 'btn disabled';
|
||||
echo html::a($this->createLink('issue', 'delete', $params), '<i class="icon-trash"></i>', 'hiddenwin', "title='{$lang->issue->delete}' class='$deleteClass'");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="table-footer">
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,94 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The risk view file of my module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
|
||||
* @package my
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<style>
|
||||
.pri-low {color: #000000;}
|
||||
.pri-middle {color: #FF9900;}
|
||||
.pri-high {color: #E53333;}
|
||||
</style>
|
||||
<?php js::set('mode', $mode);?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php
|
||||
$recTotalLabel = " <span class='label label-light label-badge'>{$pager->recTotal}</span>";
|
||||
if($app->rawMethod == 'work') echo html::a(inlink($app->rawMethod, "mode=$mode&type=assignedTo"), "<span class='text'>{$lang->my->taskMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
if($app->rawMethod == 'contribute')
|
||||
{
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=createdBy"), "<span class='text'>{$lang->my->taskMenu->openedByMe}</span>" . ($type == 'createdBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'createdBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=$mode&type=closedBy"), "<span class='text'>{$lang->my->taskMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainContent">
|
||||
<?php if(empty($risks)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->noData;?></span></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<form id='myTaskForm' class="main-table table-risk" data-ride="table" method="post">
|
||||
<table class="table has-sort-head table-fixed" id='risktable'>
|
||||
<?php $vars = "mode=$mode&type=$type&orderBy=%s&recTotal=$pager->recTotal&recPerPage=$pager->recPerPage&pageID=$pager->pageID"; ?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='text-left w-60px'><?php common::printOrderLink('id', $orderBy, $vars, $lang->risk->id);?></th>
|
||||
<th class='text-left'><?php common::printOrderLink('name', $orderBy, $vars, $lang->risk->name);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('strategy', $orderBy, $vars, $lang->risk->strategy);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->risk->status);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('identifiedDate', $orderBy, $vars, $lang->risk->identifiedDate);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('rate', $orderBy, $vars, $lang->risk->rate);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('pri', $orderBy, $vars, $lang->risk->pri);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->risk->assignedTo);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('category', $orderBy, $vars, $lang->risk->category);?></th>
|
||||
<th class='w-180px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($risks as $risk):?>
|
||||
<tr>
|
||||
<td><?php echo $risk->id;?></td>
|
||||
<td><?php echo html::a($this->createLink('risk', 'view', "riskID=$risk->id"), $risk->name, '', "data-group='project'");?></td>
|
||||
<td><?php echo zget($lang->risk->strategyList, $risk->strategy);?></td>
|
||||
<td><?php echo zget($lang->risk->statusList, $risk->status);?></td>
|
||||
<td><?php echo $risk->identifiedDate == '0000-00-00' ? '' : $risk->identifiedDate;?></td>
|
||||
<td><?php echo $risk->rate;?></td>
|
||||
<?php
|
||||
$priColor = 'pri-low';
|
||||
if($risk->pri == 'middle') $priColor = 'pri-middle';
|
||||
if($risk->pri == 'high') $priColor = 'pri-high';
|
||||
?>
|
||||
<td><?php echo "<span class='$priColor'>" . zget($lang->risk->priList, $risk->pri) . "</span>";?></td>
|
||||
<td><?php echo $this->risk->printAssignedHtml($risk, $users);;?></td>
|
||||
<td><?php echo zget($lang->risk->categoryList, $risk->category);?></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
$params = "riskID=$risk->id";
|
||||
common::printIcon('risk', 'track', $params, $risk, "list", 'checked');
|
||||
common::printIcon('risk', 'close', $params, $risk, "list", '', '', 'iframe', true);
|
||||
common::printIcon('risk', 'cancel', $params, $risk, "list", '', '', 'iframe', true);
|
||||
common::printIcon('risk', 'hangup', $params, $risk, "list", 'arrow-up', '', 'iframe', true);
|
||||
common::printIcon('risk', 'activate', $params, $risk, "list", '', '', 'iframe', true);
|
||||
common::printIcon('risk', 'edit', $params, $risk, "list");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="table-footer">
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -968,7 +968,7 @@ class program extends control
|
||||
/* Navigation stay in program when enter from program list. */
|
||||
if($from == 'PRJ')
|
||||
{
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
$this->lang->navGroup->program = 'project';
|
||||
@@ -1115,7 +1115,7 @@ class program extends control
|
||||
{
|
||||
$this->app->loadLang('bug');
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
@@ -1160,7 +1160,7 @@ class program extends control
|
||||
public function PRJGroup($projectID = 0, $programID = 0)
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
@@ -1217,7 +1217,7 @@ class program extends control
|
||||
public function PRJManageView($groupID, $projectID, $programID)
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
@@ -1255,7 +1255,7 @@ class program extends control
|
||||
public function PRJManagePriv($type = 'byGroup', $param = 0, $menu = '', $version = '')
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
@@ -1325,7 +1325,7 @@ class program extends control
|
||||
public function PRJManageMembers($projectID, $dept = '')
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
|
||||
@@ -1678,7 +1678,7 @@ class program extends control
|
||||
if($from == 'PRJ')
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
}
|
||||
@@ -1709,7 +1709,7 @@ class program extends control
|
||||
if($from == 'PRJ')
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
}
|
||||
@@ -1751,7 +1751,7 @@ class program extends control
|
||||
if($from == 'PRJ')
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->lang->program->menu = $this->lang->waterfall->setMenu;
|
||||
$this->lang->program->menu = $this->lang->scrum->setMenu;
|
||||
$moduleIndex = array_search('program', $this->lang->noMenuModule);
|
||||
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
|
||||
}
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
<?php
|
||||
$config->risk->editor = new stdclass();
|
||||
$config->risk->editor->create = array('id' => 'prevention,remedy', 'tools' => 'simpleTools');
|
||||
$config->risk->editor->edit = array('id' => 'prevention,remedy,resolution', 'tools' => 'simpleTools');
|
||||
$config->risk->editor->assignto = array('id' => 'comment', 'tools' => 'simpleTools');
|
||||
$config->risk->editor->cancel = array('id' => 'comment', 'tools' => 'simpleTools');
|
||||
$config->risk->editor->close = array('id' => 'resolution', 'tools' => 'simpleTools');
|
||||
$config->risk->editor->track = array('id' => 'prevention,resolution,comment', 'tools' => 'simpleTools');
|
||||
$config->risk->editor->view = array('id' => 'lastComment', 'tools' => 'simpleTools');
|
||||
|
||||
$config->risk->create = new stdclass();
|
||||
$config->risk->create->requiredFields = 'name';
|
||||
|
||||
global $lang;
|
||||
$config->risk->search['module'] = 'risk';
|
||||
$config->risk->search['fields']['id'] = $lang->risk->id;
|
||||
$config->risk->search['fields']['name'] = $lang->risk->name;
|
||||
$config->risk->search['fields']['source'] = $lang->risk->source;
|
||||
$config->risk->search['fields']['category'] = $lang->risk->category;
|
||||
$config->risk->search['fields']['strategy'] = $lang->risk->strategy;
|
||||
$config->risk->search['fields']['status'] = $lang->risk->status;
|
||||
$config->risk->search['fields']['impact'] = $lang->risk->impact;
|
||||
$config->risk->search['fields']['probability'] = $lang->risk->probability;
|
||||
$config->risk->search['fields']['rate'] = $lang->risk->rate;
|
||||
$config->risk->search['fields']['pri'] = $lang->risk->pri;
|
||||
$config->risk->search['fields']['identifiedDate'] = $lang->risk->identifiedDate;
|
||||
$config->risk->search['fields']['prevention'] = $lang->risk->prevention;
|
||||
$config->risk->search['fields']['remedy'] = $lang->risk->remedy;
|
||||
$config->risk->search['fields']['resolution'] = $lang->risk->resolution;
|
||||
$config->risk->search['fields']['plannedClosedDate'] = $lang->risk->plannedClosedDate;
|
||||
$config->risk->search['fields']['actualClosedDate'] = $lang->risk->actualClosedDate;
|
||||
$config->risk->search['fields']['createdBy'] = $lang->risk->createdBy;
|
||||
$config->risk->search['fields']['createdDate'] = $lang->risk->createdDate;
|
||||
$config->risk->search['fields']['resolvedBy'] = $lang->risk->resolvedBy;
|
||||
$config->risk->search['fields']['activateBy'] = $lang->risk->activateBy;
|
||||
$config->risk->search['fields']['assignedTo'] = $lang->risk->assignedTo;
|
||||
$config->risk->search['fields']['cancelBy'] = $lang->risk->cancelBy;
|
||||
$config->risk->search['fields']['hangupBy'] = $lang->risk->hangupBy;
|
||||
$config->risk->search['fields']['trackedBy'] = $lang->risk->trackedBy;
|
||||
|
||||
$config->risk->search['params']['name'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->risk->search['params']['source'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->risk->sourceList);
|
||||
$config->risk->search['params']['category'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->risk->categoryList);
|
||||
$config->risk->search['params']['strategy'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->risk->strategyList);
|
||||
$config->risk->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->risk->statusList);
|
||||
$config->risk->search['params']['impact'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->risk->impactList);
|
||||
$config->risk->search['params']['probability'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->risk->probabilityList);
|
||||
$config->risk->search['params']['rate'] = array('operator' => '=', 'control' => 'input', 'values' => '');
|
||||
$config->risk->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->risk->priList);
|
||||
$config->risk->search['params']['identifiedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->risk->search['params']['prevention'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->risk->search['params']['remedy'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->risk->search['params']['plannedClosedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->risk->search['params']['actualClosedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->risk->search['params']['createdBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->risk->search['params']['createdDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->risk->search['params']['resolution'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
|
||||
$config->risk->search['params']['resolvedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->risk->search['params']['activateBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->risk->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->risk->search['params']['cancelBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->risk->search['params']['hangupBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->risk->search['params']['trackedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
@@ -1,428 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The control file of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: control.php 5107 2020-09-04 09:06:12Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class risk extends control
|
||||
{
|
||||
/**
|
||||
* Browse risks.
|
||||
*
|
||||
* @param string $browseType
|
||||
* @param string $param
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function browse($browseType = 'all', $param = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
$uri = $this->app->getURI(true);
|
||||
$this->session->set('riskList', $uri);
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = ($browseType == 'bysearch') ? (int)$param : 0;
|
||||
$actionURL = $this->createLink('risk', 'browse', "browseType=bysearch&queryID=myQueryID");
|
||||
$this->risk->buildSearchForm($queryID, $actionURL);
|
||||
|
||||
/* Load pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
if($this->app->getViewType() == 'mhtml') $recPerPage = 10;
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->browse;
|
||||
$this->view->position[] = $this->lang->risk->browse;
|
||||
$this->view->risks = $this->risk->getList($this->session->PRJ, $browseType, $param, $orderBy, $pager);
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->param = $param;
|
||||
$this->view->orderBy = $orderBy;
|
||||
$this->view->pager = $pager;
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a risk.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$riskID = $this->risk->create();
|
||||
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = $this->lang->saveSuccess;
|
||||
if(!$riskID)
|
||||
{
|
||||
$response['result'] = 'fail';
|
||||
$response['message'] = dao::getError();
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$this->loadModel('action')->create('risk', $riskID, 'Opened');
|
||||
$response['locate'] = inlink('browse');
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->create;
|
||||
$this->view->position[] = $this->lang->risk->create;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function edit($riskID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->risk->update($riskID);
|
||||
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = $this->lang->saveSuccess;
|
||||
if(dao::isError())
|
||||
{
|
||||
$response['result'] = 'fail';
|
||||
$response['message'] = dao::getError();
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$this->loadModel('action');
|
||||
if(!empty($changes))
|
||||
{
|
||||
$actionID = $this->action->create('risk', $riskID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
$response['locate'] = inlink('browse');
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->edit;
|
||||
$this->view->position[] = $this->lang->risk->edit;
|
||||
|
||||
$this->view->risk = $this->risk->getById($riskID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* View a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function view($riskID)
|
||||
{
|
||||
$risk = $this->risk->getById($riskID);
|
||||
if(empty($risk)) die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
$this->session->PRJ = $risk->PRJ;
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->view;
|
||||
$this->view->position[] = $this->lang->risk->view;
|
||||
$this->view->risk = $risk;
|
||||
$this->view->actions = $this->loadModel('action')->getList('risk', $riskID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noletter');
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch create risks.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function batchCreate()
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$this->risk->batchCreate();
|
||||
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = $this->lang->saveSuccess;
|
||||
if(dao::isError())
|
||||
{
|
||||
$response['result'] = 'fail';
|
||||
$response['message'] = dao::getError();
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$response['locate'] = inlink('browse');
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->batchCreate;
|
||||
$this->view->position[] = $this->lang->risk->batchCreate;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function delete($riskID, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->risk->confirmDelete, $this->createLink('risk', 'delete', "risk=$riskID&confirm=yes"), ''));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->risk->delete(TABLE_RISK, $riskID);
|
||||
|
||||
die(js::locate(inlink('browse'), 'parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Track a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function track($riskID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = array();
|
||||
if($this->post->isChange) $changes = $this->risk->track($riskID);
|
||||
|
||||
$response['result'] = 'success';
|
||||
$response['message'] = $this->lang->saveSuccess;
|
||||
if(dao::isError())
|
||||
{
|
||||
$response['result'] = 'fail';
|
||||
$response['message'] = dao::getError();
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$this->loadModel('action');
|
||||
if(!empty($changes) or $_POST['comment'])
|
||||
{
|
||||
$actionID = $this->action->create('risk', $riskID, 'Tracked', $_POST['comment']);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
if(isonlybody()) $this->send(array('locate' => 'parent', 'message' => $this->lang->saveSuccess, 'result' => 'success'));
|
||||
$this->send(array('locate' => inlink('browse')));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->track;
|
||||
$this->view->position[] = $this->lang->risk->track;
|
||||
|
||||
$this->view->risk = $this->risk->getById($riskID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update assign of risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function assignTo($riskID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->risk->assign($riskID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
if(!empty($changes))
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('risk', $riskID, 'Assigned', $this->post->comment, $this->post->assignedTo);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
|
||||
die(js::locate($this->createLink('risk', 'browse'), 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->assignedTo;
|
||||
$this->view->position[] = $this->lang->risk->assignedTo;
|
||||
|
||||
$this->view->risk = $this->risk->getById($riskID);
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->display();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cancel a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function cancel($riskID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->risk->cancel($riskID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
if(!empty($changes))
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('risk', $riskID, 'Canceled', $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
|
||||
die(js::locate($this->createLink('risk', 'browse'), 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->cancel;
|
||||
$this->view->position[] = $this->lang->risk->cancel;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->view->risk = $this->risk->getById($riskID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Close a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function close($riskID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->risk->close($riskID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
if(!empty($changes))
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('risk', $riskID, 'Closed', $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
|
||||
die(js::locate($this->createLink('risk', 'browse'), 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->close;
|
||||
$this->view->position[] = $this->lang->risk->close;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs();
|
||||
$this->view->risk = $this->risk->getById($riskID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Hangup a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function hangup($riskID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->risk->hangup($riskID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
if(!empty($changes))
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('risk', $riskID, 'Hangup', $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
|
||||
die(js::locate($this->createLink('risk', 'browse'), 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->hangup;
|
||||
$this->view->position[] = $this->lang->risk->hangup;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->view->risk = $this->risk->getById($riskID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function activate($riskID)
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$changes = $this->risk->activate($riskID);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
|
||||
if(!empty($changes))
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('risk', $riskID, 'Activated', $this->post->comment);
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
|
||||
die(js::locate($this->createLink('risk', 'browse'), 'parent'));
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->activate;
|
||||
$this->view->position[] = $this->lang->risk->activate;
|
||||
|
||||
$this->view->users = $this->loadModel('user')->getPairs('noclosed');
|
||||
$this->view->risk = $this->risk->getById($riskID);
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* AJAX: return risks of a user in html select.
|
||||
*
|
||||
* @param int $userID
|
||||
* @param string $id
|
||||
* @param string $status
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function ajaxGetUserRisks($userID = '', $id = '', $status = 'all')
|
||||
{
|
||||
if($userID == '') $userID = $this->app->user->id;
|
||||
$user = $this->loadModel('user')->getById($userID, 'id');
|
||||
$account = $user->account;
|
||||
|
||||
$risks = $this->risk->getUserRiskPairs($account, 0, $status);
|
||||
|
||||
if($id) die(html::select("risks[$id]", $risks, '', 'class="form-control"'));
|
||||
die(html::select('risk', $risks, '', 'class=form-control'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
.pri-low {color: #000000;}
|
||||
.pri-middle {color: #FF9900;}
|
||||
.pri-high {color: #E53333;}
|
||||
@@ -1,32 +0,0 @@
|
||||
$(function()
|
||||
{
|
||||
$('#rate').attr('readonly', true);
|
||||
$('#pri').attr('disabled', true);
|
||||
computeIndex();
|
||||
function computeIndex()
|
||||
{
|
||||
var impact = $('#impact').val();
|
||||
var probability = $('#probability').val();
|
||||
var rate = parseInt(impact * probability);
|
||||
var pri = '';
|
||||
var priColor = '';
|
||||
if(0 < rate && rate <= 5) pri = 'low';
|
||||
if(5 < rate && rate <= 12) pri = 'middle';
|
||||
if(15 <= rate && rate <= 25) pri = 'high';
|
||||
|
||||
if(pri == 'low') priColor = 'pri-low';
|
||||
if(pri == 'middle') priColor = 'pri-middle';
|
||||
if(pri == 'high') priColor = 'pri-high';
|
||||
|
||||
$('#rate').val(rate);
|
||||
$('#pri').val(pri);
|
||||
$('#pri').trigger("chosen:updated")
|
||||
$('#pri').chosen();
|
||||
$('#pri').attr('disabled', true);
|
||||
$('#priValue .chosen-container-single .chosen-single>span').attr("class", priColor);
|
||||
$('input[name="pri"]').remove();
|
||||
$('#pri').after("<input type='hidden' name='pri' value='" + pri + "'/>");
|
||||
}
|
||||
|
||||
$('#impact, #probability').change(function(){computeIndex()});
|
||||
})
|
||||
@@ -1,14 +0,0 @@
|
||||
function refreshPage(obj)
|
||||
{
|
||||
var value = obj.value;
|
||||
if(value == 0)
|
||||
{
|
||||
$('.track').addClass('hidden');
|
||||
$('.not-track').removeClass('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('.not-track').addClass('hidden');
|
||||
$('.track').removeClass('hidden');
|
||||
}
|
||||
}
|
||||
@@ -1,121 +0,0 @@
|
||||
<?php
|
||||
/* Fields */
|
||||
$lang->risk->common = 'Risk';
|
||||
$lang->risk->source = 'Source';
|
||||
$lang->risk->id = 'ID';
|
||||
$lang->risk->name = 'Name';
|
||||
$lang->risk->category = 'Type';
|
||||
$lang->risk->strategy = 'Strategy';
|
||||
$lang->risk->status = 'Status';
|
||||
$lang->risk->impact = 'Impact';
|
||||
$lang->risk->probability = 'Probability';
|
||||
$lang->risk->rate = 'Risk Index';
|
||||
$lang->risk->pri = 'Priority';
|
||||
$lang->risk->prevention = 'Mitigation';
|
||||
$lang->risk->remedy = 'Contingency';
|
||||
$lang->risk->identifiedDate = 'Identified';
|
||||
$lang->risk->plannedClosedDate = 'Deadline';
|
||||
$lang->risk->assignedTo = 'AssignedTo';
|
||||
$lang->risk->assignedDate = 'AssignedDate';
|
||||
$lang->risk->createdBy = 'CreatedBy';
|
||||
$lang->risk->createdDate = 'CreatedDate';
|
||||
$lang->risk->noAssigned = 'Unassigned';
|
||||
$lang->risk->cancelBy = 'CanceledBy';
|
||||
$lang->risk->cancelDate = 'CanceledDate';
|
||||
$lang->risk->cancelReason = 'Cancel Reason';
|
||||
$lang->risk->resolvedBy = 'ResolvedBy';
|
||||
$lang->risk->closedDate = 'ClosedDate';
|
||||
$lang->risk->actualClosedDate = 'Closed Date';
|
||||
$lang->risk->resolution = 'Resolution';
|
||||
$lang->risk->hangupBy = 'SuspendedBy';
|
||||
$lang->risk->hangupDate = 'SuspendedDate';
|
||||
$lang->risk->activateBy = 'ActivatedBy';
|
||||
$lang->risk->activateDate = 'ActivatedDate';
|
||||
$lang->risk->isChange = 'Any change?';
|
||||
$lang->risk->trackedBy = 'TrackedBy';
|
||||
$lang->risk->trackedDate = 'TrackedDate';
|
||||
$lang->risk->editedBy = 'EditedBy';
|
||||
$lang->risk->editedDate = 'EditedDate';
|
||||
$lang->risk->legendBasicInfo = 'Basic Info.';
|
||||
$lang->risk->legendLifeTime = 'About Risk';
|
||||
$lang->risk->confirmDelete = 'Do you want to delelte this risk?';
|
||||
$lang->risk->deleted = 'Deleted';
|
||||
|
||||
/* Actions */
|
||||
$lang->risk->batchCreate = 'Batch Create';
|
||||
$lang->risk->create = 'Create Risk';
|
||||
$lang->risk->edit = 'Edit Risk';
|
||||
$lang->risk->browse = 'Risks';
|
||||
$lang->risk->view = 'Details';
|
||||
$lang->risk->activate = 'Active';
|
||||
$lang->risk->hangup = 'Suspend';
|
||||
$lang->risk->close = 'Close';
|
||||
$lang->risk->cancel = 'Cancle';
|
||||
$lang->risk->track = 'Track';
|
||||
$lang->risk->assignTo = 'Assign';
|
||||
$lang->risk->delete = 'Delete';
|
||||
$lang->risk->byQuery = 'Search';
|
||||
|
||||
$lang->risk->action = new stdclass();
|
||||
$lang->risk->action->hangup = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->risk->action->tracked = '$date, tracked by <strong>$actor</strong>.' . "\n";
|
||||
|
||||
$lang->risk->sourceList[''] = '';
|
||||
$lang->risk->sourceList['business'] = 'Business';
|
||||
$lang->risk->sourceList['team'] = 'Project Team';
|
||||
$lang->risk->sourceList['logistic'] = 'Project Logistics';
|
||||
$lang->risk->sourceList['manage'] = 'Management';
|
||||
$lang->risk->sourceList['sourcing'] = 'Supplier-Procurement';
|
||||
$lang->risk->sourceList['outsourcing'] = 'Supplier-Outsourcing';
|
||||
$lang->risk->sourceList['customer'] = 'Customer';
|
||||
$lang->risk->sourceList['others'] = 'Other';
|
||||
|
||||
$lang->risk->categoryList[''] = '';
|
||||
$lang->risk->categoryList['technical'] = 'Technology';
|
||||
$lang->risk->categoryList['manage'] = 'Management';
|
||||
$lang->risk->categoryList['business'] = 'Business';
|
||||
$lang->risk->categoryList['requirement'] = 'Requirement';
|
||||
$lang->risk->categoryList['resource'] = 'Resource';
|
||||
$lang->risk->categoryList['others'] = 'Other';
|
||||
|
||||
$lang->risk->impactList[1] = 1;
|
||||
$lang->risk->impactList[2] = 2;
|
||||
$lang->risk->impactList[3] = 3;
|
||||
$lang->risk->impactList[4] = 4;
|
||||
$lang->risk->impactList[5] = 5;
|
||||
|
||||
$lang->risk->probabilityList[1] = 1;
|
||||
$lang->risk->probabilityList[2] = 2;
|
||||
$lang->risk->probabilityList[3] = 3;
|
||||
$lang->risk->probabilityList[4] = 4;
|
||||
$lang->risk->probabilityList[5] = 5;
|
||||
|
||||
$lang->risk->priList['high'] = 'High';
|
||||
$lang->risk->priList['middle'] = 'Medium';
|
||||
$lang->risk->priList['low'] = 'Low';
|
||||
|
||||
$lang->risk->statusList[''] = '';
|
||||
$lang->risk->statusList['active'] = 'Active';
|
||||
$lang->risk->statusList['closed'] = 'Closed';
|
||||
$lang->risk->statusList['hangup'] = 'Suspended';
|
||||
$lang->risk->statusList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->risk->strategyList[''] = '';
|
||||
$lang->risk->strategyList['avoidance'] = 'Avoidance';
|
||||
$lang->risk->strategyList['mitigation'] = 'Mitigation';
|
||||
$lang->risk->strategyList['transference'] = 'Transfer';
|
||||
$lang->risk->strategyList['acceptance'] = 'Acceptance';
|
||||
|
||||
$lang->risk->isChangeList[0] = 'No';
|
||||
$lang->risk->isChangeList[1] = 'Yes';
|
||||
|
||||
$lang->risk->cancelReasonList[''] = '';
|
||||
$lang->risk->cancelReasonList['disappeared'] = 'Dispear';
|
||||
$lang->risk->cancelReasonList['mistake'] = 'Mistake';
|
||||
|
||||
$lang->risk->featureBar['browse']['all'] = 'All';
|
||||
$lang->risk->featureBar['browse']['active'] = 'Active';
|
||||
$lang->risk->featureBar['browse']['assignTo'] = 'AssignToMe';
|
||||
$lang->risk->featureBar['browse']['closed'] = 'Closed';
|
||||
$lang->risk->featureBar['browse']['hangup'] = 'Suspended';
|
||||
$lang->risk->featureBar['browse']['canceled'] = 'Canceled';
|
||||
@@ -1,121 +0,0 @@
|
||||
<?php
|
||||
/* Fields */
|
||||
$lang->risk->common = 'Risk';
|
||||
$lang->risk->source = 'Source';
|
||||
$lang->risk->id = 'ID';
|
||||
$lang->risk->name = 'Name';
|
||||
$lang->risk->category = 'Type';
|
||||
$lang->risk->strategy = 'Strategy';
|
||||
$lang->risk->status = 'Status';
|
||||
$lang->risk->impact = 'Impact';
|
||||
$lang->risk->probability = 'Probability';
|
||||
$lang->risk->rate = 'Risk Index';
|
||||
$lang->risk->pri = 'Priority';
|
||||
$lang->risk->prevention = 'Mitigation';
|
||||
$lang->risk->remedy = 'Contingency';
|
||||
$lang->risk->identifiedDate = 'Identified';
|
||||
$lang->risk->plannedClosedDate = 'Deadline';
|
||||
$lang->risk->assignedTo = 'AssignedTo';
|
||||
$lang->risk->assignedDate = 'AssignedDate';
|
||||
$lang->risk->createdBy = 'CreatedBy';
|
||||
$lang->risk->createdDate = 'CreatedDate';
|
||||
$lang->risk->noAssigned = 'Unassigned';
|
||||
$lang->risk->cancelBy = 'CanceledBy';
|
||||
$lang->risk->cancelDate = 'CanceledDate';
|
||||
$lang->risk->cancelReason = 'Cancel Reason';
|
||||
$lang->risk->resolvedBy = 'ResolvedBy';
|
||||
$lang->risk->closedDate = 'ClosedDate';
|
||||
$lang->risk->actualClosedDate = 'Closed Date';
|
||||
$lang->risk->resolution = 'Resolution';
|
||||
$lang->risk->hangupBy = 'SuspendedBy';
|
||||
$lang->risk->hangupDate = 'SuspendedDate';
|
||||
$lang->risk->activateBy = 'ActivatedBy';
|
||||
$lang->risk->activateDate = 'ActivatedDate';
|
||||
$lang->risk->isChange = 'Any change?';
|
||||
$lang->risk->trackedBy = 'TrackedBy';
|
||||
$lang->risk->trackedDate = 'TrackedDate';
|
||||
$lang->risk->editedBy = 'EditedBy';
|
||||
$lang->risk->editedDate = 'EditedDate';
|
||||
$lang->risk->legendBasicInfo = 'Basic Info.';
|
||||
$lang->risk->legendLifeTime = 'About Risk';
|
||||
$lang->risk->confirmDelete = 'Do you want to delelte this risk?';
|
||||
$lang->risk->deleted = 'Deleted';
|
||||
|
||||
/* Actions */
|
||||
$lang->risk->batchCreate = 'Batch Create';
|
||||
$lang->risk->create = 'Create Risk';
|
||||
$lang->risk->edit = 'Edit Risk';
|
||||
$lang->risk->browse = 'Risks';
|
||||
$lang->risk->view = 'Details';
|
||||
$lang->risk->activate = 'Active';
|
||||
$lang->risk->hangup = 'Suspend';
|
||||
$lang->risk->close = 'Close';
|
||||
$lang->risk->cancel = 'Cancle';
|
||||
$lang->risk->track = 'Track';
|
||||
$lang->risk->assignTo = 'Assign';
|
||||
$lang->risk->delete = 'Delete';
|
||||
$lang->risk->byQuery = 'Search';
|
||||
|
||||
$lang->risk->action = new stdclass();
|
||||
$lang->risk->action->hangup = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->risk->action->tracked = '$date, tracked by <strong>$actor</strong>.' . "\n";
|
||||
|
||||
$lang->risk->sourceList[''] = '';
|
||||
$lang->risk->sourceList['business'] = 'Business';
|
||||
$lang->risk->sourceList['team'] = 'Project Team';
|
||||
$lang->risk->sourceList['logistic'] = 'Project Logistics';
|
||||
$lang->risk->sourceList['manage'] = 'Management';
|
||||
$lang->risk->sourceList['sourcing'] = 'Supplier-Procurement';
|
||||
$lang->risk->sourceList['outsourcing'] = 'Supplier-Outsourcing';
|
||||
$lang->risk->sourceList['customer'] = 'Customer';
|
||||
$lang->risk->sourceList['others'] = 'Other';
|
||||
|
||||
$lang->risk->categoryList[''] = '';
|
||||
$lang->risk->categoryList['technical'] = 'Technology';
|
||||
$lang->risk->categoryList['manage'] = 'Management';
|
||||
$lang->risk->categoryList['business'] = 'Business';
|
||||
$lang->risk->categoryList['requirement'] = 'Requirement';
|
||||
$lang->risk->categoryList['resource'] = 'Resource';
|
||||
$lang->risk->categoryList['others'] = 'Other';
|
||||
|
||||
$lang->risk->impactList[1] = 1;
|
||||
$lang->risk->impactList[2] = 2;
|
||||
$lang->risk->impactList[3] = 3;
|
||||
$lang->risk->impactList[4] = 4;
|
||||
$lang->risk->impactList[5] = 5;
|
||||
|
||||
$lang->risk->probabilityList[1] = 1;
|
||||
$lang->risk->probabilityList[2] = 2;
|
||||
$lang->risk->probabilityList[3] = 3;
|
||||
$lang->risk->probabilityList[4] = 4;
|
||||
$lang->risk->probabilityList[5] = 5;
|
||||
|
||||
$lang->risk->priList['high'] = 'High';
|
||||
$lang->risk->priList['middle'] = 'Medium';
|
||||
$lang->risk->priList['low'] = 'Low';
|
||||
|
||||
$lang->risk->statusList[''] = '';
|
||||
$lang->risk->statusList['active'] = 'Active';
|
||||
$lang->risk->statusList['closed'] = 'Closed';
|
||||
$lang->risk->statusList['hangup'] = 'Suspended';
|
||||
$lang->risk->statusList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->risk->strategyList[''] = '';
|
||||
$lang->risk->strategyList['avoidance'] = 'Avoidance';
|
||||
$lang->risk->strategyList['mitigation'] = 'Mitigation';
|
||||
$lang->risk->strategyList['transference'] = 'Transfer';
|
||||
$lang->risk->strategyList['acceptance'] = 'Acceptance';
|
||||
|
||||
$lang->risk->isChangeList[0] = 'No';
|
||||
$lang->risk->isChangeList[1] = 'Yes';
|
||||
|
||||
$lang->risk->cancelReasonList[''] = '';
|
||||
$lang->risk->cancelReasonList['disappeared'] = 'Dispear';
|
||||
$lang->risk->cancelReasonList['mistake'] = 'Mistake';
|
||||
|
||||
$lang->risk->featureBar['browse']['all'] = 'All';
|
||||
$lang->risk->featureBar['browse']['active'] = 'Active';
|
||||
$lang->risk->featureBar['browse']['assignTo'] = 'AssignToMe';
|
||||
$lang->risk->featureBar['browse']['closed'] = 'Closed';
|
||||
$lang->risk->featureBar['browse']['hangup'] = 'Suspended';
|
||||
$lang->risk->featureBar['browse']['canceled'] = 'Canceled';
|
||||
@@ -1,121 +0,0 @@
|
||||
<?php
|
||||
/* Fields */
|
||||
$lang->risk->common = 'Risk';
|
||||
$lang->risk->source = 'Source';
|
||||
$lang->risk->id = 'ID';
|
||||
$lang->risk->name = 'Name';
|
||||
$lang->risk->category = 'Type';
|
||||
$lang->risk->strategy = 'Strategy';
|
||||
$lang->risk->status = 'Status';
|
||||
$lang->risk->impact = 'Impact';
|
||||
$lang->risk->probability = 'Probability';
|
||||
$lang->risk->rate = 'Risk Index';
|
||||
$lang->risk->pri = 'Priority';
|
||||
$lang->risk->prevention = 'Mitigation';
|
||||
$lang->risk->remedy = 'Contingency';
|
||||
$lang->risk->identifiedDate = 'Identified';
|
||||
$lang->risk->plannedClosedDate = 'Deadline';
|
||||
$lang->risk->assignedTo = 'AssignedTo';
|
||||
$lang->risk->assignedDate = 'AssignedDate';
|
||||
$lang->risk->createdBy = 'CreatedBy';
|
||||
$lang->risk->createdDate = 'CreatedDate';
|
||||
$lang->risk->noAssigned = 'Unassigned';
|
||||
$lang->risk->cancelBy = 'CanceledBy';
|
||||
$lang->risk->cancelDate = 'CanceledDate';
|
||||
$lang->risk->cancelReason = 'Cancel Reason';
|
||||
$lang->risk->resolvedBy = 'ResolvedBy';
|
||||
$lang->risk->closedDate = 'ClosedDate';
|
||||
$lang->risk->actualClosedDate = 'Closed Date';
|
||||
$lang->risk->resolution = 'Resolution';
|
||||
$lang->risk->hangupBy = 'SuspendedBy';
|
||||
$lang->risk->hangupDate = 'SuspendedDate';
|
||||
$lang->risk->activateBy = 'ActivatedBy';
|
||||
$lang->risk->activateDate = 'ActivatedDate';
|
||||
$lang->risk->isChange = 'Any change?';
|
||||
$lang->risk->trackedBy = 'TrackedBy';
|
||||
$lang->risk->trackedDate = 'TrackedDate';
|
||||
$lang->risk->editedBy = 'EditedBy';
|
||||
$lang->risk->editedDate = 'EditedDate';
|
||||
$lang->risk->legendBasicInfo = 'Basic Info.';
|
||||
$lang->risk->legendLifeTime = 'About Risk';
|
||||
$lang->risk->confirmDelete = 'Do you want to delelte this risk?';
|
||||
$lang->risk->deleted = 'Deleted';
|
||||
|
||||
/* Actions */
|
||||
$lang->risk->batchCreate = 'Batch Create';
|
||||
$lang->risk->create = 'Create Risk';
|
||||
$lang->risk->edit = 'Edit Risk';
|
||||
$lang->risk->browse = 'Risks';
|
||||
$lang->risk->view = 'Details';
|
||||
$lang->risk->activate = 'Active';
|
||||
$lang->risk->hangup = 'Suspend';
|
||||
$lang->risk->close = 'Close';
|
||||
$lang->risk->cancel = 'Cancle';
|
||||
$lang->risk->track = 'Track';
|
||||
$lang->risk->assignTo = 'Assign';
|
||||
$lang->risk->delete = 'Delete';
|
||||
$lang->risk->byQuery = 'Search';
|
||||
|
||||
$lang->risk->action = new stdclass();
|
||||
$lang->risk->action->hangup = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->risk->action->tracked = '$date, tracked by <strong>$actor</strong>.' . "\n";
|
||||
|
||||
$lang->risk->sourceList[''] = '';
|
||||
$lang->risk->sourceList['business'] = 'Business';
|
||||
$lang->risk->sourceList['team'] = 'Project Team';
|
||||
$lang->risk->sourceList['logistic'] = 'Project Logistics';
|
||||
$lang->risk->sourceList['manage'] = 'Management';
|
||||
$lang->risk->sourceList['sourcing'] = 'Supplier-Procurement';
|
||||
$lang->risk->sourceList['outsourcing'] = 'Supplier-Outsourcing';
|
||||
$lang->risk->sourceList['customer'] = 'Customer';
|
||||
$lang->risk->sourceList['others'] = 'Other';
|
||||
|
||||
$lang->risk->categoryList[''] = '';
|
||||
$lang->risk->categoryList['technical'] = 'Technology';
|
||||
$lang->risk->categoryList['manage'] = 'Management';
|
||||
$lang->risk->categoryList['business'] = 'Business';
|
||||
$lang->risk->categoryList['requirement'] = 'Requirement';
|
||||
$lang->risk->categoryList['resource'] = 'Resource';
|
||||
$lang->risk->categoryList['others'] = 'Other';
|
||||
|
||||
$lang->risk->impactList[1] = 1;
|
||||
$lang->risk->impactList[2] = 2;
|
||||
$lang->risk->impactList[3] = 3;
|
||||
$lang->risk->impactList[4] = 4;
|
||||
$lang->risk->impactList[5] = 5;
|
||||
|
||||
$lang->risk->probabilityList[1] = 1;
|
||||
$lang->risk->probabilityList[2] = 2;
|
||||
$lang->risk->probabilityList[3] = 3;
|
||||
$lang->risk->probabilityList[4] = 4;
|
||||
$lang->risk->probabilityList[5] = 5;
|
||||
|
||||
$lang->risk->priList['high'] = 'High';
|
||||
$lang->risk->priList['middle'] = 'Medium';
|
||||
$lang->risk->priList['low'] = 'Low';
|
||||
|
||||
$lang->risk->statusList[''] = '';
|
||||
$lang->risk->statusList['active'] = 'Active';
|
||||
$lang->risk->statusList['closed'] = 'Closed';
|
||||
$lang->risk->statusList['hangup'] = 'Suspended';
|
||||
$lang->risk->statusList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->risk->strategyList[''] = '';
|
||||
$lang->risk->strategyList['avoidance'] = 'Avoidance';
|
||||
$lang->risk->strategyList['mitigation'] = 'Mitigation';
|
||||
$lang->risk->strategyList['transference'] = 'Transfer';
|
||||
$lang->risk->strategyList['acceptance'] = 'Acceptance';
|
||||
|
||||
$lang->risk->isChangeList[0] = 'No';
|
||||
$lang->risk->isChangeList[1] = 'Yes';
|
||||
|
||||
$lang->risk->cancelReasonList[''] = '';
|
||||
$lang->risk->cancelReasonList['disappeared'] = 'Dispear';
|
||||
$lang->risk->cancelReasonList['mistake'] = 'Mistake';
|
||||
|
||||
$lang->risk->featureBar['browse']['all'] = 'All';
|
||||
$lang->risk->featureBar['browse']['active'] = 'Active';
|
||||
$lang->risk->featureBar['browse']['assignTo'] = 'AssignToMe';
|
||||
$lang->risk->featureBar['browse']['closed'] = 'Closed';
|
||||
$lang->risk->featureBar['browse']['hangup'] = 'Suspended';
|
||||
$lang->risk->featureBar['browse']['canceled'] = 'Canceled';
|
||||
@@ -1,121 +0,0 @@
|
||||
<?php
|
||||
/* Fields */
|
||||
$lang->risk->common = 'Risk';
|
||||
$lang->risk->source = 'Source';
|
||||
$lang->risk->id = 'ID';
|
||||
$lang->risk->name = 'Name';
|
||||
$lang->risk->category = 'Type';
|
||||
$lang->risk->strategy = 'Strategy';
|
||||
$lang->risk->status = 'Status';
|
||||
$lang->risk->impact = 'Impact';
|
||||
$lang->risk->probability = 'Probability';
|
||||
$lang->risk->rate = 'Risk Index';
|
||||
$lang->risk->pri = 'Priority';
|
||||
$lang->risk->prevention = 'Mitigation';
|
||||
$lang->risk->remedy = 'Contingency';
|
||||
$lang->risk->identifiedDate = 'Identified';
|
||||
$lang->risk->plannedClosedDate = 'Deadline';
|
||||
$lang->risk->assignedTo = 'AssignedTo';
|
||||
$lang->risk->assignedDate = 'AssignedDate';
|
||||
$lang->risk->createdBy = 'CreatedBy';
|
||||
$lang->risk->createdDate = 'CreatedDate';
|
||||
$lang->risk->noAssigned = 'Unassigned';
|
||||
$lang->risk->cancelBy = 'CanceledBy';
|
||||
$lang->risk->cancelDate = 'CanceledDate';
|
||||
$lang->risk->cancelReason = 'Cancel Reason';
|
||||
$lang->risk->resolvedBy = 'ResolvedBy';
|
||||
$lang->risk->closedDate = 'ClosedDate';
|
||||
$lang->risk->actualClosedDate = 'Closed Date';
|
||||
$lang->risk->resolution = 'Resolution';
|
||||
$lang->risk->hangupBy = 'SuspendedBy';
|
||||
$lang->risk->hangupDate = 'SuspendedDate';
|
||||
$lang->risk->activateBy = 'ActivatedBy';
|
||||
$lang->risk->activateDate = 'ActivatedDate';
|
||||
$lang->risk->isChange = 'Any change?';
|
||||
$lang->risk->trackedBy = 'TrackedBy';
|
||||
$lang->risk->trackedDate = 'TrackedDate';
|
||||
$lang->risk->editedBy = 'EditedBy';
|
||||
$lang->risk->editedDate = 'EditedDate';
|
||||
$lang->risk->legendBasicInfo = 'Basic Info.';
|
||||
$lang->risk->legendLifeTime = 'About Risk';
|
||||
$lang->risk->confirmDelete = 'Do you want to delelte this risk?';
|
||||
$lang->risk->deleted = 'Deleted';
|
||||
|
||||
/* Actions */
|
||||
$lang->risk->batchCreate = 'Batch Create';
|
||||
$lang->risk->create = 'Create Risk';
|
||||
$lang->risk->edit = 'Edit Risk';
|
||||
$lang->risk->browse = 'Risks';
|
||||
$lang->risk->view = 'Details';
|
||||
$lang->risk->activate = 'Active';
|
||||
$lang->risk->hangup = 'Suspend';
|
||||
$lang->risk->close = 'Close';
|
||||
$lang->risk->cancel = 'Cancle';
|
||||
$lang->risk->track = 'Track';
|
||||
$lang->risk->assignTo = 'Assign';
|
||||
$lang->risk->delete = 'Delete';
|
||||
$lang->risk->byQuery = 'Search';
|
||||
|
||||
$lang->risk->action = new stdclass();
|
||||
$lang->risk->action->hangup = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->risk->action->tracked = '$date, tracked by <strong>$actor</strong>.' . "\n";
|
||||
|
||||
$lang->risk->sourceList[''] = '';
|
||||
$lang->risk->sourceList['business'] = 'Business';
|
||||
$lang->risk->sourceList['team'] = 'Project Team';
|
||||
$lang->risk->sourceList['logistic'] = 'Project Logistics';
|
||||
$lang->risk->sourceList['manage'] = 'Management';
|
||||
$lang->risk->sourceList['sourcing'] = 'Supplier-Procurement';
|
||||
$lang->risk->sourceList['outsourcing'] = 'Supplier-Outsourcing';
|
||||
$lang->risk->sourceList['customer'] = 'Customer';
|
||||
$lang->risk->sourceList['others'] = 'Other';
|
||||
|
||||
$lang->risk->categoryList[''] = '';
|
||||
$lang->risk->categoryList['technical'] = 'Technology';
|
||||
$lang->risk->categoryList['manage'] = 'Management';
|
||||
$lang->risk->categoryList['business'] = 'Business';
|
||||
$lang->risk->categoryList['requirement'] = 'Requirement';
|
||||
$lang->risk->categoryList['resource'] = 'Resource';
|
||||
$lang->risk->categoryList['others'] = 'Other';
|
||||
|
||||
$lang->risk->impactList[1] = 1;
|
||||
$lang->risk->impactList[2] = 2;
|
||||
$lang->risk->impactList[3] = 3;
|
||||
$lang->risk->impactList[4] = 4;
|
||||
$lang->risk->impactList[5] = 5;
|
||||
|
||||
$lang->risk->probabilityList[1] = 1;
|
||||
$lang->risk->probabilityList[2] = 2;
|
||||
$lang->risk->probabilityList[3] = 3;
|
||||
$lang->risk->probabilityList[4] = 4;
|
||||
$lang->risk->probabilityList[5] = 5;
|
||||
|
||||
$lang->risk->priList['high'] = 'High';
|
||||
$lang->risk->priList['middle'] = 'Medium';
|
||||
$lang->risk->priList['low'] = 'Low';
|
||||
|
||||
$lang->risk->statusList[''] = '';
|
||||
$lang->risk->statusList['active'] = 'Active';
|
||||
$lang->risk->statusList['closed'] = 'Closed';
|
||||
$lang->risk->statusList['hangup'] = 'Suspended';
|
||||
$lang->risk->statusList['canceled'] = 'Canceled';
|
||||
|
||||
$lang->risk->strategyList[''] = '';
|
||||
$lang->risk->strategyList['avoidance'] = 'Avoidance';
|
||||
$lang->risk->strategyList['mitigation'] = 'Mitigation';
|
||||
$lang->risk->strategyList['transference'] = 'Transfer';
|
||||
$lang->risk->strategyList['acceptance'] = 'Acceptance';
|
||||
|
||||
$lang->risk->isChangeList[0] = 'No';
|
||||
$lang->risk->isChangeList[1] = 'Yes';
|
||||
|
||||
$lang->risk->cancelReasonList[''] = '';
|
||||
$lang->risk->cancelReasonList['disappeared'] = 'Dispear';
|
||||
$lang->risk->cancelReasonList['mistake'] = 'Mistake';
|
||||
|
||||
$lang->risk->featureBar['browse']['all'] = 'All';
|
||||
$lang->risk->featureBar['browse']['active'] = 'Active';
|
||||
$lang->risk->featureBar['browse']['assignTo'] = 'AssignToMe';
|
||||
$lang->risk->featureBar['browse']['closed'] = 'Closed';
|
||||
$lang->risk->featureBar['browse']['hangup'] = 'Suspended';
|
||||
$lang->risk->featureBar['browse']['canceled'] = 'Canceled';
|
||||
@@ -1,121 +0,0 @@
|
||||
<?php
|
||||
/* Fields */
|
||||
$lang->risk->common = '风险';
|
||||
$lang->risk->source = '来源';
|
||||
$lang->risk->id = '编号';
|
||||
$lang->risk->name = '风险名称';
|
||||
$lang->risk->category = '类型';
|
||||
$lang->risk->strategy = '策略';
|
||||
$lang->risk->status = '状态';
|
||||
$lang->risk->impact = '影响程度';
|
||||
$lang->risk->probability = '发生概率';
|
||||
$lang->risk->rate = '风险系数';
|
||||
$lang->risk->pri = '优先级';
|
||||
$lang->risk->prevention = '预防措施';
|
||||
$lang->risk->remedy = '应急措施';
|
||||
$lang->risk->identifiedDate = '识别日期';
|
||||
$lang->risk->plannedClosedDate = '计划关闭日期';
|
||||
$lang->risk->assignedTo = '指派给';
|
||||
$lang->risk->assignedDate = '指派日期';
|
||||
$lang->risk->createdBy = '由谁创建';
|
||||
$lang->risk->createdDate = '创建日期';
|
||||
$lang->risk->noAssigned = '未指派';
|
||||
$lang->risk->cancelBy = '由谁取消';
|
||||
$lang->risk->cancelDate = '取消日期';
|
||||
$lang->risk->cancelReason = '取消原因';
|
||||
$lang->risk->resolvedBy = '解决者';
|
||||
$lang->risk->closedDate = '关闭日期';
|
||||
$lang->risk->actualClosedDate = '实际关闭日期';
|
||||
$lang->risk->resolution = '解决措施';
|
||||
$lang->risk->hangupBy = '由谁挂起';
|
||||
$lang->risk->hangupDate = '挂起日期';
|
||||
$lang->risk->activateBy = '由谁激活';
|
||||
$lang->risk->activateDate = '激活日期';
|
||||
$lang->risk->isChange = '风险是否变化';
|
||||
$lang->risk->trackedBy = '由谁跟踪';
|
||||
$lang->risk->trackedDate = '跟踪日期';
|
||||
$lang->risk->editedBy = '由谁编辑';
|
||||
$lang->risk->editedDate = '编辑日期';
|
||||
$lang->risk->legendBasicInfo = '基本信息';
|
||||
$lang->risk->legendLifeTime = '风险的一生';
|
||||
$lang->risk->confirmDelete = '您确认删除该风险吗?';
|
||||
$lang->risk->deleted = '已删除';
|
||||
|
||||
/* Actions */
|
||||
$lang->risk->batchCreate = '批量添加';
|
||||
$lang->risk->create = '添加风险';
|
||||
$lang->risk->edit = '编辑风险';
|
||||
$lang->risk->browse = '浏览列表';
|
||||
$lang->risk->view = '风险详情';
|
||||
$lang->risk->activate = '激活';
|
||||
$lang->risk->hangup = '挂起';
|
||||
$lang->risk->close = '关闭';
|
||||
$lang->risk->cancel = '取消';
|
||||
$lang->risk->track = '跟踪';
|
||||
$lang->risk->assignTo = '指派';
|
||||
$lang->risk->delete = '删除';
|
||||
$lang->risk->byQuery = '搜索';
|
||||
|
||||
$lang->risk->action = new stdclass();
|
||||
$lang->risk->action->hangup = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->risk->action->tracked = '$date, 由 <strong>$actor</strong> 跟踪。' . "\n";
|
||||
|
||||
$lang->risk->sourceList[''] = '';
|
||||
$lang->risk->sourceList['business'] = '业务部门';
|
||||
$lang->risk->sourceList['team'] = '项目组';
|
||||
$lang->risk->sourceList['logistic'] = '项目保障科室';
|
||||
$lang->risk->sourceList['manage'] = '管理层';
|
||||
$lang->risk->sourceList['sourcing'] = '供应商-采购';
|
||||
$lang->risk->sourceList['outsourcing'] = '供应商-外包';
|
||||
$lang->risk->sourceList['customer'] = '外部客户';
|
||||
$lang->risk->sourceList['others'] = '其他';
|
||||
|
||||
$lang->risk->categoryList[''] = '';
|
||||
$lang->risk->categoryList['technical'] = '技术类';
|
||||
$lang->risk->categoryList['manage'] = '管理类';
|
||||
$lang->risk->categoryList['business'] = '业务类';
|
||||
$lang->risk->categoryList['requirement'] = '需求类';
|
||||
$lang->risk->categoryList['resource'] = '资源类';
|
||||
$lang->risk->categoryList['others'] = '其他';
|
||||
|
||||
$lang->risk->impactList[1] = 1;
|
||||
$lang->risk->impactList[2] = 2;
|
||||
$lang->risk->impactList[3] = 3;
|
||||
$lang->risk->impactList[4] = 4;
|
||||
$lang->risk->impactList[5] = 5;
|
||||
|
||||
$lang->risk->probabilityList[1] = 1;
|
||||
$lang->risk->probabilityList[2] = 2;
|
||||
$lang->risk->probabilityList[3] = 3;
|
||||
$lang->risk->probabilityList[4] = 4;
|
||||
$lang->risk->probabilityList[5] = 5;
|
||||
|
||||
$lang->risk->priList['high'] = '高';
|
||||
$lang->risk->priList['middle'] = '中';
|
||||
$lang->risk->priList['low'] = '低';
|
||||
|
||||
$lang->risk->statusList[''] = '';
|
||||
$lang->risk->statusList['active'] = '开放';
|
||||
$lang->risk->statusList['closed'] = '关闭';
|
||||
$lang->risk->statusList['hangup'] = '挂起';
|
||||
$lang->risk->statusList['canceled'] = '取消';
|
||||
|
||||
$lang->risk->strategyList[''] = '';
|
||||
$lang->risk->strategyList['avoidance'] = '规避';
|
||||
$lang->risk->strategyList['mitigation'] = '缓解';
|
||||
$lang->risk->strategyList['transference'] = '转移';
|
||||
$lang->risk->strategyList['acceptance'] = '接受';
|
||||
|
||||
$lang->risk->isChangeList[0] = '否';
|
||||
$lang->risk->isChangeList[1] = '是';
|
||||
|
||||
$lang->risk->cancelReasonList[''] = '';
|
||||
$lang->risk->cancelReasonList['disappeared'] = '风险自行消失';
|
||||
$lang->risk->cancelReasonList['mistake'] = '识别错误';
|
||||
|
||||
$lang->risk->featureBar['browse']['all'] = '所有';
|
||||
$lang->risk->featureBar['browse']['active'] = '开放';
|
||||
$lang->risk->featureBar['browse']['assignTo'] = '指派给我';
|
||||
$lang->risk->featureBar['browse']['closed'] = '已关闭';
|
||||
$lang->risk->featureBar['browse']['hangup'] = '已挂起';
|
||||
$lang->risk->featureBar['browse']['canceled'] = '已取消';
|
||||
@@ -1,121 +0,0 @@
|
||||
<?php
|
||||
/* Fields */
|
||||
$lang->risk->common = '風險';
|
||||
$lang->risk->source = '來源';
|
||||
$lang->risk->id = '編號';
|
||||
$lang->risk->name = '風險名稱';
|
||||
$lang->risk->category = '類型';
|
||||
$lang->risk->strategy = '策略';
|
||||
$lang->risk->status = '狀態';
|
||||
$lang->risk->impact = '影響程度';
|
||||
$lang->risk->probability = '發生概率';
|
||||
$lang->risk->rate = '風險係數';
|
||||
$lang->risk->pri = '優先順序';
|
||||
$lang->risk->prevention = '預防措施';
|
||||
$lang->risk->remedy = '應急措施';
|
||||
$lang->risk->identifiedDate = '識別日期';
|
||||
$lang->risk->plannedClosedDate = '計劃關閉日期';
|
||||
$lang->risk->assignedTo = '指派給';
|
||||
$lang->risk->assignedDate = '指派日期';
|
||||
$lang->risk->createdBy = '由誰創建';
|
||||
$lang->risk->createdDate = '創建日期';
|
||||
$lang->risk->noAssigned = '未指派';
|
||||
$lang->risk->cancelBy = '由誰取消';
|
||||
$lang->risk->cancelDate = '取消日期';
|
||||
$lang->risk->cancelReason = '取消原因';
|
||||
$lang->risk->resolvedBy = '解決者';
|
||||
$lang->risk->closedDate = '關閉日期';
|
||||
$lang->risk->actualClosedDate = '實際關閉日期';
|
||||
$lang->risk->resolution = '解決措施';
|
||||
$lang->risk->hangupBy = '由誰掛起';
|
||||
$lang->risk->hangupDate = '掛起日期';
|
||||
$lang->risk->activateBy = '由誰激活';
|
||||
$lang->risk->activateDate = '激活日期';
|
||||
$lang->risk->isChange = '風險是否變化';
|
||||
$lang->risk->trackedBy = '由誰跟蹤';
|
||||
$lang->risk->trackedDate = '跟蹤日期';
|
||||
$lang->risk->editedBy = '由誰編輯';
|
||||
$lang->risk->editedDate = '編輯日期';
|
||||
$lang->risk->legendBasicInfo = '基本信息';
|
||||
$lang->risk->legendLifeTime = '風險的一生';
|
||||
$lang->risk->confirmDelete = '您確認刪除該風險嗎?';
|
||||
$lang->risk->deleted = '已刪除';
|
||||
|
||||
/* Actions */
|
||||
$lang->risk->batchCreate = '批量添加';
|
||||
$lang->risk->create = '添加風險';
|
||||
$lang->risk->edit = '編輯風險';
|
||||
$lang->risk->browse = '瀏覽列表';
|
||||
$lang->risk->view = '風險詳情';
|
||||
$lang->risk->activate = '激活';
|
||||
$lang->risk->hangup = '掛起';
|
||||
$lang->risk->close = '關閉';
|
||||
$lang->risk->cancel = '取消';
|
||||
$lang->risk->track = '跟蹤';
|
||||
$lang->risk->assignTo = '指派';
|
||||
$lang->risk->delete = '刪除';
|
||||
$lang->risk->byQuery = '搜索';
|
||||
|
||||
$lang->risk->action = new stdclass();
|
||||
$lang->risk->action->hangup = '$date, 由 <strong>$actor</strong> 掛起。' . "\n";
|
||||
$lang->risk->action->tracked = '$date, 由 <strong>$actor</strong> 跟蹤。' . "\n";
|
||||
|
||||
$lang->risk->sourceList[''] = '';
|
||||
$lang->risk->sourceList['business'] = '業務部門';
|
||||
$lang->risk->sourceList['team'] = '項目組';
|
||||
$lang->risk->sourceList['logistic'] = '項目保障科室';
|
||||
$lang->risk->sourceList['manage'] = '管理層';
|
||||
$lang->risk->sourceList['sourcing'] = '供應商-採購';
|
||||
$lang->risk->sourceList['outsourcing'] = '供應商-外包';
|
||||
$lang->risk->sourceList['customer'] = '外部客戶';
|
||||
$lang->risk->sourceList['others'] = '其他';
|
||||
|
||||
$lang->risk->categoryList[''] = '';
|
||||
$lang->risk->categoryList['technical'] = '技術類';
|
||||
$lang->risk->categoryList['manage'] = '管理類';
|
||||
$lang->risk->categoryList['business'] = '業務類';
|
||||
$lang->risk->categoryList['requirement'] = '需求類';
|
||||
$lang->risk->categoryList['resource'] = '資源類';
|
||||
$lang->risk->categoryList['others'] = '其他';
|
||||
|
||||
$lang->risk->impactList[1] = 1;
|
||||
$lang->risk->impactList[2] = 2;
|
||||
$lang->risk->impactList[3] = 3;
|
||||
$lang->risk->impactList[4] = 4;
|
||||
$lang->risk->impactList[5] = 5;
|
||||
|
||||
$lang->risk->probabilityList[1] = 1;
|
||||
$lang->risk->probabilityList[2] = 2;
|
||||
$lang->risk->probabilityList[3] = 3;
|
||||
$lang->risk->probabilityList[4] = 4;
|
||||
$lang->risk->probabilityList[5] = 5;
|
||||
|
||||
$lang->risk->priList['high'] = '高';
|
||||
$lang->risk->priList['middle'] = '中';
|
||||
$lang->risk->priList['low'] = '低';
|
||||
|
||||
$lang->risk->statusList[''] = '';
|
||||
$lang->risk->statusList['active'] = '開放';
|
||||
$lang->risk->statusList['closed'] = '關閉';
|
||||
$lang->risk->statusList['hangup'] = '掛起';
|
||||
$lang->risk->statusList['canceled'] = '取消';
|
||||
|
||||
$lang->risk->strategyList[''] = '';
|
||||
$lang->risk->strategyList['avoidance'] = '規避';
|
||||
$lang->risk->strategyList['mitigation'] = '緩解';
|
||||
$lang->risk->strategyList['transference'] = '轉移';
|
||||
$lang->risk->strategyList['acceptance'] = '接受';
|
||||
|
||||
$lang->risk->isChangeList[0] = '否';
|
||||
$lang->risk->isChangeList[1] = '是';
|
||||
|
||||
$lang->risk->cancelReasonList[''] = '';
|
||||
$lang->risk->cancelReasonList['disappeared'] = '風險自行消失';
|
||||
$lang->risk->cancelReasonList['mistake'] = '識別錯誤';
|
||||
|
||||
$lang->risk->featureBar['browse']['all'] = '所有';
|
||||
$lang->risk->featureBar['browse']['active'] = '開放';
|
||||
$lang->risk->featureBar['browse']['assignTo'] = '指派給我';
|
||||
$lang->risk->featureBar['browse']['closed'] = '已關閉';
|
||||
$lang->risk->featureBar['browse']['hangup'] = '已掛起';
|
||||
$lang->risk->featureBar['browse']['canceled'] = '已取消';
|
||||
@@ -1,476 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The model file of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: model.php 5079 2020-09-04 09:08:34Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php
|
||||
class riskModel extends model
|
||||
{
|
||||
/**
|
||||
* Create a risk.
|
||||
*
|
||||
* @access public
|
||||
* @return int|bool
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
$risk = fixer::input('post')
|
||||
->add('PRJ', $this->session->PRJ)
|
||||
->add('createdBy', $this->app->user->account)
|
||||
->add('createdDate', helper::today())
|
||||
->stripTags($this->config->risk->editor->create['id'], $this->config->allowedTags)
|
||||
->remove('uid')
|
||||
->get();
|
||||
|
||||
$risk = $this->loadModel('file')->processImgURL($risk, $this->config->risk->editor->create['id'], $this->post->uid);
|
||||
$this->dao->insert(TABLE_RISK)->data($risk)->autoCheck()->batchCheck($this->config->risk->create->requiredFields, 'notempty')->exec();
|
||||
|
||||
if(!dao::isError()) return $this->dao->lastInsertID();
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Batch create risk.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function batchCreate()
|
||||
{
|
||||
$data = fixer::input('post')->get();
|
||||
|
||||
$this->loadModel('action');
|
||||
foreach($data->name as $i => $name)
|
||||
{
|
||||
if(!$name) continue;
|
||||
|
||||
$risk = new stdclass();
|
||||
$risk->name = $name;
|
||||
$risk->source = $data->source[$i];
|
||||
$risk->category = $data->category[$i];
|
||||
$risk->strategy = $data->strategy[$i];
|
||||
$risk->PRJ = $this->session->PRJ;
|
||||
$risk->createdBy = $this->app->user->account;
|
||||
$risk->createdDate = helper::today();
|
||||
|
||||
$this->dao->insert(TABLE_RISK)->data($risk)->autoCheck()->exec();
|
||||
|
||||
$riskID = $this->dao->lastInsertID();
|
||||
$this->action->create('risk', $riskID, 'Opened');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return array|bool
|
||||
*/
|
||||
public function update($riskID)
|
||||
{
|
||||
$oldRisk = $this->getByID($riskID);
|
||||
|
||||
$risk = fixer::input('post')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::today())
|
||||
->stripTags($this->config->risk->editor->edit['id'], $this->config->allowedTags)
|
||||
->remove('uid')
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldRisk, $risk);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Track a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return array|bool
|
||||
*/
|
||||
public function track($riskID)
|
||||
{
|
||||
$oldRisk = $this->dao->select('*')->from(TABLE_RISK)->where('id')->eq((int)$riskID)->fetch();
|
||||
|
||||
$risk = fixer::input('post')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::today())
|
||||
->stripTags($this->config->risk->editor->track['id'], $this->config->allowedTags)
|
||||
->remove('isChange,comment,uid,files,label')
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldRisk, $risk);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get risks List.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $browseType
|
||||
* @param string $param
|
||||
* @param string $orderBy
|
||||
* @param int $pager
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getList($projectID, $browseType = '', $param = '', $orderBy = 'id_desc', $pager = null)
|
||||
{
|
||||
if($browseType == 'bysearch') return $this->getBySearch($projectID, $param, $orderBy, $pager);
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_RISK)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($browseType != 'all' and $browseType != 'assignTo')->andWhere('status')->eq($browseType)->fi()
|
||||
->beginIF($browseType == 'assignTo')->andWhere('assignedTo')->eq($this->app->user->account)->fi()
|
||||
->andWhere('PRJ')->eq($projectID)
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get risks by search
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $queryID
|
||||
* @param string $orderBy
|
||||
* @param int $pager
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getBySearch($projectID, $queryID = '', $orderBy = 'id_desc', $pager = null)
|
||||
{
|
||||
if($queryID && $queryID != 'myQueryID')
|
||||
{
|
||||
$query = $this->loadModel('search')->getQuery($queryID);
|
||||
if($query)
|
||||
{
|
||||
$this->session->set('riskQuery', $query->sql);
|
||||
$this->session->set('riskForm', $query->form);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->session->set('riskQuery', ' 1 = 1');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->session->riskQuery == false) $this->session->set('riskQuery', ' 1 = 1');
|
||||
}
|
||||
|
||||
$riskQuery = $this->session->riskQuery;
|
||||
|
||||
return $this->dao->select('*')->from(TABLE_RISK)
|
||||
->where($riskQuery)
|
||||
->andWhere('deleted')->eq('0')
|
||||
->andWhere('PRJ')->eq($projectID)
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get risks of pairs
|
||||
*
|
||||
* @param int $projectID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getPairs($projectID)
|
||||
{
|
||||
return $this->dao->select('id, name')->from(TABLE_RISK)
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('PRJ')->eq($projectID)
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get risk by ID
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getByID($riskID)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_RISK)->where('id')->eq((int)$riskID)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get block risks
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param string $browseType
|
||||
* @param int $limit
|
||||
* @param string $orderBy
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getBlockRisks($projectID, $browseType = 'all', $limit = 15, $orderBy = 'id_desc')
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_RISK)
|
||||
->where('PRJ')->eq($projectID)
|
||||
->beginIF($browseType != 'all' and $browseType != 'assignTo')->andWhere('status')->eq($browseType)->fi()
|
||||
->beginIF($browseType == 'assignTo')->andWhere('assignedTo')->eq($this->app->user->account)->fi()
|
||||
->andWhere('deleted')->eq('0')
|
||||
->orderBy($orderBy)
|
||||
->limit($limit)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user risks.
|
||||
*
|
||||
* @param string $type open|assignto|closed|suspended|canceled
|
||||
* @param string $account
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getUserRisks($type = 'assignedTo', $account = '', $orderBy = 'id_desc', $pager)
|
||||
{
|
||||
if(empty($account)) $account = $this->app->user->account;
|
||||
|
||||
$riskList = $this->dao->select('*')->from(TABLE_RISK)
|
||||
->where('deleted')->eq('0')
|
||||
->andWhere($type)->eq($account)->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
|
||||
return $riskList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get risk pairs of a user.
|
||||
*
|
||||
* @param string $account
|
||||
* @param int $limit
|
||||
* @param string $status all|active|closed|hangup|canceled
|
||||
* @param array $skipProjectIDList
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getUserRiskPairs($account, $limit = 0, $status = 'all', $skipProjectIDList = array())
|
||||
{
|
||||
$stmt = $this->dao->select('t1.id, t1.name, t2.name as project')
|
||||
->from(TABLE_RISK)->alias('t1')
|
||||
->leftjoin(TABLE_PROJECT)->alias('t2')->on('t1.PRJ = t2.id')
|
||||
->where('t1.assignedTo')->eq($account)
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->beginIF($status != 'all')->andWhere('t1.status')->in($status)->fi()
|
||||
->beginIF(!empty($skipProjectIDList))->andWhere('t1.PRJ')->notin($skipProjectIDList)->fi()
|
||||
->beginIF($limit)->limit($limit)->fi()
|
||||
->query();
|
||||
|
||||
$risks = array();
|
||||
while($risk = $stmt->fetch())
|
||||
{
|
||||
$risks[$risk->id] = $risk->project . ' / ' . $risk->name;
|
||||
}
|
||||
return $risks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Print assignedTo html
|
||||
*
|
||||
* @param int $risk
|
||||
* @param int $users
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function printAssignedHtml($risk, $users)
|
||||
{
|
||||
$btnTextClass = '';
|
||||
$assignedToText = zget($users, $risk->assignedTo);
|
||||
|
||||
if(empty($risk->assignedTo))
|
||||
{
|
||||
$btnTextClass = 'text-primary';
|
||||
$assignedToText = $this->lang->risk->noAssigned;
|
||||
}
|
||||
if($risk->assignedTo == $this->app->user->account) $btnTextClass = 'text-red';
|
||||
|
||||
$btnClass = $risk->assignedTo == 'closed' ? ' disabled' : '';
|
||||
$btnClass = "iframe btn btn-icon-left btn-sm {$btnClass}";
|
||||
$assignToLink = helper::createLink('risk', 'assignTo', "riskID=$risk->id", '', true);
|
||||
$assignToHtml = html::a($assignToLink, "<i class='icon icon-hand-right'></i> <span title='" . zget($users, $risk->assignedTo) . "' class='{$btnTextClass}'>{$assignedToText}</span>", '', "class='$btnClass'");
|
||||
|
||||
echo !common::hasPriv('risk', 'assignTo', $risk) ? "<span style='padding-left: 21px' class='{$btnTextClass}'>{$assignedToText}</span>" : $assignToHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return array|bool
|
||||
*/
|
||||
public function assign($riskID)
|
||||
{
|
||||
$oldRisk = $this->getByID($riskID);
|
||||
|
||||
$risk = fixer::input('post')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::today())
|
||||
->setDefault('assignedDate', helper::today())
|
||||
->stripTags($this->config->risk->editor->assignto['id'], $this->config->allowedTags)
|
||||
->remove('uid,comment,files,label')
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldRisk, $risk);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancel a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return array|bool
|
||||
*/
|
||||
public function cancel($riskID)
|
||||
{
|
||||
$oldRisk = $this->getByID($riskID);
|
||||
|
||||
$risk = fixer::input('post')
|
||||
->setDefault('status','canceled')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::today())
|
||||
->stripTags($this->config->risk->editor->cancel['id'], $this->config->allowedTags)
|
||||
->remove('uid,comment')
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldRisk, $risk);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Close a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return array|bool
|
||||
*/
|
||||
public function close($riskID)
|
||||
{
|
||||
$oldRisk = $this->getByID($riskID);
|
||||
|
||||
$risk = fixer::input('post')
|
||||
->setDefault('status','closed')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::today())
|
||||
->add('closedBy', $this->app->user->account)
|
||||
->add('closedDate', helper::today())
|
||||
->add('assignedTo', 'closed')
|
||||
->stripTags($this->config->risk->editor->close['id'], $this->config->allowedTags)
|
||||
->remove('uid,comment')
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldRisk, $risk);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hangup a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return array|bool
|
||||
*/
|
||||
public function hangup($riskID)
|
||||
{
|
||||
$oldRisk = $this->getByID($riskID);
|
||||
|
||||
$risk = fixer::input('post')
|
||||
->setDefault('status','hangup')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::today())
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldRisk, $risk);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate a risk.
|
||||
*
|
||||
* @param int $riskID
|
||||
* @access public
|
||||
* @return array|bool
|
||||
*/
|
||||
public function activate($riskID)
|
||||
{
|
||||
$oldRisk = $this->getByID($riskID);
|
||||
|
||||
$risk = fixer::input('post')
|
||||
->setDefault('status','active')
|
||||
->add('editedBy', $this->app->user->account)
|
||||
->add('editedDate', helper::today())
|
||||
->get();
|
||||
|
||||
$this->dao->update(TABLE_RISK)->data($risk)->autoCheck()->where('id')->eq((int)$riskID)->exec();
|
||||
|
||||
if(!dao::isError()) return common::createChanges($oldRisk, $risk);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust the action is clickable.
|
||||
*
|
||||
* @param int $risk
|
||||
* @param int $action
|
||||
* @static
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public static function isClickable($risk, $action)
|
||||
{
|
||||
$action = strtolower($action);
|
||||
|
||||
if($action == 'cancel' or $action == 'close') return $risk->status != 'canceled' and $risk->status != 'closed';
|
||||
if($action == 'hangup') return $risk->status == 'active';
|
||||
if($action == 'activate') return $risk->status != 'active';
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build search form.
|
||||
*
|
||||
* @param int $queryID
|
||||
* @param string $actionURL
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function buildSearchForm($queryID, $actionURL)
|
||||
{
|
||||
$this->config->risk->search['actionURL'] = $actionURL;
|
||||
$this->config->risk->search['queryID'] = $queryID;
|
||||
|
||||
$this->loadModel('search')->setSearchParams($this->config->risk->search);
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The activate of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: activate.html.php 4903 2020-09-04 09:11:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include "../../common/view/header.html.php";?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='prefix label-id'><strong><?php echo $risk->id;?></strong></span>
|
||||
<?php echo "<span title='$risk->name'>" . $risk->name . '</span>';?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->activateBy;?></th>
|
||||
<td><?php echo html::select('activateBy', $users, $this->app->user->account, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->activateDate;?></th>
|
||||
<td><?php echo html::input('activateDate', helper::today(), "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='3'><?php echo html::submitButton(); ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<?php include "../../common/view/footer.html.php";?>
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The assignto of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: assignto.html.php 4903 2020-09-04 09:32:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include "../../common/view/header.html.php";?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class="center-block">
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='prefix label-id'><strong><?php echo $risk->id;?></strong></span>
|
||||
<?php echo "<span title='$risk->name'>" . $risk->name . '</span>';?>
|
||||
</h2>
|
||||
</div>
|
||||
<form method='post' enctype='multipart/form-data' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, $risk->assignedTo, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->comment;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('comment', '', "rows='6' class='form-control kindeditor' hidefocus='true'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='3'><?php echo html::submitButton(); ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php include "../../common/view/footer.html.php";?>
|
||||
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The batchcreate of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: batchcreate.html.php 4903 2020-09-04 09:13:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id="mainContent" class="main-content fade">
|
||||
<div class="main-header">
|
||||
<h2><?php echo $lang->risk->batchCreate;?></h2>
|
||||
</div>
|
||||
<form class="load-indicator main-form form-ajax" method='post' enctype='multipart/form-data' id='dataform'>
|
||||
<table class="table table-form">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='w-50px'><?php echo $lang->risk->id;?></th>
|
||||
<th class='required'><?php echo $lang->risk->name;?></th>
|
||||
<th class='w-200px'><?php echo $lang->risk->source;?></th>
|
||||
<th class='w-200px'><?php echo $lang->risk->category;?></th>
|
||||
<th class='w-200px'><?php echo $lang->risk->strategy;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php for($i = 1; $i <= 10; $i ++):?>
|
||||
<tr>
|
||||
<td><?php echo $i;?></td>
|
||||
<td><?php echo html::input("name[$i]", '', "class='form-control'");?></td>
|
||||
<td><?php echo html::select("source[$i]", $lang->risk->sourceList, '', "class='form-control chosen'");?></td>
|
||||
<td><?php echo html::select("category[$i]", $lang->risk->categoryList, '', "class='form-control chosen'");?></td>
|
||||
<td><?php echo html::select("strategy[$i]", $lang->risk->strategyList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<?php endfor;?>
|
||||
<tr>
|
||||
<td colspan='4' class='form-actions text-center'>
|
||||
<?php echo html::submitButton() . html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,99 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The browse of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: browse.html.php 4903 2020-09-04 09:32:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include "../../common/view/header.html.php"?>
|
||||
<style>
|
||||
#querybox #searchform{border-bottom: 1px solid #ddd; margin-bottom: 20px;}
|
||||
</style>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toobar pull-left">
|
||||
<?php
|
||||
$menus = customModel::getFeatureMenu($this->moduleName, $this->methodName);
|
||||
foreach($menus as $menuItem)
|
||||
{
|
||||
$active = $menuItem->name == $browseType ? ' btn-active-text' : '';
|
||||
echo html::a($this->createLink('risk', 'browse', "browseType=$menuItem->name"), "<span class='text'>{$menuItem->text}</span>", '', "class='btn btn-link $active'");
|
||||
}
|
||||
?>
|
||||
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->risk->byQuery;?></a>
|
||||
</div>
|
||||
<div class="btn-toolbar pull-right">
|
||||
<?php common::printLink('risk', 'batchCreate', "", "<i class='icon icon-plus'></i>" . $lang->risk->batchCreate, '', "class='btn btn-primary'");?>
|
||||
<?php common::printLink('risk', 'create', "", "<i class='icon icon-plus'></i>" . $lang->risk->create, '', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell<?php if($browseType == 'bysearch') echo ' show';?>" id="queryBox" data-module='risk'></div>
|
||||
<div id="mainContent" class="main-table">
|
||||
<?php if(empty($risks)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $lang->noData;?></span>
|
||||
<?php if(common::hasPriv('risk', 'create')):?>
|
||||
<?php echo html::a($this->createLink('risk', 'create'), "<i class='icon icon-plus'></i> " . $lang->risk->create, '', "class='btn btn-info'");?>
|
||||
<?php endif;?>
|
||||
</p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<table class="table has-sort-head" id='riskList'>
|
||||
<?php $vars = "browseType=$browseType¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='text-left w-60px'><?php common::printOrderLink('id', $orderBy, $vars, $lang->risk->id);?></th>
|
||||
<th class='text-left'><?php common::printOrderLink('name', $orderBy, $vars, $lang->risk->name);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('strategy', $orderBy, $vars, $lang->risk->strategy);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->risk->status);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('identifiedDate', $orderBy, $vars, $lang->risk->identifiedDate);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('rate', $orderBy, $vars, $lang->risk->rate);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('pri', $orderBy, $vars, $lang->risk->pri);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->risk->assignedTo);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('category', $orderBy, $vars, $lang->risk->category);?></th>
|
||||
<th class='w-180px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($risks as $risk):?>
|
||||
<tr>
|
||||
<td><?php echo $risk->id;?></td>
|
||||
<td><?php echo html::a($this->createLink('risk', 'view', "riskID=$risk->id"), $risk->name);?></td>
|
||||
<td><?php echo zget($lang->risk->strategyList, $risk->strategy);?></td>
|
||||
<td><?php echo zget($lang->risk->statusList, $risk->status);?></td>
|
||||
<td><?php echo $risk->identifiedDate == '0000-00-00' ? '' : $risk->identifiedDate;?></td>
|
||||
<td><?php echo $risk->rate;?></td>
|
||||
<?php
|
||||
$priColor = 'pri-low';
|
||||
if($risk->pri == 'middle') $priColor = 'pri-middle';
|
||||
if($risk->pri == 'high') $priColor = 'pri-high';
|
||||
?>
|
||||
<td><?php echo "<span class='$priColor'>" . zget($lang->risk->priList, $risk->pri) . "</span>";?></td>
|
||||
<td><?php echo $this->risk->printAssignedHtml($risk, $users);;?></td>
|
||||
<td><?php echo zget($lang->risk->categoryList, $risk->category);?></td>
|
||||
<td class='c-actions'>
|
||||
<?php
|
||||
$params = "riskID=$risk->id";
|
||||
common::printIcon('risk', 'track', $params, $risk, "list", 'checked', '', 'iframe', true);
|
||||
common::printIcon('risk', 'close', $params, $risk, "list", '', '', 'iframe', true);
|
||||
common::printIcon('risk', 'cancel', $params, $risk, "list", '', '', 'iframe', true);
|
||||
common::printIcon('risk', 'hangup', $params, $risk, "list", 'arrow-up', '', 'iframe', true);
|
||||
common::printIcon('risk', 'activate', $params, $risk, "list", '', '', 'iframe', true);
|
||||
common::printIcon('risk', 'edit', $params, $risk, "list");
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='table-footer'>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include "../../common/view/footer.html.php"?>
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The cancel of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun LI <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: cancel.html.php 4903 2020 09:21:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include "../../common/view/header.html.php";?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='prefix label-id'><strong><?php echo $risk->id;?></strong></span>
|
||||
<?php echo "<span title='$risk->name'>" . $risk->name . '</span>';?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->cancelBy;?></th>
|
||||
<td><?php echo html::select('cancelBy', $users, $this->app->user->account, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->cancelDate;?></th>
|
||||
<td><?php echo html::input('cancelDate', helper::today(), "class='form-control form-date'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->cancelReason;?></th>
|
||||
<td><?php echo html::select('cancelReason', $lang->risk->cancelReasonList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->comment;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('comment', '', "rows='6' class='form-control kindeditor' hidefocus='true'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='3'><?php echo html::submitButton(); ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<?php include "../../common/view/footer.html.php";?>
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The close of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: close.html.php 4903 2020-09-04 09:32:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include "../../common/view/header.html.php";?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='prefix label-id'><strong><?php echo $risk->id;?></strong></span>
|
||||
<?php echo "<span title='$risk->name'>" . $risk->name . '</span>';?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->resolvedBy;?></th>
|
||||
<td><?php echo html::select('resolvedBy', $users, $this->app->user->account, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->closedDate;?></th>
|
||||
<td><?php echo html::input('actualClosedDate', helper::today(), "class='form-control form-date'");?></td>
|
||||
<td></td>
|
||||
</tr> <tr>
|
||||
<th><?php echo $lang->risk->resolution;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('resolution', '', "rows='6' class='form-control kindeditor' hidefocus='true'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='3'><?php echo html::submitButton(); ?></td> </tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<?php include "../../common/view/footer.html.php";?>
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The create of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: create.html.php 4903 2020-09-04 09:32:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id="mainContent" class="main-content fade">
|
||||
<div class="center-block">
|
||||
<div class="main-header">
|
||||
<h2><?php echo $lang->risk->create;?></h2>
|
||||
</div>
|
||||
<form class="load-indicator main-form form-ajax" method='post' enctype='multipart/form-data' id='dataform'>
|
||||
<table class="table table-form">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->source;?></th>
|
||||
<td><?php echo html::select('source', $lang->risk->sourceList, '', "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->name;?></th>
|
||||
<td><?php echo html::input('name', '', "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->category;?></th>
|
||||
<td><?php echo html::select('category', $lang->risk->categoryList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->strategy;?></th>
|
||||
<td><?php echo html::select('strategy', $lang->risk->strategyList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->impact;?></th>
|
||||
<td><?php echo html::select('impact', $lang->risk->impactList, 3, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->probability;?></th>
|
||||
<td><?php echo html::select('probability', $lang->risk->probabilityList, 3, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->rate;?></th>
|
||||
<td><?php echo html::input('rate', '', "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->pri;?></th>
|
||||
<td id='priValue'><?php echo html::select('pri', $lang->risk->priList, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->plannedClosedDate;?></th>
|
||||
<td><?php echo html::input('plannedClosedDate', '', "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, '', "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->prevention;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('prevention', '', "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->remedy;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('remedy', '', "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='form-actions text-center'>
|
||||
<?php echo html::submitButton() . html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,103 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The edit of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: edit.html.php 4903 2020-09-04 09:32:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id="mainContent" class="main-content fade">
|
||||
<div class="center-block">
|
||||
<div class="main-header">
|
||||
<h2><?php echo $lang->risk->edit;?></h2>
|
||||
</div>
|
||||
<form class="load-indicator main-form form-ajax" method='post' enctype='multipart/form-data' id='dataform'>
|
||||
<table class="table table-form">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->name;?></th>
|
||||
<td><?php echo html::input('name', $risk->name, "class='form-control'");?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->source;?></th>
|
||||
<td><?php echo html::select('source', $lang->risk->sourceList, $risk->source, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->category;?></th>
|
||||
<td><?php echo html::select('category', $lang->risk->categoryList, $risk->category, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->strategy;?></th>
|
||||
<td><?php echo html::select('strategy', $lang->risk->strategyList, $risk->strategy, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->status;?></th>
|
||||
<td><?php echo html::select('status', $lang->risk->statusList, $risk->status, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->impact;?></th>
|
||||
<td><?php echo html::select('impact', $lang->risk->impactList, $risk->impact, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->probability;?></th>
|
||||
<td><?php echo html::select('probability', $lang->risk->probabilityList, $risk->probability, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->rate;?></th>
|
||||
<td><?php echo html::input('rate', $risk->rate, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->pri;?></th>
|
||||
<td id='priValue'><?php echo html::select('pri', $lang->risk->priList, $risk->pri, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->identifiedDate;?></th>
|
||||
<td><?php echo html::input('identifiedDate', $risk->identifiedDate == '0000-00-00' ? '' : $risk->identifiedDate, "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->plannedClosedDate;?></th>
|
||||
<td><?php echo html::input('plannedClosedDate', $risk->plannedClosedDate == '0000-00-00' ? '' : $risk->plannedClosedDate, "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->actualClosedDate;?></th>
|
||||
<td><?php echo html::input('actualClosedDate', $risk->actualClosedDate == '0000-00-00' ? '' : $risk->actualClosedDate, "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->resolvedBy;?></th>
|
||||
<td><?php echo html::select('resolvedBy', $users, empty($risk->resolvedBy) ? $this->app->user->account : $risk->resolvedBy, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, empty($risk->assignedTo) ? $this->app->user->account : $risk->assignedTo, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->prevention;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('prevention', $risk->prevention, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->remedy;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('remedy', $risk->remedy, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->resolution;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('resolution', $risk->resolution, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='form-actions text-center'>
|
||||
<?php echo html::submitButton() . html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The hangup of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: hangup.html.php 4903 2020-09-04 09:32:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include "../../common/view/header.html.php";?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='prefix label-id'><strong><?php echo $risk->id;?></strong></span>
|
||||
<?php echo "<span title='$risk->name'>" . $risk->name . '</span>';?>
|
||||
</h2>
|
||||
</div>
|
||||
<form class='load-indicator main-form' method='post' target='hiddenwin'>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->hangupBy;?></th>
|
||||
<td><?php echo html::select('hangupBy', $users, $this->app->user->account, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->hangupDate;?></th>
|
||||
<td><?php echo html::input('hangupDate', helper::today(), "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-100px'><?php echo $lang->risk->assignedTo;?></th>
|
||||
<td><?php echo html::select('assignedTo', $users, $risk->assignedTo, "class='form-control chosen'");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='3'><?php echo html::submitButton(); ?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
<?php include "../../common/view/footer.html.php";?>
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The track of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package risk
|
||||
* @version $Id: track.html.php 4903 2020-09-04 09:32:59Z lyc $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<div id="mainContent" class="main-content fade">
|
||||
<div class="center-block">
|
||||
<div class="main-header">
|
||||
<h2><?php echo $lang->risk->track;?></h2>
|
||||
</div>
|
||||
<form class="load-indicator main-form form-ajax" method='post' enctype='multipart/form-data' id='dataform'>
|
||||
<table class="table table-form">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->isChange;?></th>
|
||||
<td><?php echo html::radio('isChange', $lang->risk->isChangeList, 0, "onclick=refreshPage(this)");?></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->name;?></th>
|
||||
<td><?php echo html::input('name', $risk->name, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->category;?></th>
|
||||
<td><?php echo html::select('category', $lang->risk->categoryList, $risk->category, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->strategy;?></th>
|
||||
<td><?php echo html::select('strategy', $lang->risk->strategyList, $risk->strategy, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->impact;?></th>
|
||||
<td><?php echo html::select('impact', $lang->risk->impactList, $risk->impact, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->probability;?></th>
|
||||
<td><?php echo html::select('probability', $lang->risk->probabilityList, $risk->probability, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->rate;?></th>
|
||||
<td><?php echo html::input('rate', $risk->rate, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->pri;?></th>
|
||||
<td id='priValue'><?php echo html::select('pri', $lang->risk->priList, $risk->pri, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->trackedBy;?></th>
|
||||
<td><?php echo html::select('trackedBy', $users, $this->app->user->account, "class='form-control chosen'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->trackedDate;?></th>
|
||||
<td><?php echo html::input('trackedDate', $risk->trackedDate == '0000-00-00' ? helper::today() : $risk->trackedDate , "class='form-control form-date'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->prevention;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('prevention', $risk->prevention, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr class='track hidden'>
|
||||
<th><?php echo $lang->risk->resolution;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('resolution', $risk->resolution, "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr class='not-track'>
|
||||
<th><?php echo $lang->comment;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('comment', '', "class='form-control'");?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan='3' class='form-actions text-center'>
|
||||
<?php echo html::submitButton() . html::backButton();?>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -1,219 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The view of risk module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package view
|
||||
* @version $Id
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/kindeditor.html.php';?>
|
||||
<?php $browseLink = $app->session->riskList != false ? $app->session->riskList : $this->createLink('risk', 'browse');?>
|
||||
<?php js::set('sysurl', common::getSysUrl());?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php if(!isonlybody()):?>
|
||||
<?php echo html::a($browseLink, '<i class="icon icon-back icon-sm"></i> ' . $lang->goback, '', "class='btn btn-secondary'");?>
|
||||
<div class="divider"></div>
|
||||
<?php endif;?>
|
||||
<div class="page-title">
|
||||
<span class="label label-id"><?php echo $risk->id?></span>
|
||||
<span class="text" title='<?php echo $risk->name;?>'><?php echo $risk->name;?></span>
|
||||
<?php if($risk->deleted):?>
|
||||
<span class='label label-danger'><?php echo $lang->risk->deleted;?></span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainContent" class="main-row">
|
||||
<div class="main-col col-8">
|
||||
<div class="cell">
|
||||
<div class="detail">
|
||||
<div class="detail-title"><?php echo $lang->risk->prevention;?></div>
|
||||
<div class="detail-content article-content"><?php echo $risk->prevention;?></div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="detail-title"><?php echo $lang->risk->remedy;?></div>
|
||||
<div class="detail-content article-content"><?php echo $risk->remedy;?></div>
|
||||
</div>
|
||||
<div class="detail">
|
||||
<div class="detail-title"><?php echo $lang->risk->resolution;?></div>
|
||||
<div class="detail-content article-content"><?php echo $risk->resolution;?></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell"><?php include '../../common/view/action.html.php';?></div>
|
||||
<div class='main-actions'>
|
||||
<div class="btn-toolbar">
|
||||
<?php common::printBack($browseLink);?>
|
||||
<?php if(!isonlybody()) echo "<div class='divider'></div>";?>
|
||||
<?php if(!$risk->deleted):?>
|
||||
<?php
|
||||
common::printIcon('risk', 'track', "riskID=$risk->id", $risk, "button", 'checked', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('risk', 'assignTo', "riskID=$risk->id", $risk, 'button', '', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('risk', 'cancel', "riskID=$risk->id", $risk, 'button', '', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('risk', 'close', "riskID=$risk->id", $risk, 'button', '', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('risk', 'hangup', "riskID=$risk->id", $risk, 'button', 'arrow-up', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('risk', 'activate', "riskID=$risk->id", $risk, 'button', '', '', 'iframe showinonlybody', true);
|
||||
echo "<div class='divider'></div>";
|
||||
common::printIcon('risk', 'edit', "riskID=$risk->id", $risk);
|
||||
common::printIcon('risk', 'delete', "riskID=$risk->id", $risk, 'button', 'trash', 'hiddenwin');
|
||||
?>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="side-col col-4">
|
||||
<div class="cell">
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='' data-toggle='tab'><?php echo $lang->risk->legendBasicInfo;?></a></li>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='basicInfo'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->id;?></th>
|
||||
<td><?php echo $risk->id;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->source;?></th>
|
||||
<td><?php echo zget($lang->risk->sourceList, $risk->source);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->category;?></th>
|
||||
<td><?php echo zget($lang->risk->categoryList, $risk->category);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->strategy;?></th>
|
||||
<td><?php echo zget($lang->risk->strategyList, $risk->strategy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->status;?></th>
|
||||
<td><span class='status-story status-<?php echo $risk->status?>'><span class="label label-dot"></span> <?php echo $this->processStatus('risk', $risk);?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->impact;?></th>
|
||||
<td><?php echo zget($lang->risk->impactList, $risk->impact);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->probability;?></th>
|
||||
<td><?php echo zget($lang->risk->probabilityList, $risk->probability);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->rate;?></th>
|
||||
<td><?php echo $risk->rate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->pri;?></th>
|
||||
<?php $pri = $risk->pri == 'low' ? '3' : ($risk->pri == 'middle' ? '2' : '1');?>
|
||||
<td><span class='label-pri <?php echo 'label-pri-' . $pri;?>' title='<?php echo zget($lang->risk->priList, $risk->pri)?>'><?php echo zget($lang->risk->priList, $risk->pri)?></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->identifiedDate;?></th>
|
||||
<td><?php echo $risk->identifiedDate == '0000-00-00' ? '' : $risk->identifiedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->plannedClosedDate;?></th>
|
||||
<td><?php echo $risk->plannedClosedDate == '0000-00-00' ? '' : $risk->plannedClosedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->actualClosedDate;?></th>
|
||||
<td><?php echo $risk->actualClosedDate == '0000-00-00' ? '' : $risk->actualClosedDate;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<div class='tabs'>
|
||||
<ul class='nav nav-tabs'>
|
||||
<li class='active'><a href='' data-toggle='tab'><?php echo $lang->risk->legendLifeTime;?></a></li>
|
||||
</ul>
|
||||
<div class='tab-content'>
|
||||
<div class='tab-pane active' id='legendLifeTime'>
|
||||
<table class="table table-data">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->assignedTo;?></th>
|
||||
<td><?php echo zget($users, $risk->assignedTo);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->trackedBy;?></th>
|
||||
<td><?php echo zget($users, $risk->trackedBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->trackedDate;?></th>
|
||||
<td><?php echo $risk->trackedDate == '0000-00-00' ? '' : $risk->trackedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->createdBy;?></th>
|
||||
<td><?php echo zget($users, $risk->createdBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->createdDate;?></th>
|
||||
<td><?php echo $risk->createdDate == '0000-00-00' ? '' : $risk->createdDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->editedBy;?></th>
|
||||
<td><?php echo zget($users, $risk->editedBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->editedDate;?></th>
|
||||
<td><?php echo $risk->editedDate == '0000-00-00' ? '' : $risk->editedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->assignedDate;?></th>
|
||||
<td><?php echo $risk->assignedDate == '0000-00-00' ? '' : $risk->assignedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->resolvedBy;?></th>
|
||||
<td><?php echo zget($users, $risk->resolvedBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->actualClosedDate;?></th>
|
||||
<td><?php echo $risk->actualClosedDate == '0000-00-00' ? '' : $risk->actualClosedDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->cancelBy;?></th>
|
||||
<td><?php echo zget($users, $risk->cancelBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->cancelDate;?></th>
|
||||
<td><?php echo $risk->cancelDate == '0000-00-00' ? '' : $risk->cancelDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->cancelReason;?></th>
|
||||
<td><?php echo zget($lang->risk->cancelReasonList, $risk->cancelReason);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->hangupBy;?></th>
|
||||
<td><?php echo zget($users, $risk->hangupBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->hangupDate;?></th>
|
||||
<td><?php echo $risk->hangupDate == '0000-00-00' ? '' : $risk->hangupDate;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class='w-90px'><?php echo $lang->risk->activateBy;?></th>
|
||||
<td><?php echo zget($users, $risk->activateBy);?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->risk->activateDate;?></th>
|
||||
<td><?php echo $risk->activateDate == '0000-00-00' ? '' : $risk->activateDate;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -138,20 +138,6 @@ $config->search->fields->execution->content = 'code,desc';
|
||||
$config->search->fields->execution->addedDate = 'openedDate';
|
||||
$config->search->fields->execution->editedDate = 'lastEditedDate';
|
||||
|
||||
$config->search->fields->issue = new stdclass();
|
||||
$config->search->fields->issue->id = 'id';
|
||||
$config->search->fields->issue->title = 'title';
|
||||
$config->search->fields->issue->content = 'desc';
|
||||
$config->search->fields->issue->addedDate = 'createdDate';
|
||||
$config->search->fields->issue->editedDate = 'editedDate';
|
||||
|
||||
$config->search->fields->risk = new stdclass();
|
||||
$config->search->fields->risk->id = 'id';
|
||||
$config->search->fields->risk->title = 'name';
|
||||
$config->search->fields->risk->content = 'remedy,prevention';
|
||||
$config->search->fields->risk->addedDate = 'createdDate';
|
||||
$config->search->fields->risk->editedDate = 'editedDate';
|
||||
|
||||
/* Set the recPerPage of search. */
|
||||
$config->search->recPerPage = 10;
|
||||
|
||||
|
||||
@@ -89,8 +89,6 @@ $lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
$lang->search->modules['issue'] = 'Issue';
|
||||
$lang->search->modules['risk'] = 'Risk';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
|
||||
@@ -89,8 +89,6 @@ $lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
$lang->search->modules['issue'] = 'Issue';
|
||||
$lang->search->modules['risk'] = 'Risk';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
|
||||
@@ -89,8 +89,6 @@ $lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
$lang->search->modules['issue'] = 'Issue';
|
||||
$lang->search->modules['risk'] = 'Risk';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
|
||||
@@ -89,8 +89,6 @@ $lang->search->modules['program'] = 'Program';
|
||||
$lang->search->modules['project'] = 'Project';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['story'] = 'Story';
|
||||
$lang->search->modules['issue'] = 'Issue';
|
||||
$lang->search->modules['risk'] = 'Risk';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
|
||||
@@ -89,8 +89,6 @@ $lang->search->modules['program'] = '项目集';
|
||||
$lang->search->modules['project'] = '项目';
|
||||
$lang->search->modules['execution'] = $lang->execution->common;
|
||||
$lang->search->modules['story'] = '需求';
|
||||
$lang->search->modules['issue'] = '问题';
|
||||
$lang->search->modules['risk'] = '风险';
|
||||
|
||||
$lang->search->objectTypeList['story'] = $lang->SRCommon;
|
||||
$lang->search->objectTypeList['requirement'] = $lang->URCommon;
|
||||
|
||||
+26
-10
@@ -191,8 +191,11 @@ class todo extends control
|
||||
$bugs = $this->bug->getUserBugPairs($account);
|
||||
$tasks = $this->task->getUserTaskPairs($account, $status);
|
||||
$storys = $this->loadModel('story')->getUserStoryPairs($account);
|
||||
$issues = $this->loadModel('issue')->getUserIssuePairs($account);
|
||||
$risks = $this->loadModel('risk')->getUserRiskPairs($account);
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$issues = $this->loadModel('issue')->getUserIssuePairs($account);
|
||||
$risks = $this->loadModel('risk')->getUserRiskPairs($account);
|
||||
}
|
||||
$testtasks = $this->loadModel('testtask')->getUserTestTaskPairs($account);
|
||||
|
||||
$reviews = array();
|
||||
@@ -213,8 +216,11 @@ class todo extends control
|
||||
if($todo->type == 'story') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_STORY)->fetch('title');
|
||||
if($todo->type == 'task') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_TASK)->fetch('name');
|
||||
if($todo->type == 'bug') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_BUG)->fetch('title');
|
||||
if($todo->type == 'issue') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_ISSUE)->fetch('title');
|
||||
if($todo->type == 'risk') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_RISK)->fetch('name');
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
if($todo->type == 'issue') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_ISSUE)->fetch('title');
|
||||
if($todo->type == 'risk') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_RISK)->fetch('name');
|
||||
}
|
||||
if($todo->type == 'review') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_REVIEW)->fetch('title');
|
||||
if($todo->type == 'testtask') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_TESTTASK)->fetch('name');
|
||||
$todo->begin = $todo->begin ? str_replace(':', '', $todo->begin) : '2400';
|
||||
@@ -242,8 +248,11 @@ class todo extends control
|
||||
$this->view->bugs = $bugs;
|
||||
$this->view->tasks = $tasks;
|
||||
$this->view->storys = $storys;
|
||||
$this->view->issues = $issues;
|
||||
$this->view->risks = $risks;
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$this->view->issues = $issues;
|
||||
$this->view->risks = $risks;
|
||||
}
|
||||
$this->view->reviews = $reviews;
|
||||
$this->view->testtasks = $testtasks;
|
||||
$this->view->editedTodos = $editedTodos;
|
||||
@@ -565,8 +574,11 @@ class todo extends control
|
||||
$bugs = $this->loadModel('bug')->getUserBugPairs($account);
|
||||
$stories = $this->loadModel('story')->getUserStoryPairs($account, 100, 'story');
|
||||
$tasks = $this->loadModel('task')->getUserTaskPairs($account);
|
||||
$issues = $this->loadModel('issue')->getUserIssuePairs($account);
|
||||
$risks = $this->loadModel('risk')->getUserRiskPairs($account);
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$issues = $this->loadModel('issue')->getUserIssuePairs($account);
|
||||
$risks = $this->loadModel('risk')->getUserRiskPairs($account);
|
||||
}
|
||||
$testTasks = $this->loadModel('testtask')->getUserTesttaskPairs($account);
|
||||
if(isset($this->config->qcVersion)) $reviews = $this->loadModel('review')->getUserReviewPairs($account, 0, 'wait');
|
||||
$times = date::buildTimeList($this->config->todo->times->begin, $this->config->todo->times->end, $this->config->todo->times->delta);
|
||||
@@ -582,8 +594,12 @@ class todo extends control
|
||||
if($type == 'bug') $todo->name = isset($bugs[$todo->idvalue]) ? $bugs[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
if($type == 'story') $todo->name = isset($stories[$todo->idvalue]) ? $stories[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
if($type == 'task') $todo->name = isset($tasks[$todo->idvalue]) ? $tasks[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
if($type == 'issue') $todo->name = isset($issues[$todo->idvalue]) ? $issues[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
if($type == 'risk') $todo->name = isset($risks[$todo->idvalue]) ? $risks[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
if($type == 'issue') $todo->name = isset($issues[$todo->idvalue]) ? $issues[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
if($type == 'risk') $todo->name = isset($risks[$todo->idvalue]) ? $risks[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
}
|
||||
if($type == 'testtask') $todo->name = isset($testTasks[$todo->idvalue]) ? $testTasks[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
if($type == 'review' && isset($this->config->qcVersion)) $todo->name = isset($reviews[$todo->idvalue]) ? $reviews[$todo->idvalue] . "(#$todo->idvalue)" : '';
|
||||
|
||||
|
||||
@@ -97,8 +97,6 @@ $lang->todo->typeList['cycle'] = 'Wiederkehrend';
|
||||
$lang->todo->typeList['bug'] = 'Bug';
|
||||
$lang->todo->typeList['task'] = 'Aufgabe';
|
||||
$lang->todo->typeList['story'] = 'Story';
|
||||
$lang->todo->typeList['issue'] = 'Issue';
|
||||
$lang->todo->typeList['risk'] = 'Risk';
|
||||
$lang->todo->typeList['review'] = 'Review';
|
||||
$lang->todo->typeList['testtask'] = 'Testtask';
|
||||
|
||||
|
||||
@@ -97,8 +97,6 @@ $lang->todo->typeList['cycle'] = 'Recur';
|
||||
$lang->todo->typeList['bug'] = 'Bug';
|
||||
$lang->todo->typeList['task'] = 'Task';
|
||||
$lang->todo->typeList['story'] = 'Story';
|
||||
$lang->todo->typeList['issue'] = 'Issue';
|
||||
$lang->todo->typeList['risk'] = 'Risk';
|
||||
$lang->todo->typeList['review'] = 'Review';
|
||||
$lang->todo->typeList['testtask'] = 'Testtask';
|
||||
|
||||
|
||||
@@ -97,8 +97,6 @@ $lang->todo->typeList['cycle'] = 'Récur';
|
||||
$lang->todo->typeList['bug'] = 'Bug';
|
||||
$lang->todo->typeList['task'] = 'Tâche';
|
||||
$lang->todo->typeList['story'] = 'Story';
|
||||
$lang->todo->typeList['issue'] = 'Issue';
|
||||
$lang->todo->typeList['risk'] = 'Risk';
|
||||
$lang->todo->typeList['review'] = 'Review';
|
||||
$lang->todo->typeList['testtask'] = 'Testtask';
|
||||
|
||||
|
||||
@@ -97,8 +97,6 @@ $lang->todo->typeList['cycle'] = 'Lặp lại';
|
||||
$lang->todo->typeList['bug'] = 'Bug';
|
||||
$lang->todo->typeList['task'] = 'Nhiệm vụ';
|
||||
$lang->todo->typeList['story'] = 'Câu chuyện';
|
||||
$lang->todo->typeList['issue'] = 'Issue';
|
||||
$lang->todo->typeList['risk'] = 'Risk';
|
||||
$lang->todo->typeList['review'] = 'Review';
|
||||
$lang->todo->typeList['testtask'] = 'Testtask';
|
||||
|
||||
|
||||
@@ -97,8 +97,6 @@ $lang->todo->typeList['cycle'] = '周期';
|
||||
$lang->todo->typeList['bug'] = 'Bug';
|
||||
$lang->todo->typeList['task'] = '任务';
|
||||
$lang->todo->typeList['story'] = $lang->SRCommon;
|
||||
$lang->todo->typeList['issue'] = '问题';
|
||||
$lang->todo->typeList['risk'] = '风险';
|
||||
$lang->todo->typeList['review'] = '评审';
|
||||
$lang->todo->typeList['testtask'] = '测试单';
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
$active = $methodName == 'execution' ? ' btn-active-text' : '';
|
||||
common::printLink('user', 'execution', "userID={$user->id}", $label, '', "class='btn btn-link $active'");
|
||||
|
||||
if($this->config->systemMode == 'new')
|
||||
if(isset($this->config->maxVersion))
|
||||
{
|
||||
$label = "<span class='text'>{$lang->user->issue}</span>";
|
||||
$active = ($methodName == 'issue' or $methodName == 'issue')? ' btn-active-text' : '';
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* The risk view file of dashboard module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Yuchun Li <liyuchun@cnezsoft.com>
|
||||
* @package dashboard
|
||||
* @version $Id: risk.html.php 4771 2021-01-13 14:18:02Z $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<?php include '../../common/view/tablesorter.html.php';?>
|
||||
<?php include './featurebar.html.php';?>
|
||||
<style>
|
||||
.pri-low {color: #000000;}
|
||||
.pri-middle {color: #FF9900;}
|
||||
.pri-high {color: #E53333;}
|
||||
</style>
|
||||
<div id='mainContent'>
|
||||
<nav id='contentNav'>
|
||||
<ul class='nav nav-default'>
|
||||
<?php
|
||||
$that = zget($lang->user->thirdPerson, $user->gender);
|
||||
$active = $type == 'assignedTo' ? 'active' : '';
|
||||
echo "<li class='$active'>" . html::a(inlink('risk', "userID={$user->id}&type=assignedTo"), sprintf($lang->user->assignedTo, $that)) . "</li>";
|
||||
|
||||
$active = $type == 'createdBy' ? 'active' : '';
|
||||
echo "<li class='$active'>" . html::a(inlink('risk', "userID={$user->id}&type=createdBy"), sprintf($lang->user->openedBy, $that)) . "</li>";
|
||||
|
||||
$active = $type == 'resolvedBy' ? 'active' : '';
|
||||
echo "<li class='$active'>" . html::a(inlink('risk', "userID={$user->id}&type=resolvedBy"), sprintf($lang->user->resolvedBy, $that)) . "</li>";
|
||||
|
||||
$active = $type == 'closedBy' ? 'active' : '';
|
||||
echo "<li class='$active'>" . html::a(inlink('risk', "userID={$user->id}&type=closedBy"), sprintf($lang->user->closedBy, $that)) . "</li>";
|
||||
?>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class='main-table'>
|
||||
<table class="table has-sort-head table-fixed" id='risktable'>
|
||||
<?php $vars = "userID={$user->id}&type=$type&orderBy=%s&recTotal=$pager->recTotal&recPerPage=$pager->recPerPage&pageID=$pager->pageID"; ?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='text-left w-60px'><?php common::printOrderLink('id', $orderBy, $vars, $lang->risk->id);?></th>
|
||||
<th class='text-left'><?php common::printOrderLink('name', $orderBy, $vars, $lang->risk->name);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('strategy', $orderBy, $vars, $lang->risk->strategy);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->risk->status);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('identifiedDate', $orderBy, $vars, $lang->risk->identifiedDate);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('rate', $orderBy, $vars, $lang->risk->rate);?></th>
|
||||
<th class='w-80px'><?php common::printOrderLink('pri', $orderBy, $vars, $lang->risk->pri);?></th>
|
||||
<th class='w-120px'><?php common::printOrderLink('category', $orderBy, $vars, $lang->risk->category);?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($risks as $risk):?>
|
||||
<tr>
|
||||
<td><?php echo $risk->id;?></td>
|
||||
<td><?php echo html::a($this->createLink('risk', 'view', "riskID=$risk->id"), $risk->name, '', "data-group='project'");?></td>
|
||||
<td><?php echo zget($lang->risk->strategyList, $risk->strategy);?></td>
|
||||
<td><?php echo zget($lang->risk->statusList, $risk->status);?></td>
|
||||
<td><?php echo $risk->identifiedDate == '0000-00-00' ? '' : $risk->identifiedDate;?></td>
|
||||
<td><?php echo $risk->rate;?></td>
|
||||
<?php
|
||||
$priColor = 'pri-low';
|
||||
if($risk->pri == 'middle') $priColor = 'pri-middle';
|
||||
if($risk->pri == 'high') $priColor = 'pri-high';
|
||||
?>
|
||||
<td><?php echo "<span class='$priColor'>" . zget($lang->risk->priList, $risk->pri) . "</span>";?></td>
|
||||
<td><?php echo zget($lang->risk->categoryList, $risk->category);?></td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<?php if($risks):?>
|
||||
<div class="table-footer"><?php $pager->show('right', 'pagerjs');?></div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
Reference in New Issue
Block a user