| custom->default;?> | - config->URAndSR):?>custom->URConcept;?> | @@ -36,9 +33,6 @@
|---|---|
| custom->URSR) echo 'checked';?>> | - config->URAndSR):?>@@ -54,11 +48,4 @@ |
diff --git a/VERSION b/VERSION
index 120e7b8de4..2bbd2b4b42 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-15.0.stable
+15.0.1
diff --git a/config/config.php b/config/config.php
index d484b80017..fad76cba64 100644
--- a/config/config.php
+++ b/config/config.php
@@ -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.
diff --git a/config/zentaopms.php b/config/zentaopms.php
index 7e0e797960..2b3487872e 100644
--- a/config/zentaopms.php
+++ b/config/zentaopms.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();
diff --git a/db/demo.sql b/db/demo.sql
index b03a8e5f4e..5e6f3d6366 100644
--- a/db/demo.sql
+++ b/db/demo.sql
@@ -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, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。
', '开发并通过验收
'),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。
', ''),
diff --git a/db/endemo.sql b/db/endemo.sql
index b03a8e5f4e..5e6f3d6366 100644
--- a/db/endemo.sql
+++ b/db/endemo.sql
@@ -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, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。
', '开发并通过验收
'),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。
', ''),
diff --git a/db/update15.0.rc3.sql b/db/update15.0.rc3.sql
index 48a9297a65..8185fd6600 100644
--- a/db/update15.0.rc3.sql
+++ b/db/update15.0.rc3.sql
@@ -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';
diff --git a/db/update15.0.sql b/db/update15.0.sql
index 89ff0d7c93..1dab238791 100644
--- a/db/update15.0.sql
+++ b/db/update15.0.sql
@@ -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';
diff --git a/db/zentao.sql b/db/zentao.sql
index 7887d5a9d3..143cff8d1d 100644
--- a/db/zentao.sql
+++ b/db/zentao.sql
@@ -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'),
diff --git a/framework/base/helper.class.php b/framework/base/helper.class.php
index 423ef4834c..33e13afff4 100644
--- a/framework/base/helper.class.php
+++ b/framework/base/helper.class.php
@@ -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'))
{
diff --git a/framework/base/router.class.php b/framework/base/router.class.php
index 3a0490f547..ad4e48f97d 100644
--- a/framework/base/router.class.php
+++ b/framework/base/router.class.php
@@ -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);
}
diff --git a/lib/base/front/front.class.php b/lib/base/front/front.class.php
index 6708f6f377..5a0fccc830 100644
--- a/lib/base/front/front.class.php
+++ b/lib/base/front/front.class.php
@@ -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();
}
diff --git a/lib/scm/gitlab.class.php b/lib/scm/gitlab.class.php
index 814de73491..e825ba7d04 100644
--- a/lib/scm/gitlab.class.php
+++ b/lib/scm/gitlab.class.php
@@ -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);
}
diff --git a/lib/spliter/spliter.class.php b/lib/spliter/spliter.class.php
index c630596a22..f1ad87b7b8 100644
--- a/lib/spliter/spliter.class.php
+++ b/lib/spliter/spliter.class.php
@@ -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
*/
diff --git a/module/action/config.php b/module/action/config.php
index 55f1e7b19c..66255e67d6 100755
--- a/module/action/config.php
+++ b/module/action/config.php
@@ -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,';
diff --git a/module/action/control.php b/module/action/control.php
index daae09f2bc..2355ae678d 100755
--- a/module/action/control.php
+++ b/module/action/control.php
@@ -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);
diff --git a/module/action/lang/de.php b/module/action/lang/de.php
index 4e1c3aad2e..b4e41f8e8f 100644
--- a/module/action/lang/de.php
+++ b/module/action/lang/de.php
@@ -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, $action von $actor.' . "\n";
-$lang->action->desc->extra = '$date, $action als $extra von $actor.' . "\n";
-$lang->action->desc->opened = '$date, erstellt von $actor .' . "\n";
-$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n";
-$lang->action->desc->created = '$date, erstellt von $actor .' . "\n";
-$lang->action->desc->added = '$date, hinzugefügt durch $actor .' . "\n";
-$lang->action->desc->changed = '$date, bearbeitet von $actor .' . "\n";
-$lang->action->desc->edited = '$date, bearbeitet von $actor .' . "\n";
-$lang->action->desc->assigned = '$date, $actor zugewisen an $extra.' . "\n";
-$lang->action->desc->closed = '$date, geschlossen von $actor .' . "\n";
-$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n";
-$lang->action->desc->deleted = '$date, gelöscht von $actor .' . "\n";
-$lang->action->desc->deletedfile = '$date, $actor löschte $extra.' . "\n";
-$lang->action->desc->editfile = '$date, $actor bearbeitete $extra.' . "\n";
-$lang->action->desc->erased = '$date, gelöscht von $actor .' . "\n";
-$lang->action->desc->undeleted = '$date, wiederhergestellt von $actor .' . "\n";
-$lang->action->desc->hidden = '$date, versteckt von $actor .' . "\n";
-$lang->action->desc->commented = '$date, hinzugefügt von $actor.' . "\n";
-$lang->action->desc->activated = '$date, aktiviert von $actor .' . "\n";
-$lang->action->desc->blocked = '$date, geblockt von $actor .' . "\n";
-$lang->action->desc->moved = '$date, verschoben von $actor , ursprünglich "$extra".' . "\n";
-$lang->action->desc->confirmed = '$date, $actor hat die Anpassung der Story bestätigt. Das letzte Build ist #$extra.' . "\n";
-$lang->action->desc->caseconfirmed = '$date, $actor hat die Anpassung des Falls bestätigt. Das letzte Build ist #$extra' . "\n";
-$lang->action->desc->bugconfirmed = '$date, $actor hat den Bug bestätigt.' . "\n";
-$lang->action->desc->frombug = '$date, konvertiert von $actor. Die ID war $extra.';
-$lang->action->desc->started = '$date, gestartet von $actor.' . "\n";
-$lang->action->desc->restarted = '$date, continued by $actor.' . "\n";
-$lang->action->desc->delayed = '$date, zurückgestellt von $actor.' . "\n";
-$lang->action->desc->suspended = '$date, ausgesetzt von $actor.' . "\n";
-$lang->action->desc->recordestimate = '$date, aufgenommen von $actor und hat $extra Stunden aufgebraucht.';
-$lang->action->desc->editestimate = '$date, $actor Stunden angepaast.';
-$lang->action->desc->deleteestimate = '$date, $actor Stunden gelöscht.';
-$lang->action->desc->canceled = '$date, abgebrochen von $actor.' . "\n";
-$lang->action->desc->svncommited = '$date, $actor festgelegt. Build ist #$extra.' . "\n";
-$lang->action->desc->gitcommited = '$date, $actor festgelegt. Build ist #$extra.' . "\n";
-$lang->action->desc->finished = '$date, abgeschlossen von $actor.' . "\n";
-$lang->action->desc->paused = '$date, pausiert von $actor.' . "\n";
-$lang->action->desc->verified = '$date, überprüft von $actor.' . "\n";
-$lang->action->desc->diff1 = '%s wurde geändert. Es war "%s" und ist jetzt "%s".
' . "\n";
-$lang->action->desc->diff2 = '%s wurde geändert. Die Differenz ist ' . "\n" . "
%s" . "\n
%s"; -$lang->action->desc->diff3 = 'Dateiname %s wurde geändert zu %s .' . "\n"; -$lang->action->desc->linked2bug = '$date Verknüpft mit $extra von $actor'; -$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; -$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->common = '$date, $action von $actor.' . "\n"; +$lang->action->desc->extra = '$date, $action als $extra von $actor.' . "\n"; +$lang->action->desc->opened = '$date, erstellt von $actor .' . "\n"; +$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; +$lang->action->desc->created = '$date, erstellt von $actor .' . "\n"; +$lang->action->desc->added = '$date, hinzugefügt durch $actor .' . "\n"; +$lang->action->desc->changed = '$date, bearbeitet von $actor .' . "\n"; +$lang->action->desc->edited = '$date, bearbeitet von $actor .' . "\n"; +$lang->action->desc->assigned = '$date, $actor zugewisen an $extra.' . "\n"; +$lang->action->desc->closed = '$date, geschlossen von $actor .' . "\n"; +$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; +$lang->action->desc->deleted = '$date, gelöscht von $actor .' . "\n"; +$lang->action->desc->deletedfile = '$date, $actor löschte $extra.' . "\n"; +$lang->action->desc->editfile = '$date, $actor bearbeitete $extra.' . "\n"; +$lang->action->desc->erased = '$date, gelöscht von $actor .' . "\n"; +$lang->action->desc->undeleted = '$date, wiederhergestellt von $actor .' . "\n"; +$lang->action->desc->hidden = '$date, versteckt von $actor .' . "\n"; +$lang->action->desc->commented = '$date, hinzugefügt von $actor.' . "\n"; +$lang->action->desc->activated = '$date, aktiviert von $actor .' . "\n"; +$lang->action->desc->blocked = '$date, geblockt von $actor .' . "\n"; +$lang->action->desc->moved = '$date, verschoben von $actor , ursprünglich "$extra".' . "\n"; +$lang->action->desc->confirmed = '$date, $actor hat die Anpassung der Story bestätigt. Das letzte Build ist #$extra.' . "\n"; +$lang->action->desc->caseconfirmed = '$date, $actor hat die Anpassung des Falls bestätigt. Das letzte Build ist #$extra' . "\n"; +$lang->action->desc->bugconfirmed = '$date, $actor hat den Bug bestätigt.' . "\n"; +$lang->action->desc->frombug = '$date, konvertiert von $actor. Die ID war $extra.'; +$lang->action->desc->started = '$date, gestartet von $actor.' . "\n"; +$lang->action->desc->restarted = '$date, continued by $actor.' . "\n"; +$lang->action->desc->delayed = '$date, zurückgestellt von $actor.' . "\n"; +$lang->action->desc->suspended = '$date, ausgesetzt von $actor.' . "\n"; +$lang->action->desc->recordestimate = '$date, aufgenommen von $actor und hat $extra Stunden aufgebraucht.'; +$lang->action->desc->editestimate = '$date, $actor Stunden angepaast.'; +$lang->action->desc->deleteestimate = '$date, $actor Stunden gelöscht.'; +$lang->action->desc->canceled = '$date, abgebrochen von $actor.' . "\n"; +$lang->action->desc->svncommited = '$date, $actor festgelegt. Build ist #$extra.' . "\n"; +$lang->action->desc->gitcommited = '$date, $actor festgelegt. Build ist #$extra.' . "\n"; +$lang->action->desc->finished = '$date, abgeschlossen von $actor.' . "\n"; +$lang->action->desc->paused = '$date, pausiert von $actor.' . "\n"; +$lang->action->desc->verified = '$date, überprüft von $actor.' . "\n"; +$lang->action->desc->diff1 = '%s wurde geändert. Es war "%s" und ist jetzt "%s".
%s" . "\n
%s"; +$lang->action->desc->diff3 = 'Dateiname %s wurde geändert zu %s .' . "\n"; +$lang->action->desc->linked2bug = '$date Verknüpft mit $extra von $actor'; +$lang->action->desc->linked2testtask = '$date, linked to $extra by $actor'; +$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; +$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->estimated = '$date, by $actor estimated.' . "\n"; +$lang->action->desc->run = '$date, by $actor executed.' . "\n"; /* 子任务修改父任务的历史操作记录 */ $lang->action->desc->createchildren = '$date, $actor created a child task $extra。' . "\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(); diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 1fdac66288..740ac31413 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -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, $action by $actor.' . "\n"; -$lang->action->desc->extra = '$date, $action as $extra by $actor.' . "\n"; -$lang->action->desc->opened = '$date, created by $actor .' . "\n"; -$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; -$lang->action->desc->created = '$date, created by $actor .' . "\n"; -$lang->action->desc->added = '$date, added by $actor .' . "\n"; -$lang->action->desc->changed = '$date, changed by $actor .' . "\n"; -$lang->action->desc->edited = '$date, edited by $actor .' . "\n"; -$lang->action->desc->assigned = '$date, $actor assigned to $extra.' . "\n"; -$lang->action->desc->closed = '$date, closed by $actor .' . "\n"; -$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; -$lang->action->desc->deleted = '$date, deleted by $actor .' . "\n"; -$lang->action->desc->deletedfile = '$date, $actor deleted $extra.' . "\n"; -$lang->action->desc->editfile = '$date, $actor edited $extra.' . "\n"; -$lang->action->desc->erased = '$date, deleted by $actor .' . "\n"; -$lang->action->desc->undeleted = '$date, restored by $actor .' . "\n"; -$lang->action->desc->hidden = '$date, hidden by $actor .' . "\n"; -$lang->action->desc->commented = '$date, added by $actor.' . "\n"; -$lang->action->desc->activated = '$date, activated by $actor .' . "\n"; -$lang->action->desc->blocked = '$date, blocked by $actor .' . "\n"; -$lang->action->desc->moved = '$date, moved by $actor , which was "$extra".' . "\n"; -$lang->action->desc->confirmed = '$date, $actor confirmed the story change. The latest build is #$extra.' . "\n"; -$lang->action->desc->caseconfirmed = '$date, $actor confirmed the case change. The latest build is #$extra' . "\n"; -$lang->action->desc->bugconfirmed = '$date, $actor confirmed Bug.' . "\n"; -$lang->action->desc->frombug = '$date, converted from $actor. Its ID was $extra.'; -$lang->action->desc->started = '$date, started by $actor.' . "\n"; -$lang->action->desc->restarted = '$date, continued by $actor.' . "\n"; -$lang->action->desc->delayed = '$date, postponed by $actor.' . "\n"; -$lang->action->desc->suspended = '$date, suspended by $actor.' . "\n"; -$lang->action->desc->recordestimate = '$date, recorded by $actor and it cost $extra hours.'; -$lang->action->desc->editestimate = '$date, $actor edited Hour.'; -$lang->action->desc->deleteestimate = '$date, $actor deleted Hour.'; -$lang->action->desc->canceled = '$date, cancelled by $actor.' . "\n"; -$lang->action->desc->svncommited = '$date, $actor committed and the build is #$extra.' . "\n"; -$lang->action->desc->gitcommited = '$date, $actor committed and the build is #$extra.' . "\n"; -$lang->action->desc->finished = '$date, finished by $actor.' . "\n"; -$lang->action->desc->paused = '$date, paused by $actor.' . "\n"; -$lang->action->desc->verified = '$date, verified by $actor.' . "\n"; -$lang->action->desc->diff1 = '%s is changed. It was "%s" and it is "%s".
%s" . "\n
%s"; -$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n"; -$lang->action->desc->linked2bug = '$date, linked to $extra by $actor'; -$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; -$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->common = '$date, $action by $actor.' . "\n"; +$lang->action->desc->extra = '$date, $action as $extra by $actor.' . "\n"; +$lang->action->desc->opened = '$date, created by $actor .' . "\n"; +$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; +$lang->action->desc->created = '$date, created by $actor .' . "\n"; +$lang->action->desc->added = '$date, added by $actor .' . "\n"; +$lang->action->desc->changed = '$date, changed by $actor .' . "\n"; +$lang->action->desc->edited = '$date, edited by $actor .' . "\n"; +$lang->action->desc->assigned = '$date, $actor assigned to $extra.' . "\n"; +$lang->action->desc->closed = '$date, closed by $actor .' . "\n"; +$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; +$lang->action->desc->deleted = '$date, deleted by $actor .' . "\n"; +$lang->action->desc->deletedfile = '$date, $actor deleted $extra.' . "\n"; +$lang->action->desc->editfile = '$date, $actor edited $extra.' . "\n"; +$lang->action->desc->erased = '$date, deleted by $actor .' . "\n"; +$lang->action->desc->undeleted = '$date, restored by $actor .' . "\n"; +$lang->action->desc->hidden = '$date, hidden by $actor .' . "\n"; +$lang->action->desc->commented = '$date, added by $actor.' . "\n"; +$lang->action->desc->activated = '$date, activated by $actor .' . "\n"; +$lang->action->desc->blocked = '$date, blocked by $actor .' . "\n"; +$lang->action->desc->moved = '$date, moved by $actor , which was "$extra".' . "\n"; +$lang->action->desc->confirmed = '$date, $actor confirmed the story change. The latest build is #$extra.' . "\n"; +$lang->action->desc->caseconfirmed = '$date, $actor confirmed the case change. The latest build is #$extra' . "\n"; +$lang->action->desc->bugconfirmed = '$date, $actor confirmed Bug.' . "\n"; +$lang->action->desc->frombug = '$date, converted from $actor. Its ID was $extra.'; +$lang->action->desc->started = '$date, started by $actor.' . "\n"; +$lang->action->desc->restarted = '$date, continued by $actor.' . "\n"; +$lang->action->desc->delayed = '$date, postponed by $actor.' . "\n"; +$lang->action->desc->suspended = '$date, suspended by $actor.' . "\n"; +$lang->action->desc->recordestimate = '$date, recorded by $actor and it cost $extra hours.'; +$lang->action->desc->editestimate = '$date, $actor edited Hour.'; +$lang->action->desc->deleteestimate = '$date, $actor deleted Hour.'; +$lang->action->desc->canceled = '$date, cancelled by $actor.' . "\n"; +$lang->action->desc->svncommited = '$date, $actor committed and the build is #$extra.' . "\n"; +$lang->action->desc->gitcommited = '$date, $actor committed and the build is #$extra.' . "\n"; +$lang->action->desc->finished = '$date, finished by $actor.' . "\n"; +$lang->action->desc->paused = '$date, paused by $actor.' . "\n"; +$lang->action->desc->verified = '$date, verified by $actor.' . "\n"; +$lang->action->desc->diff1 = '%s is changed. It was "%s" and it is "%s".
%s" . "\n
%s"; +$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n"; +$lang->action->desc->linked2bug = '$date, linked to $extra by $actor'; +$lang->action->desc->linked2testtask = '$date, linked to $extra by $actor'; +$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; +$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->estimated = '$date, by $actor estimated.' . "\n"; +$lang->action->desc->run = '$date, by $actor executed.' . "\n"; /* Used to describe the history of operations related to parent-child tasks. */ $lang->action->desc->createchildren = '$date, $actor created a child task $extra。' . "\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(); diff --git a/module/action/lang/fr.php b/module/action/lang/fr.php index fc275fa0e0..e39d196bf5 100644 --- a/module/action/lang/fr.php +++ b/module/action/lang/fr.php @@ -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, $action par $actor.' . "\n"; -$lang->action->desc->extra = '$date, $action en tant que $extra par $actor.' . "\n"; -$lang->action->desc->opened = '$date, initié par $actor .' . "\n"; -$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; -$lang->action->desc->created = '$date, créé par $actor .' . "\n"; -$lang->action->desc->added = '$date, ajouter par $actor .' . "\n"; -$lang->action->desc->changed = '$date, modifié par $actor .' . "\n"; -$lang->action->desc->edited = '$date, édité par $actor .' . "\n"; -$lang->action->desc->assigned = '$date, $actor affecté à $extra.' . "\n"; -$lang->action->desc->closed = '$date, fermé par $actor .' . "\n"; -$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; -$lang->action->desc->deleted = '$date, supprimé par $actor .' . "\n"; -$lang->action->desc->deletedfile = '$date, $actor a supprimé $extra.' . "\n"; -$lang->action->desc->editfile = '$date, $actor a édité $extra.' . "\n"; -$lang->action->desc->erased = '$date, supprimé par $actor .' . "\n"; -$lang->action->desc->undeleted = '$date, restauré par $actor .' . "\n"; -$lang->action->desc->hidden = '$date, masqué par $actor .' . "\n"; -$lang->action->desc->commented = '$date, ajouté par $actor.' . "\n"; -$lang->action->desc->activated = '$date, activé par $actor .' . "\n"; -$lang->action->desc->blocked = '$date, bloqué par $actor .' . "\n"; -$lang->action->desc->moved = '$date, déplacé par $actor , qui était "$extra".' . "\n"; -$lang->action->desc->confirmed = '$date, $actor a confirmé la modification de la story. Le dernier build est #$extra.' . "\n"; -$lang->action->desc->caseconfirmed = '$date, $actor a confirmé la modification du CasTest. Le dernier build est #$extra' . "\n"; -$lang->action->desc->bugconfirmed = '$date, $actor a confirmé le Bug.' . "\n"; -$lang->action->desc->frombug = '$date, converti par $actor. Son ID était $extra.'; -$lang->action->desc->started = '$date, commencé par $actor.' . "\n"; -$lang->action->desc->restarted = '$date, reprise par $actor.' . "\n"; -$lang->action->desc->delayed = '$date, ajourné par $actor.' . "\n"; -$lang->action->desc->suspended = '$date, suspendu par $actor.' . "\n"; -$lang->action->desc->recordestimate = '$date, enregistré par $actor et son coût est de $extra heures.'; -$lang->action->desc->editestimate = '$date, $actor a édité son temps estimé.'; -$lang->action->desc->deleteestimate = '$date, $actor a supprimé son estimation de temps.'; -$lang->action->desc->canceled = '$date, annulé par $actor.' . "\n"; -$lang->action->desc->svncommited = '$date, $actor a validé, le build est #$extra.' . "\n"; -$lang->action->desc->gitcommited = '$date, $actor a validé, le build est #$extra.' . "\n"; -$lang->action->desc->finished = '$date, terminé par $actor.' . "\n"; -$lang->action->desc->paused = '$date, mis en pause par $actor.' . "\n"; -$lang->action->desc->verified = '$date, verifié par $actor.' . "\n"; -$lang->action->desc->diff1 = '%s a changé. Il est passé de "%s" à "%s".
%s" . "\n
%s"; -$lang->action->desc->diff3 = 'Le nom du fichier %s a changé pour %s .' . "\n"; -$lang->action->desc->linked2bug = '$date, affecté à $extra par $actor'; -$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; -$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->common = '$date, $action par $actor.' . "\n"; +$lang->action->desc->extra = '$date, $action en tant que $extra par $actor.' . "\n"; +$lang->action->desc->opened = '$date, initié par $actor .' . "\n"; +$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; +$lang->action->desc->created = '$date, créé par $actor .' . "\n"; +$lang->action->desc->added = '$date, ajouter par $actor .' . "\n"; +$lang->action->desc->changed = '$date, modifié par $actor .' . "\n"; +$lang->action->desc->edited = '$date, édité par $actor .' . "\n"; +$lang->action->desc->assigned = '$date, $actor affecté à $extra.' . "\n"; +$lang->action->desc->closed = '$date, fermé par $actor .' . "\n"; +$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; +$lang->action->desc->deleted = '$date, supprimé par $actor .' . "\n"; +$lang->action->desc->deletedfile = '$date, $actor a supprimé $extra.' . "\n"; +$lang->action->desc->editfile = '$date, $actor a édité $extra.' . "\n"; +$lang->action->desc->erased = '$date, supprimé par $actor .' . "\n"; +$lang->action->desc->undeleted = '$date, restauré par $actor .' . "\n"; +$lang->action->desc->hidden = '$date, masqué par $actor .' . "\n"; +$lang->action->desc->commented = '$date, ajouté par $actor.' . "\n"; +$lang->action->desc->activated = '$date, activé par $actor .' . "\n"; +$lang->action->desc->blocked = '$date, bloqué par $actor .' . "\n"; +$lang->action->desc->moved = '$date, déplacé par $actor , qui était "$extra".' . "\n"; +$lang->action->desc->confirmed = '$date, $actor a confirmé la modification de la story. Le dernier build est #$extra.' . "\n"; +$lang->action->desc->caseconfirmed = '$date, $actor a confirmé la modification du CasTest. Le dernier build est #$extra' . "\n"; +$lang->action->desc->bugconfirmed = '$date, $actor a confirmé le Bug.' . "\n"; +$lang->action->desc->frombug = '$date, converti par $actor. Son ID était $extra.'; +$lang->action->desc->started = '$date, commencé par $actor.' . "\n"; +$lang->action->desc->restarted = '$date, reprise par $actor.' . "\n"; +$lang->action->desc->delayed = '$date, ajourné par $actor.' . "\n"; +$lang->action->desc->suspended = '$date, suspendu par $actor.' . "\n"; +$lang->action->desc->recordestimate = '$date, enregistré par $actor et son coût est de $extra heures.'; +$lang->action->desc->editestimate = '$date, $actor a édité son temps estimé.'; +$lang->action->desc->deleteestimate = '$date, $actor a supprimé son estimation de temps.'; +$lang->action->desc->canceled = '$date, annulé par $actor.' . "\n"; +$lang->action->desc->svncommited = '$date, $actor a validé, le build est #$extra.' . "\n"; +$lang->action->desc->gitcommited = '$date, $actor a validé, le build est #$extra.' . "\n"; +$lang->action->desc->finished = '$date, terminé par $actor.' . "\n"; +$lang->action->desc->paused = '$date, mis en pause par $actor.' . "\n"; +$lang->action->desc->verified = '$date, verifié par $actor.' . "\n"; +$lang->action->desc->diff1 = '%s a changé. Il est passé de "%s" à "%s".
%s" . "\n
%s"; +$lang->action->desc->diff3 = 'Le nom du fichier %s a changé pour %s .' . "\n"; +$lang->action->desc->linked2bug = '$date, affecté à $extra par $actor'; +$lang->action->desc->linked2testtask = '$date, linked to $extra by $actor'; +$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; +$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->estimated = '$date, by $actor estimated.' . "\n"; +$lang->action->desc->run = '$date, by $actor executed.' . "\n"; /* 子任务修改父任务的历史操作记录 */ $lang->action->desc->createchildren = '$date, $actor a créé un sous-tâche $extra。' . "\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'; diff --git a/module/action/lang/vi.php b/module/action/lang/vi.php index dd24dd9d94..ff9145b833 100644 --- a/module/action/lang/vi.php +++ b/module/action/lang/vi.php @@ -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, $action bởi $actor.' . "\n"; -$lang->action->desc->extra = '$date, $action như $extra bởi $actor.' . "\n"; -$lang->action->desc->opened = '$date, được tạo bởi $actor .' . "\n"; -$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; -$lang->action->desc->created = '$date, được tạo bởi $actor .' . "\n"; -$lang->action->desc->added = '$date, thêm bởi $actor .' . "\n"; -$lang->action->desc->changed = '$date, changed by $actor .' . "\n"; -$lang->action->desc->edited = '$date, edited by $actor .' . "\n"; -$lang->action->desc->assigned = '$date, $actor assigned to $extra.' . "\n"; -$lang->action->desc->closed = '$date, được đóng bởi $actor .' . "\n"; -$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; -$lang->action->desc->deleted = '$date, được xóa bởi $actor .' . "\n"; -$lang->action->desc->deletedfile = '$date, $actor đã xóa $extra.' . "\n"; -$lang->action->desc->editfile = '$date, $actor đã sửa $extra.' . "\n"; -$lang->action->desc->erased = '$date, được xóa bởi $actor .' . "\n"; -$lang->action->desc->undeleted = '$date, khôi phục bởi $actor .' . "\n"; -$lang->action->desc->hidden = '$date, ẩn bởi $actor .' . "\n"; -$lang->action->desc->commented = '$date, được thêm bởi $actor.' . "\n"; -$lang->action->desc->activated = '$date, kích hoạt bởi $actor .' . "\n"; -$lang->action->desc->blocked = '$date, blocked by $actor .' . "\n"; -$lang->action->desc->moved = '$date, chuyển bởi $actor , cái là "$extra".' . "\n"; -$lang->action->desc->confirmed = '$date, $actor confirmed the story change. The latest build is #$extra.' . "\n"; -$lang->action->desc->caseconfirmed = '$date, $actor confirmed the case change. The latest build is #$extra' . "\n"; -$lang->action->desc->bugconfirmed = '$date, $actor confirmed Bug.' . "\n"; -$lang->action->desc->frombug = '$date, converted from $actor. Its ID was $extra.'; -$lang->action->desc->started = '$date, started by $actor.' . "\n"; -$lang->action->desc->restarted = '$date, continued by $actor.' . "\n"; -$lang->action->desc->delayed = '$date, postponed by $actor.' . "\n"; -$lang->action->desc->suspended = '$date, suspended by $actor.' . "\n"; -$lang->action->desc->recordestimate = '$date, ghi nhận bởi $actor and it cost $extra giờ.'; -$lang->action->desc->editestimate = '$date, $actor edited Hour.'; -$lang->action->desc->deleteestimate = '$date, $actor deleted Hour.'; -$lang->action->desc->canceled = '$date, cancelled by $actor.' . "\n"; -$lang->action->desc->svncommited = '$date, $actor committed and the build is #$extra.' . "\n"; -$lang->action->desc->gitcommited = '$date, $actor committed and the build is #$extra.' . "\n"; -$lang->action->desc->finished = '$date, finished by $actor.' . "\n"; -$lang->action->desc->paused = '$date, paused by $actor.' . "\n"; -$lang->action->desc->verified = '$date, verified by $actor.' . "\n"; -$lang->action->desc->diff1 = '%s is changed. It was "%s" and it is "%s".
%s" . "\n
%s"; -$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n"; -$lang->action->desc->linked2bug = '$date, liên kết tới $extra bởi $actor'; -$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; -$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->common = '$date, $action bởi $actor.' . "\n"; +$lang->action->desc->extra = '$date, $action như $extra bởi $actor.' . "\n"; +$lang->action->desc->opened = '$date, được tạo bởi $actor .' . "\n"; +$lang->action->desc->openedbysystem = '$date, opened by system.' . "\n"; +$lang->action->desc->created = '$date, được tạo bởi $actor .' . "\n"; +$lang->action->desc->added = '$date, thêm bởi $actor .' . "\n"; +$lang->action->desc->changed = '$date, changed by $actor .' . "\n"; +$lang->action->desc->edited = '$date, edited by $actor .' . "\n"; +$lang->action->desc->assigned = '$date, $actor assigned to $extra.' . "\n"; +$lang->action->desc->closed = '$date, được đóng bởi $actor .' . "\n"; +$lang->action->desc->closedbysystem = '$date, closed by system.' . "\n"; +$lang->action->desc->deleted = '$date, được xóa bởi $actor .' . "\n"; +$lang->action->desc->deletedfile = '$date, $actor đã xóa $extra.' . "\n"; +$lang->action->desc->editfile = '$date, $actor đã sửa $extra.' . "\n"; +$lang->action->desc->erased = '$date, được xóa bởi $actor .' . "\n"; +$lang->action->desc->undeleted = '$date, khôi phục bởi $actor .' . "\n"; +$lang->action->desc->hidden = '$date, ẩn bởi $actor .' . "\n"; +$lang->action->desc->commented = '$date, được thêm bởi $actor.' . "\n"; +$lang->action->desc->activated = '$date, kích hoạt bởi $actor .' . "\n"; +$lang->action->desc->blocked = '$date, blocked by $actor .' . "\n"; +$lang->action->desc->moved = '$date, chuyển bởi $actor , cái là "$extra".' . "\n"; +$lang->action->desc->confirmed = '$date, $actor confirmed the story change. The latest build is #$extra.' . "\n"; +$lang->action->desc->caseconfirmed = '$date, $actor confirmed the case change. The latest build is #$extra' . "\n"; +$lang->action->desc->bugconfirmed = '$date, $actor confirmed Bug.' . "\n"; +$lang->action->desc->frombug = '$date, converted from $actor. Its ID was $extra.'; +$lang->action->desc->started = '$date, started by $actor.' . "\n"; +$lang->action->desc->restarted = '$date, continued by $actor.' . "\n"; +$lang->action->desc->delayed = '$date, postponed by $actor.' . "\n"; +$lang->action->desc->suspended = '$date, suspended by $actor.' . "\n"; +$lang->action->desc->recordestimate = '$date, ghi nhận bởi $actor and it cost $extra giờ.'; +$lang->action->desc->editestimate = '$date, $actor edited Hour.'; +$lang->action->desc->deleteestimate = '$date, $actor deleted Hour.'; +$lang->action->desc->canceled = '$date, cancelled by $actor.' . "\n"; +$lang->action->desc->svncommited = '$date, $actor committed and the build is #$extra.' . "\n"; +$lang->action->desc->gitcommited = '$date, $actor committed and the build is #$extra.' . "\n"; +$lang->action->desc->finished = '$date, finished by $actor.' . "\n"; +$lang->action->desc->paused = '$date, paused by $actor.' . "\n"; +$lang->action->desc->verified = '$date, verified by $actor.' . "\n"; +$lang->action->desc->diff1 = '%s is changed. It was "%s" and it is "%s".
%s" . "\n
%s"; +$lang->action->desc->diff3 = 'File Name %s was changed to %s .' . "\n"; +$lang->action->desc->linked2bug = '$date, liên kết tới $extra bởi $actor'; +$lang->action->desc->linked2testtask = '$date, linked to $extra by $actor'; +$lang->action->desc->resolved = '$date, resolved by $actor ' . "\n"; +$lang->action->desc->managed = '$date, by $actor managed.' . "\n"; +$lang->action->desc->estimated = '$date, by $actor estimated.' . "\n"; +$lang->action->desc->run = '$date, by $actor executed.' . "\n"; /* Used to describe the history of operations related to parent-child tasks. */ $lang->action->desc->createchildren = '$date, $actor created a child task $extra。' . "\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'; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 9d5287d982..9662bf4504 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -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, $action by $actor。' . "\n"; -$lang->action->desc->extra = '$date, $action as $extra by $actor。' . "\n"; -$lang->action->desc->opened = '$date, 由 $actor 创建。' . "\n"; -$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n"; -$lang->action->desc->created = '$date, 由 $actor 创建。' . "\n"; -$lang->action->desc->added = '$date, 由 $actor 添加。' . "\n"; -$lang->action->desc->changed = '$date, 由 $actor 变更。' . "\n"; -$lang->action->desc->edited = '$date, 由 $actor 编辑。' . "\n"; -$lang->action->desc->assigned = '$date, 由 $actor 指派给 $extra。' . "\n"; -$lang->action->desc->closed = '$date, 由 $actor 关闭。' . "\n"; -$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n"; -$lang->action->desc->deleted = '$date, 由 $actor 删除。' . "\n"; -$lang->action->desc->deletedfile = '$date, 由 $actor 删除了附件:$extra。' . "\n"; -$lang->action->desc->editfile = '$date, 由 $actor 编辑了附件:$extra。' . "\n"; -$lang->action->desc->erased = '$date, 由 $actor 删除。' . "\n"; -$lang->action->desc->undeleted = '$date, 由 $actor 还原。' . "\n"; -$lang->action->desc->hidden = '$date, 由 $actor 隐藏。' . "\n"; -$lang->action->desc->commented = '$date, 由 $actor 添加备注。' . "\n"; -$lang->action->desc->activated = '$date, 由 $actor 激活。' . "\n"; -$lang->action->desc->blocked = '$date, 由 $actor 阻塞。' . "\n"; -$lang->action->desc->moved = '$date, 由 $actor 移动,之前为 "$extra"。' . "\n"; -$lang->action->desc->confirmed = '$date, 由 $actor 确认' . $lang->SRCommon . '变动,最新版本为#$extra。' . "\n"; -$lang->action->desc->caseconfirmed = '$date, 由 $actor 确认用例变动,最新版本为#$extra。' . "\n"; -$lang->action->desc->bugconfirmed = '$date, 由 $actor 确认Bug。' . "\n"; -$lang->action->desc->frombug = '$date, 由 $actor Bug转化而来,Bug编号为 $extra。'; -$lang->action->desc->started = '$date, 由 $actor 启动。' . "\n"; -$lang->action->desc->restarted = '$date, 由 $actor 继续。' . "\n"; -$lang->action->desc->delayed = '$date, 由 $actor 延期。' . "\n"; -$lang->action->desc->suspended = '$date, 由 $actor 挂起。' . "\n"; -$lang->action->desc->recordestimate = '$date, 由 $actor 记录工时,消耗 $extra 小时。'; -$lang->action->desc->editestimate = '$date, 由 $actor 编辑工时。'; -$lang->action->desc->deleteestimate = '$date, 由 $actor 删除工时。'; -$lang->action->desc->canceled = '$date, 由 $actor 取消。' . "\n"; -$lang->action->desc->svncommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; -$lang->action->desc->gitcommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; -$lang->action->desc->finished = '$date, 由 $actor 完成。' . "\n"; -$lang->action->desc->paused = '$date, 由 $actor 暂停。' . "\n"; -$lang->action->desc->verified = '$date, 由 $actor 验收。' . "\n"; -$lang->action->desc->diff1 = '修改了 %s,旧值为 "%s",新值为 "%s"。
%s" . "\n
%s"; -$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n"; -$lang->action->desc->linked2bug = '$date 由 $actor 关联到版本 $extra'; -$lang->action->desc->resolved = '$date, 由 $actor 解决。' . "\n"; -$lang->action->desc->managed = '$date, 由 $actor 维护。' . "\n"; +$lang->action->desc->common = '$date, $action by $actor。' . "\n"; +$lang->action->desc->extra = '$date, $action as $extra by $actor。' . "\n"; +$lang->action->desc->opened = '$date, 由 $actor 创建。' . "\n"; +$lang->action->desc->openedbysystem = '$date, 由系统创建。' . "\n"; +$lang->action->desc->created = '$date, 由 $actor 创建。' . "\n"; +$lang->action->desc->added = '$date, 由 $actor 添加。' . "\n"; +$lang->action->desc->changed = '$date, 由 $actor 变更。' . "\n"; +$lang->action->desc->edited = '$date, 由 $actor 编辑。' . "\n"; +$lang->action->desc->assigned = '$date, 由 $actor 指派给 $extra。' . "\n"; +$lang->action->desc->closed = '$date, 由 $actor 关闭。' . "\n"; +$lang->action->desc->closedbysystem = '$date, 由系统关闭。' . "\n"; +$lang->action->desc->deleted = '$date, 由 $actor 删除。' . "\n"; +$lang->action->desc->deletedfile = '$date, 由 $actor 删除了附件:$extra。' . "\n"; +$lang->action->desc->editfile = '$date, 由 $actor 编辑了附件:$extra。' . "\n"; +$lang->action->desc->erased = '$date, 由 $actor 删除。' . "\n"; +$lang->action->desc->undeleted = '$date, 由 $actor 还原。' . "\n"; +$lang->action->desc->hidden = '$date, 由 $actor 隐藏。' . "\n"; +$lang->action->desc->commented = '$date, 由 $actor 添加备注。' . "\n"; +$lang->action->desc->activated = '$date, 由 $actor 激活。' . "\n"; +$lang->action->desc->blocked = '$date, 由 $actor 阻塞。' . "\n"; +$lang->action->desc->moved = '$date, 由 $actor 移动,之前为 "$extra"。' . "\n"; +$lang->action->desc->confirmed = '$date, 由 $actor 确认' . $lang->SRCommon . '变动,最新版本为#$extra。' . "\n"; +$lang->action->desc->caseconfirmed = '$date, 由 $actor 确认用例变动,最新版本为#$extra。' . "\n"; +$lang->action->desc->bugconfirmed = '$date, 由 $actor 确认Bug。' . "\n"; +$lang->action->desc->frombug = '$date, 由 $actor Bug转化而来,Bug编号为 $extra。'; +$lang->action->desc->started = '$date, 由 $actor 启动。' . "\n"; +$lang->action->desc->restarted = '$date, 由 $actor 继续。' . "\n"; +$lang->action->desc->delayed = '$date, 由 $actor 延期。' . "\n"; +$lang->action->desc->suspended = '$date, 由 $actor 挂起。' . "\n"; +$lang->action->desc->recordestimate = '$date, 由 $actor 记录工时,消耗 $extra 小时。'; +$lang->action->desc->editestimate = '$date, 由 $actor 编辑工时。'; +$lang->action->desc->deleteestimate = '$date, 由 $actor 删除工时。'; +$lang->action->desc->canceled = '$date, 由 $actor 取消。' . "\n"; +$lang->action->desc->svncommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; +$lang->action->desc->gitcommited = '$date, 由 $actor 提交代码,版本为#$extra。' . "\n"; +$lang->action->desc->finished = '$date, 由 $actor 完成。' . "\n"; +$lang->action->desc->paused = '$date, 由 $actor 暂停。' . "\n"; +$lang->action->desc->verified = '$date, 由 $actor 验收。' . "\n"; +$lang->action->desc->diff1 = '修改了 %s,旧值为 "%s",新值为 "%s"。
%s" . "\n
%s"; +$lang->action->desc->diff3 = '将文件名 %s 改为 %s 。' . "\n"; +$lang->action->desc->linked2bug = '$date 由 $actor 关联到版本 $extra'; +$lang->action->desc->linked2testtask = '$date 由 $actor 关联到测试单 $extra'; +$lang->action->desc->resolved = '$date, 由 $actor 解决。' . "\n"; +$lang->action->desc->managed = '$date, 由 $actor 维护。' . "\n"; +$lang->action->desc->estimated = '$date, 由 $actor 估算。' . "\n"; +$lang->action->desc->run = '$date, 由 $actor 执行。' . "\n"; /* 用来描述和父子任务相关的操作历史记录。*/ $lang->action->desc->createchildren = '$date, 由 $actor 创建子任务 $extra。' . "\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(); diff --git a/module/action/lang/zh-tw.php b/module/action/lang/zh-tw.php index fbabd81420..21137aa604 100755 --- a/module/action/lang/zh-tw.php +++ b/module/action/lang/zh-tw.php @@ -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, $action by $actor。' . "\n"; -$lang->action->desc->extra = '$date, $action as $extra by $actor。' . "\n"; -$lang->action->desc->opened = '$date, 由 $actor 創建。' . "\n"; -$lang->action->desc->openedbysystem = '$date, 由系統創建。' . "\n"; -$lang->action->desc->created = '$date, 由 $actor 創建。' . "\n"; -$lang->action->desc->added = '$date, 由 $actor 添加。' . "\n"; -$lang->action->desc->changed = '$date, 由 $actor 變更。' . "\n"; -$lang->action->desc->edited = '$date, 由 $actor 編輯。' . "\n"; -$lang->action->desc->assigned = '$date, 由 $actor 指派給 $extra。' . "\n"; -$lang->action->desc->closed = '$date, 由 $actor 關閉。' . "\n"; -$lang->action->desc->closedbysystem = '$date, 由系統關閉。' . "\n"; -$lang->action->desc->deleted = '$date, 由 $actor 刪除。' . "\n"; -$lang->action->desc->deletedfile = '$date, 由 $actor 刪除了附件:$extra。' . "\n"; -$lang->action->desc->editfile = '$date, 由 $actor 編輯了附件:$extra。' . "\n"; -$lang->action->desc->erased = '$date, 由 $actor 刪除。' . "\n"; -$lang->action->desc->undeleted = '$date, 由 $actor 還原。' . "\n"; -$lang->action->desc->hidden = '$date, 由 $actor 隱藏。' . "\n"; -$lang->action->desc->commented = '$date, 由 $actor 添加備註。' . "\n"; -$lang->action->desc->activated = '$date, 由 $actor 激活。' . "\n"; -$lang->action->desc->blocked = '$date, 由 $actor 阻塞。' . "\n"; -$lang->action->desc->moved = '$date, 由 $actor 移動,之前為 "$extra"。' . "\n"; -$lang->action->desc->confirmed = '$date, 由 $actor 確認' . $lang->SRCommon . '變動,最新版本為#$extra。' . "\n"; -$lang->action->desc->caseconfirmed = '$date, 由 $actor 確認用例變動,最新版本為#$extra。' . "\n"; -$lang->action->desc->bugconfirmed = '$date, 由 $actor 確認Bug。' . "\n"; -$lang->action->desc->frombug = '$date, 由 $actor Bug轉化而來,Bug編號為 $extra。'; -$lang->action->desc->started = '$date, 由 $actor 啟動。' . "\n"; -$lang->action->desc->restarted = '$date, 由 $actor 繼續。' . "\n"; -$lang->action->desc->delayed = '$date, 由 $actor 延期。' . "\n"; -$lang->action->desc->suspended = '$date, 由 $actor 掛起。' . "\n"; -$lang->action->desc->recordestimate = '$date, 由 $actor 記錄工時,消耗 $extra 小時。'; -$lang->action->desc->editestimate = '$date, 由 $actor 編輯工時。'; -$lang->action->desc->deleteestimate = '$date, 由 $actor 刪除工時。'; -$lang->action->desc->canceled = '$date, 由 $actor 取消。' . "\n"; -$lang->action->desc->svncommited = '$date, 由 $actor 提交代碼,版本為#$extra。' . "\n"; -$lang->action->desc->gitcommited = '$date, 由 $actor 提交代碼,版本為#$extra。' . "\n"; -$lang->action->desc->finished = '$date, 由 $actor 完成。' . "\n"; -$lang->action->desc->paused = '$date, 由 $actor 暫停。' . "\n"; -$lang->action->desc->verified = '$date, 由 $actor 驗收。' . "\n"; -$lang->action->desc->diff1 = '修改了 %s,舊值為 "%s",新值為 "%s"。
%s" . "\n
%s"; -$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n"; -$lang->action->desc->linked2bug = '$date 由 $actor 關聯到版本 $extra'; -$lang->action->desc->resolved = '$date, 由 $actor 解決。' . "\n"; -$lang->action->desc->managed = '$date, 由 $actor 維護。' . "\n"; +$lang->action->desc->common = '$date, $action by $actor。' . "\n"; +$lang->action->desc->extra = '$date, $action as $extra by $actor。' . "\n"; +$lang->action->desc->opened = '$date, 由 $actor 創建。' . "\n"; +$lang->action->desc->openedbysystem = '$date, 由系統創建。' . "\n"; +$lang->action->desc->created = '$date, 由 $actor 創建。' . "\n"; +$lang->action->desc->added = '$date, 由 $actor 添加。' . "\n"; +$lang->action->desc->changed = '$date, 由 $actor 變更。' . "\n"; +$lang->action->desc->edited = '$date, 由 $actor 編輯。' . "\n"; +$lang->action->desc->assigned = '$date, 由 $actor 指派給 $extra。' . "\n"; +$lang->action->desc->closed = '$date, 由 $actor 關閉。' . "\n"; +$lang->action->desc->closedbysystem = '$date, 由系統關閉。' . "\n"; +$lang->action->desc->deleted = '$date, 由 $actor 刪除。' . "\n"; +$lang->action->desc->deletedfile = '$date, 由 $actor 刪除了附件:$extra。' . "\n"; +$lang->action->desc->editfile = '$date, 由 $actor 編輯了附件:$extra。' . "\n"; +$lang->action->desc->erased = '$date, 由 $actor 刪除。' . "\n"; +$lang->action->desc->undeleted = '$date, 由 $actor 還原。' . "\n"; +$lang->action->desc->hidden = '$date, 由 $actor 隱藏。' . "\n"; +$lang->action->desc->commented = '$date, 由 $actor 添加備註。' . "\n"; +$lang->action->desc->activated = '$date, 由 $actor 激活。' . "\n"; +$lang->action->desc->blocked = '$date, 由 $actor 阻塞。' . "\n"; +$lang->action->desc->moved = '$date, 由 $actor 移動,之前為 "$extra"。' . "\n"; +$lang->action->desc->confirmed = '$date, 由 $actor 確認' . $lang->SRCommon . '變動,最新版本為#$extra。' . "\n"; +$lang->action->desc->caseconfirmed = '$date, 由 $actor 確認用例變動,最新版本為#$extra。' . "\n"; +$lang->action->desc->bugconfirmed = '$date, 由 $actor 確認Bug。' . "\n"; +$lang->action->desc->frombug = '$date, 由 $actor Bug轉化而來,Bug編號為 $extra。'; +$lang->action->desc->started = '$date, 由 $actor 啟動。' . "\n"; +$lang->action->desc->restarted = '$date, 由 $actor 繼續。' . "\n"; +$lang->action->desc->delayed = '$date, 由 $actor 延期。' . "\n"; +$lang->action->desc->suspended = '$date, 由 $actor 掛起。' . "\n"; +$lang->action->desc->recordestimate = '$date, 由 $actor 記錄工時,消耗 $extra 小時。'; +$lang->action->desc->editestimate = '$date, 由 $actor 編輯工時。'; +$lang->action->desc->deleteestimate = '$date, 由 $actor 刪除工時。'; +$lang->action->desc->canceled = '$date, 由 $actor 取消。' . "\n"; +$lang->action->desc->svncommited = '$date, 由 $actor 提交代碼,版本為#$extra。' . "\n"; +$lang->action->desc->gitcommited = '$date, 由 $actor 提交代碼,版本為#$extra。' . "\n"; +$lang->action->desc->finished = '$date, 由 $actor 完成。' . "\n"; +$lang->action->desc->paused = '$date, 由 $actor 暫停。' . "\n"; +$lang->action->desc->verified = '$date, 由 $actor 驗收。' . "\n"; +$lang->action->desc->diff1 = '修改了 %s,舊值為 "%s",新值為 "%s"。
%s" . "\n
%s"; +$lang->action->desc->diff3 = '將檔案名 %s 改為 %s 。' . "\n"; +$lang->action->desc->linked2bug = '$date 由 $actor 關聯到版本 $extra'; +$lang->action->desc->linked2testtask = '$date 由 $actor 關聯到測試單 $extra'; +$lang->action->desc->resolved = '$date, 由 $actor 解決。' . "\n"; +$lang->action->desc->managed = '$date, 由 $actor 維護。' . "\n"; +$lang->action->desc->estimated = '$date, 由 $actor 估算。' . "\n"; +$lang->action->desc->run = '$date, 由 $actor 執行。' . "\n"; /* 用來描述和父子任務相關的操作歷史記錄。*/ $lang->action->desc->createchildren = '$date, 由 $actor 創建子任務 $extra。' . "\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'] = '編輯文檔'; diff --git a/module/action/model.php b/module/action/model.php index 0ffeb0f758..2db2f1c184 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -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 = ''; diff --git a/module/block/control.php b/module/block/control.php index b1b5837792..304916c007 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -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') diff --git a/module/block/view/testtaskblock.html.php b/module/block/view/testtaskblock.html.php index 08e85a4c0c..96abd3848b 100644 --- a/module/block/view/testtaskblock.html.php +++ b/module/block/view/testtaskblock.html.php @@ -34,7 +34,7 @@ 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}"); ?>
| bug->project;?> | +project, "class='form-control chosen' onchange='loadProductExecutions($bug->product, this.value)'");?> | +||||
|---|---|---|---|---|---|
| bug->execution;?> | execution, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?> | diff --git a/module/build/control.php b/module/build/control.php index d626567243..818f5998e5 100644 --- a/module/build/control.php +++ b/module/build/control.php @@ -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') { diff --git a/module/caselib/control.php b/module/caselib/control.php index f2e28ecbd8..01030be398 100644 --- a/module/caselib/control.php +++ b/module/caselib/control.php @@ -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); } diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php index b9fe0c7024..2e2107aefa 100644 --- a/module/common/lang/menu.php +++ b/module/common/lang/menu.php @@ -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'; diff --git a/module/common/model.php b/module/common/model.php index 44362c312e..31181f9425 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -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); } } } diff --git a/module/common/view/header.lite.html.php b/module/common/view/header.lite.html.php index e07fa3263d..14eee9e636 100755 --- a/module/common/view/header.lite.html.php +++ b/module/common/view/header.lite.html.php @@ -70,8 +70,9 @@ $extHookFiles = glob($extHookRule); if($extHookFiles) foreach($extHookFiles as $extHookFile) include $extHookFile; ?> +app->getViewType() == 'xhtml' ? 'allow-self-open' : '';?> moduleName == 'index' && $this->methodName == 'index' && $this->cookie->hideMenu): ?> - + - + diff --git a/module/company/control.php b/module/company/control.php index bf7a918e9b..d5d6cad741 100644 --- a/module/company/control.php +++ b/module/company/control.php @@ -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); diff --git a/module/custom/config.php b/module/custom/config.php index e5837ffb1e..4b000df4ce 100644 --- a/module/custom/config.php +++ b/module/custom/config.php @@ -1,6 +1,6 @@ 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'; diff --git a/module/custom/control.php b/module/custom/control.php index bf5058b2b9..b189f6f7ad 100644 --- a/module/custom/control.php +++ b/module/custom/control.php @@ -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. * diff --git a/module/custom/lang/de.php b/module/custom/lang/de.php index 1cdf6d058a..f555845d9a 100644 --- a/module/custom/lang/de.php +++ b/module/custom/lang/de.php @@ -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'; diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php index 355cc1523f..560e6b936b 100644 --- a/module/custom/lang/en.php +++ b/module/custom/lang/en.php @@ -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'; diff --git a/module/custom/lang/fr.php b/module/custom/lang/fr.php index 8e44c229c8..3158aeca43 100644 --- a/module/custom/lang/fr.php +++ b/module/custom/lang/fr.php @@ -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'; diff --git a/module/custom/lang/vi.php b/module/custom/lang/vi.php index 58232273fe..3e0d4c47b6 100644 --- a/module/custom/lang/vi.php +++ b/module/custom/lang/vi.php @@ -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'; diff --git a/module/custom/lang/zh-cn.php b/module/custom/lang/zh-cn.php index b6a783ee18..669a9c8cdb 100644 --- a/module/custom/lang/zh-cn.php +++ b/module/custom/lang/zh-cn.php @@ -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'] = '关闭原因'; diff --git a/module/custom/view/browsestoryconcept.html.php b/module/custom/view/browsestoryconcept.html.php index d7555e869f..a369471976 100644 --- a/module/custom/view/browsestoryconcept.html.php +++ b/module/custom/view/browsestoryconcept.html.php @@ -11,7 +11,7 @@ ?>
| custom->default;?> | - config->URAndSR):?>custom->URConcept;?> | @@ -36,9 +33,6 @@
|---|---|
| custom->URSR) echo 'checked';?>> | - config->URAndSR):?>@@ -54,11 +48,4 @@ |