* merge from 15.0.beta3.
This commit is contained in:
+1
-1
@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
|
||||
if(!function_exists('getWebRoot')){function getWebRoot(){}}
|
||||
|
||||
/* 基本设置。Basic settings. */
|
||||
$config->version = '15.0'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
|
||||
$config->version = '15.0.1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
|
||||
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
|
||||
$config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time.
|
||||
$config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php.
|
||||
|
||||
@@ -219,6 +219,7 @@ $config->objectTables['entry'] = TABLE_ENTRY;
|
||||
$config->objectTables['webhook'] = TABLE_WEBHOOK;
|
||||
$config->objectTables['stakeholder'] = TABLE_STAKEHOLDER;
|
||||
$config->objectTables['job'] = TABLE_JOB;
|
||||
$config->objectTables['team'] = TABLE_TEAM;
|
||||
|
||||
/* Program privs.*/
|
||||
$config->programPriv = new stdclass();
|
||||
|
||||
+7
-7
@@ -585,13 +585,13 @@ INSERT INTO `zt_searchindex` (`id`, `objectType`, `objectID`, `title`, `content`
|
||||
(40, 'task', 16, ' 21806 21518 26381 21153 30340 35774 35745', ' 21806 21518 26381 21153 30340 35774 35745', '2021-04-28 13:16:15', '2021-04-28 13:16:15'),
|
||||
(41, 'task', 17, ' 21806 21518 26381 21153 30340 24320 21457', ' 21806 21518 26381 21153 30340 24320 21457', '2021-04-28 13:16:15', '2021-04-28 13:16:15');
|
||||
INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `source`, `sourceNote`, `fromBug`, `title`, `keywords`, `type`, `pri`, `estimate`, `status`, `subStatus`, `color`, `stage`, `stagedBy`, `mailto`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `lastEditedBy`, `lastEditedDate`, `reviewedBy`, `reviewedDate`, `closedBy`, `closedDate`, `closedReason`, `toBug`, `childStories`, `linkStories`, `duplicateStory`, `version`, `URChanged`, `deleted`) VALUES
|
||||
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
|
||||
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
|
||||
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
|
||||
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
|
||||
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`) VALUES
|
||||
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。<br />', '开发并通过验收<br />'),
|
||||
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。<br />', ''),
|
||||
|
||||
+7
-7
@@ -585,13 +585,13 @@ INSERT INTO `zt_searchindex` (`id`, `objectType`, `objectID`, `title`, `content`
|
||||
(40, 'task', 16, ' 21806 21518 26381 21153 30340 35774 35745', ' 21806 21518 26381 21153 30340 35774 35745', '2021-04-28 13:16:15', '2021-04-28 13:16:15'),
|
||||
(41, 'task', 17, ' 21806 21518 26381 21153 30340 24320 21457', ' 21806 21518 26381 21153 30340 24320 21457', '2021-04-28 13:16:15', '2021-04-28 13:16:15');
|
||||
INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `source`, `sourceNote`, `fromBug`, `title`, `keywords`, `type`, `pri`, `estimate`, `status`, `subStatus`, `color`, `stage`, `stagedBy`, `mailto`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `lastEditedBy`, `lastEditedDate`, `reviewedBy`, `reviewedDate`, `closedBy`, `closedDate`, `closedReason`, `toBug`, `childStories`, `linkStories`, `duplicateStory`, `version`, `URChanged`, `deleted`) VALUES
|
||||
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
|
||||
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
|
||||
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
|
||||
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
|
||||
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'draft', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
|
||||
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`) VALUES
|
||||
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。<br />', '开发并通过验收<br />'),
|
||||
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。<br />', ''),
|
||||
|
||||
@@ -3,3 +3,6 @@ ALTER TABLE `zt_webhook` CHANGE `executions` `executions` text NOT NULL;
|
||||
ALTER TABLE `zt_projectcase` ADD `count` mediumint(8) unsigned NOT NULL DEFAULT '1' AFTER `case`;
|
||||
|
||||
ALTER TABLE `zt_repo` ADD `extra` char(30) COLLATE 'utf8_general_ci' NOT NULL AFTER `desc`;
|
||||
|
||||
UPDATE `zt_config` set `value`='program-browse' where `key`='programLink' and `value`='program-pgmbrowse';
|
||||
UPDATE `zt_config` set `value`='project-browse' where `key`='projectLink' and `value`='program-prjbrowse';
|
||||
|
||||
@@ -1 +1,6 @@
|
||||
ALTER TABLE `zt_project` CHANGE `lifetime` `lifetime` char(30) NOT NULL DEFAULT '';
|
||||
ALTER TABLE `zt_story` ADD `category` varchar(30) NOT NULL DEFAULT 'feature' AFTER `type`;
|
||||
ALTER TABLE `zt_testtask` ADD `type` varchar(255) NOT NULL DEFAULT '' AFTER `build`;
|
||||
ALTER TABLE `zt_testtask` ADD `testreport` mediumint(8) unsigned NOT NULL AFTER `status`;
|
||||
|
||||
UPDATE zt_project SET lifetime = '' WHERE lifetime = 'sprint';
|
||||
|
||||
+140
-139
@@ -1,26 +1,3 @@
|
||||
-- DROP TABLE IF EXISTS `zt_searchindex`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_searchindex` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`objectType` char(20) NOT NULL,
|
||||
`objectID` mediumint(9) NOT NULL,
|
||||
`title` text NOT NULL,
|
||||
`content` text NOT NULL,
|
||||
`addedDate` datetime NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `object` (`objectType`,`objectID`),
|
||||
KEY `addedDate` (`addedDate`),
|
||||
FULLTEXT KEY `content` (`content`),
|
||||
FULLTEXT KEY `title` (`title`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_searchdict`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_searchdict` (
|
||||
`key` smallint(5) unsigned NOT NULL,
|
||||
`value` char(3) NOT NULL,
|
||||
PRIMARY KEY (`key`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_acl`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_acl` (
|
||||
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||
@@ -306,18 +283,6 @@ CREATE TABLE IF NOT EXISTS `zt_cron` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `lastTime` (`lastTime`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_lang`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_lang` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
`lang` varchar(30) NOT NULL,
|
||||
`module` varchar(30) NOT NULL,
|
||||
`section` varchar(30) NOT NULL,
|
||||
`key` varchar(60) NOT NULL,
|
||||
`value` text NOT NULL,
|
||||
`system` enum('0','1') NOT NULL default '1',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `lang` (`lang`,`module`,`section`,`key`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_dept`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_dept` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@@ -409,6 +374,35 @@ CREATE TABLE IF NOT EXISTS `zt_effort` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user` (`user`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_entry`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_entry` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`account` varchar(30) NOT NULL DEFAULT '',
|
||||
`code` varchar(20) NOT NULL,
|
||||
`key` varchar(32) NOT NULL,
|
||||
`freePasswd` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`ip` varchar(100) NOT NULL,
|
||||
`desc` text NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`calledTime` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`deleted` enum('0', '1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY `id` (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_expect`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_expect` (
|
||||
`id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
`userID` mediumint(8) NOT NULL,
|
||||
`project` mediumint(8) NOT NULL DEFAULT 0,
|
||||
`expect` text NOT NULL,
|
||||
`progress` text NOT NULL,
|
||||
`createdBy` char(30) NOT NULL,
|
||||
`createdDate` date NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_extension`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_extension` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@@ -517,6 +511,33 @@ CREATE TABLE IF NOT EXISTS `zt_job` (
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_lang`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_lang` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
`lang` varchar(30) NOT NULL,
|
||||
`module` varchar(30) NOT NULL,
|
||||
`section` varchar(30) NOT NULL,
|
||||
`key` varchar(60) NOT NULL,
|
||||
`value` text NOT NULL,
|
||||
`system` enum('0','1') NOT NULL default '1',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `lang` (`lang`,`module`,`section`,`key`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_log`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_log` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`objectType` varchar(30) NOT NULL,
|
||||
`objectID` mediumint(8) unsigned NOT NULL,
|
||||
`action` mediumint(8) unsigned NOT NULL,
|
||||
`date` datetime NOT NULL,
|
||||
`url` varchar(255) NOT NULL,
|
||||
`contentType` varchar(30) NOT NULL,
|
||||
`data` text NOT NULL,
|
||||
`result` text NOT NULL,
|
||||
PRIMARY KEY `id` (`id`),
|
||||
KEY `objectType` (`objectType`),
|
||||
KEY `obejctID` (`objectID`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_module`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_module` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@@ -676,6 +697,24 @@ CREATE TABLE IF NOT EXISTS `zt_project` (
|
||||
KEY `acl` (`acl`),
|
||||
KEY `order` (`order`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectcase`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_projectcase` (
|
||||
`project` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`product` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`case` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`count` mediumint(8) unsigned NOT NULL DEFAULT '1',
|
||||
`version` smallint(6) NOT NULL DEFAULT '1',
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`case`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectproduct`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_projectproduct` (
|
||||
`project` mediumint(8) unsigned NOT NULL,
|
||||
`product` mediumint(8) unsigned NOT NULL,
|
||||
`branch` mediumint(8) unsigned NOT NULL,
|
||||
`plan` mediumint(8) unsigned NOT NULL,
|
||||
PRIMARY KEY (`project`,`product`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectspec`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_projectspec` (
|
||||
`project` mediumint(8) NOT NULL,
|
||||
@@ -686,14 +725,6 @@ CREATE TABLE IF NOT EXISTS `zt_projectspec` (
|
||||
`end` date NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`version`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectproduct`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_projectproduct` (
|
||||
`project` mediumint(8) unsigned NOT NULL,
|
||||
`product` mediumint(8) unsigned NOT NULL,
|
||||
`branch` mediumint(8) unsigned NOT NULL,
|
||||
`plan` mediumint(8) unsigned NOT NULL,
|
||||
PRIMARY KEY (`project`,`product`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectstory`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_projectstory` (
|
||||
`project` mediumint(8) unsigned NOT NULL default '0',
|
||||
@@ -703,16 +734,23 @@ CREATE TABLE IF NOT EXISTS `zt_projectstory` (
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`story`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_projectcase`;
|
||||
CREATE TABLE `zt_projectcase` (
|
||||
`project` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`product` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`case` mediumint(8) unsigned NOT NULL DEFAULT '0',
|
||||
`count` mediumint(8) unsigned NOT NULL DEFAULT '1',
|
||||
`version` smallint(6) NOT NULL DEFAULT '1',
|
||||
`order` smallint(6) unsigned NOT NULL,
|
||||
UNIQUE KEY `project` (`project`,`case`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_relation`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_relation` (
|
||||
`id` int(8) NOT NULL AUTO_INCREMENT,
|
||||
`project` mediumint(8) NOT NULL,
|
||||
`product` mediumint(8) NOT NULL,
|
||||
`execution` mediumint(8) NOT NULL,
|
||||
`AType` char(30) NOT NULL,
|
||||
`AID` mediumint(8) NOT NULL,
|
||||
`AVersion` char(30) NOT NULL,
|
||||
`relation` char(30) NOT NULL,
|
||||
`BType` char(30) NOT NULL,
|
||||
`BID` mediumint(8) NOT NULL,
|
||||
`BVersion` char(30) NOT NULL,
|
||||
`extra` char(30) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `relation` (`relation`,`AType`,`BType`, `AID`, `BID`)
|
||||
) ENGINE='MyISAM' DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_release`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_release` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@@ -793,6 +831,43 @@ CREATE TABLE IF NOT EXISTS `zt_repohistory` (
|
||||
KEY `repo` (`repo`),
|
||||
KEY `revision` (`revision`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_score`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_score` (
|
||||
`id` bigint(12) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`account` varchar(30) NOT NULL,
|
||||
`module` varchar(30) NOT NULL DEFAULT '',
|
||||
`method` varchar(30) NOT NULL,
|
||||
`desc` varchar(250) NOT NULL DEFAULT '',
|
||||
`before` int(11) NOT NULL DEFAULT '0',
|
||||
`score` int(11) NOT NULL DEFAULT '0',
|
||||
`after` int(11) NOT NULL DEFAULT '0',
|
||||
`time` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `account` (`account`),
|
||||
KEY `model` (`module`),
|
||||
KEY `method` (`method`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_searchdict`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_searchdict` (
|
||||
`key` smallint(5) unsigned NOT NULL,
|
||||
`value` char(3) NOT NULL,
|
||||
PRIMARY KEY (`key`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_searchindex`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_searchindex` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`objectType` char(20) NOT NULL,
|
||||
`objectID` mediumint(9) NOT NULL,
|
||||
`title` text NOT NULL,
|
||||
`content` text NOT NULL,
|
||||
`addedDate` datetime NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `object` (`objectType`,`objectID`),
|
||||
KEY `addedDate` (`addedDate`),
|
||||
FULLTEXT KEY `content` (`content`),
|
||||
FULLTEXT KEY `title` (`title`)
|
||||
) 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,
|
||||
@@ -822,6 +897,7 @@ CREATE TABLE IF NOT EXISTS `zt_story` (
|
||||
`title` varchar(255) NOT NULL,
|
||||
`keywords` varchar(255) NOT NULL,
|
||||
`type` varchar(30) NOT NULL default 'story',
|
||||
`category` varchar(30) NOT NULL default 'feature',
|
||||
`pri` tinyint(3) unsigned NOT NULL default '3',
|
||||
`estimate` float unsigned NOT NULL,
|
||||
`status` enum('','changed','active','draft','closed') NOT NULL default '',
|
||||
@@ -930,15 +1006,6 @@ CREATE TABLE IF NOT EXISTS `zt_task` (
|
||||
KEY `parent` (`parent`),
|
||||
KEY `assignedTo` (`assignedTo`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_taskspec`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_taskspec` (
|
||||
`task` mediumint(8) NOT NULL,
|
||||
`version` smallint(6) NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`estStarted` date NOT NULL,
|
||||
`deadline` date NOT NULL,
|
||||
UNIQUE KEY `task` (`task`,`version`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_taskestimate`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_taskestimate` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@@ -951,6 +1018,15 @@ CREATE TABLE IF NOT EXISTS `zt_taskestimate` (
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `task` (`task`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_taskspec`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_taskspec` (
|
||||
`task` mediumint(8) NOT NULL,
|
||||
`version` smallint(6) NOT NULL,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`estStarted` date NOT NULL,
|
||||
`deadline` date NOT NULL,
|
||||
UNIQUE KEY `task` (`task`,`version`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_team`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_team` (
|
||||
`id` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@@ -1050,6 +1126,7 @@ CREATE TABLE IF NOT EXISTS `zt_testtask` (
|
||||
`name` char(90) NOT NULL,
|
||||
`execution` mediumint(8) unsigned NOT NULL default '0',
|
||||
`build` char(30) NOT NULL,
|
||||
`type` varchar(255) NOT NULL DEFAULT '',
|
||||
`owner` varchar(30) NOT NULL,
|
||||
`pri` tinyint(3) unsigned NOT NULL default '0',
|
||||
`begin` date NOT NULL,
|
||||
@@ -1058,6 +1135,7 @@ CREATE TABLE IF NOT EXISTS `zt_testtask` (
|
||||
`desc` text NOT NULL,
|
||||
`report` text NOT NULL,
|
||||
`status` enum('blocked','doing','wait','done') NOT NULL DEFAULT 'wait',
|
||||
`testreport` mediumint(8) unsigned NOT NULL,
|
||||
`auto` varchar(10) NOT NULL DEFAULT 'no',
|
||||
`subStatus` varchar(30) NOT NULL default '',
|
||||
`deleted` enum('0','1') NOT NULL default '0',
|
||||
@@ -1190,35 +1268,6 @@ CREATE TABLE IF NOT EXISTS `zt_userview` (
|
||||
`sprints` mediumtext NOT NULL,
|
||||
UNIQUE KEY `account` (`account`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_entry`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_entry` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL,
|
||||
`account` varchar(30) NOT NULL DEFAULT '',
|
||||
`code` varchar(20) NOT NULL,
|
||||
`key` varchar(32) NOT NULL,
|
||||
`freePasswd` enum('0','1') NOT NULL DEFAULT '0',
|
||||
`ip` varchar(100) NOT NULL,
|
||||
`desc` text NOT NULL,
|
||||
`createdBy` varchar(30) NOT NULL,
|
||||
`createdDate` datetime NOT NULL,
|
||||
`calledTime` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`editedBy` varchar(30) NOT NULL,
|
||||
`editedDate` datetime NOT NULL,
|
||||
`deleted` enum('0', '1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY `id` (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_expect`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_expect` (
|
||||
`id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
`userID` mediumint(8) NOT NULL,
|
||||
`project` mediumint(8) NOT NULL DEFAULT 0,
|
||||
`expect` text NOT NULL,
|
||||
`progress` text NOT NULL,
|
||||
`createdBy` char(30) NOT NULL,
|
||||
`createdDate` date NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL DEFAULT '0'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_webhook`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_webhook` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
@@ -1241,54 +1290,6 @@ CREATE TABLE IF NOT EXISTS `zt_webhook` (
|
||||
`deleted` enum('0', '1') NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_log`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_log` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`objectType` varchar(30) NOT NULL,
|
||||
`objectID` mediumint(8) unsigned NOT NULL,
|
||||
`action` mediumint(8) unsigned NOT NULL,
|
||||
`date` datetime NOT NULL,
|
||||
`url` varchar(255) NOT NULL,
|
||||
`contentType` varchar(30) NOT NULL,
|
||||
`data` text NOT NULL,
|
||||
`result` text NOT NULL,
|
||||
PRIMARY KEY `id` (`id`),
|
||||
KEY `objectType` (`objectType`),
|
||||
KEY `obejctID` (`objectID`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
-- DROP TABLE IF EXISTS `zt_score`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_score` (
|
||||
`id` bigint(12) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`account` varchar(30) NOT NULL,
|
||||
`module` varchar(30) NOT NULL DEFAULT '',
|
||||
`method` varchar(30) NOT NULL,
|
||||
`desc` varchar(250) NOT NULL DEFAULT '',
|
||||
`before` int(11) NOT NULL DEFAULT '0',
|
||||
`score` int(11) NOT NULL DEFAULT '0',
|
||||
`after` int(11) NOT NULL DEFAULT '0',
|
||||
`time` datetime NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `account` (`account`),
|
||||
KEY `model` (`module`),
|
||||
KEY `method` (`method`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
-- DROP TABLE IF EXISTS `zt_relation`;
|
||||
CREATE TABLE IF NOT EXISTS `zt_relation` (
|
||||
`id` int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
`project` mediumint(8) NOT NULL,
|
||||
`product` mediumint(8) NOT NULL,
|
||||
`execution` mediumint(8) NOT NULL,
|
||||
`AType` char(30) NOT NULL,
|
||||
`AID` mediumint(8) NOT NULL,
|
||||
`AVersion` char(30) NOT NULL,
|
||||
`relation` char(30) NOT NULL,
|
||||
`BType` char(30) NOT NULL,
|
||||
`BID` mediumint(8) NOT NULL,
|
||||
`BVersion` char(30) NOT NULL,
|
||||
`extra` char(30) NOT NULL,
|
||||
UNIQUE KEY `relation` (`relation`,`AType`,`BType`, `AID`, `BID`)
|
||||
) ENGINE='MyISAM' DEFAULT CHARSET=utf8;
|
||||
|
||||
INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type`, `buildin`, `status`, `lastTime`) VALUES
|
||||
('*', '*', '*', '*', '*', '', '监控定时任务', 'zentao', 1, 'normal', '0000-00-00 00:00:00'),
|
||||
|
||||
@@ -292,7 +292,7 @@ class baseHelper
|
||||
$oversize = strlen($password) % 8;
|
||||
if($oversize != 0) $password .= str_repeat("\0", 8 - $oversize);
|
||||
|
||||
$encrypted = @openssl_encrypt($password, 'DES-CBC', $secret, OPENSSL_ZERO_PADDING);
|
||||
$encrypted = @openssl_encrypt($password, 'DES-CBC', substr($secret, 0, 8), OPENSSL_ZERO_PADDING);
|
||||
}
|
||||
}
|
||||
if(empty($encrypted)) $encrypted = $password;
|
||||
@@ -318,7 +318,7 @@ class baseHelper
|
||||
$secret = $config->encryptSecret;
|
||||
if(function_exists('mcrypt_decrypt'))
|
||||
{
|
||||
$decryptedPassword = @mcrypt_decrypt(MCRYPT_DES, $secret, base64_decode($password), MCRYPT_MODE_CBC);
|
||||
$decryptedPassword = @mcrypt_decrypt(MCRYPT_DES, substr($secret, 0, 8), base64_decode($password), MCRYPT_MODE_CBC);
|
||||
}
|
||||
elseif(function_exists('openssl_decrypt'))
|
||||
{
|
||||
|
||||
@@ -2276,6 +2276,9 @@ class baseRouter
|
||||
extract($trace[1]);
|
||||
$log .= ", last called by $file on line $line through function $function.\n";
|
||||
|
||||
/* Change absolute path to relative path. */
|
||||
$log = str_replace($this->basePath, '', $log);
|
||||
|
||||
/* 触发错误(Trigger the error) */
|
||||
trigger_error($log, $exit ? E_USER_ERROR : E_USER_WARNING);
|
||||
}
|
||||
|
||||
@@ -813,6 +813,10 @@ class baseJS
|
||||
return json_encode($output);
|
||||
}
|
||||
|
||||
/* Convert ' to \'. */
|
||||
$message = str_replace("\\'", "'", $message);
|
||||
$message = str_replace("'", "\\'", $message);
|
||||
|
||||
return self::start($full) . "alert('" . $message . "')" . self::end() . self::resetForm();
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ class gitlab
|
||||
$param->path = ltrim($path, '/');
|
||||
$param->ref = $revision;
|
||||
$param->recursive = 0;
|
||||
if(!empty($this->branch)) $param->ref = $this->branch;
|
||||
|
||||
$list = $this->fetch($api, $param);
|
||||
if(empty($list)) return array();
|
||||
@@ -257,6 +258,7 @@ class gitlab
|
||||
|
||||
$api = "compare";
|
||||
$params = array('from' => $fromRevision, 'to' => $toRevision, 'straight' => 1);
|
||||
if($toRevision == 'HEAD' and $this->branch) $params['to'] = $this->branch;
|
||||
$results = $this->fetch($api, $params);
|
||||
foreach($results->diffs as $key => $diff)
|
||||
{
|
||||
@@ -288,6 +290,7 @@ class gitlab
|
||||
public function cat($entry, $revision = 'HEAD')
|
||||
{
|
||||
if(!scm::checkRevision($revision)) return false;
|
||||
if($revision == 'HEAD' and $this->branch) $revision = $this->branch;
|
||||
$file = $this->files($entry, $revision);
|
||||
return base64_decode($file->content);
|
||||
}
|
||||
@@ -309,6 +312,7 @@ class gitlab
|
||||
$info->path = $entry;
|
||||
$info->revision = $revision;
|
||||
$info->root = '';
|
||||
if($revision == 'HEAD' and $this->branch) $info->revision = $this->branch;
|
||||
|
||||
if($entry)
|
||||
{
|
||||
@@ -494,13 +498,13 @@ class gitlab
|
||||
if(!scm::checkRevision($version)) return array();
|
||||
$api = "commits";
|
||||
|
||||
$count = 500;
|
||||
if(empty($count)) $count = 100;
|
||||
$params = array();
|
||||
$params['ref_name'] = $branch;
|
||||
$params['per_page'] = $count;
|
||||
$params['all'] = 1;
|
||||
|
||||
if($version)
|
||||
if($version and $version != 'HEAD')
|
||||
{
|
||||
$lastCommit = $this->getSingleCommit($version);
|
||||
if(!isset($lastCommit->committed_date)) return array('commits' => array(), 'files' => array());
|
||||
@@ -556,19 +560,23 @@ class gitlab
|
||||
$param->path = urldecode($path);
|
||||
$param->ref_name = $this->branch;
|
||||
|
||||
if($fromRevision) $fromRevision = $this->getSingleCommit($fromRevision);
|
||||
if($toRevision) $toRevision = $this->getSingleCommit($toRevision);
|
||||
$fromRevision = ($fromRevision and $fromRevision != 'HEAD') ? $this->getSingleCommit($fromRevision) : '';
|
||||
$toRevision = ($toRevision and $toRevision != 'HEAD') ? $this->getSingleCommit($toRevision) : '';
|
||||
|
||||
if(!$fromRevision) $since = '';
|
||||
if(!$toRevision) $until = '';
|
||||
$since = '';
|
||||
$until = '';
|
||||
if($fromRevision and $toRevision)
|
||||
{
|
||||
$since = min($fromRevision->committed_date, $toRevision->committed_date);
|
||||
$until = max($fromRevision->committed_date, $toRevision->committed_date);
|
||||
}
|
||||
elseif($fromRevision)
|
||||
{
|
||||
$since = $fromRevision->committed_date;
|
||||
}
|
||||
|
||||
$param->since = $since;
|
||||
$param->until = $until;
|
||||
if($since) $param->since = $since;
|
||||
if($until) $param->until = $until;
|
||||
|
||||
return $this->fetch($api, $param);
|
||||
}
|
||||
|
||||
@@ -8,22 +8,22 @@
|
||||
* @package spliter
|
||||
* @version $Id$
|
||||
* @link http://www.chanzhi.org
|
||||
* @see http://www.cnblogs.com/chenwenbiao/archive/2011/08/11/2134503.html
|
||||
* @see http://www.cnblogs.com/chenwenbiao/archive/2011/08/11/2134503.html
|
||||
* @see http://stackoverflow.com/questions/9361303/can-i-get-the-unicode-value-of-a-character-or-vise-versa-with-php
|
||||
*/
|
||||
class spliter
|
||||
{
|
||||
/**
|
||||
* Split a utf-8 string into words, computing unicode for every word.
|
||||
*
|
||||
* @param string $string
|
||||
*
|
||||
* @param string $string
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function utf8Split($string)
|
||||
{
|
||||
$string = strtolower($string);
|
||||
$i = 0;
|
||||
$i = 0;
|
||||
$length = strlen($string);
|
||||
$dict = array();
|
||||
$words = '';
|
||||
@@ -50,12 +50,16 @@ class spliter
|
||||
$word .= $letter;
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
/* Process intigers. */
|
||||
if(is_numeric($word) and (strpos($word, '.') === false)) $word = "|" . $word . "|";
|
||||
$word = str_pad(strtolower($word), 5, '_');
|
||||
$words .= ' ' . $word;
|
||||
}
|
||||
elseif($ord == 32)
|
||||
{
|
||||
$words .= ' ';
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -76,7 +80,14 @@ class spliter
|
||||
}
|
||||
else
|
||||
{
|
||||
$words .= ' ' . $letter;
|
||||
if(is_numeric(substr($words, strlen($words) - 1, 1)))
|
||||
{
|
||||
$words .= ' ' . $letter;
|
||||
}
|
||||
else
|
||||
{
|
||||
$words .= $letter;
|
||||
}
|
||||
}
|
||||
$i += $offset;
|
||||
}
|
||||
@@ -86,13 +97,13 @@ class spliter
|
||||
}
|
||||
|
||||
/**
|
||||
* Return unicode value for a char.
|
||||
*
|
||||
* @param string $c
|
||||
* Return unicode value for a char.
|
||||
*
|
||||
* @param string $c
|
||||
* @access public
|
||||
* @return int
|
||||
*/
|
||||
public function unicode($c)
|
||||
public function unicode($c)
|
||||
{
|
||||
if(ord($c{0}) >= 0 && ord($c{0}) <= 127) return ord($c{0});
|
||||
if(ord($c{0}) >= 192 && ord($c{0}) <= 223) return (ord($c{0}) - 192) * 64 + (ord($c{1}) - 128);
|
||||
@@ -107,8 +118,8 @@ class spliter
|
||||
|
||||
/**
|
||||
* Judge a char is Letter or not.
|
||||
*
|
||||
* @param string $letter
|
||||
*
|
||||
* @param string $letter
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
@@ -29,6 +29,10 @@ $config->action->objectNameFields['design'] = 'name';
|
||||
$config->action->objectNameFields['stakeholder'] = 'user';
|
||||
$config->action->objectNameFields['budget'] = 'name';
|
||||
$config->action->objectNameFields['job'] = 'name';
|
||||
$config->action->objectNameFields['team'] = 'name';
|
||||
$config->action->objectNameFields['opportunity'] = 'name';
|
||||
$config->action->objectNameFields['trainplan'] = 'name';
|
||||
$config->action->objectNameFields['gapanalysis'] = 'account';
|
||||
|
||||
$config->action->commonImgSize = 870;
|
||||
|
||||
@@ -42,4 +46,5 @@ $config->action->majorList['program'] = array('opened', 'edited');
|
||||
$config->action->majorList['project'] = array('opened', 'edited');
|
||||
$config->action->majorList['execution'] = array('opened', 'edited');
|
||||
|
||||
$config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design';
|
||||
$config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design,opportunity,trainplan,gapanalysis';
|
||||
$config->action->needGetRelateField = ',story,productplan,release,task,build,bug,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,gapanalysis,team,whitelist,';
|
||||
|
||||
@@ -41,6 +41,9 @@ class action extends control
|
||||
$this->session->set('caseList', $uri, 'qa');
|
||||
$this->session->set('testtaskList', $uri, 'qa');
|
||||
$this->session->set('docList', $uri, 'doc');
|
||||
$this->session->set('opportunityList', $uri, 'project');
|
||||
$this->session->set('riskList', $uri, 'project');
|
||||
$this->session->set('trainplanList', $uri, 'project');
|
||||
|
||||
/* Get deleted objects. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
|
||||
+91
-62
@@ -97,53 +97,61 @@ $lang->action->objectTypes['budget'] = 'Cost Estimate';
|
||||
$lang->action->objectTypes['entry'] = 'Eintrag';
|
||||
$lang->action->objectTypes['webhook'] = 'Webhook';
|
||||
$lang->action->objectTypes['job'] = 'Job';
|
||||
$lang->action->objectTypes['team'] = 'Team';
|
||||
$lang->action->objectTypes['whitelist'] = 'Whitelist';
|
||||
$lang->action->objectTypes['opportunity'] = 'Opportunity';
|
||||
$lang->action->objectTypes['trainplan'] = 'Trainplan';
|
||||
$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> als <strong>$extra</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, hinzugefügt durch <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> zugewisen an <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, geschlossen von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> löschte <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> bearbeitete <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, wiederhergestellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, versteckt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, hinzugefügt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, aktiviert von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, geblockt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, verschoben von <strong>$actor</strong> , ursprünglich "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> hat die Anpassung der Story bestätigt. Das letzte Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> hat die Anpassung des Falls bestätigt. Das letzte Build ist <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> hat den Bug bestätigt.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, konvertiert von <strong>$actor</strong>. Die ID war <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, gestartet von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, zurückgestellt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, ausgesetzt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, aufgenommen von <strong>$actor</strong> und hat <strong>$extra</strong> Stunden aufgebraucht.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> Stunden angepaast.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> Stunden gelöscht.';
|
||||
$lang->action->desc->canceled = '$date, abgebrochen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, abgeschlossen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, pausiert von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, überprüft von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> wurde geändert. Es war "%s" und ist jetzt "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> wurde geändert. Die Differenz ist ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Dateiname %s wurde geändert zu %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date Verknüpft mit <strong>$extra</strong> von <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> als <strong>$extra</strong> von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, erstellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, hinzugefügt durch <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, bearbeitet von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> zugewisen an <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, geschlossen von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> löschte <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> bearbeitete <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, gelöscht von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, wiederhergestellt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, versteckt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, hinzugefügt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, aktiviert von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, geblockt von <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, verschoben von <strong>$actor</strong> , ursprünglich "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> hat die Anpassung der Story bestätigt. Das letzte Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> hat die Anpassung des Falls bestätigt. Das letzte Build ist <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> hat den Bug bestätigt.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, konvertiert von <strong>$actor</strong>. Die ID war <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, gestartet von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, zurückgestellt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, ausgesetzt von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, aufgenommen von <strong>$actor</strong> und hat <strong>$extra</strong> Stunden aufgebraucht.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> Stunden angepaast.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> Stunden gelöscht.';
|
||||
$lang->action->desc->canceled = '$date, abgebrochen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> festgelegt. Build ist <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, abgeschlossen von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, pausiert von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, überprüft von <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> wurde geändert. Es war "%s" und ist jetzt "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> wurde geändert. Die Differenz ist ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Dateiname %s wurde geändert zu %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date Verknüpft mit <strong>$extra</strong> von <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* 子任务修改父任务的历史操作记录 */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
@@ -231,6 +239,8 @@ $lang->action->label->logout = "Logout";
|
||||
$lang->action->label->deleteestimate = "deleted ";
|
||||
$lang->action->label->linked2build = "linked ";
|
||||
$lang->action->label->linked2bug = "linked ";
|
||||
$lang->action->label->linked2testtask = "linked";
|
||||
$lang->action->label->unlinkedfromtesttask = "unlinked";
|
||||
$lang->action->label->linkchildtask = "linked a child task";
|
||||
$lang->action->label->unlinkchildrentask = "unlinked a child task";
|
||||
$lang->action->label->linkparenttask = "linked a parent task";
|
||||
@@ -238,6 +248,8 @@ $lang->action->label->unlinkparenttask = "unlink from parent task";
|
||||
$lang->action->label->batchcreate = "batch created tasks";
|
||||
$lang->action->label->createchildren = "create child tasks";
|
||||
$lang->action->label->managed = "managed";
|
||||
$lang->action->label->managedteam = "managed";
|
||||
$lang->action->label->managedwhitelist = "managed";
|
||||
$lang->action->label->deletechildrentask = "delete children task";
|
||||
$lang->action->label->createchildrenstory = "create child stories";
|
||||
$lang->action->label->linkchildstory = "linked a child story";
|
||||
@@ -247,6 +259,13 @@ $lang->action->label->unlinkparentstory = "unlink from parent story";
|
||||
$lang->action->label->deletechildrenstory = "delete children story";
|
||||
$lang->action->label->tracked = 'tracked';
|
||||
$lang->action->label->hangup = 'hangup';
|
||||
$lang->action->label->run = 'run';
|
||||
$lang->action->label->estimated = 'estimated';
|
||||
$lang->action->label->reviewclosed = 'Review Failed';
|
||||
$lang->action->label->passreviewed = 'Pass';
|
||||
$lang->action->label->clarifyreviewed = 'Clarify';
|
||||
$lang->action->label->commitsummary = 'Commit Summary';
|
||||
$lang->action->label->updatetrainee = 'Update Trainee';
|
||||
|
||||
/* 动态信息按照对象分组 */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -289,22 +308,25 @@ $lang->action->dynamicAction->release['changestatus'] = 'Change Release Status';
|
||||
$lang->action->dynamicAction->release['undeleted'] = 'Restore Release';
|
||||
$lang->action->dynamicAction->release['hidden'] = 'Hide Release';
|
||||
|
||||
$lang->action->dynamicAction->story['opened'] = 'Create Story';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Edit Story';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Activate Story';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Review Story';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Close Story';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Assign Story';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Change Story';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Link Story to Plan';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Link Story to Release';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Link Story to Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Unlink Story from Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Unlink Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Restore Story';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Hide Story';
|
||||
$lang->action->dynamicAction->story['opened'] = 'Create Story';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Edit Story';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Activate Story';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Review Story';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Close Story';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Assign Story';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Change Story';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Link Story to Plan';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Link Story to Release';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Link Story to Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Unlink Story from Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Unlink Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Restore Story';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Hide Story';
|
||||
$lang->action->dynamicAction->story['linked2execution'] = "Link Story";
|
||||
$lang->action->dynamicAction->story['unlinkedfromexecution'] = "Unlink Story";
|
||||
$lang->action->dynamicAction->story['estimated'] = "Estimate $lang->SRCommon";
|
||||
|
||||
$lang->action->dynamicAction->execution['opened'] = 'Create ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['edited'] = 'Edit ' . $lang->executionCommon;
|
||||
@@ -319,6 +341,8 @@ $lang->action->dynamicAction->execution['undeleted'] = 'Restore ' . $lang->execu
|
||||
$lang->action->dynamicAction->execution['hidden'] = 'Hide ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['moved'] = 'Improt Task';
|
||||
|
||||
$lang->action->dynamicAction->team['managedTeam'] = 'Manage Team';
|
||||
|
||||
$lang->action->dynamicAction->task['opened'] = 'Create Task';
|
||||
$lang->action->dynamicAction->task['edited'] = 'Edit Task';
|
||||
$lang->action->dynamicAction->task['commented'] = 'Task Comment';
|
||||
@@ -348,8 +372,9 @@ $lang->action->dynamicAction->task['hidden'] = 'Hide Task';
|
||||
$lang->action->dynamicAction->task['svncommited'] = 'SVN Commit';
|
||||
$lang->action->dynamicAction->task['gitcommited'] = 'GIT Commit';
|
||||
|
||||
$lang->action->dynamicAction->build['opened'] = 'Create Build';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Edit Build';
|
||||
$lang->action->dynamicAction->build['opened'] = 'Create Build';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Edit Build';
|
||||
$lang->action->dynamicAction->build['deleted'] = 'Delete Build';
|
||||
|
||||
$lang->action->dynamicAction->bug['opened'] = 'Report Bug';
|
||||
$lang->action->dynamicAction->bug['edited'] = 'Edit Bug';
|
||||
@@ -407,6 +432,7 @@ $lang->action->dynamicAction->caselib['hidden'] = 'Hide Case Lib';
|
||||
|
||||
$lang->action->dynamicAction->doclib['created'] = 'Create Doc Library';
|
||||
$lang->action->dynamicAction->doclib['edited'] = 'Edit Doc Library';
|
||||
$lang->action->dynamicAction->doclib['deleted'] = 'Delete Doc Library';
|
||||
|
||||
$lang->action->dynamicAction->doc['created'] = 'Create Document';
|
||||
$lang->action->dynamicAction->doc['edited'] = 'Edit Document';
|
||||
@@ -461,6 +487,9 @@ $lang->action->label->risk = 'Risk|risk|view|riskID=%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
$lang->action->label->design = 'Design|design|view|designID=%s';
|
||||
$lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s';
|
||||
$lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s';
|
||||
$lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s';
|
||||
$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search = new stdclass();
|
||||
|
||||
+91
-62
@@ -101,53 +101,61 @@ $lang->action->objectTypes['stakeholder'] = 'Stakeholder';
|
||||
$lang->action->objectTypes['budget'] = 'Cost Estimate';
|
||||
$lang->action->objectTypes['entry'] = 'Entry';
|
||||
$lang->action->objectTypes['webhook'] = 'Webhook';
|
||||
$lang->action->objectTypes['team'] = 'Team';
|
||||
$lang->action->objectTypes['whitelist'] = 'Whitelist';
|
||||
$lang->action->objectTypes['opportunity'] = 'Opportunity';
|
||||
$lang->action->objectTypes['trainplan'] = 'Trainplan';
|
||||
$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* Used to describe operation history. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, added by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> deleted <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> edited <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, added by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong> , which was "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, recorded by <strong>$actor</strong> and it cost <strong>$extra</strong> hours.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, created by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, added by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, closed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> deleted <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> edited <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, deleted by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restored by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, hidden by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, added by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activated by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, moved by <strong>$actor</strong> , which was "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, recorded by <strong>$actor</strong> and it cost <strong>$extra</strong> hours.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
@@ -235,6 +243,8 @@ $lang->action->label->logout = "logout";
|
||||
$lang->action->label->deleteestimate = "deleted ";
|
||||
$lang->action->label->linked2build = "linked ";
|
||||
$lang->action->label->linked2bug = "linked ";
|
||||
$lang->action->label->linked2testtask = "linked";
|
||||
$lang->action->label->unlinkedfromtesttask = "unlinked";
|
||||
$lang->action->label->linkchildtask = "linked a child task";
|
||||
$lang->action->label->unlinkchildrentask = "unlinked a child task";
|
||||
$lang->action->label->linkparenttask = "linked a parent task";
|
||||
@@ -242,6 +252,8 @@ $lang->action->label->unlinkparenttask = "unlink from parent task";
|
||||
$lang->action->label->batchcreate = "batch created tasks";
|
||||
$lang->action->label->createchildren = "create child tasks";
|
||||
$lang->action->label->managed = "managed";
|
||||
$lang->action->label->managedteam = "managed";
|
||||
$lang->action->label->managedwhitelist = "managed";
|
||||
$lang->action->label->deletechildrentask = "delete children task";
|
||||
$lang->action->label->createchildrenstory = "create child stories";
|
||||
$lang->action->label->linkchildstory = "linked a child story";
|
||||
@@ -251,6 +263,13 @@ $lang->action->label->unlinkparentstory = "unlink from parent story";
|
||||
$lang->action->label->deletechildrenstory = "delete children story";
|
||||
$lang->action->label->tracked = 'tracked';
|
||||
$lang->action->label->hangup = 'hangup';
|
||||
$lang->action->label->run = 'run';
|
||||
$lang->action->label->estimated = 'estimated';
|
||||
$lang->action->label->reviewclosed = 'Review Failed';
|
||||
$lang->action->label->passreviewed = 'Pass';
|
||||
$lang->action->label->clarifyreviewed = 'Clarify';
|
||||
$lang->action->label->commitsummary = 'Commit Summary';
|
||||
$lang->action->label->updatetrainee = 'Update Trainee';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -293,22 +312,25 @@ $lang->action->dynamicAction->release['changestatus'] = 'Change Release Status';
|
||||
$lang->action->dynamicAction->release['undeleted'] = 'Restore Release';
|
||||
$lang->action->dynamicAction->release['hidden'] = 'Hide Release';
|
||||
|
||||
$lang->action->dynamicAction->story['opened'] = 'Create Story';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Edit Story';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Activate Story';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Review Story';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Close Story';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Assign Story';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Change Story';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Link Story to Plan';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Link Story to Release';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Link Story to Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Unlink Story from Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Unlink Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Restore Story';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Hide Story';
|
||||
$lang->action->dynamicAction->story['opened'] = 'Create Story';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Edit Story';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Activate Story';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Review Story';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Close Story';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Assign Story';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Change Story';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Link Story to Plan';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Link Story to Release';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Unlink Story from Plan';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Link Story to Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Unlink Story from Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Unlink Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Restore Story';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Hide Story';
|
||||
$lang->action->dynamicAction->story['linked2execution'] = "Link Story";
|
||||
$lang->action->dynamicAction->story['unlinkedfromexecution'] = "Unlink Story";
|
||||
$lang->action->dynamicAction->story['estimated'] = "Estimate $lang->SRCommon";
|
||||
|
||||
$lang->action->dynamicAction->execution['opened'] = 'Create ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['edited'] = 'Edit ' . $lang->executionCommon;
|
||||
@@ -323,6 +345,8 @@ $lang->action->dynamicAction->execution['undeleted'] = 'Restore ' . $lang->execu
|
||||
$lang->action->dynamicAction->execution['hidden'] = 'Hide ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['moved'] = 'Improt Task';
|
||||
|
||||
$lang->action->dynamicAction->team['managedTeam'] = 'Manage Team';
|
||||
|
||||
$lang->action->dynamicAction->task['opened'] = 'Create Task';
|
||||
$lang->action->dynamicAction->task['edited'] = 'Edit Task';
|
||||
$lang->action->dynamicAction->task['commented'] = 'Task Comment';
|
||||
@@ -352,8 +376,9 @@ $lang->action->dynamicAction->task['hidden'] = 'Hide Task';
|
||||
$lang->action->dynamicAction->task['svncommited'] = 'SVN Commit';
|
||||
$lang->action->dynamicAction->task['gitcommited'] = 'GIT Commit';
|
||||
|
||||
$lang->action->dynamicAction->build['opened'] = 'Create Build';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Edit Build';
|
||||
$lang->action->dynamicAction->build['opened'] = 'Create Build';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Edit Build';
|
||||
$lang->action->dynamicAction->build['deleted'] = 'Delete Build';
|
||||
|
||||
$lang->action->dynamicAction->bug['opened'] = 'Report Bug';
|
||||
$lang->action->dynamicAction->bug['edited'] = 'Edit Bug';
|
||||
@@ -411,6 +436,7 @@ $lang->action->dynamicAction->caselib['hidden'] = 'Hide Case Lib';
|
||||
|
||||
$lang->action->dynamicAction->doclib['created'] = 'Create Doc Library';
|
||||
$lang->action->dynamicAction->doclib['edited'] = 'Edit Doc Library';
|
||||
$lang->action->dynamicAction->doclib['deleted'] = 'Delete Doc Library';
|
||||
|
||||
$lang->action->dynamicAction->doc['created'] = 'Create Document';
|
||||
$lang->action->dynamicAction->doc['edited'] = 'Edit Document';
|
||||
@@ -464,6 +490,9 @@ $lang->action->label->risk = 'Risk|risk|view|riskID=%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
$lang->action->label->design = 'Design|design|view|designID=%s';
|
||||
$lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s';
|
||||
$lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s';
|
||||
$lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s';
|
||||
$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search = new stdclass();
|
||||
|
||||
+108
-66
@@ -97,53 +97,61 @@ $lang->action->objectTypes['budget'] = 'Cost Estimate';
|
||||
$lang->action->objectTypes['entry'] = 'Entrée';
|
||||
$lang->action->objectTypes['webhook'] = 'Webhook';
|
||||
$lang->action->objectTypes['job'] = 'Job';
|
||||
$lang->action->objectTypes['team'] = 'Team';
|
||||
$lang->action->objectTypes['whitelist'] = 'Whitelist';
|
||||
$lang->action->objectTypes['opportunity'] = 'Opportunity';
|
||||
$lang->action->objectTypes['trainplan'] = 'Trainplan';
|
||||
$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> en tant que <strong>$extra</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, initié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, créé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, ajouter par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, modifié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, édité par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> affecté à <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, fermé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> a supprimé <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> a édité <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restauré par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, masqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, ajouté par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, bloqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, déplacé par <strong>$actor</strong> , qui était "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> a confirmé la modification de la story. Le dernier build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> a confirmé la modification du CasTest. Le dernier build est <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> a confirmé le Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converti par <strong>$actor</strong>. Son ID était <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, commencé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, reprise par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, ajourné par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspendu par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, enregistré par <strong>$actor</strong> et son coût est de <strong>$extra</strong> heures.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> a édité son temps estimé.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> a supprimé son estimation de temps.';
|
||||
$lang->action->desc->canceled = '$date, annulé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, terminé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, mis en pause par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verifié par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> a changé. Il est passé de "%s" à "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> a changé. La différence est ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Le nom du fichier %s a changé pour %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, affecté à <strong>$extra</strong> par <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> en tant que <strong>$extra</strong> par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, initié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, créé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, ajouter par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, modifié par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, édité par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> affecté à <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, fermé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> a supprimé <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> a édité <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, supprimé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, restauré par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, masqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, ajouté par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, activé par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, bloqué par <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, déplacé par <strong>$actor</strong> , qui était "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> a confirmé la modification de la story. Le dernier build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> a confirmé la modification du CasTest. Le dernier build est <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> a confirmé le Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converti par <strong>$actor</strong>. Son ID était <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, commencé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, reprise par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, ajourné par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspendu par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, enregistré par <strong>$actor</strong> et son coût est de <strong>$extra</strong> heures.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> a édité son temps estimé.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> a supprimé son estimation de temps.';
|
||||
$lang->action->desc->canceled = '$date, annulé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> a validé, le build est <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, terminé par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, mis en pause par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verifié par <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> a changé. Il est passé de "%s" à "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> a changé. La différence est ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'Le nom du fichier %s a changé pour %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, affecté à <strong>$extra</strong> par <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* 子任务修改父任务的历史操作记录 */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> a créé un sous-tâche <strong>$extra</strong>。' . "\n";
|
||||
@@ -231,6 +239,8 @@ $lang->action->label->logout = "s'est Déconnecté";
|
||||
$lang->action->label->deleteestimate = "a remis à zéro ";
|
||||
$lang->action->label->linked2build = "a ajouté au Build ";
|
||||
$lang->action->label->linked2bug = "a lié au Bug ";
|
||||
$lang->action->label->linked2testtask = "linked";
|
||||
$lang->action->label->unlinkedfromtesttask = "unlinked";
|
||||
$lang->action->label->linkchildtask = "a raccroché à une sous-tâche";
|
||||
$lang->action->label->unlinkchildrentask = "a décroché la sous-tâche";
|
||||
$lang->action->label->linkparenttask = "a raccroché à une tâche parent";
|
||||
@@ -238,6 +248,8 @@ $lang->action->label->unlinkparenttask = "a décroché de la tâche parent"
|
||||
$lang->action->label->batchcreate = "a créé tâches par lot";
|
||||
$lang->action->label->createchildren = "a créé sous-tâches par lot";
|
||||
$lang->action->label->managed = "a managé";
|
||||
$lang->action->label->managedteam = "managed";
|
||||
$lang->action->label->managedwhitelist = "managed";
|
||||
$lang->action->label->deletechildrentask = "a supprimé une sous-tâche";
|
||||
$lang->action->label->createchildrenstory = "a créé une sous-story";
|
||||
$lang->action->label->linkchildstory = "a raccroché à une sous-story";
|
||||
@@ -247,6 +259,13 @@ $lang->action->label->unlinkparentstory = "a décroché de la story parent";
|
||||
$lang->action->label->deletechildrenstory = "a supprimé la sous-story";
|
||||
$lang->action->label->tracked = 'tracked';
|
||||
$lang->action->label->hangup = 'hangup';
|
||||
$lang->action->label->run = 'run';
|
||||
$lang->action->label->estimated = 'estimated';
|
||||
$lang->action->label->reviewclosed = 'Review Failed';
|
||||
$lang->action->label->passreviewed = 'Pass';
|
||||
$lang->action->label->clarifyreviewed = 'Clarify';
|
||||
$lang->action->label->commitsummary = 'Commit Summary';
|
||||
$lang->action->label->updatetrainee = 'Update Trainee';
|
||||
|
||||
/* 动态信息按照对象分组 */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -289,22 +308,25 @@ $lang->action->dynamicAction->release['changestatus'] = 'Changer Statut Release'
|
||||
$lang->action->dynamicAction->release['undeleted'] = 'Restaurer Release';
|
||||
$lang->action->dynamicAction->release['hidden'] = 'Masquer Release';
|
||||
|
||||
$lang->action->dynamicAction->story['opened'] = 'Créer Story';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Editer Story';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Activer Story';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Consulter Story';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Fermer Story';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Assigner Story';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Changer Story';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Inclure Story au Plan';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Enlever Story du Plan';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Inclure Story à la Release';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Enlever Story de la Release';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Ajouter Story au Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Détacher Story du Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Détacher du Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Restaurer Story';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Masquer Story';
|
||||
$lang->action->dynamicAction->story['opened'] = 'Créer Story';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Editer Story';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Activer Story';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Consulter Story';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Fermer Story';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Assigner Story';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Changer Story';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Inclure Story au Plan';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Enlever Story du Plan';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Inclure Story à la Release';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Enlever Story de la Release';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Ajouter Story au Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Détacher Story du Build';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Détacher du Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Restaurer Story';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Masquer Story';
|
||||
$lang->action->dynamicAction->story['linked2execution'] = "Link Story";
|
||||
$lang->action->dynamicAction->story['unlinkedfromexecution'] = "Unlink Story";
|
||||
$lang->action->dynamicAction->story['estimated'] = "Estimate $lang->SRCommon";
|
||||
|
||||
$lang->action->dynamicAction->project['opened'] = 'Créer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['edited'] = 'Editer ' . $lang->executionCommon;
|
||||
@@ -319,6 +341,21 @@ $lang->action->dynamicAction->project['undeleted'] = 'Restaurer ' . $lang->execu
|
||||
$lang->action->dynamicAction->project['hidden'] = 'Masquer ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->project['moved'] = 'Déplacer Tâche';
|
||||
|
||||
$lang->action->dynamicAction->execution['opened'] = 'Create ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['edited'] = 'Edit ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['deleted'] = 'Delete ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['started'] = 'Start ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['delayed'] = 'Delay ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['suspended'] = 'Suspend ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['activated'] = 'Activate ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['closed'] = 'Close ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['managed'] = 'Manage ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['undeleted'] = 'Restore ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['hidden'] = 'Hide ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['moved'] = 'Improt Task';
|
||||
|
||||
$lang->action->dynamicAction->team['managedTeam'] = 'Manage Team';
|
||||
|
||||
$lang->action->dynamicAction->task['opened'] = 'Créer Tâche';
|
||||
$lang->action->dynamicAction->task['edited'] = 'Editer Tâche';
|
||||
$lang->action->dynamicAction->task['commented'] = 'Commenter Tâche';
|
||||
@@ -348,8 +385,9 @@ $lang->action->dynamicAction->task['hidden'] = 'Masquer Tâche';
|
||||
$lang->action->dynamicAction->task['svncommited'] = 'Committer SVN';
|
||||
$lang->action->dynamicAction->task['gitcommited'] = 'Committer GIT';
|
||||
|
||||
$lang->action->dynamicAction->build['opened'] = 'Créer Build';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Editer Build';
|
||||
$lang->action->dynamicAction->build['opened'] = 'Créer Build';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Editer Build';
|
||||
$lang->action->dynamicAction->build['deleted'] = 'Delete Build';
|
||||
|
||||
$lang->action->dynamicAction->bug['opened'] = 'Remonter Bug';
|
||||
$lang->action->dynamicAction->bug['edited'] = 'Editer Bug';
|
||||
@@ -407,6 +445,7 @@ $lang->action->dynamicAction->caselib['hidden'] = 'Masqué CasTest Lib';
|
||||
|
||||
$lang->action->dynamicAction->doclib['created'] = 'Créer Doc Library';
|
||||
$lang->action->dynamicAction->doclib['edited'] = 'Editer Doc Library';
|
||||
$lang->action->dynamicAction->doclib['deleted'] = 'Delete Doc Library';
|
||||
|
||||
$lang->action->dynamicAction->doc['created'] = 'Créer Document';
|
||||
$lang->action->dynamicAction->doc['edited'] = 'Editer Document';
|
||||
@@ -460,6 +499,9 @@ $lang->action->label->risk = 'Risk|risk|view|riskID=%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
$lang->action->label->design = 'Design|design|view|designID=%s';
|
||||
$lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s';
|
||||
$lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s';
|
||||
$lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s';
|
||||
$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search = new stdclass();
|
||||
@@ -469,13 +511,13 @@ $lang->action->search->objectTypeList['program'] = 'Program';
|
||||
$lang->action->search->objectTypeList['project'] = 'Project';
|
||||
$lang->action->search->objectTypeList['execution'] = 'Execution';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = 'CasTest';
|
||||
$lang->action->search->objectTypeList['case'] = 'CasTest';
|
||||
$lang->action->search->objectTypeList['caseresult'] = 'CasTest Result';
|
||||
$lang->action->search->objectTypeList['stepresult'] = 'CasTest Steps';
|
||||
$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon";
|
||||
$lang->action->search->objectTypeList['task'] = 'Tâche';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'Recette';
|
||||
$lang->action->search->objectTypeList['user'] = 'Utilisateur';
|
||||
$lang->action->search->objectTypeList['task'] = 'Tâche';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'Recette';
|
||||
$lang->action->search->objectTypeList['user'] = 'Utilisateur';
|
||||
$lang->action->search->objectTypeList['doc'] = 'Doc';
|
||||
$lang->action->search->objectTypeList['doclib'] = 'Doc Lib';
|
||||
$lang->action->search->objectTypeList['todo'] = 'Todo';
|
||||
|
||||
+96
-67
@@ -97,53 +97,61 @@ $lang->action->objectTypes['budget'] = 'Cost Estimate';
|
||||
$lang->action->objectTypes['entry'] = 'Entry';
|
||||
$lang->action->objectTypes['webhook'] = 'Webhook';
|
||||
$lang->action->objectTypes['job'] = 'Job';
|
||||
$lang->action->objectTypes['team'] = 'Team';
|
||||
$lang->action->objectTypes['whitelist'] = 'Whitelist';
|
||||
$lang->action->objectTypes['opportunity'] = 'Opportunity';
|
||||
$lang->action->objectTypes['trainplan'] = 'Trainplan';
|
||||
$lang->action->objectTypes['gapanalysis'] = 'Gap Analysis';
|
||||
|
||||
/* Used to describe operation history. */
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> như <strong>$extra</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, thêm bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, được đóng bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> đã xóa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> đã sửa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, khôi phục bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, ẩn bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, được thêm bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, kích hoạt bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, chuyển bởi <strong>$actor</strong> , cái là "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, ghi nhận bởi <strong>$actor</strong> and it cost <strong>$extra</strong> giờ.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, liên kết tới <strong>$extra</strong> bởi <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> như <strong>$extra</strong> bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->opened = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
|
||||
$lang->action->desc->created = '$date, được tạo bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->added = '$date, thêm bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->changed = '$date, changed by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->edited = '$date, edited by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->assigned = '$date, <strong>$actor</strong> assigned to <strong>$extra</strong>.' . "\n";
|
||||
$lang->action->desc->closed = '$date, được đóng bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
|
||||
$lang->action->desc->deleted = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, <strong>$actor</strong> đã xóa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->editfile = '$date, <strong>$actor</strong> đã sửa <strong><i>$extra</i></strong>.' . "\n";
|
||||
$lang->action->desc->erased = '$date, được xóa bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, khôi phục bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->hidden = '$date, ẩn bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->commented = '$date, được thêm bởi <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->activated = '$date, kích hoạt bởi <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->blocked = '$date, blocked by <strong>$actor</strong> .' . "\n";
|
||||
$lang->action->desc->moved = '$date, chuyển bởi <strong>$actor</strong> , cái là "$extra".' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, <strong>$actor</strong> confirmed the story change. The latest build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, <strong>$actor</strong> confirmed the case change. The latest build is <strong>#$extra</strong>' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, <strong>$actor</strong> confirmed Bug.' . "\n";
|
||||
$lang->action->desc->frombug = '$date, converted from <strong>$actor</strong>. Its ID was <strong>$extra</strong>.';
|
||||
$lang->action->desc->started = '$date, started by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->restarted = '$date, continued by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->delayed = '$date, postponed by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->suspended = '$date, suspended by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, ghi nhận bởi <strong>$actor</strong> and it cost <strong>$extra</strong> giờ.';
|
||||
$lang->action->desc->editestimate = '$date, <strong>$actor</strong> edited Hour.';
|
||||
$lang->action->desc->deleteestimate = '$date, <strong>$actor</strong> deleted Hour.';
|
||||
$lang->action->desc->canceled = '$date, cancelled by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, <strong>$actor</strong> committed and the build is <strong>#$extra</strong>.' . "\n";
|
||||
$lang->action->desc->finished = '$date, finished by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->paused = '$date, paused by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->verified = '$date, verified by <strong>$actor</strong>.' . "\n";
|
||||
$lang->action->desc->diff1 = '<strong><i>%s</i></strong> is changed. It was "%s" and it is "%s".<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '<strong><i>%s</i></strong> is changed. The difference is ' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date, liên kết tới <strong>$extra</strong> bởi <strong>$actor</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date, linked to <strong>$extra</strong> by <strong>$actor</strong>';
|
||||
$lang->action->desc->resolved = '$date, resolved by <strong>$actor</strong> ' . "\n";
|
||||
$lang->action->desc->managed = '$date, by <strong>$actor</strong> managed.' . "\n";
|
||||
$lang->action->desc->estimated = '$date, by <strong>$actor</strong> estimated.' . "\n";
|
||||
$lang->action->desc->run = '$date, by <strong>$actor</strong> executed.' . "\n";
|
||||
|
||||
/* Used to describe the history of operations related to parent-child tasks. */
|
||||
$lang->action->desc->createchildren = '$date, <strong>$actor</strong> created a child task <strong>$extra</strong>。' . "\n";
|
||||
@@ -231,6 +239,8 @@ $lang->action->label->logout = "logout";
|
||||
$lang->action->label->deleteestimate = "deleted ";
|
||||
$lang->action->label->linked2build = "linked ";
|
||||
$lang->action->label->linked2bug = "linked ";
|
||||
$lang->action->label->linked2testtask = "linked";
|
||||
$lang->action->label->unlinkedfromtesttask = "unlinked";
|
||||
$lang->action->label->linkchildtask = "linked a child task";
|
||||
$lang->action->label->unlinkchildrentask = "hủy liên kết a child task";
|
||||
$lang->action->label->linkparenttask = "linked a nhiệm vụ cha";
|
||||
@@ -238,6 +248,8 @@ $lang->action->label->unlinkparenttask = "unlink from nhiệm vụ cha";
|
||||
$lang->action->label->batchcreate = "batch created tasks";
|
||||
$lang->action->label->createchildren = "create child tasks";
|
||||
$lang->action->label->managed = "managed";
|
||||
$lang->action->label->managedteam = "managed";
|
||||
$lang->action->label->managedwhitelist = "managed";
|
||||
$lang->action->label->deletechildrentask = "delete children task";
|
||||
$lang->action->label->createchildrenstory = "create child stories";
|
||||
$lang->action->label->linkchildstory = "linked a child story";
|
||||
@@ -247,6 +259,13 @@ $lang->action->label->unlinkparentstory = "unlink from parent story";
|
||||
$lang->action->label->deletechildrenstory = "delete children story";
|
||||
$lang->action->label->tracked = 'tracked';
|
||||
$lang->action->label->hangup = 'hangup';
|
||||
$lang->action->label->run = 'run';
|
||||
$lang->action->label->estimated = 'estimated';
|
||||
$lang->action->label->reviewclosed = 'Review Failed';
|
||||
$lang->action->label->passreviewed = 'Pass';
|
||||
$lang->action->label->clarifyreviewed = 'Clarify';
|
||||
$lang->action->label->commitsummary = 'Commit Summary';
|
||||
$lang->action->label->updatetrainee = 'Update Trainee';
|
||||
|
||||
/* Dynamic information is grouped by object. */
|
||||
$lang->action->dynamicAction = new stdclass;
|
||||
@@ -289,22 +308,25 @@ $lang->action->dynamicAction->release['changestatus'] = 'Thay đổi Tình trạ
|
||||
$lang->action->dynamicAction->release['undeleted'] = 'Khôi phục phát hành';
|
||||
$lang->action->dynamicAction->release['hidden'] = 'Ẩn phát hành';
|
||||
|
||||
$lang->action->dynamicAction->story['opened'] = 'Tạo câu chuyện';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Sửa câu chuyện';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Kích hoạt câu chuyện';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Duyệt câu chuyện';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Đóng câu chuyện';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Bàn giao câu chuyện';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Thay đổi câu chuyện';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Liên kết Story to kế hoạch';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Hủy liên kết Story from kế hoạch';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Liên kết Story to phát hành';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Hủy liên kết Story from kế hoạch';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Liên kết Story to bản dựng';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Hủy liên kết Story from bản dựng';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Hủy liên kết Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Khôi phục câu chuyện';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Ẩn câu chuyện';
|
||||
$lang->action->dynamicAction->story['opened'] = 'Tạo câu chuyện';
|
||||
$lang->action->dynamicAction->story['edited'] = 'Sửa câu chuyện';
|
||||
$lang->action->dynamicAction->story['activated'] = 'Kích hoạt câu chuyện';
|
||||
$lang->action->dynamicAction->story['reviewed'] = 'Duyệt câu chuyện';
|
||||
$lang->action->dynamicAction->story['closed'] = 'Đóng câu chuyện';
|
||||
$lang->action->dynamicAction->story['assigned'] = 'Bàn giao câu chuyện';
|
||||
$lang->action->dynamicAction->story['changed'] = 'Thay đổi câu chuyện';
|
||||
$lang->action->dynamicAction->story['linked2plan'] = 'Liên kết Story to kế hoạch';
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = 'Hủy liên kết Story from kế hoạch';
|
||||
$lang->action->dynamicAction->story['linked2release'] = 'Liên kết Story to phát hành';
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = 'Hủy liên kết Story from kế hoạch';
|
||||
$lang->action->dynamicAction->story['linked2build'] = 'Liên kết Story to bản dựng';
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = 'Hủy liên kết Story from bản dựng';
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = 'Hủy liên kết Project';
|
||||
$lang->action->dynamicAction->story['undeleted'] = 'Khôi phục câu chuyện';
|
||||
$lang->action->dynamicAction->story['hidden'] = 'Ẩn câu chuyện';
|
||||
$lang->action->dynamicAction->story['linked2execution'] = "Link Story";
|
||||
$lang->action->dynamicAction->story['unlinkedfromexecution'] = "Unlink Story";
|
||||
$lang->action->dynamicAction->story['estimated'] = "Estimate $lang->SRCommon";
|
||||
|
||||
$lang->action->dynamicAction->execution['opened'] = 'Tạo ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['edited'] = 'Sửa ' . $lang->executionCommon;
|
||||
@@ -319,6 +341,8 @@ $lang->action->dynamicAction->execution['undeleted'] = 'Phục hổi ' . $lang->
|
||||
$lang->action->dynamicAction->execution['hidden'] = 'Ẩn ' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['moved'] = 'Nhập nhiệm vụ';
|
||||
|
||||
$lang->action->dynamicAction->team['managedTeam'] = 'Manage Team';
|
||||
|
||||
$lang->action->dynamicAction->task['opened'] = 'Tạo nhiệm vụ';
|
||||
$lang->action->dynamicAction->task['edited'] = 'Sửa nhiệm vụ';
|
||||
$lang->action->dynamicAction->task['commented'] = 'Task nhận xét';
|
||||
@@ -348,8 +372,9 @@ $lang->action->dynamicAction->task['hidden'] = 'Ẩn nhiệm vụ';
|
||||
$lang->action->dynamicAction->task['svncommited'] = 'SVN Commit';
|
||||
$lang->action->dynamicAction->task['gitcommited'] = 'GIT Commit';
|
||||
|
||||
$lang->action->dynamicAction->build['opened'] = 'Tạo bản dựng';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Sửa bản dựng';
|
||||
$lang->action->dynamicAction->build['opened'] = 'Tạo bản dựng';
|
||||
$lang->action->dynamicAction->build['edited'] = 'Sửa bản dựng';
|
||||
$lang->action->dynamicAction->build['deleted'] = 'Delete Build';
|
||||
|
||||
$lang->action->dynamicAction->bug['opened'] = 'Báo cáo Bug';
|
||||
$lang->action->dynamicAction->bug['edited'] = 'Sửa Bug';
|
||||
@@ -407,6 +432,7 @@ $lang->action->dynamicAction->caselib['hidden'] = 'Ẩn Case Lib';
|
||||
|
||||
$lang->action->dynamicAction->doclib['created'] = 'Tạo Doc thư viện';
|
||||
$lang->action->dynamicAction->doclib['edited'] = 'Sửa Doc thư viện';
|
||||
$lang->action->dynamicAction->doclib['deleted'] = 'Delete Doc Library';
|
||||
|
||||
$lang->action->dynamicAction->doc['created'] = 'Tạo tài liệu';
|
||||
$lang->action->dynamicAction->doc['edited'] = 'Sửa tài liệu';
|
||||
@@ -461,22 +487,25 @@ $lang->action->label->risk = 'Risk|risk|view|riskID%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
$lang->action->label->design = 'Design|design|view|designID=%s';
|
||||
$lang->action->label->stakeholder = 'Stakeholder|stakeholder|view|userID=%s';
|
||||
$lang->action->label->opportunity = 'Opportunity|opportunity|view|opportunityID=%s';
|
||||
$lang->action->label->trainplan = 'Trainplan|trainplan|view|trainplanID=%s';
|
||||
$lang->action->label->gapanalysis = 'Gap Analysis|gapanalysis|view|gapanalysisID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search = new stdclass();
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
$lang->action->search->objectTypeList['product'] = $lang->productCommon;
|
||||
$lang->action->search->objectTypeList['program'] = 'Program';
|
||||
$lang->action->search->objectTypeList['project'] = 'Project';
|
||||
$lang->action->search->objectTypeList['execution'] = 'Execution';
|
||||
$lang->action->search->objectTypeList['bug'] = 'Bug';
|
||||
$lang->action->search->objectTypeList['case'] = 'Tình huống';
|
||||
$lang->action->search->objectTypeList['case'] = 'Tình huống';
|
||||
$lang->action->search->objectTypeList['caseresult'] = 'Kết quả tình huống';
|
||||
$lang->action->search->objectTypeList['stepresult'] = 'Các bước tình huống';
|
||||
$lang->action->search->objectTypeList['story'] = "$lang->SRCommon/$lang->URCommon";
|
||||
$lang->action->search->objectTypeList['task'] = 'Nhiệm vụ';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'Yêu cầu';
|
||||
$lang->action->search->objectTypeList['user'] = 'Người dùng';
|
||||
$lang->action->search->objectTypeList['task'] = 'Nhiệm vụ';
|
||||
$lang->action->search->objectTypeList['testtask'] = 'Yêu cầu';
|
||||
$lang->action->search->objectTypeList['user'] = 'Người dùng';
|
||||
$lang->action->search->objectTypeList['doc'] = 'Tài liệu';
|
||||
$lang->action->search->objectTypeList['doclib'] = 'Doc Lib';
|
||||
$lang->action->search->objectTypeList['todo'] = 'Việc làm';
|
||||
|
||||
@@ -101,53 +101,61 @@ $lang->action->objectTypes['stakeholder'] = '干系人';
|
||||
$lang->action->objectTypes['budget'] = '费用估算';
|
||||
$lang->action->objectTypes['entry'] = '应用';
|
||||
$lang->action->objectTypes['webhook'] = 'Webhook';
|
||||
$lang->action->objectTypes['team'] = '团队';
|
||||
$lang->action->objectTypes['whitelist'] = '白名单';
|
||||
$lang->action->objectTypes['opportunity'] = '机会';
|
||||
$lang->action->objectTypes['trainplan'] = '培训计划';
|
||||
$lang->action->objectTypes['gapanalysis'] = '能力差距分析';
|
||||
|
||||
/* 用来描述操作历史记录。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认' . $lang->SRCommon . '变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 确认用例变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 继续。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 记录工时,消耗 <strong>$extra</strong> 小时。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 编辑工时。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 删除工时。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暂停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 验收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 关联到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解决。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 维护。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 创建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 变更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 编辑。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派给 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 关闭。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 删除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 编辑了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 删除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 还原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隐藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加备注。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移动,之前为 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 确认' . $lang->SRCommon . '变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 确认用例变动,最新版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 确认Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug转化而来,Bug编号为 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 启动。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 继续。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 挂起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 记录工时,消耗 <strong>$extra</strong> 小时。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 编辑工时。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 删除工时。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代码,版本为<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暂停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 验收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,旧值为 "%s",新值为 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,区别为:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 关联到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date 由 <strong>$actor</strong> 关联到测试单 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解决。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 维护。' . "\n";
|
||||
$lang->action->desc->estimated = '$date, 由 <strong>$actor</strong> 估算。' . "\n";
|
||||
$lang->action->desc->run = '$date, 由 <strong>$actor</strong> 执行。' . "\n";
|
||||
|
||||
/* 用来描述和父子任务相关的操作历史记录。*/
|
||||
$lang->action->desc->createchildren = '$date, 由 <strong>$actor</strong> 创建子任务 <strong>$extra</strong>。' . "\n";
|
||||
@@ -235,6 +243,8 @@ $lang->action->label->logout = "退出登录";
|
||||
$lang->action->label->deleteestimate = "删除了工时";
|
||||
$lang->action->label->linked2build = "关联了";
|
||||
$lang->action->label->linked2bug = "关联了";
|
||||
$lang->action->label->linked2testtask = "关联了";
|
||||
$lang->action->label->unlinkedfromtesttask = "移除了";
|
||||
$lang->action->label->linkchildtask = "关联子任务";
|
||||
$lang->action->label->unlinkchildrentask = "取消关联子任务";
|
||||
$lang->action->label->linkparenttask = "关联到父任务";
|
||||
@@ -242,6 +252,8 @@ $lang->action->label->unlinkparenttask = "从父任务取消关联";
|
||||
$lang->action->label->batchcreate = "批量创建任务";
|
||||
$lang->action->label->createchildren = "创建子任务";
|
||||
$lang->action->label->managed = "维护";
|
||||
$lang->action->label->managedteam = "维护了";
|
||||
$lang->action->label->managedwhitelist = "维护了";
|
||||
$lang->action->label->deletechildrentask = "删除子任务";
|
||||
$lang->action->label->createchildrenstory = "创建子需求";
|
||||
$lang->action->label->linkchildstory = "关联子需求";
|
||||
@@ -251,6 +263,13 @@ $lang->action->label->unlinkparentstory = "从父需求取消关联";
|
||||
$lang->action->label->deletechildrenstory = "删除子需求";
|
||||
$lang->action->label->tracked = '跟踪了';
|
||||
$lang->action->label->hangup = '挂起了';
|
||||
$lang->action->label->run = '执行了';
|
||||
$lang->action->label->estimated = '估算了';
|
||||
$lang->action->label->reviewclosed = '评审失败';
|
||||
$lang->action->label->passreviewed = '确认通过';
|
||||
$lang->action->label->clarifyreviewed = '有待明确';
|
||||
$lang->action->label->commitsummary = '提交培训总结';
|
||||
$lang->action->label->updatetrainee = '更新培训人员';
|
||||
|
||||
/* 动态信息按照对象分组 */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -293,22 +312,25 @@ $lang->action->dynamicAction->release['changestatus'] = '修改发布状态';
|
||||
$lang->action->dynamicAction->release['undeleted'] = '还原发布';
|
||||
$lang->action->dynamicAction->release['hidden'] = '隐藏发布';
|
||||
|
||||
$lang->action->dynamicAction->story['opened'] = "创建{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['edited'] = "编辑{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['activated'] = "激活{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['reviewed'] = "评审{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['closed'] = "关闭{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['assigned'] = "指派{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['changed'] = "变更{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2plan'] = "{$lang->SRCommon}关联计划";
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = "计划移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2release'] = "{$lang->SRCommon}关联发布";
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = "发布移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2build'] = "{$lang->SRCommon}关联版本";
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = "版本移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = '移除项目';
|
||||
$lang->action->dynamicAction->story['undeleted'] = "还原{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['hidden'] = "隐藏{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['opened'] = "创建{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['edited'] = "编辑{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['activated'] = "激活{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['reviewed'] = "评审{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['closed'] = "关闭{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['assigned'] = "指派{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['changed'] = "变更{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2plan'] = "{$lang->SRCommon}关联计划";
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = "计划移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2release'] = "{$lang->SRCommon}关联发布";
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = "发布移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2build'] = "{$lang->SRCommon}关联版本";
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = "版本移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = '移除项目';
|
||||
$lang->action->dynamicAction->story['undeleted'] = "还原{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['hidden'] = "隐藏{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2execution'] = "关联$lang->SRCommon";
|
||||
$lang->action->dynamicAction->story['unlinkedfromexecution'] = "移除$lang->SRCommon";
|
||||
$lang->action->dynamicAction->story['estimated'] = "估算$lang->SRCommon";
|
||||
|
||||
$lang->action->dynamicAction->execution['opened'] = '创建' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['edited'] = '编辑' . $lang->executionCommon;
|
||||
@@ -323,6 +345,8 @@ $lang->action->dynamicAction->execution['undeleted'] = '还原' . $lang->executi
|
||||
$lang->action->dynamicAction->execution['hidden'] = '隐藏' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['moved'] = '导入任务';
|
||||
|
||||
$lang->action->dynamicAction->team['managedTeam'] = '维护团队';
|
||||
|
||||
$lang->action->dynamicAction->task['opened'] = '创建任务';
|
||||
$lang->action->dynamicAction->task['edited'] = '编辑任务';
|
||||
$lang->action->dynamicAction->task['commented'] = '备注任务';
|
||||
@@ -352,8 +376,9 @@ $lang->action->dynamicAction->task['hidden'] = '隐藏任务';
|
||||
$lang->action->dynamicAction->task['svncommited'] = 'SVN提交';
|
||||
$lang->action->dynamicAction->task['gitcommited'] = 'GIT提交';
|
||||
|
||||
$lang->action->dynamicAction->build['opened'] = '创建版本';
|
||||
$lang->action->dynamicAction->build['edited'] = '编辑版本';
|
||||
$lang->action->dynamicAction->build['opened'] = '创建版本';
|
||||
$lang->action->dynamicAction->build['edited'] = '编辑版本';
|
||||
$lang->action->dynamicAction->build['deleted'] = '删除版本';
|
||||
|
||||
$lang->action->dynamicAction->bug['opened'] = '创建Bug';
|
||||
$lang->action->dynamicAction->bug['edited'] = '编辑Bug';
|
||||
@@ -411,6 +436,7 @@ $lang->action->dynamicAction->caselib['hidden'] = '隐藏用例库';
|
||||
|
||||
$lang->action->dynamicAction->doclib['created'] = '创建文档库';
|
||||
$lang->action->dynamicAction->doclib['edited'] = '编辑文档库';
|
||||
$lang->action->dynamicAction->doclib['deleted'] = '删除文档库';
|
||||
|
||||
$lang->action->dynamicAction->doc['created'] = '创建文档';
|
||||
$lang->action->dynamicAction->doc['edited'] = '编辑文档';
|
||||
@@ -464,6 +490,9 @@ $lang->action->label->risk = '风险|risk|view|riskID=%s';
|
||||
$lang->action->label->issue = '问题|issue|view|issueID=%s';
|
||||
$lang->action->label->design = '设计|design|view|designID=%s';
|
||||
$lang->action->label->stakeholder = '干系人|stakeholder|view|userID=%s';
|
||||
$lang->action->label->opportunity = '机会|opportunity|view|opportunityID=%s';
|
||||
$lang->action->label->trainplan = '培训计划|trainplan|view|trainplanID=%s';
|
||||
$lang->action->label->gapanalysis = '能力差距分析|gapanalysis|view|gapanalysisID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search = new stdclass();
|
||||
|
||||
@@ -101,53 +101,58 @@ $lang->action->objectTypes['stakeholder'] = '干係人';
|
||||
$lang->action->objectTypes['budget'] = '費用估算';
|
||||
$lang->action->objectTypes['entry'] = '應用';
|
||||
$lang->action->objectTypes['webhook'] = 'Webhook';
|
||||
$lang->action->objectTypes['team'] = '團隊';
|
||||
$lang->action->objectTypes['whitelist'] = '白名單';
|
||||
|
||||
/* 用來描述操作歷史記錄。*/
|
||||
$lang->action->desc = new stdclass();
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系統創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系統關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認' . $lang->SRCommon . '變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 確認用例變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 繼續。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 掛起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 記錄工時,消耗 <strong>$extra</strong> 小時。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 編輯工時。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 刪除工時。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暫停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 驗收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 關聯到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解決。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 維護。' . "\n";
|
||||
$lang->action->desc->common = '$date, <strong>$action</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->extra = '$date, <strong>$action</strong> as <strong>$extra</strong> by <strong>$actor</strong>。' . "\n";
|
||||
$lang->action->desc->opened = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->openedbysystem = '$date, 由系統創建。' . "\n";
|
||||
$lang->action->desc->created = '$date, 由 <strong>$actor</strong> 創建。' . "\n";
|
||||
$lang->action->desc->added = '$date, 由 <strong>$actor</strong> 添加。' . "\n";
|
||||
$lang->action->desc->changed = '$date, 由 <strong>$actor</strong> 變更。' . "\n";
|
||||
$lang->action->desc->edited = '$date, 由 <strong>$actor</strong> 編輯。' . "\n";
|
||||
$lang->action->desc->assigned = '$date, 由 <strong>$actor</strong> 指派給 <strong>$extra</strong>。' . "\n";
|
||||
$lang->action->desc->closed = '$date, 由 <strong>$actor</strong> 關閉。' . "\n";
|
||||
$lang->action->desc->closedbysystem = '$date, 由系統關閉。' . "\n";
|
||||
$lang->action->desc->deleted = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->deletedfile = '$date, 由 <strong>$actor</strong> 刪除了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->editfile = '$date, 由 <strong>$actor</strong> 編輯了附件:<strong><i>$extra</i></strong>。' . "\n";
|
||||
$lang->action->desc->erased = '$date, 由 <strong>$actor</strong> 刪除。' . "\n";
|
||||
$lang->action->desc->undeleted = '$date, 由 <strong>$actor</strong> 還原。' . "\n";
|
||||
$lang->action->desc->hidden = '$date, 由 <strong>$actor</strong> 隱藏。' . "\n";
|
||||
$lang->action->desc->commented = '$date, 由 <strong>$actor</strong> 添加備註。' . "\n";
|
||||
$lang->action->desc->activated = '$date, 由 <strong>$actor</strong> 激活。' . "\n";
|
||||
$lang->action->desc->blocked = '$date, 由 <strong>$actor</strong> 阻塞。' . "\n";
|
||||
$lang->action->desc->moved = '$date, 由 <strong>$actor</strong> 移動,之前為 "$extra"。' . "\n";
|
||||
$lang->action->desc->confirmed = '$date, 由 <strong>$actor</strong> 確認' . $lang->SRCommon . '變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->caseconfirmed = '$date, 由 <strong>$actor</strong> 確認用例變動,最新版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->bugconfirmed = '$date, 由 <strong>$actor</strong> 確認Bug。' . "\n";
|
||||
$lang->action->desc->frombug = '$date, 由 <strong>$actor</strong> Bug轉化而來,Bug編號為 <strong>$extra</strong>。';
|
||||
$lang->action->desc->started = '$date, 由 <strong>$actor</strong> 啟動。' . "\n";
|
||||
$lang->action->desc->restarted = '$date, 由 <strong>$actor</strong> 繼續。' . "\n";
|
||||
$lang->action->desc->delayed = '$date, 由 <strong>$actor</strong> 延期。' . "\n";
|
||||
$lang->action->desc->suspended = '$date, 由 <strong>$actor</strong> 掛起。' . "\n";
|
||||
$lang->action->desc->recordestimate = '$date, 由 <strong>$actor</strong> 記錄工時,消耗 <strong>$extra</strong> 小時。';
|
||||
$lang->action->desc->editestimate = '$date, 由 <strong>$actor</strong> 編輯工時。';
|
||||
$lang->action->desc->deleteestimate = '$date, 由 <strong>$actor</strong> 刪除工時。';
|
||||
$lang->action->desc->canceled = '$date, 由 <strong>$actor</strong> 取消。' . "\n";
|
||||
$lang->action->desc->svncommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->gitcommited = '$date, 由 <strong>$actor</strong> 提交代碼,版本為<strong>#$extra</strong>。' . "\n";
|
||||
$lang->action->desc->finished = '$date, 由 <strong>$actor</strong> 完成。' . "\n";
|
||||
$lang->action->desc->paused = '$date, 由 <strong>$actor</strong> 暫停。' . "\n";
|
||||
$lang->action->desc->verified = '$date, 由 <strong>$actor</strong> 驗收。' . "\n";
|
||||
$lang->action->desc->diff1 = '修改了 <strong><i>%s</i></strong>,舊值為 "%s",新值為 "%s"。<br />' . "\n";
|
||||
$lang->action->desc->diff2 = '修改了 <strong><i>%s</i></strong>,區別為:' . "\n" . "<blockquote class='textdiff'>%s</blockquote>" . "\n<blockquote class='original'>%s</blockquote>";
|
||||
$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n";
|
||||
$lang->action->desc->linked2bug = '$date 由 <strong>$actor</strong> 關聯到版本 <strong>$extra</strong>';
|
||||
$lang->action->desc->linked2testtask = '$date 由 <strong>$actor</strong> 關聯到測試單 <strong>$extra</strong>';
|
||||
$lang->action->desc->resolved = '$date, 由 <strong>$actor</strong> 解決。' . "\n";
|
||||
$lang->action->desc->managed = '$date, 由 <strong>$actor</strong> 維護。' . "\n";
|
||||
$lang->action->desc->estimated = '$date, 由 <strong>$actor</strong> 估算。' . "\n";
|
||||
$lang->action->desc->run = '$date, 由 <strong>$actor</strong> 執行。' . "\n";
|
||||
|
||||
/* 用來描述和父子任務相關的操作歷史記錄。*/
|
||||
$lang->action->desc->createchildren = '$date, 由 <strong>$actor</strong> 創建子任務 <strong>$extra</strong>。' . "\n";
|
||||
@@ -235,6 +240,8 @@ $lang->action->label->logout = "退出登錄";
|
||||
$lang->action->label->deleteestimate = "刪除了工時";
|
||||
$lang->action->label->linked2build = "關聯了";
|
||||
$lang->action->label->linked2bug = "關聯了";
|
||||
$lang->action->label->linked2testtask = "關聯了";
|
||||
$lang->action->label->unlinkedfromtesttask = "移除了";
|
||||
$lang->action->label->linkchildtask = "關聯子任務";
|
||||
$lang->action->label->unlinkchildrentask = "取消關聯子任務";
|
||||
$lang->action->label->linkparenttask = "關聯到父任務";
|
||||
@@ -242,6 +249,8 @@ $lang->action->label->unlinkparenttask = "從父任務取消關聯";
|
||||
$lang->action->label->batchcreate = "批量創建任務";
|
||||
$lang->action->label->createchildren = "創建子任務";
|
||||
$lang->action->label->managed = "維護";
|
||||
$lang->action->label->managedteam = "維護了";
|
||||
$lang->action->label->managedwhitelist = "維護了";
|
||||
$lang->action->label->deletechildrentask = "刪除子任務";
|
||||
$lang->action->label->createchildrenstory = "創建子需求";
|
||||
$lang->action->label->linkchildstory = "關聯子需求";
|
||||
@@ -251,6 +260,8 @@ $lang->action->label->unlinkparentstory = "從父需求取消關聯";
|
||||
$lang->action->label->deletechildrenstory = "刪除子需求";
|
||||
$lang->action->label->tracked = '跟蹤了';
|
||||
$lang->action->label->hangup = '掛起了';
|
||||
$lang->action->label->run = '執行了';
|
||||
$lang->action->label->estimated = '估算了';
|
||||
|
||||
/* 動態信息按照對象分組 */
|
||||
$lang->action->dynamicAction = new stdclass();
|
||||
@@ -293,22 +304,25 @@ $lang->action->dynamicAction->release['changestatus'] = '修改發佈狀態';
|
||||
$lang->action->dynamicAction->release['undeleted'] = '還原發佈';
|
||||
$lang->action->dynamicAction->release['hidden'] = '隱藏發佈';
|
||||
|
||||
$lang->action->dynamicAction->story['opened'] = "創建{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['edited'] = "編輯{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['activated'] = "激活{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['reviewed'] = "評審{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['closed'] = "關閉{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['assigned'] = "指派{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['changed'] = "變更{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2plan'] = "{$lang->SRCommon}關聯計劃";
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = "計劃移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2release'] = "{$lang->SRCommon}關聯發佈";
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = "發佈移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2build'] = "{$lang->SRCommon}關聯版本";
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = "版本移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = '移除項目';
|
||||
$lang->action->dynamicAction->story['undeleted'] = "還原{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['hidden'] = "隱藏{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['opened'] = "創建{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['edited'] = "編輯{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['activated'] = "激活{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['reviewed'] = "評審{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['closed'] = "關閉{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['assigned'] = "指派{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['changed'] = "變更{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2plan'] = "{$lang->SRCommon}關聯計劃";
|
||||
$lang->action->dynamicAction->story['unlinkedfromplan'] = "計劃移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2release'] = "{$lang->SRCommon}關聯發佈";
|
||||
$lang->action->dynamicAction->story['unlinkedfromrelease'] = "發佈移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2build'] = "{$lang->SRCommon}關聯版本";
|
||||
$lang->action->dynamicAction->story['unlinkedfrombuild'] = "版本移除{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['unlinkedfromproject'] = '移除項目';
|
||||
$lang->action->dynamicAction->story['undeleted'] = "還原{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['hidden'] = "隱藏{$lang->SRCommon}";
|
||||
$lang->action->dynamicAction->story['linked2execution'] = "關聯$lang->SRCommon";
|
||||
$lang->action->dynamicAction->story['unlinkedfromexecution'] = "移除$lang->SRCommon";
|
||||
$lang->action->dynamicAction->story['estimated'] = "估算$lang->SRCommon";
|
||||
|
||||
$lang->action->dynamicAction->execution['opened'] = '創建' . $lang->executionCommon;
|
||||
$lang->action->dynamicAction->execution['edited'] = '編輯' . $lang->executionCommon;
|
||||
@@ -352,8 +366,9 @@ $lang->action->dynamicAction->task['hidden'] = '隱藏任務';
|
||||
$lang->action->dynamicAction->task['svncommited'] = 'SVN提交';
|
||||
$lang->action->dynamicAction->task['gitcommited'] = 'GIT提交';
|
||||
|
||||
$lang->action->dynamicAction->build['opened'] = '創建版本';
|
||||
$lang->action->dynamicAction->build['edited'] = '編輯版本';
|
||||
$lang->action->dynamicAction->build['opened'] = '創建版本';
|
||||
$lang->action->dynamicAction->build['edited'] = '編輯版本';
|
||||
$lang->action->dynamicAction->build['deleted'] = '刪除版本';
|
||||
|
||||
$lang->action->dynamicAction->bug['opened'] = '創建Bug';
|
||||
$lang->action->dynamicAction->bug['edited'] = '編輯Bug';
|
||||
@@ -411,6 +426,7 @@ $lang->action->dynamicAction->caselib['hidden'] = '隱藏用例庫';
|
||||
|
||||
$lang->action->dynamicAction->doclib['created'] = '創建文檔庫';
|
||||
$lang->action->dynamicAction->doclib['edited'] = '編輯文檔庫';
|
||||
$lang->action->dynamicAction->doclib['deleted'] = '刪除文檔庫';
|
||||
|
||||
$lang->action->dynamicAction->doc['created'] = '創建文檔';
|
||||
$lang->action->dynamicAction->doc['edited'] = '編輯文檔';
|
||||
|
||||
+83
-13
@@ -60,10 +60,11 @@ class actionModel extends model
|
||||
}
|
||||
|
||||
/* Get product project and execution for this object. */
|
||||
$relation = $this->getRelatedFields($action->objectType, $objectID);
|
||||
$action->product = $relation['product'];
|
||||
$action->project = ($actionType == 'unlinkedfromproject' or $actionType == 'linked2project') ? (int)$extra : (int)$relation['project'];
|
||||
$action->execution = ($actionType == 'unlinkedfromexecution' or $actionType == 'linked2execution') ? (int)$extra : (int)$relation['execution'];
|
||||
$relation = $this->getRelatedFields($action->objectType, $objectID, $actionType, $extra);
|
||||
$action->product = (int)$relation['product'];
|
||||
$action->project = (int)$relation['project'];
|
||||
$action->execution = (int)$relation['execution'];
|
||||
|
||||
|
||||
$this->dao->insert(TABLE_ACTION)->data($action)->autoCheck()->exec();
|
||||
$actionID = $this->dbh->lastInsertID();
|
||||
@@ -142,10 +143,12 @@ class actionModel extends model
|
||||
*
|
||||
* @param string $objectType
|
||||
* @param int $objectID
|
||||
* @param string $actionType
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getRelatedFields($objectType, $objectID)
|
||||
public function getRelatedFields($objectType, $objectID, $actionType = '', $extra = '')
|
||||
{
|
||||
$emptyRecord = array('product' => ',0,', 'project' => 0, 'execution' => 0);
|
||||
|
||||
@@ -177,7 +180,7 @@ class actionModel extends model
|
||||
}
|
||||
|
||||
/* Only process these object types. */
|
||||
if(strpos(',story,productplan,release,task,build,bug,case,testtask,doc,issue,risk,', ",{$objectType},") !== false)
|
||||
if(strpos($this->config->action->needGetRelateField, ",{$objectType},") !== false)
|
||||
{
|
||||
if(!isset($this->config->objectTables[$objectType])) return $emptyRecord;
|
||||
|
||||
@@ -185,14 +188,22 @@ class actionModel extends model
|
||||
$fields = '*';
|
||||
if(strpos('story, productplan, case', $objectType) !== false) $fields = 'product';
|
||||
if(strpos('build, bug, testtask, doc', $objectType) !== false) $fields = 'product, project, execution';
|
||||
if(strpos('case, repo', $objectType) !== false) $fields = 'execution';
|
||||
if($objectType == 'release') $fields = 'product, build';
|
||||
if($objectType == 'task') $fields = 'project, execution, story';
|
||||
|
||||
$record = $this->dao->select($fields)->from($this->config->objectTables[$objectType])->where('id')->eq($objectID)->fetch();
|
||||
if($objectType != 'team') $record = $this->dao->select($fields)->from($this->config->objectTables[$objectType])->where('id')->eq($objectID)->fetch();
|
||||
|
||||
/* Process story, release and task. */
|
||||
if($objectType == 'story') $record->project = $this->dao->select('project')->from(TABLE_PROJECTSTORY)->where('story')->eq($objectID)->orderBy('project_desc')->limit(1)->fetch('project');
|
||||
if($objectType == 'story') $record->project = $this->dao->select('project')->from(TABLE_PROJECTSTORY)->where('story')->eq($objectID)->orderBy('project_desc')->limit(1)->fetch('project');
|
||||
if($objectType == 'release') $record->project = $this->dao->select('project')->from(TABLE_BUILD)->where('id')->eq($record->build)->fetch('project');
|
||||
if($objectType == 'team')
|
||||
{
|
||||
$team = $this->dao->select('type')->from(TABLE_PROJECT)->where('id')->eq($objectID)->fetch();
|
||||
$type = $team->type == 'project' ? 'project' : 'execution';
|
||||
$record = new stdclass();
|
||||
$record->$type = $objectID;
|
||||
}
|
||||
if($objectType == 'task')
|
||||
{
|
||||
if($record->story != 0)
|
||||
@@ -207,6 +218,32 @@ class actionModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
if($objectType == 'story' and ($actionType == 'linked2build' or $actionType == 'unlinkedfrombuild'))
|
||||
{
|
||||
$build = $this->dao->select('project,execution')->from(TABLE_BUILD)->where('id')->eq((int)$extra)->fetch();
|
||||
$record->project = $build->project;
|
||||
$record->execution = $build->execution;
|
||||
}
|
||||
|
||||
if($objectType == 'story' and $actionType == 'estimated')
|
||||
{
|
||||
$record->project = $this->dao->select('project')->from(TABLE_EXECUTION)->where('id')->eq((int)$extra)->fetch('project');
|
||||
$record->execution = (int)$extra;
|
||||
}
|
||||
|
||||
if($objectType == 'case' and (strpos(',linked2testtask,unlinkedfromtesttask,assigned,run,', ',' . $actionType . ',') !== false) and (int)$extra)
|
||||
{
|
||||
$testtask = $this->dao->select('project,execution')->from(TABLE_TESTTASK)->where('id')->eq((int)$extra)->fetch();
|
||||
$record->project = $testtask->project;
|
||||
$record->execution = $testtask->execution;
|
||||
}
|
||||
|
||||
if($objectType == 'whitelist' and $extra == 'product') $record->product = $objectID;
|
||||
if($objectType == 'whitelist' and $extra == 'project') $record->project = $objectID;
|
||||
if($objectType == 'whitelist' and ($extra == 'sprint' or $extra == 'stage')) $record->execution = $objectID;
|
||||
if($actionType == 'unlinkedfromproject' or $actionType == 'linked2project') $record->project = (int)$extra ;
|
||||
if($actionType == 'unlinkedfromexecution' or $actionType == 'linked2execution') $record->execution = (int)$extra;
|
||||
|
||||
if($record)
|
||||
{
|
||||
$record = (array)$record;
|
||||
@@ -597,7 +634,11 @@ class actionModel extends model
|
||||
*/
|
||||
if(empty($desc))
|
||||
{
|
||||
if(isset($this->lang->$objectType) && isset($this->lang->$objectType->action->$actionType))
|
||||
if($action->objectType == 'story' and $action->action == 'reviewed' and strpos($action->extra, ',') !== false)
|
||||
{
|
||||
$desc = $this->lang->$objectType->action->rejectreviewed;
|
||||
}
|
||||
elseif(isset($this->lang->$objectType) && isset($this->lang->$objectType->action->$actionType))
|
||||
{
|
||||
$desc = $this->lang->$objectType->action->$actionType;
|
||||
}
|
||||
@@ -638,14 +679,23 @@ class actionModel extends model
|
||||
/* Fix bug #741. */
|
||||
if(isset($desc['extra'])) $desc['extra'] = $this->lang->$objectType->{$desc['extra']};
|
||||
|
||||
$actionDesc = '';
|
||||
if(isset($desc['extra'][$extra]))
|
||||
{
|
||||
echo str_replace('$extra', $desc['extra'][$extra], $desc['main']);
|
||||
$actionDesc = str_replace('$extra', $desc['extra'][$extra], $desc['main']);
|
||||
}
|
||||
else
|
||||
{
|
||||
echo str_replace('$extra', $action->extra, $desc['main']);
|
||||
$actionDesc = str_replace('$extra', $action->extra, $desc['main']);
|
||||
}
|
||||
|
||||
if($action->objectType == 'story' and $action->action = 'reviewed' and strpos($action->extra, ',') !== false)
|
||||
{
|
||||
list($extra, $reason) = explode(',', $extra);
|
||||
$desc['reason'] = $this->lang->$objectType->{$desc['reason']};
|
||||
$actionDesc = str_replace(array('$extra', '$reason'), array($desc['extra'][$extra], $desc['reason'][$reason]), $desc['main']);
|
||||
}
|
||||
echo $actionDesc;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -701,7 +751,7 @@ class actionModel extends model
|
||||
if(is_numeric($projectID)) $executions = $this->loadModel('execution')->getPairs($projectID);
|
||||
|
||||
$this->loadModel('doc');
|
||||
$libs = $this->doc->getLibs('all');
|
||||
$libs = $this->doc->getLibs('includeDeleted');
|
||||
$docs = $this->doc->getPrivDocs(array_keys($libs), 0, 'all');
|
||||
|
||||
$actionCondition = $this->getActionCondition();
|
||||
@@ -904,7 +954,7 @@ class actionModel extends model
|
||||
}
|
||||
elseif($objectType == 'story')
|
||||
{
|
||||
$objectInfo = $this->dao->select('id,title,type')->from($table)->where('id')->in($objectIds)->fetchAll();
|
||||
$objectInfo = $this->dao->select('id,title,type')->from($table)->where('id')->in($objectIds)->fetchAll();
|
||||
foreach($objectInfo as $object)
|
||||
{
|
||||
$objectName[$object->id] = $object->title;
|
||||
@@ -912,6 +962,19 @@ class actionModel extends model
|
||||
}
|
||||
$objectProject = array();
|
||||
}
|
||||
elseif($objectType == 'team')
|
||||
{
|
||||
$objectInfo = $this->dao->select('id,team,type')->from(TABLE_PROJECT)
|
||||
->where('id')->in($objectIds)
|
||||
->fetchAll();
|
||||
|
||||
$objectProject = array();
|
||||
foreach($objectInfo as $object)
|
||||
{
|
||||
$objectName[$object->id] = $object->team;
|
||||
if($object->type == 'project') $objectProject[$object->id] = $object->id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$objectName = $this->dao->select("id, $field AS name")->from($table)->where('id')->in($objectIds)->fetchPairs();
|
||||
@@ -989,6 +1052,13 @@ class actionModel extends model
|
||||
$action->objectLink = helper::createLink($moduleName, $methodName, sprintf($vars, $action->objectID), '', '', $projectID);
|
||||
$action->objectLabel = $objectLabel;
|
||||
}
|
||||
elseif($action->objectType == 'team')
|
||||
{
|
||||
$action->objectLink = '';
|
||||
if($action->project) $action->objectLink = helper::createLink('project', 'manageMembers', 'projectID=' . $action->project);
|
||||
if($action->execution) $action->objectLink = helper::createLink('execution', 'team', 'executionID=' . $action->execution);
|
||||
$action->objectLabel = zget($this->lang->action->objectTypes, $action->objectLabel);
|
||||
}
|
||||
else
|
||||
{
|
||||
$action->objectLink = '';
|
||||
|
||||
@@ -1094,7 +1094,7 @@ class block extends control
|
||||
}
|
||||
|
||||
/* Get bugs. */
|
||||
$bugs = $this->dao->select("project, status, count(status) as totalBugs, count(status = 'active' or null) as activeBugs, count(resolvedDate like '{$yesterday}%' or null) as yesterdayResolved")->from(TABLE_BUG)
|
||||
$bugs = $this->dao->select("project, count(status) as totalBugs, count(status = 'active' or null) as activeBugs, count(resolvedDate like '{$yesterday}%' or null) as yesterdayResolved")->from(TABLE_BUG)
|
||||
->where('project')->in($executionIdList)
|
||||
->andWhere('deleted')->eq(0)
|
||||
->groupBy('project')
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<?php
|
||||
$appid = isset($_GET['entry']) ? "class='app-btn' data-id='{$this->get->entry}'" : '';
|
||||
$productViewLink = $this->createLink('product', 'browse', "productID={$testtask->product}");
|
||||
$buildViewLink = $this->createLink('build', 'view', "buildID={$testtask->execution}");
|
||||
$buildViewLink = $this->createLink('build', 'view', "buildID={$testtask->build}");
|
||||
$testtaskViewLink = $this->createLink('testtask', 'view', "testtaskID={$testtask->id}");
|
||||
?>
|
||||
<tr class='text-center' <?php echo $appid?>>
|
||||
|
||||
+18
-17
@@ -12,9 +12,9 @@
|
||||
class branch extends control
|
||||
{
|
||||
/**
|
||||
* Manage branch
|
||||
*
|
||||
* @param int $productID
|
||||
* Manage branch
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -24,7 +24,8 @@ class branch extends control
|
||||
|
||||
if($_POST)
|
||||
{
|
||||
$this->branch->manage($productID);
|
||||
$newBranches = $this->branch->manage($productID);
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'idList' => $newBranches));
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
@@ -40,7 +41,7 @@ class branch extends control
|
||||
|
||||
/**
|
||||
* Sort branch.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -51,12 +52,12 @@ class branch extends control
|
||||
|
||||
/**
|
||||
* Ajax get drop menu.
|
||||
*
|
||||
* @param int $productID
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $branch
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @param string $extra
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @param string $extra
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -77,10 +78,10 @@ class branch extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete branch
|
||||
*
|
||||
* @param int $branchID
|
||||
* @param string $confirm
|
||||
* Delete branch
|
||||
*
|
||||
* @param int $branchID
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -100,9 +101,9 @@ class branch extends control
|
||||
|
||||
/**
|
||||
* Ajax get branches.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $oldBranch
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $oldBranch
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -98,7 +98,8 @@ class branchModel extends model
|
||||
public function manage($productID)
|
||||
{
|
||||
$oldBranches = $this->getPairs($productID, 'noempty');
|
||||
$data = fixer::input('post')->get();
|
||||
$data = fixer::input('post')->get();
|
||||
|
||||
if(isset($data->branch))
|
||||
{
|
||||
foreach($data->branch as $branchID => $branch)
|
||||
@@ -106,13 +107,17 @@ class branchModel extends model
|
||||
if($oldBranches[$branchID] != $branch) $this->dao->update(TABLE_BRANCH)->set('name')->eq($branch)->where('id')->eq($branchID)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
$branches = array();
|
||||
foreach($data->newbranch as $i => $branch)
|
||||
{
|
||||
if(empty($branch)) continue;
|
||||
$this->dao->insert(TABLE_BRANCH)->set('name')->eq($branch)->set('product')->eq($productID)->set('`order`')->eq(count($data->branch) + $i + 1)->exec();
|
||||
$branches[] = $this->dao->lastInsertId();
|
||||
}
|
||||
|
||||
return dao::isError();
|
||||
if(dao::isError()) return false;
|
||||
return $branches;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -385,6 +385,9 @@ class bug extends control
|
||||
|
||||
$this->executeHooks($bugID);
|
||||
|
||||
/* Return bug id when call the API. */
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $bugID));
|
||||
|
||||
/* If link from no head then reload. */
|
||||
if(isonlybody()) $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => 'parent'));
|
||||
|
||||
@@ -613,6 +616,13 @@ class bug extends control
|
||||
{
|
||||
$actions = $this->bug->batchCreate($productID, $branch);
|
||||
|
||||
/* Return bug id list when call the API. */
|
||||
if($this->viewType == 'json')
|
||||
{
|
||||
$bugIDList = array_keys($actions);
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'idList' => $bugIDList));
|
||||
}
|
||||
|
||||
setcookie('bugModule', 0, 0, $this->config->webRoot, '', $this->config->cookieSecure, false);
|
||||
die(js::locate($this->createLink('bug', 'browse', "productID={$productID}&branch=$branch&browseType=unclosed¶m=0&orderBy=id_desc"), 'parent'));
|
||||
}
|
||||
@@ -878,6 +888,7 @@ class bug extends control
|
||||
$this->view->product = $product;
|
||||
$this->view->productName = $this->products[$productID];
|
||||
$this->view->plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch);
|
||||
$this->view->projects = array(0 => '') + $this->product->getProjectPairsByProduct($productID, $bug->branch);
|
||||
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $bug->branch);
|
||||
$this->view->currentModuleID = $currentModuleID;
|
||||
$this->view->executions = array(0 => '') + $this->product->getExecutionPairsByProduct($bug->product, $bug->branch ? "0,{$bug->branch}" : 0, 'id_desc', $projectID);
|
||||
|
||||
@@ -550,7 +550,7 @@ function notice()
|
||||
var branch = $('#branch').val();
|
||||
if(typeof(branch) == 'undefined') branch = 0;
|
||||
var link = createLink('release', 'create', 'productID=' + $('#product').val() + '&branch=' + branch);
|
||||
link += config.requestType == 'GET' ? '&onlybody=yes' : '?onlybody=yes';
|
||||
if(config.onlybody != 'yes') link += config.requestType == 'GET' ? '&onlybody=yes' : '?onlybody=yes';
|
||||
html += '<a href="' + link + '" data-toggle="modal" data-type="iframe" style="padding-right:5px">' + createBuild + '</a> ';
|
||||
html += '<a href="javascript:loadProductBuilds(' + $('#product').val() + ')">' + refresh + '</a>';
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
$(function()
|
||||
{
|
||||
$('.main-actions-holder').css('height', '0px');
|
||||
var $xuanAction = "<div class='xuancard-actions fixed'>";
|
||||
var xuanAction = "<div class='xuancard-actions fixed'>";
|
||||
$('.main-col div.main-actions .btn-toolbar a').each(function(){
|
||||
var $that = $(this);
|
||||
|
||||
@@ -14,7 +14,7 @@ $(function()
|
||||
|
||||
if(href.indexOf('createCase') >= 0 || href.indexOf('toStory') >= 0 || href.indexOf('create') >= 0 || href.indexOf('delete') >= 0) return true;
|
||||
|
||||
if($that.hasClass('iframe'))
|
||||
if($that.hasClass('iframe'))
|
||||
{
|
||||
url = href;
|
||||
target = '';
|
||||
@@ -25,10 +25,11 @@ $(function()
|
||||
target = " target='_blank'";
|
||||
}
|
||||
|
||||
$xuanAction += "<a href='" + url + "'" + title + target + btnClass + '>' + action + "</a>";
|
||||
xuanAction += "<a href='" + url + "'" + title + target + btnClass + '>' + action + "</a>";
|
||||
});
|
||||
|
||||
$xuanAction += '</div>';
|
||||
$('#footer').replaceWith($xuanAction);
|
||||
xuanAction += '</div>';
|
||||
|
||||
$('body').append(xuanAction);
|
||||
$('.xuancard-actions a.iframe').modalTrigger();
|
||||
})
|
||||
|
||||
@@ -18,7 +18,7 @@ $lang->bug->productplan = 'Plan';
|
||||
$lang->bug->module = 'Modul';
|
||||
$lang->bug->moduleAB = 'Modul';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->execution = $lang->executionCommon;
|
||||
$lang->bug->execution = $lang->execution->common;
|
||||
$lang->bug->story = 'Story';
|
||||
$lang->bug->storyVersion = 'Story Version';
|
||||
$lang->bug->color = 'Farbe des Titels';
|
||||
|
||||
@@ -18,7 +18,7 @@ $lang->bug->productplan = 'Plan';
|
||||
$lang->bug->module = 'Module';
|
||||
$lang->bug->moduleAB = 'Module';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->execution = $lang->executionCommon;
|
||||
$lang->bug->execution = $lang->execution->common;
|
||||
$lang->bug->story = 'Story';
|
||||
$lang->bug->storyVersion = 'Story Version';
|
||||
$lang->bug->color = 'Color';
|
||||
|
||||
@@ -18,7 +18,7 @@ $lang->bug->productplan = 'Plan';
|
||||
$lang->bug->module = 'Module';
|
||||
$lang->bug->moduleAB = 'Module';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->execution = $lang->executionCommon;
|
||||
$lang->bug->execution = $lang->execution->common;
|
||||
$lang->bug->story = 'Story';
|
||||
$lang->bug->storyVersion = 'Version Story';
|
||||
$lang->bug->color = 'Couleur';
|
||||
|
||||
@@ -18,7 +18,7 @@ $lang->bug->productplan = 'Kế hoạch';
|
||||
$lang->bug->module = 'Module';
|
||||
$lang->bug->moduleAB = 'Module';
|
||||
$lang->bug->project = 'Project';
|
||||
$lang->bug->execution = $lang->executionCommon;
|
||||
$lang->bug->execution = $lang->execution->common;
|
||||
$lang->bug->story = 'Câu chuyện';
|
||||
$lang->bug->storyVersion = 'Phiên bản câu chuyện';
|
||||
$lang->bug->color = 'Màu';
|
||||
|
||||
@@ -18,7 +18,7 @@ $lang->bug->productplan = '所属' . '计划';
|
||||
$lang->bug->module = '所属模块';
|
||||
$lang->bug->moduleAB = '模块';
|
||||
$lang->bug->project = '所属项目';
|
||||
$lang->bug->execution = '所属' . $lang->executionCommon;
|
||||
$lang->bug->execution = '所属' . $lang->execution->common;
|
||||
$lang->bug->story = "相关需求";
|
||||
$lang->bug->storyVersion = "{$lang->SRCommon}版本";
|
||||
$lang->bug->color = '标题颜色';
|
||||
|
||||
@@ -160,6 +160,7 @@ $lang->bug->createBuild = '創建';
|
||||
/* legend列表。*/
|
||||
$lang->bug->legendBasicInfo = '基本信息';
|
||||
$lang->bug->legendAttatch = '附件';
|
||||
$lang->bug->legendPRJExecStoryTask = "項目/" . $lang->executionCommon . "/{$lang->SRCommon}/任務";
|
||||
$lang->bug->legendExecStoryTask = $lang->executionCommon . "/{$lang->SRCommon}/任務";
|
||||
$lang->bug->lblTypeAndSeverity = '類型/嚴重程度';
|
||||
$lang->bug->lblSystemBrowserAndHardware = '系統/瀏覽器';
|
||||
|
||||
@@ -161,7 +161,7 @@ class bugModel extends model
|
||||
$bug->openedBy = $this->app->user->account;
|
||||
$bug->openedDate = $now;
|
||||
$bug->product = (int)$productID;
|
||||
$bug->branch = (int)$data->branches[$i];
|
||||
$bug->branch = isset($data->branches) ? (int)$data->branches[$i] : 0;
|
||||
$bug->module = (int)$data->modules[$i];
|
||||
$bug->execution = (int)$data->executions[$i];
|
||||
$bug->openedBuild = implode(',', $data->openedBuilds[$i]);
|
||||
@@ -627,6 +627,7 @@ class bugModel extends model
|
||||
->checkIF($bug->resolvedBy, 'resolution', 'notempty')
|
||||
->checkIF($bug->closedBy, 'resolution', 'notempty')
|
||||
->checkIF($bug->resolution == 'duplicate', 'duplicateBug', 'notempty')
|
||||
->checkIF($bug->resolution == 'fixed', 'resolvedBuild','notempty')
|
||||
->where('id')->eq((int)$bugID)
|
||||
->exec();
|
||||
|
||||
@@ -2646,7 +2647,7 @@ class bugModel extends model
|
||||
$class .= ' c-user';
|
||||
$title = "title='" . zget($users, $bug->resolvedBy) . "'";
|
||||
}
|
||||
if($id == 'deadline' && isset($bug->delay)) $class .= ' delayed';
|
||||
if($id == 'deadline' && isset($bug->delay) && $bug->status == 'active') $class .= ' delayed';
|
||||
if(strpos(',type,execution,story,plan,task,openedBuild,', ",{$id},") !== false) $class .= ' text-ellipsis';
|
||||
|
||||
echo "<td class='" . $class . "' $title>";
|
||||
|
||||
@@ -172,9 +172,15 @@ js::set('systemMode' , $config->systemMode);
|
||||
</table>
|
||||
</div>
|
||||
<div class='detail'>
|
||||
<div class='detail-title'><?php echo $lang->bug->legendExecStoryTask;?></div>
|
||||
<div class='detail-title'><?php echo $config->systemMode == 'class' ? $lang->bug->legendExecStoryTask : $lang->bug->legendPRJExecStoryTask;?></div>
|
||||
<table class='table table-form'>
|
||||
<tbody>
|
||||
<?php if($config->systemMode == 'new'):?>
|
||||
<tr>
|
||||
<th class='w-85px'><?php echo $lang->bug->project;?></th>
|
||||
<td><span id='projectBox'><?php echo html::select('project', $projects, $bug->project, "class='form-control chosen' onchange='loadProductExecutions($bug->product, this.value)'");?></span></td>
|
||||
</tr>
|
||||
<?php endif;?>
|
||||
<tr>
|
||||
<th class='w-85px'><?php echo $lang->bug->execution;?></th>
|
||||
<td><span id='executionIdBox'><?php echo html::select('execution', $executions, $bug->execution, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?></span></td>
|
||||
|
||||
@@ -37,6 +37,7 @@ class build extends control
|
||||
|
||||
$this->executeHooks($buildID);
|
||||
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $buildID));
|
||||
if(isonlybody()) $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'closeModal' => true, 'callback' => "parent.loadExecutionBuilds($executionID)")); // Code for task #5126.
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('build', 'view', "buildID=$buildID")));
|
||||
}
|
||||
@@ -252,6 +253,14 @@ class build extends control
|
||||
$this->view->type = $type;
|
||||
$this->view->bugPager = $bugPager;
|
||||
$this->view->branchName = $build->productType == 'normal' ? '' : $this->loadModel('branch')->getById($build->branch);
|
||||
|
||||
if($this->app->getViewType() == 'json')
|
||||
{
|
||||
unset($this->view->storyPager);
|
||||
unset($this->view->generatedBugPager);
|
||||
unset($this->view->bugPager);
|
||||
}
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
@@ -384,7 +393,7 @@ class build extends control
|
||||
$html .= html::a("javascript:loadExecutionBuilds($executionID)", $this->lang->refresh);
|
||||
die($html);
|
||||
}
|
||||
die(html::select('build', $builds, $build, "class='form-control'"));
|
||||
die(html::select('build', array('') + $builds, $build, "class='form-control' onchange='loadTestReports(this.value)'"));
|
||||
}
|
||||
if($varName == 'dropdownList')
|
||||
{
|
||||
|
||||
@@ -42,6 +42,14 @@ class caselib extends control
|
||||
$this->send($response);
|
||||
}
|
||||
$this->loadModel('action')->create('caselib', $libID, 'opened');
|
||||
|
||||
/* Return lib id when call the API. */
|
||||
if($this->viewType == 'json')
|
||||
{
|
||||
$response['id'] = $libID;
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
$response['locate'] = $this->createLink('caselib', 'browse', "libID=$libID");
|
||||
$this->send($response);
|
||||
}
|
||||
|
||||
@@ -182,10 +182,10 @@ $lang->project->homeMenu->browse = array('link' => ($config->systemMode == 'new'
|
||||
/* Scrum menu. */
|
||||
$lang->scrum->menu = new stdclass();
|
||||
$lang->scrum->menu->index = array('link' => "{$lang->dashboard}|project|index|project=%s");
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s");
|
||||
$lang->scrum->menu->execution = array('link' => "$lang->executionCommon|project|execution|status=all&projectID=%s", 'exclude' => 'execution-testreport');
|
||||
$lang->scrum->menu->story = array('link' => "$lang->SRCommon|projectstory|story|projectID=%s", 'subModule' => 'projectstory,tree', 'alias' => 'story,track');
|
||||
$lang->scrum->menu->doc = array('link' => "{$lang->doc->common}|doc|objectLibs|type=project&objectID=%s", 'subModule' => 'doc');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport', 'alias' => 'bug,testtask,testcase,testreport');
|
||||
$lang->scrum->menu->qa = array('link' => "{$lang->qa->common}|project|bug|projectID=%s", 'subModule' => 'testcase,testtask,bug,testreport,execution', 'alias' => 'bug,testtask,testcase,testreport', 'exclude' => 'execution-create,execution-batchedit');
|
||||
$lang->scrum->menu->devops = array('link' => "{$lang->repo->common}|repo|browse|repoID=0&branchID=&objectID=%s", 'subModule' => 'repo');
|
||||
$lang->scrum->menu->build = array('link' => "{$lang->build->common}|project|build|project=%s");
|
||||
$lang->scrum->menu->release = array('link' => "{$lang->release->common}|projectrelease|browse|project=%s", 'subModule' => 'projectrelease');
|
||||
@@ -498,8 +498,10 @@ $lang->navGroup->milestone = 'project';
|
||||
$lang->navGroup->execution = 'execution';
|
||||
$lang->navGroup->task = 'execution';
|
||||
$lang->navGroup->build = 'execution';
|
||||
$lang->navGroup->team = 'execution';
|
||||
|
||||
$lang->navGroup->doc = 'doc';
|
||||
$lang->navGroup->doc = 'doc';
|
||||
$lang->navGroup->doclib = 'doc';
|
||||
|
||||
$lang->navGroup->report = 'report';
|
||||
|
||||
|
||||
+32
-23
@@ -1399,16 +1399,19 @@ EOD;
|
||||
if(strtolower($key) == 'editedby') continue;
|
||||
if(strtolower($key) == 'editeddate') continue;
|
||||
if(strtolower($key) == 'uid') continue;
|
||||
if(strtolower($key) == 'finisheddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'canceleddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'closeddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'finisheddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'canceleddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'hangupeddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'lastcheckeddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'activateddate' && $value == '') continue;
|
||||
if(strtolower($key) == 'closeddate' && $value == '') continue;
|
||||
|
||||
if(isset($old->$key) and $value != stripslashes($old->$key))
|
||||
{
|
||||
$diff = '';
|
||||
if(substr_count($value, "\n") > 1 or
|
||||
substr_count($old->$key, "\n") > 1 or
|
||||
strpos('name,title,desc,spec,steps,content,digest,verify,report', strtolower($key)) !== false)
|
||||
strpos('name,title,desc,spec,steps,content,digest,verify,report,analysis,summary,prevention,resolution', strtolower($key)) !== false)
|
||||
{
|
||||
$diff = commonModel::diff($old->$key, $value);
|
||||
}
|
||||
@@ -1522,22 +1525,25 @@ EOD;
|
||||
$preAndNextObject->next = '';
|
||||
|
||||
$preObj = false;
|
||||
foreach($existsObjectList['objectList'] as $id => $object)
|
||||
if(isset($existsObjectList['objectList']))
|
||||
{
|
||||
/* Get next object. */
|
||||
if($preObj === true)
|
||||
foreach($existsObjectList['objectList'] as $id => $object)
|
||||
{
|
||||
$preAndNextObject->next = $object;
|
||||
break;
|
||||
}
|
||||
/* Get next object. */
|
||||
if($preObj === true)
|
||||
{
|
||||
$preAndNextObject->next = $object;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Get pre object. */
|
||||
if($id == $objectID)
|
||||
{
|
||||
if($preObj) $preAndNextObject->pre = $preObj;
|
||||
$preObj = true;
|
||||
/* Get pre object. */
|
||||
if($id == $objectID)
|
||||
{
|
||||
if($preObj) $preAndNextObject->pre = $preObj;
|
||||
$preObj = true;
|
||||
}
|
||||
if($preObj !== true) $preObj = $object;
|
||||
}
|
||||
if($preObj !== true) $preObj = $object;
|
||||
}
|
||||
|
||||
return $preAndNextObject;
|
||||
@@ -1717,7 +1723,7 @@ EOD;
|
||||
$method = $this->app->rawMethod;
|
||||
}
|
||||
|
||||
if(!empty($this->app->user->modifyPassword) and (($module != 'my' or $method != 'changepassword') and ($module != 'user' or $method != 'logout'))) die(js::locate(helper::createLink('my', 'changepassword', '', '', true)));
|
||||
if(!empty($this->app->user->modifyPassword) and (($module != 'user' or $method != 'deny') and ($module != 'my' or $method != 'changepassword') and ($module != 'user' or $method != 'logout'))) die(js::locate(helper::createLink('my', 'changepassword', '', '', true)));
|
||||
if($this->isOpenMethod($module, $method)) return true;
|
||||
if(!$this->loadModel('user')->isLogon() and $this->server->php_auth_user) $this->user->identifyByPhpAuth();
|
||||
if(!$this->loadModel('user')->isLogon() and $this->cookie->za) $this->user->identifyByCookie();
|
||||
@@ -2347,16 +2353,19 @@ EOD;
|
||||
*/
|
||||
static public function setMenuVars($moduleName, $objectID, $params = array())
|
||||
{
|
||||
global $lang;
|
||||
global $app, $lang;
|
||||
|
||||
foreach($lang->$moduleName->menu as $label => $menu)
|
||||
$menuKey = 'menu';
|
||||
if($app->viewType == 'mhtml') $menuKey = 'webMenu';
|
||||
|
||||
foreach($lang->$moduleName->$menuKey as $label => $menu)
|
||||
{
|
||||
$lang->$moduleName->menu->$label = self::setMenuVarsEx($menu, $objectID, $params);
|
||||
$lang->$moduleName->$menuKey->$label = self::setMenuVarsEx($menu, $objectID, $params);
|
||||
if(isset($menu['subMenu']))
|
||||
{
|
||||
foreach($menu['subMenu'] as $key1 => $subMenu)
|
||||
{
|
||||
$lang->$moduleName->menu->{$label}['subMenu']->$key1 = self::setMenuVarsEx($subMenu, $objectID, $params);
|
||||
$lang->$moduleName->$menuKey->{$label}['subMenu']->$key1 = self::setMenuVarsEx($subMenu, $objectID, $params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2364,13 +2373,13 @@ EOD;
|
||||
|
||||
foreach($menu['dropMenu'] as $key2 => $dropMenu)
|
||||
{
|
||||
$lang->$moduleName->menu->{$label}['dropMenu']->$key2 = self::setMenuVarsEx($dropMenu, $objectID, $params);
|
||||
$lang->$moduleName->$menuKey->{$label}['dropMenu']->$key2 = self::setMenuVarsEx($dropMenu, $objectID, $params);
|
||||
|
||||
if(!isset($dropMenu['subMenu'])) continue;
|
||||
|
||||
foreach($dropMenu['subMenu'] as $key3 => $subMenu)
|
||||
{
|
||||
$lang->$moduleName->menu->{$label}['dropMenu']->$key3 = self::setMenuVarsEx($subMenu, $objectID, $params);
|
||||
$lang->$moduleName->$menuKey->{$label}['dropMenu']->$key3 = self::setMenuVarsEx($subMenu, $objectID, $params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -70,8 +70,9 @@ $extHookFiles = glob($extHookRule);
|
||||
if($extHookFiles) foreach($extHookFiles as $extHookFile) include $extHookFile;
|
||||
?>
|
||||
</head>
|
||||
<?php $singleClass = $this->app->getViewType() == 'xhtml' ? 'allow-self-open' : '';?>
|
||||
<?php if($this->moduleName == 'index' && $this->methodName == 'index' && $this->cookie->hideMenu): ?>
|
||||
<body class='menu-hide'>
|
||||
<body class='menu-hide <?php echo $singleClass;?>'>
|
||||
<?php else: ?>
|
||||
<body>
|
||||
<body class='<?php echo $singleClass;?>'>
|
||||
<?php endif; ?>
|
||||
|
||||
@@ -180,12 +180,16 @@ class company extends control
|
||||
$this->session->set('releaseList', $uri, 'product');
|
||||
$this->session->set('storyList', $uri, 'product');
|
||||
$this->session->set('projectList', $uri, 'project');
|
||||
$this->session->set('riskList', $uri, 'project');
|
||||
$this->session->set('opportunityList', $uri, 'project');
|
||||
$this->session->set('trainplanList', $uri, 'project');
|
||||
$this->session->set('executionList', $uri, 'execution');
|
||||
$this->session->set('taskList', $uri, 'execution');
|
||||
$this->session->set('buildList', $uri, 'execution');
|
||||
$this->session->set('bugList', $uri, 'qa');
|
||||
$this->session->set('caseList', $uri, 'qa');
|
||||
$this->session->set('testtaskList', $uri, 'qa');
|
||||
$this->session->set('effortList', $uri, 'my');
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
$config->custom = new stdClass();
|
||||
$config->custom->canAdd['story'] = 'reasonList,sourceList,priList';
|
||||
$config->custom->canAdd['story'] = 'reasonList,sourceList,priList,categoryList';
|
||||
$config->custom->canAdd['task'] = 'priList,typeList,reasonList';
|
||||
$config->custom->canAdd['bug'] = 'priList,severityList,osList,browserList,typeList,resolutionList';
|
||||
$config->custom->canAdd['testcase'] = 'priList,typeList,stageList,resultList,statusList';
|
||||
|
||||
@@ -211,7 +211,7 @@ class custom extends control
|
||||
$this->view->fieldList = $fieldList;
|
||||
$this->view->dbFields = $dbFields;
|
||||
$this->view->field = $field;
|
||||
$this->view->lang2Set = str_replace('_', '-', $lang);
|
||||
$this->view->lang2Set = str_replace('_', '-', $lang);
|
||||
$this->view->module = $module;
|
||||
$this->view->currentLang = $currentLang;
|
||||
$this->view->canAdd = strpos($this->config->custom->canAdd[$module], $field) !== false;
|
||||
@@ -410,19 +410,6 @@ class custom extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set story concept.
|
||||
*
|
||||
* @param int $key
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setDefaultConcept($key = 0)
|
||||
{
|
||||
$this->loadModel('setting')->setItem('system.custom.URSR', $key);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete story concept.
|
||||
*
|
||||
|
||||
@@ -38,7 +38,6 @@ $lang->custom->waterfallCommon = "Waterfall";
|
||||
$lang->custom->buildin = "Buildin";
|
||||
$lang->custom->editStoryConcept = "Edit Story Concept";
|
||||
$lang->custom->setStoryConcept = "Set Story Concept";
|
||||
$lang->custom->setDefaultConcept = "Set Default Concept";
|
||||
$lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
@@ -96,6 +95,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Priority';
|
||||
$lang->custom->story->fields['sourceList'] = 'Source';
|
||||
$lang->custom->story->fields['reasonList'] = 'Close Reason';
|
||||
|
||||
@@ -38,7 +38,6 @@ $lang->custom->waterfallCommon = "Waterfall";
|
||||
$lang->custom->buildin = "Buildin";
|
||||
$lang->custom->editStoryConcept = "Edit Story Concept";
|
||||
$lang->custom->setStoryConcept = "Set Story Concept";
|
||||
$lang->custom->setDefaultConcept = "Set Default Concept";
|
||||
$lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
@@ -96,6 +95,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Priority';
|
||||
$lang->custom->story->fields['sourceList'] = 'Source';
|
||||
$lang->custom->story->fields['reasonList'] = 'Close Reason';
|
||||
|
||||
@@ -38,7 +38,6 @@ $lang->custom->waterfallCommon = "Waterfall";
|
||||
$lang->custom->buildin = "Buildin";
|
||||
$lang->custom->editStoryConcept = "Edit Story Concept";
|
||||
$lang->custom->setStoryConcept = "Set Story Concept";
|
||||
$lang->custom->setDefaultConcept = "Set Default Concept";
|
||||
$lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
@@ -96,6 +95,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Priorité';
|
||||
$lang->custom->story->fields['sourceList'] = 'Source';
|
||||
$lang->custom->story->fields['reasonList'] = 'Raison Fermeture';
|
||||
|
||||
@@ -38,7 +38,6 @@ $lang->custom->waterfallCommon = "Waterfall";
|
||||
$lang->custom->buildin = "Buildin";
|
||||
$lang->custom->editStoryConcept = "Edit Story Concept";
|
||||
$lang->custom->setStoryConcept = "Set Story Concept";
|
||||
$lang->custom->setDefaultConcept = "Set Default Concept";
|
||||
$lang->custom->browseStoryConcept = "List of story concepts";
|
||||
$lang->custom->deleteStoryConcept = "Delete story Concept";
|
||||
$lang->custom->URConcept = "UR Concept";
|
||||
@@ -96,6 +95,7 @@ $lang->custom->project->defaultCurrency = 'Default Currency';
|
||||
$lang->custom->project->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = 'Category';
|
||||
$lang->custom->story->fields['priList'] = 'Ưu tiên';
|
||||
$lang->custom->story->fields['sourceList'] = 'Nguồn';
|
||||
$lang->custom->story->fields['reasonList'] = 'Lý do đóng';
|
||||
|
||||
@@ -38,7 +38,6 @@ $lang->custom->waterfallCommon = "瀑布";
|
||||
$lang->custom->buildin = "系统内置";
|
||||
$lang->custom->editStoryConcept = "编辑需求概念";
|
||||
$lang->custom->setStoryConcept = "设置需求概念";
|
||||
$lang->custom->setDefaultConcept = "设置默认概念";
|
||||
$lang->custom->browseStoryConcept = "需求概念列表";
|
||||
$lang->custom->deleteStoryConcept = "删除需求概念";
|
||||
$lang->custom->URConcept = "用需概念";
|
||||
@@ -96,6 +95,7 @@ $lang->custom->project->defaultCurrency = '默认货币';
|
||||
$lang->custom->project->fields['unitList'] = '预算单位';
|
||||
|
||||
$lang->custom->story = new stdClass();
|
||||
$lang->custom->story->fields['categoryList'] = '类型';
|
||||
$lang->custom->story->fields['priList'] = '优先级';
|
||||
$lang->custom->story->fields['sourceList'] = '来源';
|
||||
$lang->custom->story->fields['reasonList'] = '关闭原因';
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<style>
|
||||
.table-form>tbody>tr>th{text-align: center}
|
||||
.table-form>tbody>tr>th{text-align: center}
|
||||
</style>
|
||||
<div id='mainMenu' class='clearfix'>
|
||||
<div class='pull-right'>
|
||||
@@ -23,9 +23,6 @@
|
||||
<table class='table table-form'>
|
||||
<thead>
|
||||
<tr>
|
||||
<?php if(common::hasPriv('custom', 'setDefaultConcept')):?>
|
||||
<th class='w-60px text-center'><?php echo $lang->custom->default;?> </th>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->URAndSR):?>
|
||||
<th class='text-left'><?php echo $lang->custom->URConcept;?> </th>
|
||||
<?php endif;?>
|
||||
@@ -36,9 +33,6 @@
|
||||
<tbody>
|
||||
<?php foreach($URSRList as $key => $URSR):?>
|
||||
<tr>
|
||||
<?php if(common::hasPriv('custom', 'setDefaultConcept')):?>
|
||||
<td class='text-center'><input type="radio" name='default' value='<?php echo $key;?>' <?php if($key == $config->custom->URSR) echo 'checked';?>></td>
|
||||
<?php endif;?>
|
||||
<?php if($this->config->URAndSR):?>
|
||||
<td class='text-left'><?php echo $URSR['URName'];?></td>
|
||||
<?php endif;?>
|
||||
@@ -54,11 +48,4 @@
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$("input[name='default']").change(function()
|
||||
{
|
||||
var checked = $(this).val();
|
||||
hiddenwin.location.href = createLink('custom', 'setDefaultConcept', 'key=' + checked);
|
||||
})
|
||||
</script>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
+19
-17
@@ -14,8 +14,8 @@ class dept extends control
|
||||
const NEW_CHILD_COUNT = 10;
|
||||
|
||||
/**
|
||||
* Construct function, set menu.
|
||||
*
|
||||
* Construct function, set menu.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -27,8 +27,8 @@ class dept extends control
|
||||
|
||||
/**
|
||||
* Browse a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -47,7 +47,7 @@ class dept extends control
|
||||
|
||||
/**
|
||||
* Update the departments order.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -62,7 +62,7 @@ class dept extends control
|
||||
|
||||
/**
|
||||
* Manage childs.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -70,15 +70,16 @@ class dept extends control
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->dept->manageChild($_POST['parentDeptID'], $_POST['depts']);
|
||||
$deptIDList = $this->dept->manageChild($_POST['parentDeptID'], $_POST['depts']);
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'idList' => $deptIDList));
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit dept.
|
||||
*
|
||||
* @param int $deptID
|
||||
* Edit dept.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -91,7 +92,8 @@ class dept extends control
|
||||
}
|
||||
|
||||
$dept = $this->dept->getById($deptID);
|
||||
$users = $this->loadModel('user')->getPairs('noletter|noclosed|nodeleted|all');
|
||||
$users = $this->loadModel('user')->getPairs('noletter|noclosed|nodeleted|all', $dept->manager, $this->config->maxCount);
|
||||
if(!empty($this->config->user->moreLink)) $this->config->moreLinks["manager"] = $this->config->user->moreLink;
|
||||
|
||||
$this->view->optionMenu = $this->dept->getOptionMenu();
|
||||
|
||||
@@ -107,8 +109,8 @@ class dept extends control
|
||||
|
||||
/**
|
||||
* Delete a department.
|
||||
*
|
||||
* @param int $deptID
|
||||
*
|
||||
* @param int $deptID
|
||||
* @param string $confirm yes|no
|
||||
* @access public
|
||||
* @return void
|
||||
@@ -133,10 +135,10 @@ class dept extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax get users
|
||||
*
|
||||
* @param int $dept
|
||||
* @param string $user
|
||||
* Ajax get users
|
||||
*
|
||||
* @param int $dept
|
||||
* @param string $user
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -318,7 +318,7 @@ class deptModel extends model
|
||||
* @param int $parentDeptID
|
||||
* @param string $childs
|
||||
* @access public
|
||||
* @return void
|
||||
* @return array
|
||||
*/
|
||||
public function manageChild($parentDeptID, $childs)
|
||||
{
|
||||
@@ -335,18 +335,21 @@ class deptModel extends model
|
||||
}
|
||||
|
||||
$i = 1;
|
||||
$deptIDList = array();
|
||||
foreach($childs as $deptID => $deptName)
|
||||
{
|
||||
if(empty($deptName)) continue;
|
||||
if(is_numeric($deptID))
|
||||
{
|
||||
$dept = new stdclass();
|
||||
$dept->name = strip_tags($deptName);
|
||||
$dept->parent = $parentDeptID;
|
||||
$dept->grade = $grade;
|
||||
$dept->order = $this->post->maxOrder + $i * 10;
|
||||
$this->dao->insert(TABLE_DEPT)->data($dept)->exec();
|
||||
$deptID = $this->dao->lastInsertID();
|
||||
$childPath = $parentPath . "$deptID,";
|
||||
$deptID = $this->dao->lastInsertID();
|
||||
$deptIDList[] = $deptID;
|
||||
$childPath = $parentPath . "$deptID,";
|
||||
$this->dao->update(TABLE_DEPT)->set('path')->eq($childPath)->where('id')->eq($deptID)->exec();
|
||||
$i++;
|
||||
}
|
||||
@@ -356,6 +359,8 @@ class deptModel extends model
|
||||
$this->dao->update(TABLE_DEPT)->set('name')->eq(strip_tags($deptName))->where('id')->eq($deptID)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
return $deptIDList;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -133,7 +133,7 @@ class doc extends control
|
||||
if($objectType == 'execution' and $this->post->execution) $objectID = $this->post->execution;
|
||||
if($objectType == 'custom' or $objectType == 'book') $objectID = 0;
|
||||
|
||||
if($objectType == 'execution' and $this->config->systemMode == 'new')
|
||||
if($objectType == 'execution' and $this->config->systemMode == 'new' and $this->app->openApp == 'doc')
|
||||
{
|
||||
$execution = $this->execution->getByID($this->post->execution);
|
||||
$objectType = 'project';
|
||||
@@ -142,6 +142,7 @@ class doc extends control
|
||||
|
||||
$this->action->create('docLib', $libID, 'Created');
|
||||
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $libID));
|
||||
die(js::locate($this->createLink('doc', 'objectLibs', "type=$objectType&objectID=$objectID&libID=$libID"), 'parent.parent'));
|
||||
}
|
||||
else
|
||||
@@ -157,8 +158,8 @@ class doc extends control
|
||||
if($type == 'execution')
|
||||
{
|
||||
$execution = $this->execution->getByID($objectID);
|
||||
$this->lang->doc->execution = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->doc->execution);
|
||||
$this->lang->doc->libTypeList['execution'] = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->doc->libTypeList['execution']);
|
||||
if($execution->type == 'stage') $this->lang->doc->execution = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->doc->execution);
|
||||
if($execution->type == 'stage') $this->lang->doc->libTypeList['execution'] = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->doc->libTypeList['execution']);
|
||||
}
|
||||
|
||||
$libTypeList = $this->lang->doc->libTypeList;
|
||||
@@ -288,6 +289,7 @@ class doc extends control
|
||||
if(!empty($files)) $fileAction = $this->lang->addFiles . join(',', $files) . "\n" ;
|
||||
$this->action->create('doc', $docID, 'Created', $fileAction);
|
||||
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $docID));
|
||||
$objectID = zget($lib, $lib->type, '');
|
||||
$params = "type={$lib->type}&objectID=$objectID&libID={$lib->id}&docID=" . $docResult['id'];
|
||||
$link = $this->createLink('doc', 'objectLibs', $params);
|
||||
@@ -894,7 +896,7 @@ class doc extends control
|
||||
|
||||
if(!$libID) $libID = key($libs);
|
||||
|
||||
$openApp = $this->app->openApp;
|
||||
$openApp = strpos('doc,product,project,execution', $this->app->openApp) !== false ? $this->app->openApp : 'doc';
|
||||
if($openApp != 'doc') $this->loadModel($openApp)->setMenu($objectID);
|
||||
|
||||
/* Set Custom. */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
$(function()
|
||||
{
|
||||
$('.main-actions-holder').css('height', '0px');
|
||||
var $xuanAction = "<div class='xuancard-actions fixed'>";
|
||||
var xuanAction = "<div class='xuancard-actions fixed'>";
|
||||
$('.main-col div.main-actions .btn-toolbar a').each(function(){
|
||||
var $that = $(this);
|
||||
|
||||
@@ -17,10 +17,10 @@ $(function()
|
||||
url = 'xxc:openUrlInDialog/' + encodeURIComponent(sysurl + href);
|
||||
target = " target='_blank'";
|
||||
|
||||
$xuanAction += "<a href='" + url + "'" + title + target + btnClass + '>' + action + "</a>";
|
||||
xuanAction += "<a href='" + url + "'" + title + target + btnClass + '>' + action + "</a>";
|
||||
});
|
||||
|
||||
$xuanAction += '</div>';
|
||||
$('#footer').replaceWith($xuanAction);
|
||||
xuanAction += '</div>';
|
||||
$('body').append(xuanAction);
|
||||
$('.xuancard-actions a.iframe').modalTrigger();
|
||||
})
|
||||
|
||||
@@ -37,10 +37,10 @@ class docModel extends model
|
||||
*/
|
||||
public function getLibs($type = '', $extra = '', $appendLibs = '', $objectID = 0)
|
||||
{
|
||||
if($type == 'all')
|
||||
if($type == 'all' or $type == 'includeDeleted')
|
||||
{
|
||||
$stmt = $this->dao->select('*')->from(TABLE_DOCLIB)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($type == 'all')->where('deleted')->eq(0)->fi()
|
||||
->orderBy('id_desc')
|
||||
->query();
|
||||
}
|
||||
|
||||
+23
-22
@@ -5,19 +5,19 @@
|
||||
* @copyright Copyright 2009-2017 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @license ZPL (http://zpl.pub/page/zplv12.html)
|
||||
* @author Gang Liu <liugang@cnezsoft.com>
|
||||
* @package entry
|
||||
* @package entry
|
||||
* @version $Id$
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
class entry extends control
|
||||
{
|
||||
/**
|
||||
* Browse entries.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* Browse entries.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -36,8 +36,8 @@ class entry extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an entry.
|
||||
*
|
||||
* Create an entry.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -49,6 +49,7 @@ class entry extends control
|
||||
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
$this->loadModel('action')->create('entry', $id, 'created');
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $id));
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')));
|
||||
}
|
||||
|
||||
@@ -61,9 +62,9 @@ class entry extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit an entry.
|
||||
*
|
||||
* @param int $id
|
||||
* Edit an entry.
|
||||
*
|
||||
* @param int $id
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -93,9 +94,9 @@ class entry extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an entry.
|
||||
*
|
||||
* @param int $id
|
||||
* Delete an entry.
|
||||
*
|
||||
* @param int $id
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -108,13 +109,13 @@ class entry extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* Browse logs of an entry.
|
||||
*
|
||||
* @param int $id
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* Browse logs of an entry.
|
||||
*
|
||||
* @param int $id
|
||||
* @param string $orderBy
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -966,6 +966,7 @@ class execution extends control
|
||||
*/
|
||||
public function testreport($executionID = 0, $objectType = 'execution', $extra = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
if($this->app->openApp == 'project') $this->loadModel('project')->setMenu($this->session->project);
|
||||
echo $this->fetch('testreport', 'browse', "objectID=$executionID&objectType=$objectType&extra=$extra&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID");
|
||||
}
|
||||
|
||||
@@ -1287,6 +1288,8 @@ class execution extends control
|
||||
|
||||
$this->executeHooks($executionID);
|
||||
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $executionID));
|
||||
|
||||
if($this->app->openApp == 'doc')
|
||||
{
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('doc', 'objectLibs', "type=execution")));
|
||||
@@ -1901,14 +1904,14 @@ class execution extends control
|
||||
|
||||
if($_POST)
|
||||
{
|
||||
$stories = $this->loadModel('story')->getStories($executionID, 0, 0, $orderBy);
|
||||
$stories = $this->loadModel('story')->getExecutionStories($executionID, 0, 0, $orderBy);
|
||||
$storySpecs = $this->story->getStorySpecs(array_keys($stories));
|
||||
|
||||
$order = 1;
|
||||
foreach($stories as $story) $story->order = $order++;
|
||||
|
||||
$kanbanTasks = $this->execution->getKanbanTasks($executionID, "id");
|
||||
$kanbanBugs = $this->loadModel('bug')->getBugs($executionID);
|
||||
$kanbanBugs = $this->loadModel('bug')->getExecutionBugs($executionID);
|
||||
|
||||
$users = array();
|
||||
$taskAndBugs = array();
|
||||
@@ -1978,7 +1981,7 @@ class execution extends control
|
||||
|
||||
$this->view->hasBurn = $hasBurn;
|
||||
$this->view->datas = $datas;
|
||||
$this->view->chartData = $chartData;
|
||||
$this->view->chartData = isset($chartData) ? $chartData : array();
|
||||
$this->view->storySpecs = $storySpecs;
|
||||
$this->view->realnames = $this->loadModel('user')->getRealNameAndEmails($users);
|
||||
$this->view->executionID = $executionID;
|
||||
@@ -2186,6 +2189,7 @@ class execution extends control
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->execution->manageMembers($executionID);
|
||||
$this->loadModel('action')->create('team', $executionID, 'managedTeam');
|
||||
die(js::locate($this->createLink('execution', 'team', "executionID=$executionID"), 'parent'));
|
||||
}
|
||||
|
||||
@@ -2252,6 +2256,7 @@ class execution extends control
|
||||
$account = $user->account;
|
||||
|
||||
$this->execution->unlinkMember($executionID, $account);
|
||||
if(!dao::isError()) $this->loadModel('action')->create('team', $executionID, 'managedTeam');
|
||||
|
||||
/* if ajax request, send result. */
|
||||
if($this->server->ajax)
|
||||
@@ -2375,7 +2380,7 @@ class execution extends control
|
||||
|
||||
$this->view->object = $object;
|
||||
$this->view->products = $products;
|
||||
$this->view->allStories = empty($allStories) ? $allStories : $allStories[$pageID - 1];;
|
||||
$this->view->allStories = empty($allStories) ? $allStories : $allStories[$pageID - 1];
|
||||
$this->view->pager = $pager;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->productType = $productType;
|
||||
@@ -2713,6 +2718,12 @@ class execution extends control
|
||||
$this->project->setMenu($projectID);
|
||||
}
|
||||
|
||||
if($this->app->viewType == 'mhtml')
|
||||
{
|
||||
$executionID = $this->execution->saveState(0, $this->executions);
|
||||
$this->execution->setMenu($executionID);
|
||||
}
|
||||
|
||||
/* Load pager and get tasks. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
@@ -306,6 +306,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Kein verknüpftes {$lang->productCommon} in {$lang->executionCommon} gefunden. Sie werden auf die {$lang->productCommon} Seite geleitet.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} Kann nicht mit mehreren identischen {$lang->productCommon} verknüpft werden";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Zugriff zu {$lang->executionCommon} verweigert!";
|
||||
$lang->execution->tips = 'Hinweis';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} wurde erstellt. Als nächstes können Sie ";
|
||||
|
||||
@@ -306,6 +306,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "No {$lang->productCommon} is linked to {$lang->executionCommon}. You will be directed to {$lang->productCommon} page to link one.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} cannot be linked to the same {$lang->productCommon} twice.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Your access to {$lang->executionCommon} is denied!";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} is created. Next you can ";
|
||||
|
||||
@@ -306,6 +306,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Aucun {$lang->productCommon} n'est associé à ce {$lang->executionCommon}. Vous allez être redirigé vers la page {$lang->productCommon} pour en associer un.";
|
||||
$lang->execution->errorSameProducts = "Ce {$lang->executionCommon} ne peut pas être associé deux fois au même {$lang->productCommon}. Imaginez un peu les résultats !";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Votre accès au {$lang->executionCommon} est refusé ! Désolé.";
|
||||
$lang->execution->tips = 'Note';
|
||||
$lang->execution->afterInfo = "Le {$lang->executionCommon} a été créé avec succès ! Ensuite vous pouvez ";
|
||||
|
||||
@@ -306,6 +306,8 @@ $lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked
|
||||
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
|
||||
$lang->execution->errorNoLinkedProducts = "Không có {$lang->productCommon} liên kết tới {$lang->executionCommon}. Bạn sẽ được chuyển tới trang {$lang->productCommon} để liên kết.";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon} không thể liên kết tới {$lang->productCommon} giống nhau 2 lần.";
|
||||
$lang->execution->errorBegin = "The start time of {$lang->executionCommon} cannot be less than the start time of the project %s.";
|
||||
$lang->execution->errorEnd = "The end time of {$lang->executionCommon} cannot be greater than the end time %s of the project.";
|
||||
$lang->execution->accessDenied = "Truy cập của bạn tới {$lang->executionCommon} bị từ chối!";
|
||||
$lang->execution->tips = 'Ghi chú';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon} được tạo. Tiếp theo bạn có thể ";
|
||||
|
||||
@@ -306,6 +306,8 @@ $lang->execution->notAllowedUnlinkStory = "该{$lang->SRCommon}已经与项
|
||||
$lang->execution->notAllowRemoveProducts = "该{$lang->productCommon}中的{$lang->SRCommon}已与该{$lang->executionCommon}进行了关联,请取消关联后再操作。";
|
||||
$lang->execution->errorNoLinkedProducts = "该{$lang->executionCommon}没有关联的{$lang->productCommon},系统将转到{$lang->productCommon}关联页面";
|
||||
$lang->execution->errorSameProducts = "{$lang->executionCommon}不能关联多个相同的{$lang->productCommon}。";
|
||||
$lang->execution->errorBegin = "{$lang->executionCommon}的开始时间不能小于所属项目的开始时间%s。";
|
||||
$lang->execution->errorEnd = "{$lang->executionCommon}的结束时间不能大于所属项目的结束时间%s。";
|
||||
$lang->execution->accessDenied = "您无权访问该{$lang->executionCommon}!";
|
||||
$lang->execution->tips = '提示';
|
||||
$lang->execution->afterInfo = "{$lang->executionCommon}添加成功,您现在可以进行以下操作:";
|
||||
|
||||
@@ -293,9 +293,11 @@ class executionModel extends model
|
||||
return false;
|
||||
}
|
||||
|
||||
if($this->config->systemMode == 'new') $this->checkBeginAndEndDate($_POST['project'], $_POST['begin'], $_POST['end']);
|
||||
if(dao::isError()) return false;
|
||||
|
||||
/* Determine whether to add a sprint or a stage according to the model of the execution. */
|
||||
$project = $this->loadModel('project')->getByID($_POST['project']);
|
||||
$type = zget($this->config->execution->modelList, $project->model, 'sprint');
|
||||
$type = zget($this->config->execution->modelList, $project->model, 'sprint');
|
||||
|
||||
$this->config->execution->create->requiredFields .= ',project';
|
||||
}
|
||||
@@ -335,6 +337,14 @@ class executionModel extends model
|
||||
}
|
||||
|
||||
$sprint = $this->loadModel('file')->processImgURL($sprint, $this->config->execution->editor->create['id'], $this->post->uid);
|
||||
|
||||
/* Replace required language. */
|
||||
if($this->app->openApp == 'project')
|
||||
{
|
||||
$this->lang->project->name = $this->lang->execution->name;
|
||||
$this->lang->project->code = $this->lang->execution->code;
|
||||
}
|
||||
|
||||
$this->dao->insert(TABLE_EXECUTION)->data($sprint)
|
||||
->autoCheck($skipFields = 'begin,end')
|
||||
->batchcheck($this->config->execution->create->requiredFields, 'notempty')
|
||||
@@ -453,6 +463,9 @@ class executionModel extends model
|
||||
->remove('products, branch, uid, plans')
|
||||
->get();
|
||||
|
||||
if($this->config->systemMode == 'new') $this->checkBeginAndEndDate($oldExecution->project, $execution->begin, $execution->end);
|
||||
if(dao::isError()) return false;
|
||||
|
||||
/* Child stage inherits parent stage permissions. */
|
||||
if(!isset($execution->acl)) $execution->acl = $oldExecution->acl;
|
||||
if($execution->acl == 'open') $execution->whitelist = '';
|
||||
@@ -532,6 +545,23 @@ class executionModel extends model
|
||||
$oldExecutions = $this->getByIdList($this->post->executionIDList);
|
||||
$nameList = array();
|
||||
$codeList = array();
|
||||
|
||||
/* Replace required language. */
|
||||
if($this->app->openApp == 'project')
|
||||
{
|
||||
$projectModel = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($this->session->project)->fetch('model');
|
||||
if($projectModel == 'scrum')
|
||||
{
|
||||
$this->lang->project->name = $this->lang->execution->name;
|
||||
$this->lang->project->code = $this->lang->execution->code;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->lang->project->name = str_replace($this->lang->project->common, $this->lang->project->stage, $this->lang->project->name);
|
||||
$this->lang->project->code = str_replace($this->lang->project->common, $this->lang->project->stage, $this->lang->project->code);
|
||||
}
|
||||
}
|
||||
|
||||
foreach($data->executionIDList as $executionID)
|
||||
{
|
||||
$executionName = $data->names[$executionID];
|
||||
@@ -578,7 +608,7 @@ class executionModel extends model
|
||||
->checkIF($execution->begin != '', 'begin', 'date')
|
||||
->checkIF($execution->end != '', 'end', 'date')
|
||||
->checkIF($execution->end != '', 'end', 'gt', $execution->begin)
|
||||
->check('code', 'unique', "id NOT " . helper::dbIN($data->executionIDList) . " and deleted='0'")
|
||||
->checkIF($execution->code != '', 'code', 'unique', "id NOT " . helper::dbIN($data->executionIDList) . " and deleted='0'")
|
||||
->where('id')->eq($executionID)
|
||||
->limit(1)
|
||||
->exec();
|
||||
@@ -654,6 +684,9 @@ class executionModel extends model
|
||||
->remove('comment')
|
||||
->get();
|
||||
|
||||
if($this->config->systemMode == 'new') $this->checkBeginAndEndDate($oldExecution->project, $execution->begin, $execution->end);
|
||||
if(dao::isError()) return false;
|
||||
|
||||
$this->dao->update(TABLE_EXECUTION)->data($execution)
|
||||
->autoCheck()
|
||||
->where('id')->eq((int)$executionID)
|
||||
@@ -837,6 +870,22 @@ class executionModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check begin and end date.
|
||||
*
|
||||
* @param string $begin
|
||||
* @param string $end
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function checkBeginAndEndDate($projectID, $begin, $end)
|
||||
{
|
||||
$project = $this->loadModel('project')->getByID($projectID);
|
||||
if($begin < $project->begin) dao::$errors['begin'] = sprintf($this->lang->execution->errorBegin, $project->begin);
|
||||
|
||||
if($end > $project->end) dao::$errors['end'] = sprintf($this->lang->execution->errorEnd, $project->end);
|
||||
}
|
||||
|
||||
/*
|
||||
* Get execution switcher.
|
||||
*
|
||||
@@ -857,6 +906,13 @@ class executionModel extends model
|
||||
$currentExecutionName = $currentExecution->name;
|
||||
}
|
||||
|
||||
if($this->app->viewType == 'mhtml' and $executionID)
|
||||
{
|
||||
$output = html::a(helper::createLink('execution', 'index'), $this->lang->executionCommon) . $this->lang->colon;
|
||||
$output .= "<a id='currentItem' href=\"javascript:showSearchMenu('execution', '$executionID', '$currentModule', '$currentMethod', '')\">{$currentExecutionName} <span class='icon-caret-down'></span></a><div id='currentItemDropMenu' class='hidden affix enter-from-bottom layer'></div>";
|
||||
return $output;
|
||||
}
|
||||
|
||||
$dropMenuLink = helper::createLink('execution', 'ajaxGetDropMenu', "executionID=$executionID&module=$currentModule&method=$currentMethod&extra=");
|
||||
$output = "<div class='btn-group header-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='{$currentExecutionName}'><span class='text'>{$currentExecutionName}</span> <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
|
||||
$output .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>';
|
||||
@@ -1149,6 +1205,11 @@ class executionModel extends model
|
||||
$module = 'execution';
|
||||
$method = 'testcase';
|
||||
}
|
||||
if($module == 'testtask' and ($method == 'view' || $method == 'create' || $method == 'edit'))
|
||||
{
|
||||
$module = 'execution';
|
||||
$method = 'testtask';
|
||||
}
|
||||
if($module == 'build' and ($method == 'edit' || $method= 'view'))
|
||||
{
|
||||
$module = 'execution';
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
<?php endif;?>
|
||||
<th class='c-pri {sorter:false}'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
|
||||
<th class='c-name {sorter:false}'> <?php common::printOrderLink('title', $orderBy, $vars, $lang->execution->storyTitle);?></th>
|
||||
<th class='w-70px {sorter:false}'><?php common::printOrderLink('category', $orderBy, $vars, $lang->story->category);?></th>
|
||||
<th class='c-user {sorter:false}'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
|
||||
<th class='c-user {sorter:false}'> <?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->assignedToAB);?></th>
|
||||
<th class='c-estimate w-80px {sorter:false} text-right'> <?php common::printOrderLink('estimate', $orderBy, $vars, $lang->story->estimateAB);?></th>
|
||||
@@ -222,6 +223,7 @@
|
||||
<?php if($story->parent > 0) echo "<span class='label'>{$lang->story->childrenAB}</span>";?>
|
||||
<?php echo html::a($storyLink,$story->title, null, "style='color: $story->color' data-app='execution'");?>
|
||||
</td>
|
||||
<td class='c-name' title='<?php echo zget($lang->story->categoryList, $story->category);?>'><?php echo zget($lang->story->categoryList, $story->category);?></td>
|
||||
<td class='c-user' title='<?php echo zget($users, $story->openedBy);?>'><?php echo zget($users, $story->openedBy);?></td>
|
||||
<td class='c-user' title='<?php echo zget($users, $story->assignedTo);?>'><?php echo zget($users, $story->assignedTo);?></td>
|
||||
<td class='c-estimate text-right' title="<?php echo $story->estimate . ' ' . $lang->hourCommon;?>"><?php echo $story->estimate . $config->hourUnit;?></td>
|
||||
@@ -322,7 +324,7 @@
|
||||
if(empty($key)) continue;
|
||||
if(strpos('wait|planned|projected', $key) !== false) continue;
|
||||
$actionLink = $this->createLink('story', 'batchChangeStage', "stage=$key");
|
||||
echo "<li>" . html::a('#', $stage, '', "onclick=\"setFormAction('$actionLink', 'hiddenwin')\"") . "</li>";
|
||||
echo "<li>" . html::a('#', $stage, '', "onclick=\"setFormAction('$actionLink', 'hiddenwin', '#storyList')\"") . "</li>";
|
||||
}
|
||||
echo '</ul>';
|
||||
?>
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="table-footer"><?php $pager->show('right', 'pagerjs');?></div>
|
||||
</form>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
common::printIcon('testtask', 'linkCase', "taskID=$task->id", $task, 'list', 'link');
|
||||
if(common::hasPriv('execution', 'testreport'))
|
||||
{
|
||||
echo html::a($this->createLink('testreport', 'browse', "objectID=$task->product&objectType=product&extra=$task->id"), '<i class="icon-testreport-browse icon-flag"></i>', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="qa"');
|
||||
echo html::a($this->createLink('execution', 'testreport', "executionID=$executionID&objctType=execution&extra=$task->id"), '<i class="icon-testreport-browse icon-flag"></i>', '', 'class="btn " title="' . $lang->testreport->browse . '" data-app="execution"');
|
||||
}
|
||||
common::printIcon('testtask', 'edit', "taskID=$task->id", $task, 'list');
|
||||
common::printIcon('testtask', 'delete', "taskID=$task->id", $task, 'list', 'trash', 'hiddenwin');
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<?php $progress = ($execution->totalConsumed + $execution->totalLeft) ? floor($execution->totalConsumed / ($execution->totalConsumed + $execution->totalLeft) * 1000) / 1000 * 100 : 0;?>
|
||||
<?php echo $lang->execution->progress;?> <em><?php echo $progress . $lang->percent;?></em>
|
||||
<?php echo $lang->execution->progress;?> <?php echo $progress . $lang->percent;?>
|
||||
<div class="progress inline-block">
|
||||
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $progress . $lang->percent;?>"></div>
|
||||
</div>
|
||||
@@ -239,23 +239,23 @@
|
||||
<th><?php echo $lang->execution->begin;?></th>
|
||||
<td><?php echo $execution->begin;?></td>
|
||||
<th><?php echo $lang->execution->totalEstimate;?></th>
|
||||
<td><em><?php echo (float)$execution->totalEstimate . $lang->execution->workHour;?></em></td>
|
||||
<td><?php echo (float)$execution->totalEstimate . $lang->execution->workHour;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->execution->end;?></th>
|
||||
<td><?php echo $execution->end;?></td>
|
||||
<th><?php echo $lang->execution->totalConsumed;?></th>
|
||||
<td><em><?php echo (float)$execution->totalConsumed . $lang->execution->workHour;?></em></td>
|
||||
<td><?php echo (float)$execution->totalConsumed . $lang->execution->workHour;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->execution->totalDays;?></th>
|
||||
<td><?php echo $execution->days;?></td>
|
||||
<th><?php echo $lang->execution->totalLeft;?></th>
|
||||
<td><em><?php echo (float)$execution->totalLeft . $lang->execution->workHour;?></em></td>
|
||||
<td><?php echo (float)$execution->totalLeft . $lang->execution->workHour;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->execution->totalHours;?></th>
|
||||
<td><em><?php echo (float)$execution->totalHours . $lang->execution->workHour;?></em></td>
|
||||
<td><?php echo (float)$execution->totalHours . $lang->execution->workHour;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -268,11 +268,11 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<th><?php echo $lang->story->common;?></th>
|
||||
<td><em><?php echo $statData->storyCount;?></em></td>
|
||||
<td><?php echo $statData->storyCount;?></td>
|
||||
<th><?php echo $lang->task->common;?></th>
|
||||
<td><em><?php echo $statData->taskCount;?></em></td>
|
||||
<td><?php echo $statData->taskCount;?></td>
|
||||
<th><?php echo $lang->bug->common;?></th>
|
||||
<td><em><?php echo $statData->bugCount;?></em></td>
|
||||
<td><?php echo $statData->bugCount;?></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
+18
-18
@@ -12,8 +12,8 @@
|
||||
class git extends control
|
||||
{
|
||||
/**
|
||||
* Sync git.
|
||||
*
|
||||
* Sync git.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -24,9 +24,9 @@ class git extends control
|
||||
|
||||
/**
|
||||
* Diff a file.
|
||||
*
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $revision
|
||||
* @param int $revision
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -37,14 +37,14 @@ class git extends control
|
||||
$path = helper::safe64Decode($path);
|
||||
if(common::hasPriv('repo', 'diff'))
|
||||
{
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git', 'haspriv');
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab', 'haspriv');
|
||||
foreach($repos as $repo)
|
||||
{
|
||||
if(strpos($path, $repo->path) === 0)
|
||||
{
|
||||
$entry = $this->repo->encodePath(str_replace($repo->path, '', $path));
|
||||
$oldRevision = "$revision^";
|
||||
$this->locate($this->repo->createLink('diff', "repoID=$repo->id&entry=$entry&oldRevision=$oldRevision&revision=$revision", 'html', 'true'));
|
||||
$this->locate($this->repo->createLink('diff', "repoID=$repo->id&objectID=0&entry=$entry&oldRevision=$oldRevision&revision=$revision", 'html', 'true'));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -52,15 +52,15 @@ class git extends control
|
||||
$this->view->path = $path;
|
||||
$this->view->revision = $revision;
|
||||
$this->view->diff = $this->git->diff($path, $revision);
|
||||
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Cat a file.
|
||||
*
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $revision
|
||||
* @param int $revision
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -71,13 +71,13 @@ class git extends control
|
||||
$path = helper::safe64Decode($path);
|
||||
if(common::hasPriv('repo', 'view'))
|
||||
{
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git', 'haspriv');
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab', 'haspriv');
|
||||
foreach($repos as $repo)
|
||||
{
|
||||
if(strpos($path, $repo->path) === 0)
|
||||
{
|
||||
$entry = $this->repo->encodePath(str_replace($repo->path, '', $path));
|
||||
$this->locate($this->repo->createLink('view', "repoID=$repo->id&entry=$entry&revision=$revision", 'html', true));
|
||||
$this->locate($this->repo->createLink('view', "repoID=$repo->id&objectID=0&entry=$entry&revision=$revision", 'html', true));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,13 +85,13 @@ class git extends control
|
||||
$this->view->path = $path;
|
||||
$this->view->revision = $revision;
|
||||
$this->view->code = $this->git->cat($path, $revision);
|
||||
|
||||
$this->display();
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sync from the syncer by api.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -104,9 +104,9 @@ class git extends control
|
||||
|
||||
$logs = array();
|
||||
$i = 0;
|
||||
foreach($list as $line)
|
||||
foreach($list as $line)
|
||||
{
|
||||
if(!$line)
|
||||
if(!$line)
|
||||
{
|
||||
$i++;
|
||||
continue;
|
||||
@@ -143,7 +143,7 @@ class git extends control
|
||||
|
||||
/**
|
||||
* Ajax save log.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -198,7 +198,7 @@ class git extends control
|
||||
|
||||
/**
|
||||
* Ajax get repos.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
+34
-34
@@ -15,39 +15,39 @@ class gitModel extends model
|
||||
{
|
||||
/**
|
||||
* The git binary client.
|
||||
*
|
||||
* @var int
|
||||
*
|
||||
* @var int
|
||||
* @access public
|
||||
*/
|
||||
public $client;
|
||||
|
||||
/**
|
||||
* Repos.
|
||||
*
|
||||
* @var array
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
public $repos = array();
|
||||
public $repos = array();
|
||||
|
||||
/**
|
||||
* The root path of a repo
|
||||
*
|
||||
*
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $repoRoot = '';
|
||||
|
||||
/**
|
||||
* Users
|
||||
*
|
||||
* @var array
|
||||
* Users
|
||||
*
|
||||
* @var array
|
||||
* @access public
|
||||
*/
|
||||
public $users = array();
|
||||
|
||||
/**
|
||||
* Construct function.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -59,8 +59,8 @@ class gitModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Run.
|
||||
*
|
||||
* Run.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -145,7 +145,7 @@ class gitModel extends model
|
||||
continue;
|
||||
}
|
||||
|
||||
$version = $lastInDB->commit;
|
||||
$version = (int)$lastInDB->commit + 1;
|
||||
$logs = $this->repo->getUnsyncCommits($repo);
|
||||
$objects = array();
|
||||
if(!empty($logs))
|
||||
@@ -196,13 +196,13 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Set the repos.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function setRepos()
|
||||
{
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git');
|
||||
$repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab');
|
||||
$gitRepos = array();
|
||||
$paths = array();
|
||||
foreach($repos as $repo)
|
||||
@@ -224,7 +224,7 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Get repos.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -239,8 +239,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Set repo.
|
||||
*
|
||||
* @param object $repo
|
||||
*
|
||||
* @param object $repo
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
@@ -269,10 +269,10 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* set the root path of a repo.
|
||||
*
|
||||
* @param object $repo
|
||||
*
|
||||
* @param object $repo
|
||||
* @access public
|
||||
* @return void
|
||||
* @return void
|
||||
*/
|
||||
public function setRepoRoot($repo)
|
||||
{
|
||||
@@ -295,9 +295,9 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Get repo logs.
|
||||
*
|
||||
* @param object $repo
|
||||
* @param int $fromRevision
|
||||
*
|
||||
* @param object $repo
|
||||
* @param int $fromRevision
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -323,8 +323,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Convert log from xml format to object.
|
||||
*
|
||||
* @param object $log
|
||||
*
|
||||
* @param object $log
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
@@ -365,9 +365,9 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Diff a url.
|
||||
*
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $revision
|
||||
* @param int $revision
|
||||
* @access public
|
||||
* @return string|bool
|
||||
*/
|
||||
@@ -407,9 +407,9 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Cat a url.
|
||||
*
|
||||
*
|
||||
* @param string $path
|
||||
* @param int $revision
|
||||
* @param int $revision
|
||||
* @access public
|
||||
* @return string|bool
|
||||
*/
|
||||
@@ -448,8 +448,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Get repo by url.
|
||||
*
|
||||
* @param string $url
|
||||
*
|
||||
* @param string $url
|
||||
* @access public
|
||||
* @return object|bool
|
||||
*/
|
||||
@@ -465,8 +465,8 @@ class gitModel extends model
|
||||
|
||||
/**
|
||||
* Pring log.
|
||||
*
|
||||
* @param sting $log
|
||||
*
|
||||
* @param sting $log
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -57,8 +57,9 @@ class group extends control
|
||||
{
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$this->group->create();
|
||||
$groupID = $this->group->create();
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $groupID));
|
||||
if(isonlybody()) die(js::closeModal('parent.parent', 'this'));
|
||||
die(js::locate($this->createLink('group', 'browse'), 'parent'));
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Rechte kopieren';
|
||||
$lang->group->copyOptions['copyUser'] = 'Benutzer kopieren';
|
||||
|
||||
$lang->group->versions[''] = 'Verlauf';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privileges';
|
||||
$lang->group->copyOptions['copyUser'] = 'Copy Users';
|
||||
|
||||
$lang->group->versions[''] = 'History';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copier Privilèges';
|
||||
$lang->group->copyOptions['copyUser'] = 'Copier Utilisateurs';
|
||||
|
||||
$lang->group->versions[''] = 'History';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -1094,8 +1094,7 @@ $lang->custom->methodOrder[45] = 'timezone';
|
||||
$lang->custom->methodOrder[50] = 'setStoryConcept';
|
||||
$lang->custom->methodOrder[55] = 'editStoryConcept';
|
||||
$lang->custom->methodOrder[60] = 'browseStoryConcept';
|
||||
$lang->custom->methodOrder[65] = 'setDefaultConcept';
|
||||
$lang->custom->methodOrder[70] = 'deleteStoryConcept';
|
||||
$lang->custom->methodOrder[65] = 'deleteStoryConcept';
|
||||
|
||||
$lang->resource->datatable = new stdclass();
|
||||
$lang->resource->datatable->setGlobal = 'setGlobal';
|
||||
@@ -1746,3 +1745,96 @@ $lang->changelog['12.3'][] = 'ci-commitResult';
|
||||
$lang->changelog['12.5'][] = 'story-batchToTask';
|
||||
$lang->changelog['12.5'][] = 'custom-product';
|
||||
$lang->changelog['12.5'][] = 'custom-project';
|
||||
|
||||
$lang->changelog['15.0.rc1'][] = 'program-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-product';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-start';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-suspend';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-activate';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-close';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-project';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-stakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-createStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unlinkStakeholder';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-batchUnlinkStakeholders';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'program-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-group';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageView';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-managePriv';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-manageGroupMember';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-copyGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-editGroup';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-qa';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-createGuide';
|
||||
$lang->changelog['15.0.rc1'][] = 'project-moduleOpen';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-accessible';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-invest';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'personnel-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-workAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-contributeAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-testtask';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-doc';
|
||||
$lang->changelog['15.0.rc1'][] = 'my-calendarAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-trackAB';
|
||||
$lang->changelog['15.0.rc1'][] = 'story-processStoryChange';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-story';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-trackAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectstory-importplanstories';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-whitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-addWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'execution-unbindWhitelist';
|
||||
$lang->changelog['15.0.rc1'][] = 'automation-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'group-manageProjectAdmin';
|
||||
$lang->changelog['15.0.rc1'][] = 'user-execution';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-setStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-editStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-browseStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'custom-deleteStoryConcept';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-index';
|
||||
$lang->changelog['15.0.rc1'][] = 'search-buildIndex';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectbuild-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-browseAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-view';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-export';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkStory';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-linkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-unlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-batchUnlinkBug';
|
||||
$lang->changelog['15.0.rc1'][] = 'projectrelease-changeStatus';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-browse';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-create';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-batchCreate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-edit';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-delete';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-issue';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewIssueAction';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-communicate';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-expectation';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-deleteExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-createExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-editExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-viewExpect';
|
||||
$lang->changelog['15.0.rc1'][] = 'stakeholder-userIssue';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privileges';
|
||||
$lang->group->copyOptions['copyUser'] = 'Copy người dùng';
|
||||
|
||||
$lang->group->versions[''] = 'Lịch sử';
|
||||
$lang->group->versions['15_0_rc1'] = 'ZenTao15.0.rc1';
|
||||
$lang->group->versions['12_5'] = 'ZenTao12.5';
|
||||
$lang->group->versions['12_3'] = 'ZenTao12.3';
|
||||
$lang->group->versions['11_6_2'] = 'ZenTao11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = '复制权限';
|
||||
$lang->group->copyOptions['copyUser'] = '复制用户';
|
||||
|
||||
$lang->group->versions[''] = '修改历史';
|
||||
$lang->group->versions['15_0_rc1'] = '禅道15.0.rc1';
|
||||
$lang->group->versions['12_5'] = '禅道12.5';
|
||||
$lang->group->versions['12_3'] = '禅道12.3';
|
||||
$lang->group->versions['11_6_2'] = '禅道11.6.2';
|
||||
|
||||
@@ -56,6 +56,7 @@ $lang->group->copyOptions['copyPriv'] = '複製權限';
|
||||
$lang->group->copyOptions['copyUser'] = '複製用戶';
|
||||
|
||||
$lang->group->versions[''] = '修改歷史';
|
||||
$lang->group->versions['15_0_rc1'] = '禪道15.0.rc1';
|
||||
$lang->group->versions['12_5'] = '禪道12.5';
|
||||
$lang->group->versions['12_3'] = '禪道12.3';
|
||||
$lang->group->versions['11_6_2'] = '禪道11.6.2';
|
||||
|
||||
@@ -27,7 +27,8 @@ class groupModel extends model
|
||||
unset($group->limited);
|
||||
$group->role = 'limited';
|
||||
}
|
||||
return $this->dao->insert(TABLE_GROUP)->data($group)->batchCheck($this->config->group->create->requiredFields, 'notempty')->exec();
|
||||
$this->dao->insert(TABLE_GROUP)->data($group)->batchCheck($this->config->group->create->requiredFields, 'notempty')->exec();
|
||||
return $this->dao->lastInsertId();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -336,7 +337,7 @@ class groupModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Update view priv
|
||||
* Update view priv.
|
||||
*
|
||||
* @param int $groupID
|
||||
* @access public
|
||||
@@ -354,7 +355,7 @@ class groupModel extends model
|
||||
$dynamic = array();
|
||||
foreach($actions['actions'] as $moduleName => $moduleActions)
|
||||
{
|
||||
if($moduleName != 'my' and !isset($actions['views'][$moduleName])) continue;
|
||||
if($moduleName != 'todo' and isset($actions['views']) and !in_array($this->lang->navGroup->$moduleName, $actions['views'])) continue;
|
||||
|
||||
$dynamic[$moduleName] = $moduleActions;
|
||||
}
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
<tr>
|
||||
<td class='text-center form-actions' colspan='5'>
|
||||
<?php
|
||||
echo html::submitButton('', '', "btn btn-primary");
|
||||
echo html::linkButton($lang->goback, $this->createLink('group', 'browse'));
|
||||
echo html::submitButton();
|
||||
echo html::linkButton($lang->goback, $this->createLink('group', 'browse'), 'self', '', 'btn btn-wide');
|
||||
echo html::hidden('foo'); // Just a var, to make sure $_POST is not empty.
|
||||
?>
|
||||
</td>
|
||||
|
||||
+40
-13
@@ -133,6 +133,7 @@
|
||||
if(['team'].includes(methodLowerCase)) return 'system';
|
||||
}
|
||||
if(moduleName === 'company') if(methodLowerCase == 'browse') return 'admin';
|
||||
if(moduleName === 'opportunity' || moduleName === 'risk' || moduleName == 'trainplan') if(methodLowerCase == 'view') return 'project';
|
||||
if(moduleName === 'tree')
|
||||
{
|
||||
if(methodLowerCase === 'browse')
|
||||
@@ -178,21 +179,23 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* Set openApp cookie */
|
||||
$.cookie('openApp', appCode, {expires: config.cookieLife, path: config.webRoot});
|
||||
|
||||
/* Highlight at main menu */
|
||||
var $menuMainNav = $('#menuMainNav,#menuMoreNav');
|
||||
var $lastActiveNav = $menuMainNav.find('li.active');
|
||||
if($lastActiveNav.data('app') !== appCode)
|
||||
{
|
||||
$lastActiveNav.removeClass('active');
|
||||
$menuMainNav.find('li[data-app="' + appCode + '"]').addClass('active');
|
||||
}
|
||||
|
||||
/* Create pate app object and store it */
|
||||
var app = openedApps[appCode];
|
||||
if(!app)
|
||||
if(app)
|
||||
{
|
||||
if(app.$iframe && app.$iframe.length)
|
||||
{
|
||||
var iframe = app.$iframe[0];
|
||||
if(iframe && iframe.contentDocument && iframe.contentWindow && iframe.contentWindow.$)
|
||||
{
|
||||
var result = iframe.contentWindow.$(iframe.contentDocument).triggerHandler('openapp.apps', [app, url]);
|
||||
if (result === false) {
|
||||
return 'cancel';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var $iframe = $(
|
||||
[
|
||||
@@ -216,6 +219,18 @@
|
||||
if(!url) url = appsMap[appCode].url;
|
||||
}
|
||||
|
||||
/* Set openApp cookie */
|
||||
$.cookie('openApp', appCode, {expires: config.cookieLife, path: config.webRoot});
|
||||
|
||||
/* Highlight at main menu */
|
||||
var $menuMainNav = $('#menuMainNav,#menuMoreNav');
|
||||
var $lastActiveNav = $menuMainNav.find('li.active');
|
||||
if($lastActiveNav.data('app') !== appCode)
|
||||
{
|
||||
$lastActiveNav.removeClass('active');
|
||||
$menuMainNav.find('li[data-app="' + appCode + '"]').addClass('active');
|
||||
}
|
||||
|
||||
/* Show page app and update iframe source */
|
||||
if(url) reloadApp(appCode, url);
|
||||
app.zIndex = openedAppZIndex++;
|
||||
@@ -329,6 +344,18 @@
|
||||
var app = openedApps[appCode];
|
||||
if(!app) return;
|
||||
|
||||
if(app.$iframe && app.$iframe.length)
|
||||
{
|
||||
var iframe = app.$iframe[0];
|
||||
if(iframe && iframe.contentDocument && iframe.contentWindow && iframe.contentWindow.$)
|
||||
{
|
||||
var result = iframe.contentWindow.$(iframe.contentDocument).triggerHandler('closeapp.apps', [app]);
|
||||
if (result === false) {
|
||||
return 'cancel';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var appKeys = Object.keys(openedApps)
|
||||
if(appKeys[0] == appCode)
|
||||
{
|
||||
|
||||
@@ -61,8 +61,9 @@ class jenkins extends control
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$this->jenkins->create();
|
||||
$jenkinsID = $this->jenkins->create();
|
||||
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $jenkinsID));
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')));
|
||||
}
|
||||
|
||||
@@ -116,8 +117,8 @@ class jenkins extends control
|
||||
|
||||
/**
|
||||
* Ajax get tasks.
|
||||
*
|
||||
* @param int $id
|
||||
*
|
||||
* @param int $id
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
|
||||
@@ -60,8 +60,8 @@ class jenkinsModel extends model
|
||||
|
||||
/**
|
||||
* Get jenkins tasks.
|
||||
*
|
||||
* @param int $id
|
||||
*
|
||||
* @param int $id
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -107,7 +107,8 @@ class jenkinsModel extends model
|
||||
->batchCheck("url", 'URL')
|
||||
->autoCheck()
|
||||
->exec();
|
||||
return !dao::isError();
|
||||
if(dao::isError()) return false;
|
||||
return $this->dao->lastInsertId();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -63,8 +63,9 @@ class job extends control
|
||||
{
|
||||
if($_POST)
|
||||
{
|
||||
$this->job->create();
|
||||
$jobID = $this->job->create();
|
||||
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $jobID));
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')));
|
||||
}
|
||||
|
||||
|
||||
+15
-15
@@ -12,9 +12,9 @@
|
||||
class jobModel extends model
|
||||
{
|
||||
/**
|
||||
* Get by id.
|
||||
*
|
||||
* @param int $id
|
||||
* Get by id.
|
||||
*
|
||||
* @param int $id
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
@@ -25,7 +25,7 @@ class jobModel extends model
|
||||
|
||||
/**
|
||||
* Get job list.
|
||||
*
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
@@ -44,7 +44,7 @@ class jobModel extends model
|
||||
|
||||
/**
|
||||
* Get list by triggerType field.
|
||||
*
|
||||
*
|
||||
* @param string $triggerType
|
||||
* @param array $repoIdList
|
||||
* @access public
|
||||
@@ -107,7 +107,7 @@ class jobModel extends model
|
||||
|
||||
/**
|
||||
* Create a job.
|
||||
*
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
@@ -164,13 +164,13 @@ class jobModel extends model
|
||||
|
||||
$id = $this->dao->lastInsertId();
|
||||
$this->initJob($id, $job, $this->post->repoType);
|
||||
return true;
|
||||
return $id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a job.
|
||||
*
|
||||
* @param int $id
|
||||
*
|
||||
* @param int $id
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
@@ -236,10 +236,10 @@ class jobModel extends model
|
||||
|
||||
/**
|
||||
* Init when create or update job.
|
||||
*
|
||||
* @param int $id
|
||||
* @param object $job
|
||||
* @param string $repoType
|
||||
*
|
||||
* @param int $id
|
||||
* @param object $job
|
||||
* @param string $repoType
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
@@ -281,8 +281,8 @@ class jobModel extends model
|
||||
|
||||
/**
|
||||
* Exec job.
|
||||
*
|
||||
* @param int $id
|
||||
*
|
||||
* @param int $id
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
$config->message->objectTypes = array();
|
||||
$config->message->objectTypes['product'] = array('opened', 'edited', 'closed', 'undeleted');
|
||||
$config->message->objectTypes['product'] = array('opened', 'edited', 'closed', 'undeleted');
|
||||
$config->message->objectTypes['story'] = array('opened', 'edited', 'commented', 'frombug', 'changed', 'reviewed', 'closed', 'activated', 'assigned');
|
||||
$config->message->objectTypes['productplan'] = array('opened', 'edited');
|
||||
$config->message->objectTypes['productplan'] = array('opened', 'edited');
|
||||
$config->message->objectTypes['project'] = array('opened', 'edited', 'started', 'delayed', 'suspended', 'closed', 'activated', 'undeleted');
|
||||
$config->message->objectTypes['task'] = array('opened', 'edited', 'commented', 'assigned', 'confirmed', 'started', 'finished', 'paused', 'canceled', 'restarted', 'closed', 'activated');
|
||||
$config->message->objectTypes['bug'] = array('opened', 'edited', 'commented', 'assigned', 'confirmed', 'bugconfirmed', 'resolved', 'closed', 'activated');
|
||||
|
||||
@@ -742,6 +742,7 @@ class my extends control
|
||||
if(!empty($_POST))
|
||||
{
|
||||
$_POST['account'] = $this->app->user->account;
|
||||
$_POST['groups'] = $this->dao->select('`group`')->from(TABLE_USERGROUP)->where('account')->eq($this->post->account)->fetchPairs('group', 'group');
|
||||
$this->user->update($this->app->user->id);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
die(js::locate($this->createLink('my', 'profile'), 'parent'));
|
||||
|
||||
@@ -24,6 +24,11 @@
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=reviewedBy&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->reviewedByMe}</span>" . ($type == 'reviewedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=closedBy&&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=assignedTo&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=requirement&type=reviewBy&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->reviewByMe}</span>" . ($type == 'reviewBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewBy' ? ' btn-active-text' : '') . "'");
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -60,7 +65,7 @@
|
||||
<th class='c-hours'> <?php common::printOrderLink('estimate', $orderBy, $vars, $lang->story->estimateAB);?></th>
|
||||
<th class='c-status'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
|
||||
<th class='c-stage'> <?php common::printOrderLink('stage', $orderBy, $vars, $lang->story->stageAB);?></th>
|
||||
<th class='c-actions-4'> <?php echo $lang->actions;?></th>
|
||||
<th class='c-actions-5'> <?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -132,7 +137,7 @@
|
||||
if($canBeChanged)
|
||||
{
|
||||
$vars = "story={$child->id}";
|
||||
common::printIcon('story', 'change', $vars, $child, 'list', 'fork');
|
||||
common::printIcon('story', 'change', $vars, $child, 'list', 'alter');
|
||||
common::printIcon('story', 'review', $vars, $child, 'list', 'search');
|
||||
common::printIcon('story', 'close', $vars, $child, 'list', '', '', 'iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $child, 'list');
|
||||
|
||||
@@ -24,6 +24,11 @@
|
||||
echo html::a(inlink($app->rawMethod, "mode=story&type=reviewedBy&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->reviewedByMe}</span>" . ($type == 'reviewedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewedBy' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=story&type=closedBy&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->closedByMe}</span>" . ($type == 'closedBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'closedBy' ? ' btn-active-text' : '') . "'");
|
||||
}
|
||||
else
|
||||
{
|
||||
echo html::a(inlink($app->rawMethod, "mode=story&type=assignedTo&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->assignedToMe}</span>" . ($type == 'assignedTo' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'assignedTo' ? ' btn-active-text' : '') . "'");
|
||||
echo html::a(inlink($app->rawMethod, "mode=story&type=reviewBy&orderBy=$orderBy&recTotal=$recTotal&recPerPage=$recPerPage&pagerID=$pageID"), "<span class='text'>{$lang->my->storyMenu->reviewByMe}</span>" . ($type == 'reviewBy' ? $recTotalLabel : ''), '', "class='btn btn-link" . ($type == 'reviewBy' ? ' btn-active-text' : '') . "'");
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
</div>
|
||||
@@ -136,7 +141,7 @@
|
||||
if($canBeChanged)
|
||||
{
|
||||
$vars = "story={$child->id}";
|
||||
common::printIcon('story', 'change', $vars, $child, 'list', 'fork');
|
||||
common::printIcon('story', 'change', $vars, $child, 'list', 'alter');
|
||||
common::printIcon('story', 'review', $vars, $child, 'list', 'search');
|
||||
common::printIcon('story', 'close', $vars, $child, 'list', '', '', 'iframe', true);
|
||||
common::printIcon('story', 'edit', $vars, $child, 'list');
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<td class="c-date"><?php echo $todo->date == '2030-01-01' ? $lang->todo->periods['future'] : $todo->date;?></td>
|
||||
<td class="c-type"><?php echo zget($lang->todo->typeList, $todo->type, '');?></td>
|
||||
<td class="c-pri"><span title="<?php echo zget($lang->todo->priList, $todo->pri);?>" class='label-pri <?php echo 'label-pri-' . $todo->pri;?>' title='<?php echo zget($lang->todo->priList, $todo->pri, $todo->pri);?>'><?php echo zget($lang->todo->priList, $todo->pri)?></span></td>
|
||||
<td class="c-name" title="<?php echo $todo->name;?>"><?php echo html::a($this->createLink('todo', 'view', "id=$todo->id&from=my", '', true), $todo->name, '', "data-toggle='modal' data-type='iframe' data-title='" . $lang->todo->view . "' data-icon='check'");?></td>
|
||||
<td class="c-name" title="<?php echo $todo->name;?>"><?php echo html::a($this->createLink('todo', 'view', "id=$todo->id&from=my", '', true), $todo->name, '', "data-toggle='modal' data-width='80%' data-type='iframe' data-title='" . $lang->todo->view . "' data-icon='check'");?></td>
|
||||
<td><?php echo zget($users, $todo->assignedBy);?></td>
|
||||
<td class="c-begin"><?php echo $todo->begin;?></td>
|
||||
<td class="c-end"><?php echo $todo->end;?></td>
|
||||
|
||||
@@ -31,13 +31,17 @@ class personnel extends control
|
||||
|
||||
$program = $this->program->getByID($programID);
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = $browseType == 'bysearch' ? (int)$param : 0;
|
||||
$actionURL = $this->createLink('personnel', 'accessible', "pargramID=$programID&deptID=$deptID&browseType=bysearch&quertID=myQueryID");
|
||||
$personnelList = $this->personnel->getAccessiblePersonnel($programID, $deptID, $browseType, $queryID);
|
||||
|
||||
/* Set the pager. */
|
||||
$this->app->loadClass('pager', true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
$recTotal = count($personnelList);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
$personnelList = array_chunk($personnelList, $pager->recPerPage);
|
||||
|
||||
/* Build the search form. */
|
||||
$queryID = $browseType == 'bysearch' ? (int)$param : 0;
|
||||
$actionURL = $this->createLink('personnel', 'accessible', "pargramID=$programID&deptID=$deptID&browseType=bysearch&quertID=myQueryID");
|
||||
$this->config->personnel->accessible->search['params']['role']['values'] = $this->lang->user->roleList;
|
||||
$this->config->personnel->accessible->search['params']['gender']['values'] = $this->lang->user->genderList;
|
||||
$this->personnel->buildSearchForm($queryID, $actionURL);
|
||||
@@ -54,7 +58,7 @@ class personnel extends control
|
||||
$this->view->pager = $pager;
|
||||
$this->view->param = $param;
|
||||
$this->view->browseType = $browseType;
|
||||
$this->view->personnelList = $this->personnel->getAccessiblePersonnel($programID, $deptID, $browseType, $queryID, $pager);
|
||||
$this->view->personnelList = empty($personnelList) ? $personnelList : $personnelList[$pageID - 1];
|
||||
$this->view->deptList = $this->loadModel('dept')->getOptionMenu();
|
||||
$this->view->dept = $this->dept->getByID($deptID);
|
||||
$this->view->deptTree = $this->dept->getTreeMenu($deptID = 0, array(new personnelModel, 'createMemberLink'), $programID);
|
||||
@@ -165,6 +169,8 @@ class personnel extends control
|
||||
$this->personnel->addWhitelist($objectType, $objectID);
|
||||
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => $this->getError()));
|
||||
|
||||
$this->loadModel('action')->create('whitelist', $objectID, 'managedWhitelist', '', $objectType);
|
||||
|
||||
$locateLink = $this->session->whitelistList ? $this->session->whitelistList : $this->createLink($module, 'whitelist', "objectID=$objectID");
|
||||
$openApp = $module == 'program' ? ($from == 'project' || $from == 'my' ? '#open=project' : '#open=program') : '';
|
||||
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locateLink . $openApp));
|
||||
@@ -219,6 +225,8 @@ class personnel extends control
|
||||
if($acl->objectType == 'product') $this->personnel->deleteProgramWhitelist($acl->objectID, $acl->account);
|
||||
if($acl->objectType == 'sprint') $this->personnel->deleteProjectWhitelist($acl->objectID, $acl->account);
|
||||
|
||||
$this->loadModel('action')->create('whitelist', $acl->objectID, 'managedWhitelist', '', $acl->objectType);
|
||||
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
+58
-10
@@ -19,11 +19,10 @@ class personnelModel extends model
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @param int $queryID
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getAccessiblePersonnel($programID = 0, $deptID = 0, $browseType = 'all', $queryID = 0, $pager)
|
||||
public function getAccessiblePersonnel($programID = 0, $deptID = 0, $browseType = 'all', $queryID = 0)
|
||||
{
|
||||
$accessibleQuery = '';
|
||||
if($browseType == 'bysearch')
|
||||
@@ -41,20 +40,69 @@ class personnelModel extends model
|
||||
/* Determine who can be accessed based on access control. */
|
||||
$program = $this->loadModel('program')->getByID($programID);
|
||||
$personnelList = array();
|
||||
if($program->acl != 'open')
|
||||
$personnelList = $this->dao->select('t2.id,t2.dept,t2.account,t2.role,t2.realname,t2.gender')->from(TABLE_USERVIEW)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account=t2.account')
|
||||
->where('t2.deleted')->eq(0)
|
||||
->beginIF($program->acl != 'open')->andWhere("CONCAT(',', t1.programs, ',')")->like("%,$programID,%")
|
||||
->beginIF($deptID > 0)->andWhere('t2.dept')->eq($deptID)->fi()
|
||||
->beginIF($browseType == 'bysearch')->andWhere($accessibleQuery)->fi()
|
||||
->fetchAll('id');
|
||||
|
||||
if($program->acl == 'open')
|
||||
{
|
||||
$personnelList = $this->dao->select('t2.id,t2.dept,t2.account,t2.role,t2.realname,t2.gender')->from(TABLE_USERVIEW)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account=t2.account')
|
||||
->where("CONCAT(',', t1.programs, ',')")->like("%,$programID,%")
|
||||
->beginIF($deptID > 0)->andWhere('t2.dept')->eq($deptID)->fi()
|
||||
->beginIF($browseType == 'bysearch')->andWhere($accessibleQuery)->fi()
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
foreach($personnelList as $personnel)
|
||||
{
|
||||
if(!$this->canViewProgram($programID, $personnel->account)) unset($personnelList[$personnel->id]);
|
||||
}
|
||||
}
|
||||
|
||||
return $personnelList;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if you have permission to view the program.
|
||||
*
|
||||
* @param int $programID
|
||||
* @param string $account
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function canViewProgram($programID, $account)
|
||||
{
|
||||
if($this->app->user->admin) return true;
|
||||
|
||||
static $groupAcl = array();
|
||||
static $groupInfo = array();
|
||||
if(empty($groupAcl))
|
||||
{
|
||||
$groupAcl = $this->dao->select('id,acl')->from(TABLE_GROUP)->fetchPairs();
|
||||
foreach($groupAcl as $groupID => $group) $groupInfo[$groupID] = json_decode($groupAcl[$groupID]);
|
||||
}
|
||||
|
||||
static $userGroups = array();
|
||||
if(empty($userGroups)) $userGroups = $this->dao->select('*')->from(TABLE_USERGROUP)->fetchGroup('account', 'group');
|
||||
|
||||
$programRight = false;
|
||||
if(isset($userGroups[$account]))
|
||||
{
|
||||
foreach($userGroups[$account] as $groupID => $userGroup)
|
||||
{
|
||||
$group = $groupInfo[$groupID];
|
||||
if(!isset($group->programs))
|
||||
{
|
||||
$programRight = true;
|
||||
continue;
|
||||
}
|
||||
elseif(in_array($programID, $group->programs))
|
||||
{
|
||||
$programRight = true;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $programRight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get invest person list.
|
||||
*
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
<?php include '../../common/view/header.html.php';
|
||||
js::set('deptID', $deptID);
|
||||
?>
|
||||
<?php if($acl != 'open'): ?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div id="sidebarHeader">
|
||||
<div class="title">
|
||||
@@ -24,19 +23,15 @@ js::set('deptID', $deptID);
|
||||
<a id="bysearchTab" class="btn btn-link querybox-toggle"><i class="icon icon-search muted"></i><?php echo $lang->personnel->search;?></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div id="mainContent" class="main-row fade">
|
||||
<?php if($acl != 'open'): ?>
|
||||
<div id="sidebar" class="side-col">
|
||||
<div class="sidebar-toggle"><i class="icon icon-angle-left"></i></div>
|
||||
<div class="cell">
|
||||
<?php echo $deptTree;?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<div class="main-col">
|
||||
<div id="queryBox" class="cell <?php if($browseType == 'bysearch') echo ' show';?>" data-module="accessible"></div>
|
||||
<?php if(!empty($personnelList)):?>
|
||||
<form class="main-table table-personnel" action="" data-ride="table">
|
||||
<table id="accessibleList" class="table has-sort-head">
|
||||
<thead>
|
||||
@@ -67,12 +62,5 @@ js::set('deptID', $deptID);
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<div class="table-empty-tip">
|
||||
<p>
|
||||
<span class="text-muted"><?php echo $acl == 'open' ? $lang->personnel->openedPGMTip : $lang->noData;?></span>
|
||||
</p>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
|
||||
@@ -56,7 +56,8 @@ class product extends control
|
||||
if($this->app->getViewType() != 'mhtml') unset($this->lang->product->menu->index);
|
||||
$productID = $this->product->saveState($productID, $this->products);
|
||||
$branch = (int)$this->cookie->preBranch;
|
||||
//$this->product->setMenu($productID, $branch);
|
||||
|
||||
if($this->app->viewType == 'mhtml') $this->product->setMenu($productID, $branch);
|
||||
|
||||
if(common::hasPriv('product', 'create')) $this->lang->TRActions = html::a($this->createLink('product', 'create'), "<i class='icon icon-sm icon-plus'></i> " . $this->lang->product->create, '', "class='btn btn-primary'");
|
||||
|
||||
@@ -321,6 +322,7 @@ class product extends control
|
||||
$this->loadModel('action')->create('product', $productID, 'opened');
|
||||
|
||||
$this->executeHooks($productID);
|
||||
if($this->viewType == 'json') $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $productID));
|
||||
|
||||
$openApp = $this->app->openApp;
|
||||
$moduleName = $openApp == 'program'? 'program' : $this->moduleName;
|
||||
@@ -1048,6 +1050,12 @@ class product extends control
|
||||
$this->loadModel('program');
|
||||
$this->session->set('productList', $this->app->getURI(true), 'product');
|
||||
|
||||
if($this->app->viewType == 'mhtml')
|
||||
{
|
||||
$productID = $this->product->saveState(0, $this->products);
|
||||
$this->product->setMenu($productID);
|
||||
}
|
||||
|
||||
/* Process product structure. */
|
||||
$productStructure = array();
|
||||
$productStats = $this->product->getStats($orderBy, '', $browseType, '', 'story');
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Load product Lines.
|
||||
* Load product Lines.
|
||||
*
|
||||
* @param $rootID
|
||||
* @access public
|
||||
@@ -37,3 +37,31 @@ $('#program').change(function()
|
||||
$('#line').chosen();
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* Toggle line.
|
||||
*
|
||||
* @param object $obj
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
function toggleLine(obj)
|
||||
{
|
||||
var $obj = $(obj);
|
||||
if($obj.length == 0) return false;
|
||||
|
||||
var $line = $obj.closest('table').find('#line');
|
||||
|
||||
if($obj.prop('checked'))
|
||||
{
|
||||
$('form .line-no-exist').removeClass('hidden');
|
||||
$('form .line-exist').addClass('hidden');
|
||||
$line.attr('disabled', 'disabled');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('form .line-exist').removeClass('hidden');
|
||||
$('form .line-no-exist').addClass('hidden');
|
||||
$line.removeAttr('disabled');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ $lang->product->updateOrder = 'Ranking';
|
||||
$lang->product->orderAction = "Rank {$lang->productCommon}";
|
||||
$lang->product->all = "Alle {$lang->productCommon}";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Exportiere Daten';
|
||||
$lang->product->exportAction = "Export {$lang->productCommon}";
|
||||
$lang->product->dashboard = 'Dashboard';
|
||||
|
||||
@@ -26,6 +26,7 @@ $lang->product->closed = 'Closed';
|
||||
$lang->product->updateOrder = 'Order';
|
||||
$lang->product->all = "All {$lang->productCommon}s";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Export';
|
||||
$lang->product->dashboard = "Dashboard";
|
||||
$lang->product->changeProgram = "{$lang->productCommon} confirmation of the scope of influence of adjustment of the program set";
|
||||
|
||||
@@ -28,6 +28,7 @@ $lang->product->updateOrder = 'Ordre';
|
||||
$lang->product->orderAction = "Rang {$lang->productCommon}";
|
||||
$lang->product->all = "Tous les {$lang->productCommon}s";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Export';
|
||||
$lang->product->exportAction = "Export {$lang->productCommon}";
|
||||
$lang->product->dashboard = "Dashboard";
|
||||
|
||||
@@ -28,6 +28,7 @@ $lang->product->updateOrder = 'Sắp xếp';
|
||||
$lang->product->orderAction = "Đánh giá {$lang->productCommon}";
|
||||
$lang->product->all = "Tất cả {$lang->productCommon}";
|
||||
$lang->product->manageLine = "Manage {$lang->productCommon} Line";
|
||||
$lang->product->newLine = "Create {$lang->productCommon} Line";
|
||||
$lang->product->export = 'Xuất';
|
||||
$lang->product->exportAction = "Xuất {$lang->productCommon}";
|
||||
$lang->product->dashboard = "Dashboard";
|
||||
|
||||
@@ -26,6 +26,7 @@ $lang->product->closed = '已关闭';
|
||||
$lang->product->updateOrder = '排序';
|
||||
$lang->product->all = "所有{$lang->productCommon}";
|
||||
$lang->product->manageLine = "维护{$lang->productCommon}线";
|
||||
$lang->product->newLine = "新建{$lang->productCommon}线";
|
||||
$lang->product->export = '导出数据';
|
||||
$lang->product->dashboard = "{$lang->productCommon}仪表盘";
|
||||
$lang->product->changeProgram = "{$lang->productCommon}调整所属项目集影响范围确认";
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user