diff --git a/VERSION b/VERSION index 257b829d27..e1b8f601a2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -11.2.stable +11.3.stable diff --git a/config/config.php b/config/config.php index 487ba25ffd..1c1166de0d 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 = '11.2'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '11.3'; // 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/db/standard/zentao11.2.sql b/db/standard/zentao11.2.sql index d99f028edc..c7a14b36fc 100644 --- a/db/standard/zentao11.2.sql +++ b/db/standard/zentao11.2.sql @@ -1,4 +1,3 @@ -DROP TABLE IF EXISTS `zt_action`; CREATE TABLE `zt_action` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `objectType` varchar(30) NOT NULL DEFAULT '', @@ -17,7 +16,6 @@ CREATE TABLE `zt_action` ( KEY `project` (`project`), KEY `objectID` (`objectID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_block`; CREATE TABLE `zt_block` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `account` char(30) NOT NULL, @@ -34,7 +32,6 @@ CREATE TABLE `zt_block` ( UNIQUE KEY `accountModuleOrder` (`account`,`module`,`order`), KEY `account` (`account`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_branch`; CREATE TABLE `zt_branch` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL, @@ -44,7 +41,6 @@ CREATE TABLE `zt_branch` ( PRIMARY KEY (`id`), KEY `product` (`product`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_bug`; CREATE TABLE `zt_bug` ( `id` mediumint(8) NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -103,7 +99,6 @@ CREATE TABLE `zt_bug` ( KEY `case` (`case`), KEY `assignedTo` (`assignedTo`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_build`; CREATE TABLE `zt_build` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -122,7 +117,6 @@ CREATE TABLE `zt_build` ( KEY `product` (`product`), KEY `project` (`project`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_burn`; CREATE TABLE `zt_burn` ( `project` mediumint(8) unsigned NOT NULL, `date` date NOT NULL, @@ -131,7 +125,6 @@ CREATE TABLE `zt_burn` ( `consumed` float NOT NULL, PRIMARY KEY (`project`,`date`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_case`; CREATE TABLE `zt_case` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -175,7 +168,6 @@ CREATE TABLE `zt_case` ( KEY `story` (`story`), KEY `module` (`module`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_casestep`; CREATE TABLE `zt_casestep` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -188,7 +180,6 @@ CREATE TABLE `zt_casestep` ( KEY `case` (`case`), KEY `version` (`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_company`; CREATE TABLE `zt_company` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` char(120) DEFAULT NULL, @@ -203,7 +194,6 @@ CREATE TABLE `zt_company` ( `deleted` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_config`; CREATE TABLE `zt_config` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `owner` char(30) NOT NULL DEFAULT '', @@ -214,7 +204,6 @@ CREATE TABLE `zt_config` ( PRIMARY KEY (`id`), UNIQUE KEY `unique` (`owner`,`module`,`section`,`key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_cron`; CREATE TABLE `zt_cron` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `m` varchar(20) NOT NULL, @@ -231,7 +220,6 @@ CREATE TABLE `zt_cron` ( PRIMARY KEY (`id`), KEY `lastTime` (`lastTime`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_dept`; CREATE TABLE `zt_dept` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` char(60) NOT NULL, @@ -246,7 +234,6 @@ CREATE TABLE `zt_dept` ( KEY `parent` (`parent`), KEY `path` (`path`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_doc`; CREATE TABLE `zt_doc` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL, @@ -272,7 +259,6 @@ CREATE TABLE `zt_doc` ( KEY `project` (`project`), KEY `lib` (`lib`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_doccontent`; CREATE TABLE `zt_doccontent` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `doc` mediumint(8) unsigned NOT NULL, @@ -285,7 +271,6 @@ CREATE TABLE `zt_doccontent` ( PRIMARY KEY (`id`), UNIQUE KEY `doc_version` (`doc`,`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_doclib`; CREATE TABLE `zt_doclib` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `type` varchar(30) NOT NULL, @@ -303,7 +288,6 @@ CREATE TABLE `zt_doclib` ( KEY `product` (`product`), KEY `project` (`project`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_effort`; CREATE TABLE `zt_effort` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `user` char(30) NOT NULL DEFAULT '', @@ -319,7 +303,6 @@ CREATE TABLE `zt_effort` ( PRIMARY KEY (`id`), KEY `user` (`user`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_entry`; CREATE TABLE `zt_entry` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, @@ -335,7 +318,6 @@ CREATE TABLE `zt_entry` ( `deleted` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_extension`; CREATE TABLE `zt_extension` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(150) NOT NULL, @@ -357,7 +339,6 @@ CREATE TABLE `zt_extension` ( KEY `name` (`name`), KEY `installedTime` (`installedTime`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_file`; CREATE TABLE `zt_file` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `pathname` char(50) NOT NULL, @@ -375,7 +356,6 @@ CREATE TABLE `zt_file` ( KEY `objectType` (`objectType`), KEY `objectID` (`objectID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_group`; CREATE TABLE `zt_group` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` char(30) NOT NULL, @@ -384,14 +364,12 @@ CREATE TABLE `zt_group` ( `acl` text, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_grouppriv`; CREATE TABLE `zt_grouppriv` ( `group` mediumint(8) unsigned NOT NULL DEFAULT '0', `module` char(30) NOT NULL DEFAULT '', `method` char(30) NOT NULL DEFAULT '', UNIQUE KEY `group` (`group`,`module`,`method`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_history`; CREATE TABLE `zt_history` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `action` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -402,7 +380,6 @@ CREATE TABLE `zt_history` ( PRIMARY KEY (`id`), KEY `action` (`action`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_lang`; CREATE TABLE `zt_lang` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `lang` varchar(30) NOT NULL, @@ -414,7 +391,6 @@ CREATE TABLE `zt_lang` ( PRIMARY KEY (`id`), UNIQUE KEY `lang` (`lang`,`module`,`section`,`key`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_log`; CREATE TABLE `zt_log` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `objectType` varchar(30) NOT NULL, @@ -429,7 +405,6 @@ CREATE TABLE `zt_log` ( KEY `objectType` (`objectType`), KEY `obejctID` (`objectID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_module`; CREATE TABLE `zt_module` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `root` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -449,7 +424,6 @@ CREATE TABLE `zt_module` ( KEY `type` (`type`), KEY `path` (`path`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_notify`; CREATE TABLE `zt_notify` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `objectType` varchar(50) NOT NULL, @@ -466,7 +440,6 @@ CREATE TABLE `zt_notify` ( `failReason` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_product`; CREATE TABLE `zt_product` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(90) NOT NULL, @@ -488,7 +461,6 @@ CREATE TABLE `zt_product` ( PRIMARY KEY (`id`), KEY `order` (`order`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_productplan`; CREATE TABLE `zt_productplan` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL, @@ -503,7 +475,6 @@ CREATE TABLE `zt_productplan` ( KEY `product` (`product`), KEY `end` (`end`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_project`; CREATE TABLE `zt_project` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `isCat` enum('1','0') NOT NULL DEFAULT '0', @@ -542,7 +513,6 @@ CREATE TABLE `zt_project` ( KEY `status` (`status`), KEY `order` (`order`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_projectproduct`; CREATE TABLE `zt_projectproduct` ( `project` mediumint(8) unsigned NOT NULL, `product` mediumint(8) unsigned NOT NULL, @@ -550,7 +520,6 @@ CREATE TABLE `zt_projectproduct` ( `plan` mediumint(8) unsigned NOT NULL, PRIMARY KEY (`project`,`product`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_projectstory`; CREATE TABLE `zt_projectstory` ( `project` mediumint(8) unsigned NOT NULL DEFAULT '0', `product` mediumint(8) unsigned NOT NULL, @@ -559,7 +528,6 @@ CREATE TABLE `zt_projectstory` ( `order` smallint(6) unsigned NOT NULL, UNIQUE KEY `project` (`project`,`story`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_release`; CREATE TABLE `zt_release` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -578,7 +546,6 @@ CREATE TABLE `zt_release` ( KEY `product` (`product`), KEY `build` (`build`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_score`; CREATE TABLE `zt_score` ( `id` bigint(12) unsigned NOT NULL AUTO_INCREMENT, `account` varchar(30) NOT NULL, @@ -594,7 +561,6 @@ CREATE TABLE `zt_score` ( KEY `model` (`module`), KEY `method` (`method`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_story`; CREATE TABLE `zt_story` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -635,7 +601,6 @@ CREATE TABLE `zt_story` ( KEY `status` (`status`), KEY `assignedTo` (`assignedTo`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_storyspec`; CREATE TABLE `zt_storyspec` ( `story` mediumint(9) NOT NULL, `version` smallint(6) NOT NULL, @@ -644,14 +609,12 @@ CREATE TABLE `zt_storyspec` ( `verify` text NOT NULL, UNIQUE KEY `story` (`story`,`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_storystage`; CREATE TABLE `zt_storystage` ( `story` mediumint(8) unsigned NOT NULL, `branch` mediumint(8) unsigned NOT NULL, `stage` varchar(50) NOT NULL, KEY `story` (`story`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_suitecase`; CREATE TABLE `zt_suitecase` ( `suite` mediumint(8) unsigned NOT NULL, `product` mediumint(8) unsigned NOT NULL, @@ -659,7 +622,6 @@ CREATE TABLE `zt_suitecase` ( `version` smallint(5) unsigned NOT NULL, UNIQUE KEY `suitecase` (`suite`,`case`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_task`; CREATE TABLE `zt_task` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `parent` mediumint(8) NOT NULL DEFAULT '0', @@ -701,7 +663,6 @@ CREATE TABLE `zt_task` ( KEY `story` (`story`), KEY `assignedTo` (`assignedTo`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_taskestimate`; CREATE TABLE `zt_taskestimate` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `task` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -713,7 +674,6 @@ CREATE TABLE `zt_taskestimate` ( PRIMARY KEY (`id`), KEY `task` (`task`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_team`; CREATE TABLE `zt_team` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `root` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -731,7 +691,6 @@ CREATE TABLE `zt_team` ( PRIMARY KEY (`id`), UNIQUE KEY `team` (`root`,`type`,`account`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_testreport`; CREATE TABLE `zt_testreport` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL, @@ -754,7 +713,6 @@ CREATE TABLE `zt_testreport` ( `deleted` enum('0','1') NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_testresult`; CREATE TABLE `zt_testresult` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `run` mediumint(8) unsigned NOT NULL, @@ -769,7 +727,6 @@ CREATE TABLE `zt_testresult` ( KEY `version` (`version`), KEY `run` (`run`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_testrun`; CREATE TABLE `zt_testrun` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `task` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -783,7 +740,6 @@ CREATE TABLE `zt_testrun` ( PRIMARY KEY (`id`), UNIQUE KEY `task` (`task`,`case`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_testsuite`; CREATE TABLE `zt_testsuite` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `product` mediumint(8) unsigned NOT NULL, @@ -798,7 +754,6 @@ CREATE TABLE `zt_testsuite` ( PRIMARY KEY (`id`), KEY `product` (`product`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_testtask`; CREATE TABLE `zt_testtask` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` char(90) NOT NULL, @@ -818,7 +773,6 @@ CREATE TABLE `zt_testtask` ( KEY `product` (`product`), KEY `build` (`build`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_todo`; CREATE TABLE `zt_todo` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `account` char(30) NOT NULL, @@ -847,7 +801,6 @@ CREATE TABLE `zt_todo` ( KEY `finishedBy` (`finishedBy`), KEY `date` (`date`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_user`; CREATE TABLE `zt_user` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `dept` mediumint(8) unsigned NOT NULL DEFAULT '0', @@ -886,7 +839,6 @@ CREATE TABLE `zt_user` ( KEY `email` (`email`), KEY `commiter` (`commiter`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_usercontact`; CREATE TABLE `zt_usercontact` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `account` char(30) NOT NULL, @@ -895,13 +847,11 @@ CREATE TABLE `zt_usercontact` ( PRIMARY KEY (`id`), KEY `account` (`account`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_usergroup`; CREATE TABLE `zt_usergroup` ( `account` char(30) NOT NULL DEFAULT '', `group` mediumint(8) unsigned NOT NULL DEFAULT '0', UNIQUE KEY `account` (`account`,`group`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_userquery`; CREATE TABLE `zt_userquery` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `account` char(30) NOT NULL, @@ -914,7 +864,6 @@ CREATE TABLE `zt_userquery` ( KEY `account` (`account`), KEY `module` (`module`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_usertpl`; CREATE TABLE `zt_usertpl` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `account` char(30) NOT NULL, @@ -925,14 +874,12 @@ CREATE TABLE `zt_usertpl` ( PRIMARY KEY (`id`), KEY `account` (`account`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_userview`; CREATE TABLE `zt_userview` ( `account` char(30) NOT NULL, `products` mediumtext NOT NULL, `projects` mediumtext NOT NULL, UNIQUE KEY `account` (`account`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -DROP TABLE IF EXISTS `zt_webhook`; CREATE TABLE `zt_webhook` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `type` varchar(10) NOT NULL DEFAULT 'default', diff --git a/db/standard/zentao11.3.sql b/db/standard/zentao11.3.sql new file mode 100644 index 0000000000..1a7a433184 --- /dev/null +++ b/db/standard/zentao11.3.sql @@ -0,0 +1,903 @@ +CREATE TABLE `zt_action` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(30) NOT NULL DEFAULT '', + `objectID` mediumint(8) unsigned NOT NULL DEFAULT '0', + `product` varchar(255) NOT NULL, + `project` mediumint(9) NOT NULL, + `actor` varchar(30) NOT NULL DEFAULT '', + `action` varchar(30) NOT NULL DEFAULT '', + `date` datetime NOT NULL, + `comment` text NOT NULL, + `extra` text NOT NULL, + `read` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `date` (`date`), + KEY `actor` (`actor`), + KEY `project` (`project`), + KEY `objectID` (`objectID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_block` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `module` varchar(20) NOT NULL, + `title` varchar(100) NOT NULL, + `source` varchar(20) NOT NULL, + `block` varchar(20) NOT NULL, + `params` text NOT NULL, + `order` tinyint(3) unsigned NOT NULL DEFAULT '0', + `grid` tinyint(3) unsigned NOT NULL DEFAULT '0', + `height` smallint(5) unsigned NOT NULL DEFAULT '0', + `hidden` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `accountModuleOrder` (`account`,`module`,`order`), + KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_branch` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `order` smallint(5) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_bug` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `plan` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `toTask` mediumint(8) unsigned NOT NULL DEFAULT '0', + `toStory` mediumint(8) NOT NULL DEFAULT '0', + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `severity` tinyint(4) NOT NULL DEFAULT '0', + `pri` tinyint(3) unsigned NOT NULL, + `type` varchar(30) NOT NULL DEFAULT '', + `os` varchar(30) NOT NULL DEFAULT '', + `browser` varchar(30) NOT NULL DEFAULT '', + `hardware` varchar(30) NOT NULL, + `found` varchar(30) NOT NULL DEFAULT '', + `steps` text NOT NULL, + `status` enum('active','resolved','closed') NOT NULL DEFAULT 'active', + `color` char(7) NOT NULL, + `confirmed` tinyint(1) NOT NULL DEFAULT '0', + `activatedCount` smallint(6) NOT NULL, + `activatedDate` datetime NOT NULL, + `mailto` text, + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `openedBuild` varchar(255) NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `deadline` date NOT NULL, + `resolvedBy` varchar(30) NOT NULL DEFAULT '', + `resolution` varchar(30) NOT NULL DEFAULT '', + `resolvedBuild` varchar(30) NOT NULL DEFAULT '', + `resolvedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `duplicateBug` mediumint(8) unsigned NOT NULL, + `linkBug` varchar(255) NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `caseVersion` smallint(6) NOT NULL DEFAULT '1', + `result` mediumint(8) unsigned NOT NULL, + `testtask` mediumint(8) unsigned NOT NULL, + `lastEditedBy` varchar(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`), + KEY `status` (`status`), + KEY `plan` (`plan`), + KEY `story` (`story`), + KEY `case` (`case`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_build` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` char(150) NOT NULL, + `scmPath` char(255) NOT NULL, + `filePath` char(255) NOT NULL, + `date` date NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `builder` char(30) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_burn` ( + `project` mediumint(8) unsigned NOT NULL, + `date` date NOT NULL, + `estimate` float NOT NULL, + `left` float NOT NULL, + `consumed` float NOT NULL, + PRIMARY KEY (`project`,`date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_case` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `lib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(30) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `title` varchar(255) NOT NULL, + `precondition` text NOT NULL, + `keywords` varchar(255) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '3', + `type` char(30) NOT NULL DEFAULT '1', + `stage` varchar(255) NOT NULL, + `howRun` varchar(30) NOT NULL, + `scriptedBy` varchar(30) NOT NULL, + `scriptedDate` date NOT NULL, + `scriptStatus` varchar(30) NOT NULL, + `scriptLocation` varchar(255) NOT NULL, + `status` char(30) NOT NULL DEFAULT '1', + `color` char(7) NOT NULL, + `frequency` enum('1','2','3') NOT NULL DEFAULT '1', + `order` tinyint(30) unsigned NOT NULL DEFAULT '0', + `openedBy` char(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `reviewedDate` date NOT NULL, + `lastEditedBy` char(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `version` tinyint(3) unsigned NOT NULL DEFAULT '0', + `linkCase` varchar(255) NOT NULL, + `fromBug` mediumint(8) unsigned NOT NULL, + `fromCaseID` mediumint(8) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `lastRunner` varchar(30) NOT NULL, + `lastRunDate` datetime NOT NULL, + `lastRunResult` char(30) NOT NULL, + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `story` (`story`), + KEY `module` (`module`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_casestep` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `case` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(3) unsigned NOT NULL DEFAULT '0', + `type` varchar(10) NOT NULL DEFAULT 'step', + `desc` text NOT NULL, + `expect` text NOT NULL, + PRIMARY KEY (`id`), + KEY `case` (`case`), + KEY `version` (`version`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_company` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(120) DEFAULT NULL, + `phone` char(20) DEFAULT NULL, + `fax` char(20) DEFAULT NULL, + `address` char(120) DEFAULT NULL, + `zipcode` char(10) DEFAULT NULL, + `website` char(120) DEFAULT NULL, + `backyard` char(120) DEFAULT NULL, + `guest` enum('1','0') NOT NULL DEFAULT '0', + `admins` char(255) DEFAULT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_config` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `owner` char(30) NOT NULL DEFAULT '', + `module` varchar(30) NOT NULL, + `section` char(30) NOT NULL DEFAULT '', + `key` char(30) NOT NULL DEFAULT '', + `value` text NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`owner`,`module`,`section`,`key`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_cron` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `m` varchar(20) NOT NULL, + `h` varchar(20) NOT NULL, + `dom` varchar(20) NOT NULL, + `mon` varchar(20) NOT NULL, + `dow` varchar(20) NOT NULL, + `command` text NOT NULL, + `remark` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `buildin` tinyint(1) NOT NULL DEFAULT '0', + `status` varchar(20) NOT NULL, + `lastTime` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `lastTime` (`lastTime`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_dept` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(60) NOT NULL, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` tinyint(3) unsigned NOT NULL DEFAULT '0', + `position` char(30) NOT NULL DEFAULT '', + `function` char(255) NOT NULL DEFAULT '', + `manager` char(30) NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + KEY `parent` (`parent`), + KEY `path` (`path`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doc` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `lib` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL, + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL, + `views` smallint(5) unsigned NOT NULL, + `collector` text NOT NULL, + `addedBy` varchar(30) NOT NULL, + `addedDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `acl` varchar(10) NOT NULL DEFAULT 'open', + `groups` varchar(255) NOT NULL, + `users` text NOT NULL, + `version` smallint(5) unsigned NOT NULL DEFAULT '1', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`), + KEY `lib` (`lib`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doccontent` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `doc` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `digest` varchar(255) NOT NULL, + `content` text NOT NULL, + `files` text NOT NULL, + `type` varchar(10) NOT NULL, + `version` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `doc_version` (`doc`,`version`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doclib` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(30) NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `name` varchar(60) NOT NULL, + `acl` varchar(10) NOT NULL DEFAULT 'open', + `groups` varchar(255) NOT NULL, + `users` text NOT NULL, + `main` enum('0','1') NOT NULL DEFAULT '0', + `collector` text NOT NULL, + `order` tinyint(5) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_effort` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `user` char(30) NOT NULL DEFAULT '', + `todo` enum('1','0') NOT NULL DEFAULT '1', + `date` date NOT NULL, + `begin` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `end` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `type` enum('1','2','3') NOT NULL DEFAULT '1', + `idvalue` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` char(30) NOT NULL DEFAULT '', + `desc` char(255) NOT NULL DEFAULT '', + `status` enum('1','2','3') NOT NULL DEFAULT '1', + PRIMARY KEY (`id`), + KEY `user` (`user`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `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, + `ip` varchar(100) NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_extension` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(150) NOT NULL, + `code` varchar(30) NOT NULL, + `version` varchar(50) NOT NULL, + `author` varchar(100) NOT NULL, + `desc` text NOT NULL, + `license` text NOT NULL, + `type` varchar(20) NOT NULL DEFAULT 'extension', + `site` varchar(150) NOT NULL, + `zentaoCompatible` varchar(100) NOT NULL, + `installedTime` datetime NOT NULL, + `depends` varchar(100) NOT NULL, + `dirs` mediumtext NOT NULL, + `files` mediumtext NOT NULL, + `status` varchar(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`), + KEY `name` (`name`), + KEY `installedTime` (`installedTime`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_file` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `pathname` char(100) NOT NULL, + `title` char(255) NOT NULL, + `extension` char(30) NOT NULL, + `size` int(10) unsigned NOT NULL DEFAULT '0', + `objectType` char(30) NOT NULL, + `objectID` mediumint(9) NOT NULL, + `addedBy` char(30) NOT NULL DEFAULT '', + `addedDate` datetime NOT NULL, + `downloads` mediumint(8) unsigned NOT NULL DEFAULT '0', + `extra` varchar(255) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `objectType` (`objectType`), + KEY `objectID` (`objectID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_group` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(30) NOT NULL, + `role` char(30) NOT NULL DEFAULT '', + `desc` char(255) NOT NULL DEFAULT '', + `acl` text, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_grouppriv` ( + `group` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` char(30) NOT NULL DEFAULT '', + `method` char(30) NOT NULL DEFAULT '', + UNIQUE KEY `group` (`group`,`module`,`method`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_history` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `action` mediumint(8) unsigned NOT NULL DEFAULT '0', + `field` varchar(30) NOT NULL DEFAULT '', + `old` text NOT NULL, + `new` text NOT NULL, + `diff` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `action` (`action`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `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; +CREATE TABLE `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`), + KEY `objectType` (`objectType`), + KEY `obejctID` (`objectID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_module` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `root` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` char(60) NOT NULL DEFAULT '', + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` smallint(5) unsigned NOT NULL DEFAULT '0', + `type` char(30) NOT NULL, + `owner` varchar(30) NOT NULL, + `collector` text NOT NULL, + `short` varchar(30) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `root` (`root`), + KEY `type` (`type`), + KEY `path` (`path`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_notify` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(50) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `action` mediumint(9) NOT NULL, + `toList` varchar(255) NOT NULL, + `ccList` text NOT NULL, + `subject` varchar(255) NOT NULL, + `data` text NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `sendTime` datetime NOT NULL, + `status` varchar(10) NOT NULL DEFAULT 'wait', + `failReason` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_product` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `line` mediumint(8) NOT NULL, + `type` varchar(30) NOT NULL DEFAULT 'normal', + `status` varchar(30) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `PO` varchar(30) NOT NULL, + `QD` varchar(30) NOT NULL, + `RD` varchar(30) NOT NULL, + `acl` enum('open','private','custom') NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `createdVersion` varchar(20) NOT NULL, + `order` mediumint(8) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `order` (`order`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_productplan` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `title` varchar(90) NOT NULL, + `desc` text NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `order` text NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `end` (`end`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_project` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `isCat` enum('1','0') NOT NULL DEFAULT '0', + `catID` mediumint(8) unsigned NOT NULL, + `type` varchar(20) NOT NULL DEFAULT 'sprint', + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `days` smallint(5) unsigned NOT NULL, + `status` varchar(10) NOT NULL, + `statge` enum('1','2','3','4','5') NOT NULL DEFAULT '1', + `pri` enum('1','2','3','4') NOT NULL DEFAULT '1', + `desc` text NOT NULL, + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `openedVersion` varchar(20) NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `canceledBy` varchar(30) NOT NULL DEFAULT '', + `canceledDate` datetime NOT NULL, + `PO` varchar(30) NOT NULL DEFAULT '', + `PM` varchar(30) NOT NULL DEFAULT '', + `QD` varchar(30) NOT NULL DEFAULT '', + `RD` varchar(30) NOT NULL DEFAULT '', + `team` varchar(90) NOT NULL, + `acl` enum('open','private','custom') NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `order` mediumint(8) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `parent` (`parent`), + KEY `begin` (`begin`), + KEY `end` (`end`), + KEY `status` (`status`), + KEY `order` (`order`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `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; +CREATE TABLE `zt_projectstory` ( + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `product` mediumint(8) unsigned NOT NULL, + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(6) NOT NULL DEFAULT '1', + `order` smallint(6) unsigned NOT NULL, + UNIQUE KEY `project` (`project`,`story`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_release` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `build` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL DEFAULT '', + `marker` enum('0','1') NOT NULL DEFAULT '0', + `date` date NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `leftBugs` text NOT NULL, + `desc` text NOT NULL, + `status` varchar(20) NOT NULL DEFAULT 'normal', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `build` (`build`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `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; +CREATE TABLE `zt_story` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `plan` text, + `source` varchar(20) NOT NULL, + `sourceNote` varchar(255) NOT NULL, + `fromBug` mediumint(8) unsigned NOT NULL DEFAULT '0', + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL DEFAULT '', + `pri` tinyint(3) unsigned NOT NULL DEFAULT '3', + `estimate` float unsigned NOT NULL, + `status` enum('','changed','active','draft','closed') NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released','closed') NOT NULL DEFAULT 'wait', + `mailto` text, + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `lastEditedBy` varchar(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `reviewedDate` date NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `closedReason` varchar(30) NOT NULL, + `toBug` mediumint(9) NOT NULL, + `childStories` varchar(255) NOT NULL, + `linkStories` varchar(255) NOT NULL, + `duplicateStory` mediumint(8) unsigned NOT NULL, + `version` smallint(6) NOT NULL DEFAULT '1', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `status` (`status`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_storyspec` ( + `story` mediumint(9) NOT NULL, + `version` smallint(6) NOT NULL, + `title` varchar(255) NOT NULL, + `spec` text NOT NULL, + `verify` text NOT NULL, + UNIQUE KEY `story` (`story`,`version`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_storystage` ( + `story` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `stage` varchar(50) NOT NULL, + KEY `story` (`story`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_suitecase` ( + `suite` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `version` smallint(5) unsigned NOT NULL, + UNIQUE KEY `suitecase` (`suite`,`case`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_task` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `parent` mediumint(8) NOT NULL DEFAULT '0', + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `fromBug` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '0', + `estimate` float unsigned NOT NULL, + `consumed` float unsigned NOT NULL, + `left` float unsigned NOT NULL, + `deadline` date NOT NULL, + `status` enum('wait','doing','done','pause','cancel','closed') NOT NULL DEFAULT 'wait', + `color` char(7) NOT NULL, + `mailto` text, + `desc` text NOT NULL, + `openedBy` varchar(30) NOT NULL, + `openedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `estStarted` date NOT NULL, + `realStarted` date NOT NULL, + `finishedBy` varchar(30) NOT NULL, + `finishedDate` datetime NOT NULL, + `finishedList` text NOT NULL, + `canceledBy` varchar(30) NOT NULL, + `canceledDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` datetime NOT NULL, + `closedReason` varchar(30) NOT NULL, + `lastEditedBy` varchar(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `project` (`project`), + KEY `story` (`story`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_taskestimate` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `date` date NOT NULL, + `left` float unsigned NOT NULL DEFAULT '0', + `consumed` float unsigned NOT NULL, + `account` char(30) NOT NULL DEFAULT '', + `work` text, + PRIMARY KEY (`id`), + KEY `task` (`task`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_team` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `root` mediumint(8) unsigned NOT NULL DEFAULT '0', + `type` enum('project','task') NOT NULL DEFAULT 'project', + `account` char(30) NOT NULL DEFAULT '', + `role` char(30) NOT NULL DEFAULT '', + `limited` char(8) NOT NULL DEFAULT 'no', + `join` date NOT NULL DEFAULT '0000-00-00', + `days` smallint(5) unsigned NOT NULL, + `hours` float(2,1) unsigned NOT NULL DEFAULT '0.0', + `estimate` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `consumed` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `left` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `order` tinyint(3) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `team` (`root`,`type`,`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testreport` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `tasks` varchar(255) NOT NULL, + `builds` varchar(255) NOT NULL, + `title` varchar(255) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `owner` char(30) NOT NULL, + `members` text NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `cases` text NOT NULL, + `report` text NOT NULL, + `objectType` varchar(20) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testresult` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `run` mediumint(8) unsigned NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `version` smallint(5) unsigned NOT NULL, + `caseResult` char(30) NOT NULL, + `stepResults` text NOT NULL, + `lastRunner` varchar(30) NOT NULL, + `date` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `case` (`case`), + KEY `version` (`version`), + KEY `run` (`run`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testrun` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `case` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` tinyint(3) unsigned NOT NULL DEFAULT '0', + `assignedTo` char(30) NOT NULL DEFAULT '', + `lastRunner` varchar(30) NOT NULL, + `lastRunDate` datetime NOT NULL, + `lastRunResult` char(30) NOT NULL, + `status` char(30) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `task` (`task`,`case`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testsuite` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `desc` text NOT NULL, + `type` varchar(20) NOT NULL, + `addedBy` char(30) NOT NULL, + `addedDate` datetime NOT NULL, + `lastEditedBy` char(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`), + KEY `product` (`product`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testtask` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(90) NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `build` char(30) NOT NULL, + `owner` varchar(30) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '0', + `begin` date NOT NULL, + `end` date NOT NULL, + `mailto` text, + `desc` text NOT NULL, + `report` text NOT NULL, + `status` enum('blocked','doing','wait','done') NOT NULL DEFAULT 'wait', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `build` (`build`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_todo` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `date` date NOT NULL, + `begin` smallint(4) unsigned zerofill NOT NULL, + `end` smallint(4) unsigned zerofill NOT NULL, + `type` char(10) NOT NULL, + `cycle` tinyint(3) unsigned NOT NULL DEFAULT '0', + `idvalue` mediumint(8) unsigned NOT NULL DEFAULT '0', + `pri` tinyint(3) unsigned NOT NULL, + `name` char(150) NOT NULL, + `desc` text NOT NULL, + `status` enum('wait','doing','done','closed') NOT NULL DEFAULT 'wait', + `private` tinyint(1) NOT NULL, + `config` varchar(255) NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedBy` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `finishedBy` varchar(30) NOT NULL DEFAULT '', + `finishedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `assignedTo` (`assignedTo`), + KEY `finishedBy` (`finishedBy`), + KEY `date` (`date`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_user` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `dept` mediumint(8) unsigned NOT NULL DEFAULT '0', + `account` char(30) NOT NULL DEFAULT '', + `password` char(32) NOT NULL DEFAULT '', + `role` char(10) NOT NULL DEFAULT '', + `realname` varchar(100) NOT NULL DEFAULT '', + `nickname` char(60) NOT NULL DEFAULT '', + `commiter` varchar(100) NOT NULL, + `avatar` char(30) NOT NULL DEFAULT '', + `birthday` date NOT NULL DEFAULT '0000-00-00', + `gender` enum('f','m') NOT NULL DEFAULT 'f', + `email` char(90) NOT NULL DEFAULT '', + `skype` char(90) NOT NULL DEFAULT '', + `qq` char(20) NOT NULL DEFAULT '', + `mobile` char(11) NOT NULL DEFAULT '', + `phone` char(20) NOT NULL DEFAULT '', + `weixin` varchar(90) NOT NULL DEFAULT '', + `dingding` varchar(90) NOT NULL DEFAULT '', + `slack` varchar(90) NOT NULL DEFAULT '', + `whatsapp` varchar(90) NOT NULL DEFAULT '', + `address` char(120) NOT NULL DEFAULT '', + `zipcode` char(10) NOT NULL DEFAULT '', + `join` date NOT NULL DEFAULT '0000-00-00', + `visits` mediumint(8) unsigned NOT NULL DEFAULT '0', + `ip` char(15) NOT NULL DEFAULT '', + `last` int(10) unsigned NOT NULL DEFAULT '0', + `fails` tinyint(5) NOT NULL DEFAULT '0', + `locked` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `ranzhi` char(30) NOT NULL DEFAULT '', + `score` int(11) NOT NULL DEFAULT '0', + `scoreLevel` int(11) NOT NULL DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `account` (`account`), + KEY `dept` (`dept`), + KEY `email` (`email`), + KEY `commiter` (`commiter`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usercontact` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `listName` varchar(60) NOT NULL, + `userList` text NOT NULL, + PRIMARY KEY (`id`), + KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usergroup` ( + `account` char(30) NOT NULL DEFAULT '', + `group` mediumint(8) unsigned NOT NULL DEFAULT '0', + UNIQUE KEY `account` (`account`,`group`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_userquery` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `module` varchar(30) NOT NULL, + `title` varchar(90) NOT NULL, + `form` text NOT NULL, + `sql` text NOT NULL, + `shortcut` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `module` (`module`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usertpl` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `type` char(30) NOT NULL, + `title` varchar(150) NOT NULL, + `content` text NOT NULL, + `public` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_userview` ( + `account` char(30) NOT NULL, + `products` mediumtext NOT NULL, + `projects` mediumtext NOT NULL, + UNIQUE KEY `account` (`account`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE `zt_webhook` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(10) NOT NULL DEFAULT 'default', + `name` varchar(50) NOT NULL, + `url` varchar(255) NOT NULL, + `domain` varchar(255) NOT NULL, + `contentType` varchar(30) NOT NULL DEFAULT 'application/json', + `sendType` enum('sync','async') NOT NULL DEFAULT 'sync', + `products` text NOT NULL, + `projects` text NOT NULL, + `params` varchar(100) NOT NULL, + `actions` text NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/db/zentao.sql b/db/zentao.sql index adf21e81e1..6411d3a06e 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -5,7 +5,7 @@ CREATE TABLE IF NOT EXISTS `zt_action` ( `objectID` mediumint(8) unsigned NOT NULL default '0', `product` varchar(255) NOT NULL, `project` mediumint(9) NOT NULL, - `actor` varchar(30) NOT NULL default '', + `actor` varchar(100) NOT NULL default '', `action` varchar(30) NOT NULL default '', `date` datetime NOT NULL, `comment` text NOT NULL, @@ -461,6 +461,7 @@ CREATE TABLE IF NOT EXISTS `zt_productplan` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `product` mediumint(8) unsigned NOT NULL, `branch` mediumint(8) unsigned NOT NULL, + `parent` mediumint(9) NOT NULL DEFAULT '0' `title` varchar(90) NOT NULL, `desc` text NOT NULL, `begin` date NOT NULL, diff --git a/doc/CHANGELOG b/doc/CHANGELOG index ab3e0d6a5e..16bde5594c 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -1,3 +1,51 @@ +2019-02-27 11.3.stable +完成的需求 +3579 发信的时候增加环境变量避免dns解析超时 +3578 优化chosen控件下拉之后的交互 +3577 搜索表单展开多项条件搜索之后应当保持表单状态 +3576 里程碑发布增加文字提示 +3575 增加时区设置 +3574 产品、项目文档库和文档权限控制增加文字提示 +3572 增加父子计划之后增加调整路线图的呈现方式 +3571 计划增加子计划概念 +3567 自定义文档库和手册可以进行排序 +3563 优化应用集成禅道功能 +3562 任务工时管理中录入的备份信息过长可以悬浮显示 +3548 需求详情页面相关信息不以剧中方式显示 +3538 去掉雅虎通、旺旺的字段 +3536 项目没有创建版本,在项目下提交测试单可以提示创建版本 +3511 补充完整文档库设置按钮的菜单 +3504 组织-用户下查看任务,延期的任务会标记显示 +3501 需求详情等页面的删除icon调整 +3499 创建文档的时候引导用户创建文档的类型 +3490 文档库左侧的列表和产品项目视图的下拉菜单保持一致 +3489 优化文档库创建的页面 +3488 没有文档库时在左侧导航增加添加文档库的入口 +3483 产品视图左上角产品下拉框宽度增加一些 +3466 添加编辑区块时新增状态选择 +3464 浏览文档列表时时间显示完整年份 +3463 预览图片类的文档的时候会出现两个删除按钮 +3462 文档详情页面的全屏按钮增加文字并记录状态 +3458 bug列表页面将严重程度放到优先级前面 +3457 解决bug的时候将closed帐号从指派给列表中去掉 +3454 评审需求时优先级和工时信息应当将现在的值读取出来 +3453 梳理windows和linux一键安装包里面的链接地址 +3446 需求变更时光标到需求名称无需title +3420 延期bug在详情页面截止日期后显示延期几天 +3419 bug延期后在列表页面截止日期字段标红提示 +2920 用例库的用例更改之后自动更新其关联的测试用例 +修复的Bug +2311 开源版集成git,git用户名过长无法正常同步 +2332 取消浏览器自动填充信息 +2410 批量分解需求,同需求按钮位置需要优化 +2413 附件上传安全限制功能异常 +2421 用户有组织视图权限访问company-browse.json会显示所有用户密码md5值 +2424 每日任务提醒邮件中不显示任务的截止时间 +2425 需求关联需求后,无法取消 +2426 升级的时候提示错误信息 +2427 树状图展示数据错误 +2440 二级子模块不可以调整为一级父模块 + 2019-01-29 11.2.stable 完成的需求 3553 集成喧喧2.4版本,国际版企业版集成喧喧2.4,国内和国际的版本升级程序要区分处理 diff --git a/module/bug/lang/zh-tw.php b/module/bug/lang/zh-tw.php index 593b8613c1..ef6493b062 100644 --- a/module/bug/lang/zh-tw.php +++ b/module/bug/lang/zh-tw.php @@ -128,11 +128,12 @@ $lang->bug->assignToMeAB = '指派給我'; $lang->bug->openedByMeAB = '由我創建'; $lang->bug->resolvedByMeAB = '由我解決'; -$lang->bug->ditto = '同上'; -$lang->bug->dittoNotice = '該bug與上一bug不屬於同一產品!'; -$lang->bug->noAssigned = '未指派'; -$lang->bug->noBug = '暫時沒有Bug。'; -$lang->bug->noModule = '
您現在還沒有模組信息
請維護測試模組
'; +$lang->bug->ditto = '同上'; +$lang->bug->dittoNotice = '該bug與上一bug不屬於同一產品!'; +$lang->bug->noAssigned = '未指派'; +$lang->bug->noBug = '暫時沒有Bug。'; +$lang->bug->noModule = '
您現在還沒有模組信息
請維護測試模組
'; +$lang->bug->delayWarning = " 延期%s天 "; /* 頁面標籤。*/ $lang->bug->lblAssignedTo = '當前指派'; diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index 72eeaaabb8..6892d99027 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -99,10 +99,11 @@
+ getClientLang() == 'en' ? 'w-80px' : 'w-70px';?> - + session->currentProductType != 'normal'):?> @@ -267,10 +268,11 @@
+ getClientLang() == 'en' ? 'w-100px' : 'w-90px';?>
bug->product;?>bug->product;?> product", $productName)) echo $productName;?>
- + diff --git a/module/common/lang/en.php b/module/common/lang/en.php index a22552a456..efaa944a66 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -400,7 +400,8 @@ $lang->admin->subMenu->data->backup = array('link' => 'Backup|backup|index', 'su $lang->admin->subMenu->data->trash = 'Recycle|action|trash'; $lang->admin->subMenu->system = new stdclass(); -$lang->admin->subMenu->system->cron = array('link' => 'Cron|cron|index', 'subModule' => 'cron'); +$lang->admin->subMenu->system->cron = array('link' => 'Cron|cron|index', 'subModule' => 'cron'); +$lang->admin->subMenu->system->timezone = array('link' => 'Timezone|custom|timezone', 'subModule' => 'custom'); $lang->convert = new stdclass(); $lang->upgrade = new stdclass(); diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index da2fcb11c3..46251542ad 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -80,7 +80,7 @@ $lang->ipLimited = "fold = '-'; $lang->homepage = '設為模組首頁'; -$lang->tutorial = '新手教程'; +$lang->noviceTutorial = '新手教程'; $lang->changeLog = '修改日誌'; $lang->manual = '手冊'; $lang->manualUrl = 'https://www.zentao.net/book/zentaopmshelp.html?fullScreen=zentao'; @@ -400,7 +400,8 @@ $lang->admin->subMenu->data->backup = array('link' => '備份|backup|index', 'su $lang->admin->subMenu->data->trash = '資源回收筒|action|trash'; $lang->admin->subMenu->system = new stdclass(); -$lang->admin->subMenu->system->cron = array('link' => '定時|cron|index', 'subModule' => 'cron'); +$lang->admin->subMenu->system->cron = array('link' => '定時|cron|index', 'subModule' => 'cron'); +$lang->admin->subMenu->system->timezone = array('link' => '時區|custom|timezone', 'subModule' => 'custom'); $lang->convert = new stdclass(); $lang->upgrade = new stdclass(); diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php index 47d1f09956..2ea43fdf79 100644 --- a/module/custom/lang/en.php +++ b/module/custom/lang/en.php @@ -72,9 +72,10 @@ $lang->custom->todo->fields['typeList'] = 'Type'; $lang->custom->todo->fields['statusList'] = 'Status'; $lang->custom->user = new stdClass(); -$lang->custom->user->fields['roleList'] = 'Role'; -$lang->custom->user->fields['statusList'] = 'Status'; -$lang->custom->user->fields['deleted'] = 'Deleted User'; +$lang->custom->user->fields['roleList'] = 'Role'; +$lang->custom->user->fields['statusList'] = 'Status'; +$lang->custom->user->fields['contactField'] = 'Available Contact'; +$lang->custom->user->fields['deleted'] = 'Deleted User'; $lang->custom->block->fields['closed'] = 'Closed Block'; @@ -91,6 +92,7 @@ $lang->custom->notice->forceNotReview = "%s Review is NOT required for cer $lang->custom->notice->longlife = 'Define longlife bugs.'; $lang->custom->notice->invalidNumberKey = 'The key should be =< 255.'; $lang->custom->notice->invalidStringKey = 'The key should be a combination of lowercase letters, numbers or underlines.'; +$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set does not exist or is disabled. Time zone cannot be set.'; $lang->custom->notice->indexPage['product'] = "ZenTao 8.2+ has Product Homepage. Do you want to go to Product Homepage?"; $lang->custom->notice->indexPage['project'] = "ZenTao 8.2+ has Project Homepage. Do you want to go to Project Homepage?"; diff --git a/module/custom/lang/zh-tw.php b/module/custom/lang/zh-tw.php index 463dde53ca..8d7f83443b 100644 --- a/module/custom/lang/zh-tw.php +++ b/module/custom/lang/zh-tw.php @@ -16,6 +16,7 @@ $lang->custom->lang = '所屬語言'; $lang->custom->setPublic = '設為公共'; $lang->custom->required = '必填項'; $lang->custom->score = '積分'; +$lang->custom->timezone = '時區'; $lang->custom->scoreReset = '重置積分'; $lang->custom->object['story'] = '需求'; @@ -71,9 +72,10 @@ $lang->custom->todo->fields['typeList'] = '類型'; $lang->custom->todo->fields['statusList'] = '狀態'; $lang->custom->user = new stdClass(); -$lang->custom->user->fields['roleList'] = '職位'; -$lang->custom->user->fields['statusList'] = '狀態'; -$lang->custom->user->fields['deleted'] = '列出已刪除用戶'; +$lang->custom->user->fields['roleList'] = '職位'; +$lang->custom->user->fields['statusList'] = '狀態'; +$lang->custom->user->fields['contactField'] = '可用聯繫方式'; +$lang->custom->user->fields['deleted'] = '列出已刪除用戶'; $lang->custom->block->fields['closed'] = '關閉的區塊'; @@ -83,12 +85,14 @@ $lang->custom->allLang = '適用所有語言'; $lang->custom->confirmRestore = '是否要恢復預設配置?'; $lang->custom->notice = new stdclass(); +$lang->custom->notice->userFieldNotice = '控制以上欄位在用戶相關頁面是否顯示,留空則全部顯示'; $lang->custom->notice->canNotAdd = '該項參與運算,不提供自定義添加功能'; $lang->custom->notice->forceReview = "指定人提交的%s必須評審。"; $lang->custom->notice->forceNotReview = "指定人提交的%s不需要評審。"; $lang->custom->notice->longlife = 'Bug列表頁面的久未處理標籤中,列出設置天數之前未處理的Bug。'; $lang->custom->notice->invalidNumberKey = '鍵值應為不大於255的數字'; $lang->custom->notice->invalidStringKey = '鍵值應當為小寫英文字母、數字或下劃線的組合'; +$lang->custom->notice->cannotSetTimezone = 'date_default_timezone_set方法不存在或禁用,不能設置時區。'; $lang->custom->notice->indexPage['product'] = "從8.2版本起增加了產品主頁視圖,是否預設進入產品主頁?"; $lang->custom->notice->indexPage['project'] = "從8.2版本起增加了項目主頁視圖,是否預設進入項目主頁?"; diff --git a/module/doc/css/createlib.css b/module/doc/css/createlib.css index e9a3a45c98..056a6984f3 100644 --- a/module/doc/css/createlib.css +++ b/module/doc/css/createlib.css @@ -3,3 +3,6 @@ form{margin-bottom:100px; padding-left:65px} table{width:90% !important} #whiteListBox div.input-group {margin-bottom: 2px;} + +#product_chosen{width: 50%!important} +#project_chosen{width: 50%!important} diff --git a/module/doc/js/common.js b/module/doc/js/common.js index e81305c241..58eee4826e 100644 --- a/module/doc/js/common.js +++ b/module/doc/js/common.js @@ -16,7 +16,7 @@ function toggleAcl(acl, type) } if(type == 'lib') { - var libType = $('input[name="type"]').val(); + var libType = $('input[name="type"]:checked').val(); var notice = typeof(noticeAcl[libType][acl]) != 'undefined' ? noticeAcl[libType][acl] : ''; $('#noticeAcl').html(notice); } diff --git a/module/doc/js/createlib.js b/module/doc/js/createlib.js index 2d000782e0..511c265d97 100644 --- a/module/doc/js/createlib.js +++ b/module/doc/js/createlib.js @@ -5,8 +5,8 @@ $(function() var libType = $(this).val(); changeByLibType(libType); }) - changeByLibType($('input[name="type"]').val()); - toggleAcl($('[name=acl]').val(), 'lib'); + changeByLibType($('input[name="type"]:checked').val()); + toggleAcl($('form [name=acl]:checked').val(), 'lib'); }); function changeByLibType(libType) @@ -15,19 +15,34 @@ function changeByLibType(libType) { $('table tr.product').removeClass('hidden'); $('table tr.project').addClass('hidden'); + changeDoclibAcl(libType); } else if(libType == 'project') { $('table tr.product').addClass('hidden'); $('table tr.project').removeClass('hidden'); + changeDoclibAcl(libType); } else { $('table tr.product').addClass('hidden'); $('table tr.project').addClass('hidden'); + changeDoclibAcl(libType); } - var acl = $('[name=acl]').val(); + var acl = $('form [name=acl]').val(); var notice = typeof(noticeAcl[libType][acl]) != 'undefined' ? noticeAcl[libType][acl] : ''; $('#noticeAcl').html(notice); } + +function changeDoclibAcl(libType) +{ + if(libType == 'product' || libType == 'project') + { + $('form input[name="acl"]').closest('td').find('span:first').html($('#aclBoxA td').html()); + } + else + { + $('form input[name="acl"]').closest('td').find('span:first').html($('#aclBoxB td').html()); + } +} diff --git a/module/doc/js/editlib.js b/module/doc/js/editlib.js index ee655f0aa9..94dc79004d 100644 --- a/module/doc/js/editlib.js +++ b/module/doc/js/editlib.js @@ -1,4 +1,4 @@ $(function() { - toggleAcl($('input[name="acl"]').val(), 'lib'); + toggleAcl($('form input[name="acl"]:checked').val(), 'lib'); }) diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php index aee319e855..23c62ae02b 100644 --- a/module/doc/lang/en.php +++ b/module/doc/lang/en.php @@ -78,7 +78,7 @@ $lang->doc->addType = 'Add'; $lang->doc->childType = 'Child'; $lang->doc->collect = 'Add Favorites'; $lang->doc->cancelCollection = 'Remove Favorites'; -$lang->doc->deleteFile = 'Detele File' +$lang->doc->deleteFile = 'Detele File'; $lang->doc->libName = 'Name'; $lang->doc->libType = 'Category'; @@ -119,6 +119,13 @@ $lang->doc->aclList['open'] = 'Public'; $lang->doc->aclList['custom'] = 'Custom'; $lang->doc->aclList['private'] = 'Private'; +$lang->doc->typeList['html'] = 'Html'; +$lang->doc->typeList['markdown'] = 'Markdown'; +$lang->doc->typeList['url'] = 'Url'; +$lang->doc->typeList['word'] = 'Word'; +$lang->doc->typeList['ppt'] = 'PPT'; +$lang->doc->typeList['excel'] = 'Excel'; + $lang->doc->types['text'] = 'Text'; $lang->doc->types['url'] = 'URL'; @@ -142,6 +149,7 @@ $lang->doc->fastMenuIconList['collectedbyme'] = 'icon-folder-star'; $lang->doc->customObjectLibs['files'] = 'Show File Library'; $lang->doc->customObjectLibs['customFiles'] = 'Show Custom Library'; +$lang->doc->orderLib = 'Library order settings'; $lang->doc->customShowLibs = 'Library display settings'; $lang->doc->customShowLibsList['zero'] = 'Display empty library'; $lang->doc->customShowLibsList['unclosed'] = 'Only display projects that are not closed'; @@ -155,11 +163,24 @@ $lang->doc->errorMainSysLib = "This library cannot be deleted."; $lang->doc->accessDenied = "Access denied!"; $lang->doc->versionNotFount = 'It does not exist in this build.'; $lang->doc->noDoc = 'No docs. '; +$lang->doc->cannotCreateOffice = 'Sorry, %s can only be created in ZenTao Enterprise. Contact renee@easysoft.ltd to try ZenTao Enterprise.'; $lang->doc->noSearchedDoc = 'Nothing searched.'; $lang->doc->noEditedDoc = 'You have not edited any document.'; $lang->doc->noOpenedDoc = 'You have not created any document.'; $lang->doc->noCollectedDoc = 'You have not collected any document.'; +$lang->doc->noticeAcl['lib']['product']['default'] = 'Users with privileges to access the selected products have access to it.'; +$lang->doc->noticeAcl['lib']['product']['custom'] = 'Users with privileges to access the selected products or users in the whiltelist have access to visit it.'; +$lang->doc->noticeAcl['lib']['project']['default'] = 'Users with privileges to access the selected projects have access to it.'; +$lang->doc->noticeAcl['lib']['project']['custom'] = 'Users with privileges to access the selected projects or users in the whiltelist have access to it.'; +$lang->doc->noticeAcl['lib']['custom']['open'] = 'All users have access to it.'; +$lang->doc->noticeAcl['lib']['custom']['custom'] = 'Users in the whitelist have access to it.'; +$lang->doc->noticeAcl['lib']['custom']['private'] = 'Only the one who created it has access to it.'; + +$lang->doc->noticeAcl['doc']['open'] = 'Users with privileges to access the doc lib which the doc belongs to have access to it.'; +$lang->doc->noticeAcl['doc']['custom'] = 'Users in the whiltelist have access to visit it.'; +$lang->doc->noticeAcl['doc']['private'] = 'Only the one who created it has access to it.'; + $lang->doc->placeholder = new stdclass(); $lang->doc->placeholder->url = 'Url'; @@ -174,6 +195,13 @@ $lang->doclib->select = 'Select'; $lang->doclib->project = $lang->projectCommon . ' Library'; $lang->doclib->product = $lang->productCommon . ' Library'; +$lang->doclib->aclListA['default'] = 'Default'; +$lang->doclib->aclListA['custom'] = 'Custom'; + +$lang->doclib->aclListB['open'] = 'Public'; +$lang->doclib->aclListB['custom'] = 'Custom'; +$lang->doclib->aclListB['private'] = 'Private'; + $lang->doclib->create['product'] = 'Create ' . $lang->productCommon . ' Library'; $lang->doclib->create['project'] = 'Create ' . $lang->projectCommon . ' Library'; $lang->doclib->create['custom'] = 'Create Custom Library'; diff --git a/module/doc/lang/zh-cn.php b/module/doc/lang/zh-cn.php index c326493948..c00c3d427b 100644 --- a/module/doc/lang/zh-cn.php +++ b/module/doc/lang/zh-cn.php @@ -149,8 +149,8 @@ $lang->doc->fastMenuIconList['collectedbyme'] = 'icon-folder-star'; $lang->doc->customObjectLibs['files'] = '显示附件库'; $lang->doc->customObjectLibs['customFiles'] = '显示自定义文档库'; -$lang->doc->orderLib = '文档库排序'; -$lang->doc->customShowLibs = '显示设置'; +$lang->doc->orderLib = '文档库排序'; +$lang->doc->customShowLibs = '显示设置'; $lang->doc->customShowLibsList['zero'] = '显示空文档的库'; $lang->doc->customShowLibsList['unclosed'] = '只显示未关闭的项目'; @@ -163,25 +163,23 @@ $lang->doc->errorMainSysLib = "该系统文档库不能删除!"; $lang->doc->accessDenied = "您没有权限访问!"; $lang->doc->versionNotFount = '该版本文档不存在'; $lang->doc->noDoc = '暂时没有文档。'; -$lang->doc->cannotCreateOffice = '对不起,企业版才能创建%s文档。'; +$lang->doc->cannotCreateOffice = '

对不起,企业版才能创建%s文档。

试用企业版,请联系我们:4006-8899-23   0532-86893032。

'; $lang->doc->noSearchedDoc = '没有搜索到任何文档。'; $lang->doc->noEditedDoc = '您还没有编辑任何文档。'; $lang->doc->noOpenedDoc = '您还没有创建任何文档。'; $lang->doc->noCollectedDoc = '您还没有收藏任何文档。'; -$lang->doc->noticeAcl['lib']['product']['open'] = '除了没有关联产品权限的用户,都可以访问。'; -$lang->doc->noticeAcl['lib']['product']['custom'] = '白名单和有关联产品权限的用户可以访问。'; -$lang->doc->noticeAcl['lib']['product']['private'] = '创建人和有关联产品权限的用户可以访问。'; -$lang->doc->noticeAcl['lib']['project']['open'] = '除了没有关联项目权限的用户,都可以访问。'; -$lang->doc->noticeAcl['lib']['project']['custom'] = '白名单和有关联项目权限的用户可以访问。'; -$lang->doc->noticeAcl['lib']['project']['private'] = '创建人和有关联项目权限的用户可以访问。'; +$lang->doc->noticeAcl['lib']['product']['default'] = '有所选产品访问权限的用户可以访问。'; +$lang->doc->noticeAcl['lib']['product']['custom'] = '有所选产品访问权限或白名单里的用户可以访问。'; +$lang->doc->noticeAcl['lib']['project']['default'] = '有所选项目访问权限的用户可以访问。'; +$lang->doc->noticeAcl['lib']['project']['custom'] = '有所选项目访问权限或白名单里的用户可以访问。'; $lang->doc->noticeAcl['lib']['custom']['open'] = '所有人都可以访问。'; $lang->doc->noticeAcl['lib']['custom']['custom'] = '白名单的用户可以访问。'; -$lang->doc->noticeAcl['lib']['custom']['private'] = '只有创建人可以访问。'; +$lang->doc->noticeAcl['lib']['custom']['private'] = '只有创建者自己可以访问。'; -$lang->doc->noticeAcl['doc']['open'] = '除了没有所属文档库权限的用户,都可以访问。'; +$lang->doc->noticeAcl['doc']['open'] = '有文档所属文档库访问权限的,都可以访问。'; $lang->doc->noticeAcl['doc']['custom'] = '白名单的用户可以访问。'; -$lang->doc->noticeAcl['doc']['private'] = '只有自己可以访问。'; +$lang->doc->noticeAcl['doc']['private'] = '只有创建者自己可以访问。'; $lang->doc->placeholder = new stdclass(); $lang->doc->placeholder->url = '相应的链接地址'; @@ -197,6 +195,13 @@ $lang->doclib->select = '选择文档库'; $lang->doclib->project = $lang->projectCommon . '库'; $lang->doclib->product = $lang->productCommon . '库'; +$lang->doclib->aclListA['default'] = '默认'; +$lang->doclib->aclListA['custom'] = '自定义'; + +$lang->doclib->aclListB['open'] = '公开'; +$lang->doclib->aclListB['custom'] = '自定义'; +$lang->doclib->aclListB['private'] = '私有'; + $lang->doclib->create['product'] = '创建' . $lang->productCommon . '文档库'; $lang->doclib->create['project'] = '创建' . $lang->projectCommon . '文档库'; $lang->doclib->create['custom'] = '创建自定义文档库'; diff --git a/module/doc/lang/zh-tw.php b/module/doc/lang/zh-tw.php index 0ec9fe534d..5eef536c29 100644 --- a/module/doc/lang/zh-tw.php +++ b/module/doc/lang/zh-tw.php @@ -78,6 +78,7 @@ $lang->doc->addType = '增加分類'; $lang->doc->childType = '子分類'; $lang->doc->collect = '收藏'; $lang->doc->cancelCollection = '取消收藏'; +$lang->doc->deleteFile = '刪除附件'; $lang->doc->libName = '文檔庫名稱'; $lang->doc->libType = '文檔庫類型'; @@ -118,6 +119,13 @@ $lang->doc->aclList['open'] = '公開'; $lang->doc->aclList['custom'] = '自定義'; $lang->doc->aclList['private'] = '私有'; +$lang->doc->typeList['html'] = '富文本'; +$lang->doc->typeList['markdown'] = 'Markdown'; +$lang->doc->typeList['url'] = '連結'; +$lang->doc->typeList['word'] = 'Word'; +$lang->doc->typeList['ppt'] = 'PPT'; +$lang->doc->typeList['excel'] = 'Excel'; + $lang->doc->types['text'] = '文檔'; $lang->doc->types['url'] = '連結'; @@ -141,7 +149,8 @@ $lang->doc->fastMenuIconList['collectedbyme'] = 'icon-folder-star'; $lang->doc->customObjectLibs['files'] = '顯示附件庫'; $lang->doc->customObjectLibs['customFiles'] = '顯示自定義文檔庫'; -$lang->doc->customShowLibs = '文檔庫顯示設置'; +$lang->doc->orderLib = '文檔庫排序'; +$lang->doc->customShowLibs = '顯示設置'; $lang->doc->customShowLibsList['zero'] = '顯示空文檔的庫'; $lang->doc->customShowLibsList['unclosed'] = '只顯示未關閉的項目'; @@ -154,11 +163,24 @@ $lang->doc->errorMainSysLib = "該系統文檔庫不能刪除!"; $lang->doc->accessDenied = "您沒有權限訪問!"; $lang->doc->versionNotFount = '該版本文檔不存在'; $lang->doc->noDoc = '暫時沒有文檔。'; +$lang->doc->cannotCreateOffice = '

對不起,企業版才能創建%s文檔。

試用企業版,請聯繫我們:4006-8899-23   0532-86893032。

'; $lang->doc->noSearchedDoc = '沒有搜索到任何文檔。'; $lang->doc->noEditedDoc = '您還沒有編輯任何文檔。'; $lang->doc->noOpenedDoc = '您還沒有創建任何文檔。'; $lang->doc->noCollectedDoc = '您還沒有收藏任何文檔。'; +$lang->doc->noticeAcl['lib']['product']['default'] = '有所選產品訪問權限的用戶可以訪問。'; +$lang->doc->noticeAcl['lib']['product']['custom'] = '有所選產品訪問權限或白名單裡的用戶可以訪問。'; +$lang->doc->noticeAcl['lib']['project']['default'] = '有所選項目訪問權限的用戶可以訪問。'; +$lang->doc->noticeAcl['lib']['project']['custom'] = '有所選項目訪問權限或白名單裡的用戶可以訪問。'; +$lang->doc->noticeAcl['lib']['custom']['open'] = '所有人都可以訪問。'; +$lang->doc->noticeAcl['lib']['custom']['custom'] = '白名單的用戶可以訪問。'; +$lang->doc->noticeAcl['lib']['custom']['private'] = '只有創建者自己可以訪問。'; + +$lang->doc->noticeAcl['doc']['open'] = '有文檔所屬文檔庫訪問權限的,都可以訪問。'; +$lang->doc->noticeAcl['doc']['custom'] = '白名單的用戶可以訪問。'; +$lang->doc->noticeAcl['doc']['private'] = '只有創建者自己可以訪問。'; + $lang->doc->placeholder = new stdclass(); $lang->doc->placeholder->url = '相應的連結地址'; @@ -173,6 +195,18 @@ $lang->doclib->select = '選擇文檔庫'; $lang->doclib->project = $lang->projectCommon . '庫'; $lang->doclib->product = $lang->productCommon . '庫'; +$lang->doclib->aclListA['default'] = '預設'; +$lang->doclib->aclListA['custom'] = '自定義'; + +$lang->doclib->aclListB['open'] = '公開'; +$lang->doclib->aclListB['custom'] = '自定義'; +$lang->doclib->aclListB['private'] = '私有'; + + +$lang->doclib->create['product'] = '創建' . $lang->productCommon . '文檔庫'; +$lang->doclib->create['project'] = '創建' . $lang->projectCommon . '文檔庫'; +$lang->doclib->create['custom'] = '創建自定義文檔庫'; + $lang->doclib->main['product'] = $lang->productCommon . '主庫'; $lang->doclib->main['project'] = $lang->projectCommon . '主庫'; diff --git a/module/doc/model.php b/module/doc/model.php index 76aef30730..c7b6359195 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -847,12 +847,6 @@ class docModel extends model { if($this->app->user->admin) return true; - $acls = $this->app->user->rights['acls']; - if(!empty($object->product) and !empty($acls['products']) and !in_array($object->product, $acls['products'])) return false; - if(!empty($object->project) and !empty($acls['projects']) and !in_array($object->project, $acls['projects'])) return false; - - if($object->acl == 'open') return true; - $account = ',' . $this->app->user->account . ','; if(isset($object->addedBy) and $object->addedBy == $this->app->user->account) return true; if(isset($object->users) and strpos(",{$object->users},", $account) !== false) return true; @@ -872,8 +866,17 @@ class docModel extends model if(isset($extraDocLibs[$object->id])) return true; } - if(!empty($object->project)) return $this->loadModel('project')->checkPriv($object->project); - if(!empty($object->product)) return $this->loadModel('product')->checkPriv($object->product); + if(!empty($object->product) or !empty($object->project)) + { + $acls = $this->app->user->rights['acls']; + if(!empty($object->product) and !empty($acls['products']) and !in_array($object->product, $acls['products'])) return false; + if(!empty($object->project) and !empty($acls['projects']) and !in_array($object->project, $acls['projects'])) return false; + if(!empty($object->project)) return $this->loadModel('project')->checkPriv($object->project); + if(!empty($object->product)) return $this->loadModel('product')->checkPriv($object->product); + } + + if($object->acl == 'open') return true; + return false; } diff --git a/module/doc/view/browsebygrid.html.php b/module/doc/view/browsebygrid.html.php index 087dc53bb4..fcb2ec714a 100644 --- a/module/doc/view/browsebygrid.html.php +++ b/module/doc/view/browsebygrid.html.php @@ -30,7 +30,8 @@ diff --git a/module/doc/view/createlib.html.php b/module/doc/view/createlib.html.php index e5fc5ba61e..e53b15beec 100644 --- a/module/doc/view/createlib.html.php +++ b/module/doc/view/createlib.html.php @@ -23,33 +23,31 @@
bug->openedBy;?>bug->openedBy;?> openedBy) . $lang->at . $bug->openedDate;?>
- + - - - - + - - - - - - +
doc->libType?>
doc->product?>
doclib->name?>
doclib->control;?> - doc->aclList, 'open', "onchange='toggleAcl(this.value, \"lib\")'")?> - + doc->aclList, 'open', "onchange='toggleAcl(this.value, \"lib\")'")?> + doc->noticeAcl['lib']['product']['default'];?> +
doc->noticeAcl['lib']['product']['open'];?>
@@ -73,5 +67,21 @@
+ doc->noticeAcl['lib']);?> diff --git a/module/doc/view/editlib.html.php b/module/doc/view/editlib.html.php index ba55992f6e..e0b2c0d3ce 100644 --- a/module/doc/view/editlib.html.php +++ b/module/doc/view/editlib.html.php @@ -45,10 +45,17 @@ doclib->control;?> + type == 'product' or $lib->type == 'project'):?> - doc->aclList, $lib->acl, "onchange='toggleAcl(this.value, \"lib\")'")?> + doclib->aclListA, $lib->acl, "onchange='toggleAcl(this.value, \"lib\")'")?> doc->noticeAcl['lib'][$lib->type][$lib->acl];?> + + + doclib->aclListB, $lib->acl, "onchange='toggleAcl(this.value, \"lib\")'")?> + doc->noticeAcl['lib'][$lib->type][$lib->acl];?> + + doc->whiteList?> diff --git a/module/git/model.php b/module/git/model.php index 5f4efab6f7..3ac2d00fbf 100644 --- a/module/git/model.php +++ b/module/git/model.php @@ -324,7 +324,7 @@ class gitModel extends model list($hash, $account, $date) = $log; $account = preg_replace('/^Author:/', '', $account); - $account = trim(preg_replace('/<[\w\-\.]+@[\w\-]+>/', '', $account)); + $account = trim(preg_replace('/<[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_\-\.]+>/', '', $account)); $date = trim(preg_replace('/^Date:/', '', $date)); $count = count($log); diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 98c93a1735..e78d2eb0aa 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -557,6 +557,7 @@ $lang->resource->testcase->review = 'review'; $lang->resource->testcase->batchReview = 'batchReview'; $lang->resource->testcase->importFromLib = 'importFromLib'; $lang->resource->testcase->batchCaseTypeChange = 'batchCaseTypeChange'; +$lang->resource->testcase->confirmLibcaseChange = 'confirmLibcaseChange'; $lang->resource->testcase->batchConfirmStoryChange = 'batchConfirmStoryChange'; $lang->testcase->methodOrder[0] = 'index'; @@ -752,6 +753,7 @@ $lang->resource->custom->restore = 'restore'; $lang->resource->custom->flow = 'flow'; $lang->resource->custom->working = 'working'; $lang->resource->custom->setPublic = 'setPublic'; +$lang->resource->custom->timezone = 'timezone'; $lang->custom->methodOrder[5] = 'index'; $lang->custom->methodOrder[10] = 'set'; @@ -759,6 +761,7 @@ $lang->custom->methodOrder[15] = 'restore'; $lang->custom->methodOrder[20] = 'flow'; $lang->custom->methodOrder[25] = 'working'; $lang->custom->methodOrder[30] = 'setPublic'; +$lang->custom->methodOrder[35] = 'timezone'; $lang->resource->datatable = new stdclass(); $lang->resource->datatable->setGlobal = 'setGlobal'; diff --git a/module/install/lang/zh-tw.php b/module/install/lang/zh-tw.php index 9383a557b1..139f3077d5 100644 --- a/module/install/lang/zh-tw.php +++ b/module/install/lang/zh-tw.php @@ -88,6 +88,7 @@ $lang->install->chmodWin = '需要修改目錄 "%s" 的權限。'; $lang->install->mkdirLinux = '

需要創建目錄%s。
命令為:
mkdir -p %s

'; $lang->install->chmodLinux = '需要修改目錄 "%s" 的權限。
命令為:
chmod o=rwx -R %s'; +$lang->install->timezone = '時區設置'; $lang->install->defaultLang = '預設語言'; $lang->install->dbHost = '資料庫伺服器'; $lang->install->dbHostNote = '如果127.0.0.1無法訪問,嘗試使用localhost'; diff --git a/module/misc/lang/en.php b/module/misc/lang/en.php index 15a735b4c2..1ba29db38d 100644 --- a/module/misc/lang/en.php +++ b/module/misc/lang/en.php @@ -76,6 +76,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = 'Latest Version'; $lang->misc->feature->detailed = 'Details'; +$lang->misc->releaseDate['11.3.stable'] = '2019-02-27'; $lang->misc->releaseDate['11.2.stable'] = '2019-01-30'; $lang->misc->releaseDate['11.1.stable'] = '2019-01-04'; $lang->misc->releaseDate['11.0.stable'] = '2018-12-21'; @@ -99,6 +100,8 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['11.3.stable'][] = array('title'=>'Optimize details and fix bug.', 'desc' => '

Add Child Plan to a Plan

Optimize the chosen

Add Timezone setting

Optimize Doc Lib and Doc modules

'); + $lang->misc->feature->all['11.2.stable'][] = array('title'=>'Optimize details and fix bug.', 'desc' => '

Add upgrade logs and database checkup after upgrading

Fixed ZenTao client and other bugs, and optimized details.

'); $lang->misc->feature->all['11.1.stable'][] = array('title'=>'Fix Bug.'); diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php index c8f9cfab5a..b5f86fd692 100644 --- a/module/misc/lang/zh-cn.php +++ b/module/misc/lang/zh-cn.php @@ -76,6 +76,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '详情'; +$lang->misc->releaseDate['11.3.stable'] = '2019-02-27'; $lang->misc->releaseDate['11.2.stable'] = '2019-01-30'; $lang->misc->releaseDate['11.1.stable'] = '2019-01-04'; $lang->misc->releaseDate['11.0.stable'] = '2018-12-21'; @@ -99,6 +100,8 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['11.3.stable'][] = array('title'=>'完善细节,修复Bug', 'desc' => '

计划添加子计划功能

优化chosen交互

添加时区设置

优化文档库和文档

'); + $lang->misc->feature->all['11.2.stable'][] = array('title'=>'完善细节,修复Bug', 'desc' => '

增加升级日志和升级后数据库检查的功能

修复禅道集成客户端和其他若干bug,完善细节

'); $lang->misc->feature->all['11.1.stable'][] = array('title'=>'主要修复Bug。'); diff --git a/module/misc/lang/zh-tw.php b/module/misc/lang/zh-tw.php index 5a0d901f66..59fbb93d40 100644 --- a/module/misc/lang/zh-tw.php +++ b/module/misc/lang/zh-tw.php @@ -76,6 +76,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '詳情'; +$lang->misc->releaseDate['11.3.stable'] = '2019-02-27'; $lang->misc->releaseDate['11.2.stable'] = '2019-01-30'; $lang->misc->releaseDate['11.1.stable'] = '2019-01-04'; $lang->misc->releaseDate['11.0.stable'] = '2018-12-21'; @@ -99,6 +100,8 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['11.3.stable'][] = array('title'=>'完善細節,修復Bug', 'desc' => '

計劃添加子計劃功能

優化chosen交互

添加時區設置

優化文檔庫和文檔

'); + $lang->misc->feature->all['11.2.stable'][] = array('title'=>'完善細節,修復Bug', 'desc' => '

增加升級日誌和升級後資料庫檢查的功能

修復禪道整合客戶端和其他若干bug,完善細節

'); $lang->misc->feature->all['11.1.stable'][] = array('title'=>'主要修復Bug。'); diff --git a/module/productplan/lang/zh-tw.php b/module/productplan/lang/zh-tw.php index bb5c6c642d..4680177376 100644 --- a/module/productplan/lang/zh-tw.php +++ b/module/productplan/lang/zh-tw.php @@ -27,6 +27,7 @@ $lang->productplan->batchUnlinkStory = "批量移除需求"; $lang->productplan->linkedStories = '需求'; $lang->productplan->unlinkedStories = '未關聯需求'; $lang->productplan->updateOrder = '排序'; +$lang->productplan->createChildren = "創建子計劃"; $lang->productplan->linkBug = "關聯Bug"; $lang->productplan->unlinkBug = "移除Bug"; @@ -54,6 +55,8 @@ $lang->productplan->stories = '需求數'; $lang->productplan->bugs = 'Bug數'; $lang->productplan->hour = '工時'; $lang->productplan->project = $lang->projectCommon; +$lang->productplan->parent = "父計劃"; +$lang->productplan->children= "子計劃"; $lang->productplan->endList[7] = '一星期'; $lang->productplan->endList[14] = '兩星期'; diff --git a/module/story/view/view.html.php b/module/story/view/view.html.php index 8b20cd5213..8208aaaac6 100644 --- a/module/story/view/view.html.php +++ b/module/story/view/view.html.php @@ -228,10 +228,11 @@
+ getClientLang() == 'en' ? 'w-90px' : 'w-70px';?> - + @@ -309,12 +310,13 @@
+ getClientLang() == 'en' ? 'w-120px' : 'w-70px';?>
story->openedBy;?>story->openedBy;?> openedBy] . $lang->at . $story->openedDate;?>
global->flow != 'onlyStory'):?> - + - + - +
story->legendFromBug;?>story->legendFromBug;?>
    id $fromBug->title'>" . html::a($this->createLink('bug', 'view', "bugID=$fromBug->id", '', true), "#$fromBug->id $fromBug->title", '', "class='iframe' data-width='80%'") . '';?> @@ -323,7 +325,7 @@
story->legendBugs;?>story->legendBugs;?>
story->legendLinkStories;?>story->legendLinkStories;?>
    ]+>/g,'').replace(/(\n)+\n/g, "\n").replace(/^\n/g, '')); + $('#desc\\[' + num + '\\]').val(($('#storyDesc' + num).val()).replace(/<[^>]+>/g,'').replace(/(\n)+\n/g, "\n").replace(/^\n/g, '').replace(/\t/g, '')); var storyPri = $('#storyPri' + num).val(); if(storyPri == 0) $('#pri' + num ).val('3'); diff --git a/module/task/lang/en.php b/module/task/lang/en.php index eddfce12dc..66ad02f76b 100644 --- a/module/task/lang/en.php +++ b/module/task/lang/en.php @@ -82,7 +82,7 @@ $lang->task->openedBy = 'Created by'; $lang->task->openedDate = 'Created'; $lang->task->openedDateAB = 'Add'; $lang->task->finishedBy = 'Finished by'; -$lang->task->finishedByAB = 'Finished'; +$lang->task->finishedByAB = 'Finisher'; $lang->task->finishedDate = 'Finished'; $lang->task->finishedDateAB = 'Finished'; $lang->task->finishedList = 'FinishedBy list'; diff --git a/module/task/view/view.html.php b/module/task/view/view.html.php index 1f6a7bd7a6..dde92eebb0 100644 --- a/module/task/view/view.html.php +++ b/module/task/view/view.html.php @@ -282,9 +282,10 @@
+ getClientLang() == 'en' ? 'w-100px' : 'w-70px';?> - + @@ -337,8 +338,9 @@ task->legendEffort;?>
task->openedBy;?>task->openedBy;?> openedBy ? zget($users, $task->openedBy, $task->openedBy) . $lang->at . $task->openedDate : $lang->noData;?>
+ getClientLang() == 'en' ? 'w-90px' : 'w-70px';?> - + diff --git a/module/testcase/lang/en.php b/module/testcase/lang/en.php index ade3b92aef..6eec3173f3 100644 --- a/module/testcase/lang/en.php +++ b/module/testcase/lang/en.php @@ -85,6 +85,7 @@ $lang->testcase->batchReview = "Batch Review"; $lang->testcase->edit = "Edit"; $lang->testcase->batchEdit = "Batch Edit "; $lang->testcase->batchChangeModule = "Batch Change Module"; +$lang->testcase->confirmLibcaseChange = "Confirm Library Case Change"; $lang->testcase->batchChangeBranch = "Batch Change Branch"; $lang->testcase->groupByStories = 'Group by Story'; $lang->testcase->delete = "Delete"; diff --git a/module/testcase/lang/zh-cn.php b/module/testcase/lang/zh-cn.php index 83c1cbb27e..d9c8f59d4b 100644 --- a/module/testcase/lang/zh-cn.php +++ b/module/testcase/lang/zh-cn.php @@ -85,6 +85,7 @@ $lang->testcase->batchReview = "批量评审"; $lang->testcase->edit = "编辑"; $lang->testcase->batchEdit = "批量编辑 "; $lang->testcase->batchChangeModule = "批量修改模块"; +$lang->testcase->confirmLibcaseChange = "同步用例库用例修改"; $lang->testcase->batchChangeBranch = "批量修改分支"; $lang->testcase->groupByStories = '需求分组'; $lang->testcase->delete = "删除"; diff --git a/module/testcase/lang/zh-tw.php b/module/testcase/lang/zh-tw.php index c96cfc4a3d..f4a5ef0b25 100644 --- a/module/testcase/lang/zh-tw.php +++ b/module/testcase/lang/zh-tw.php @@ -54,7 +54,7 @@ $lang->testcase->expect = '預期'; $lang->testcase->allProduct = "所有{$lang->productCommon}"; $lang->testcase->fromBug = '來源Bug'; $lang->testcase->toBug = '生成Bug'; -$lang->testcase->changed = '用例變更'; +$lang->testcase->changed = '原用例更新'; $lang->testcase->bugs = '產生Bug數'; $lang->testcase->bugsAB = 'B'; $lang->testcase->results = '執行結果數'; @@ -64,6 +64,9 @@ $lang->testcase->stepNumberAB = 'S'; $lang->testcase->createBug = '轉Bug'; $lang->testcase->fromModule = '來源模組'; $lang->testcase->fromCase = '來源用例'; +$lang->testcase->sync = '同步'; +$lang->testcase->fromTesttask = '測試單用例'; +$lang->testcase->fromCaselib = '用例庫用例'; $lang->case = $lang->testcase; // 用於DAO檢查時使用。因為case是系統關鍵字,所以無法定義該模組為case,只能使用testcase,但表還是使用的case。 $lang->testcase->stepID = '編號'; @@ -82,6 +85,7 @@ $lang->testcase->batchReview = "批量評審"; $lang->testcase->edit = "編輯"; $lang->testcase->batchEdit = "批量編輯 "; $lang->testcase->batchChangeModule = "批量修改模組"; +$lang->testcase->confirmLibcaseChange = "同步用例庫用例修改"; $lang->testcase->batchChangeBranch = "批量修改分支"; $lang->testcase->groupByStories = '需求分組'; $lang->testcase->delete = "刪除"; diff --git a/module/testcase/view/view.html.php b/module/testcase/view/view.html.php index 3f54aca24d..539ac2d16e 100644 --- a/module/testcase/view/view.html.php +++ b/module/testcase/view/view.html.php @@ -128,15 +128,16 @@
testcase->legendBasicInfo;?>
+ getClientLang() == 'en' ? 'w-90px' : 'w-60px';?>
task->estStarted;?>task->estStarted;?> estStarted;?>
- + - + session->currentProductType != 'normal'):?> @@ -270,16 +271,17 @@
testcase->legendLinkBugs;?>
+ getClientLang() == 'en' ? 'w-90px' : 'w-60px';?>
testcase->lib;?>testcase->lib;?> lib", $libName)) echo $libName;?>
testcase->product;?>testcase->product;?> product", $productName)) echo $productName;?>
fromBug):?> - + toBugs):?> - +
testcase->fromBug;?>testcase->fromBug;?> createLink('bug', 'view', "bugID=$case->fromBug", '', true), $case->fromBugTitle, '', "class='iframe' data-width='80%'");?>
testcase->toBug;?>testcase->toBug;?> toBugs as $bugID => $bugTitle) @@ -299,9 +301,10 @@
testcase->legendOpenAndEdit;?>
+ getClientLang() == 'en' ? 'w-90px' : 'w-60px';?> - + testcase->needReview or !empty($config->testcase->forceReview)):?> diff --git a/module/testsuite/js/createcase.js b/module/testsuite/js/createcase.js index c059132304..af418f5064 100644 --- a/module/testsuite/js/createcase.js +++ b/module/testsuite/js/createcase.js @@ -162,4 +162,12 @@ $(function() { $('[data-toggle=tooltip]').tooltip(); initSteps(); + + $('#pri').on('change', function() + { + var $select = $(this); + var $selector = $select.closest('.pri-selector'); + var value = $select.val(); + $selector.find('.pri-text').html('' + value + ''); + }); }) diff --git a/module/upgrade/lang/version.php b/module/upgrade/lang/version.php index 5127612226..8bda24535c 100644 --- a/module/upgrade/lang/version.php +++ b/module/upgrade/lang/version.php @@ -102,3 +102,4 @@ $lang->upgrade->fromVersions['10_5_1'] = '10.5.1'; $lang->upgrade->fromVersions['10_6'] = '10.6'; $lang->upgrade->fromVersions['11_0'] = '11.0'; $lang->upgrade->fromVersions['11_1'] = '11.1'; +$lang->upgrade->fromVersions['11_2'] = '11.2'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 4ee452cee2..8a580cba04 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -363,6 +363,10 @@ class upgradeModel extends model $this->dao->update(TABLE_CONFIG)->set('value')->eq('off')->where('`key`')->eq('isHttps')->andWhere('`section`')->eq('xuanxuan')->andWhere('`value`')->eq('0')->exec(); $this->dao->update(TABLE_CONFIG)->set('value')->eq('on')->where('`key`')->eq('isHttps')->andWhere('`section`')->eq('xuanxuan')->andWhere('`value`')->eq('1')->exec(); } + case '11_2': + $this->saveLogs('Execute 11_2'); + $this->execSQL($this->getUpgradeFile('11.2')); + $this->processDocLibAcl(); } $this->deletePatch(); @@ -486,11 +490,13 @@ class upgradeModel extends model $confirmContent .= file_get_contents($this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan2.2.0.sql'); case '11_0': case '11_1': + $confirmContent .= file_get_contents($this->getUpgradeFile('11.1')); if(!isset($this->config->isINT) or !($this->config->isINT)) { $xuanxuanSql = $this->app->getAppRoot() . 'db' . DS . 'upgradexuanxuan2.3.0.sql'; $confirmContent .= file_get_contents($xuanxuanSql); } + case '11_2': $confirmContent .= file_get_contents($this->getUpgradeFile('11.2')); } return str_replace('zt_', $this->config->db->prefix, $confirmContent); } @@ -2966,6 +2972,19 @@ class upgradeModel extends model return true; } + /** + * Process doc lib acl. + * + * @access public + * @return void + */ + public function processDocLibAcl() + { + $this->dao->update(TABLE_DOCLIB)->set('acl')->eq('default')->where('type')->in('product,project')->andWhere('acl')->in('open,private')->exec(); + $this->saveLogs($this->dao->get()); + return !dao::isError(); + } + /** * Save Logs. * diff --git a/module/user/lang/en.php b/module/user/lang/en.php index c446ee8a74..688e20eaee 100644 --- a/module/user/lang/en.php +++ b/module/user/lang/en.php @@ -30,12 +30,12 @@ $lang->user->verify = 'Verification'; $lang->user->contactInfo = 'Contact'; $lang->user->skype = 'Skype'; $lang->user->qq = 'QQ'; -$lang->user->wechat = 'Wechat'; -$lang->user->dingding = 'Dingding'; -$lang->user->slack = 'Slack'; -$lang->user->whatsapp = 'WhatsApp'; $lang->user->mobile = 'Mobile'; $lang->user->phone = 'Phone'; +$lang->user->weixin = 'Wechat'; +$lang->user->dingding = 'Ding Ding'; +$lang->user->slack = 'Slack'; +$lang->user->whatsapp = 'WhatsApp'; $lang->user->address = 'Address'; $lang->user->zipcode = 'Zip Code'; $lang->user->join = 'Join Date'; @@ -152,6 +152,15 @@ $lang->user->error->reserved = "ID %s,account is reserved."; $lang->user->error->verifyPassword = "Verification failed. Please enter your Login Password."; $lang->user->error->originalPassword = "Old password is incorrect."; +$lang->user->contactFieldList['skype'] = $lang->user->skype; +$lang->user->contactFieldList['qq'] = $lang->user->qq; +$lang->user->contactFieldList['dingding'] = $lang->user->dingding; +$lang->user->contactFieldList['weixin'] = $lang->user->weixin; +$lang->user->contactFieldList['mobile'] = $lang->user->mobile; +$lang->user->contactFieldList['slack'] = $lang->user->slack; +$lang->user->contactFieldList['whatsapp'] = $lang->user->whatsapp; +$lang->user->contactFieldList['phone'] = $lang->user->phone; + $lang->user->contacts = new stdclass(); $lang->user->contacts->common = 'Contact'; $lang->user->contacts->listName = 'List Name'; diff --git a/module/user/lang/zh-tw.php b/module/user/lang/zh-tw.php index de56f1cfc9..45cc704fc6 100644 --- a/module/user/lang/zh-tw.php +++ b/module/user/lang/zh-tw.php @@ -32,6 +32,10 @@ $lang->user->skype = 'Skype'; $lang->user->qq = 'QQ'; $lang->user->mobile = '手機'; $lang->user->phone = '電話'; +$lang->user->weixin = '微信'; +$lang->user->dingding = '釘釘'; +$lang->user->slack = 'Slack'; +$lang->user->whatsapp = 'WhatsApp'; $lang->user->address = '通訊地址'; $lang->user->zipcode = '郵編'; $lang->user->join = '入職日期'; @@ -148,6 +152,15 @@ $lang->user->error->reserved = "【ID %s】的用戶名已被系統預留"; $lang->user->error->verifyPassword = "驗證失敗,請檢查您的系統登錄密碼是否正確"; $lang->user->error->originalPassword = "原密碼不正確"; +$lang->user->contactFieldList['skype'] = $lang->user->skype; +$lang->user->contactFieldList['qq'] = $lang->user->qq; +$lang->user->contactFieldList['dingding'] = $lang->user->dingding; +$lang->user->contactFieldList['weixin'] = $lang->user->weixin; +$lang->user->contactFieldList['mobile'] = $lang->user->mobile; +$lang->user->contactFieldList['slack'] = $lang->user->slack; +$lang->user->contactFieldList['whatsapp'] = $lang->user->whatsapp; +$lang->user->contactFieldList['phone'] = $lang->user->phone; + $lang->user->contacts = new stdclass(); $lang->user->contacts->common = '聯繫人'; $lang->user->contacts->listName = '列表名稱';
testcase->openedBy;?>testcase->openedBy;?> openedBy] . $lang->at . $case->openedDate;?>