diff --git a/VERSION b/VERSION index c9817808c1..d405321601 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -12.4.4 +12.5.stable diff --git a/config/config.php b/config/config.php index c5a7014a2f..9822ad7d4e 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 = '12.4.4'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '12.5'; // 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/zentao12.5.sql b/db/standard/zentao12.5.sql new file mode 100644 index 0000000000..6a913d5e40 --- /dev/null +++ b/db/standard/zentao12.5.sql @@ -0,0 +1,1083 @@ +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(100) 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 `action` (`action`), + 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 IF NOT EXISTS `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', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `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, + `repo` mediumint(8) unsigned NOT NULL, + `entry` varchar(255) NOT NULL, + `lines` varchar(10) NOT NULL, + `v1` varchar(40) NOT NULL, + `v2` varchar(40) NOT NULL, + `repoType` varchar(30) NOT NULL DEFAULT '', + `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 `toStory` (`toStory`), + KEY `result` (`result`), + 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, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `date` date NOT NULL, + `estimate` float NOT NULL, + `left` float NOT NULL, + `consumed` float NOT NULL, + PRIMARY KEY (`project`,`date`,`task`) +) 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', + `auto` varchar(10) NOT NULL default 'no', + `frame` varchar(10) NOT NULL, + `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', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `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, + `fromCaseVersion` mediumint(8) unsigned NOT NULL default '1', + `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 `fromBug` (`fromBug`), + 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 IF NOT EXISTS `zt_compile` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `job` mediumint(8) unsigned NOT NULL, + `queue` mediumint(8) NOT NULL, + `status` varchar(255) NOT NULL, + `logs` text, + `atTime` varchar(10) NOT NULL, + `testtask` mediumint(8) unsigned NOT NULL, + `tag` varchar(255) NOT NULL, + `times` tinyint(3) unsigned NOT NULL DEFAULT '0', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `updateDate` datetime NOT 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` smallint(4) 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, + `mailto` text, + `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` longtext 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 IF NOT EXISTS `zt_entry` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `account` varchar(30) NOT NULL DEFAULT '', + `code` varchar(20) NOT NULL, + `key` varchar(32) NOT NULL, + `freePasswd` enum('0','1') NOT NULL DEFAULT '0', + `ip` varchar(100) NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `calledTime` int(10) unsigned NOT NULL DEFAULT '0', + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0', '1') NOT NULL DEFAULT '0', + PRIMARY KEY `id` (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +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, + `PRJ` mediumint(8) unsigned NOT NULL DEFAULT 0, + `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 IF NOT EXISTS `zt_jenkins` ( + `id` smallint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `url` varchar(255) DEFAULT NULL, + `account` varchar(30) DEFAULT NULL, + `password` varchar(255) NOT NULL, + `token` varchar(255) DEFAULT 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 IF NOT EXISTS `zt_job` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `repo` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `frame` varchar(20) NOT NULL, + `jkHost` mediumint(8) unsigned NOT NULL, + `jkJob` varchar(500) NOT NULL, + `triggerType` varchar(255) NOT NULL, + `svnDir` varchar(255) NOT NULL, + `atDay` varchar(255) DEFAULT NULL, + `atTime` varchar(10) DEFAULT NULL, + `customParam` text DEFAULT NULL, + `comment` varchar(255) DEFAULT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `lastExec` datetime DEFAULT NULL, + `lastStatus` varchar(255) DEFAULT NULL, + `lastTag` varchar(255) DEFAULT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) 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`), + KEY `objectType_toList_status` (`objectType`,`toList`,`status`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_oauth` ( + `account` varchar(30) NOT NULL, + `openID` varchar(255) NOT NULL, + `providerType` varchar(30) NOT NULL, + `providerID` mediumint(8) unsigned NOT NULL, + KEY `account` (`account`), + KEY `providerType` (`providerType`), + KEY `providerID` (`providerID`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_planstory` ( + `plan` mediumint(8) unsigned NOT NULL, + `story` mediumint(8) unsigned NOT NULL, + `order` mediumint(9) NOT NULL, + UNIQUE KEY `plan_story` (`plan`,`story`) +) 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 '', + `subStatus` 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 `acl` (`acl`), + 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, + `parent` mediumint(9) NOT NULL DEFAULT '0', + `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, + `subStatus` varchar(30) NOT NULL DEFAULT '', + `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 `acl` (`acl`), + 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_relation` ( + `id` int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, + `program` mediumint(8) NOT NULL, + `product` mediumint(8) NOT NULL, + `project` mediumint(8) NOT NULL, + `AType` char(30) NOT NULL, + `AID` mediumint(8) NOT NULL, + `AVersion` char(30) NOT NULL, + `relation` char(30) NOT NULL, + `BType` char(30) NOT NULL, + `BID` mediumint(8) NOT NULL, + `BVersion` char(30) NOT NULL, + `extra` char(30) NOT NULL, + UNIQUE KEY `relation` (`relation`,`AType`,`BType`, `AID`, `BID`) +) ENGINE='MyISAM' DEFAULT CHARSET=utf8; +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', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `build` (`build`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_repo` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `path` varchar(255) NOT NULL, + `prefix` varchar(100) NOT NULL, + `encoding` varchar(20) NOT NULL, + `SCM` varchar(10) NOT NULL, + `client` varchar(100) NOT NULL, + `commits` mediumint(8) unsigned NOT NULL, + `account` varchar(30) NOT NULL, + `password` varchar(30) NOT NULL, + `encrypt` varchar(30) NOT NULL DEFAULT 'plain', + `acl` text NOT NULL, + `synced` tinyint(1) NOT NULL DEFAULT '0', + `lastSync` datetime NOT NULL, + `desc` text NOT NULL, + `deleted` tinyint(1) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_repobranch` ( + `repo` mediumint(8) unsigned NOT NULL, + `revision` mediumint(8) unsigned NOT NULL, + `branch` varchar(255) NOT NULL, + UNIQUE KEY `repo_revision_branch` (`repo`,`revision`,`branch`), + KEY `branch` (`branch`), + KEY `revision` (`revision`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_repohistory` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `repo` mediumint(9) NOT NULL, + `revision` varchar(40) NOT NULL, + `commit` mediumint(8) unsigned NOT NULL, + `comment` text NOT NULL, + `committer` varchar(100) NOT NULL, + `time` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `repo` (`repo`), + KEY `revision` (`revision`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_repofiles` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `repo` mediumint(8) unsigned NOT NULL, + `revision` mediumint(8) unsigned NOT NULL, + `path` varchar(255) NOT NULL, + `parent` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `action` char(1) NOT NULL, + PRIMARY KEY (`id`), + KEY `path` (`path`), + KEY `parent` (`parent`), + KEY `repo` (`repo`), + KEY `revision` (`revision`) +) 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 IF NOT EXISTS `zt_story` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `parent` mediumint(9) NOT NULL default '0', + `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 '', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released', 'closed') NOT NULL DEFAULT 'wait', + `stagedBy` char(30) NOT NULL, + `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(8) unsigned 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 IF NOT EXISTS `zt_storystage` ( + `story` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `stage` varchar(50) NOT NULL, + `stagedBy` char(30) NOT NULL, + UNIQUE KEY `story_branch` (`story`,`branch`), + 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', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `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` datetime 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 `parent` (`parent`), + 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, + `job` mediumint(8) unsigned NOT NULL, + `compile` mediumint(8) unsigned NOT NULL, + `caseResult` char(30) NOT NULL, + `stepResults` text NOT NULL, + `lastRunner` varchar(30) NOT NULL, + `date` datetime NOT NULL, + `duration` float NOT NULL, + `xml` text 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', + `auto` varchar(10) NOT NULL DEFAULT 'no', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `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`), + KEY `deleted` (`deleted`) +) 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, + `secret` 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/update12.4.4.sql b/db/update12.4.4.sql index c7c343e439..d112860a5c 100644 --- a/db/update12.4.4.sql +++ b/db/update12.4.4.sql @@ -13,5 +13,7 @@ ALTER TABLE `zt_history` ADD INDEX `action` (`action`); ALTER TABLE `zt_action` ADD INDEX `action` (`action`); ALTER TABLE `zt_action` DROP INDEX `product`; -INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProduct', '1'); -INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProject', '1'); +REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProduct', '1'); +REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProject', '1'); +REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', 'xuanxuan', 'pollingInterval', '60'); +REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', 'xuanxuan', 'aes', 'on'); diff --git a/db/zentao.sql b/db/zentao.sql index 683192ae44..821330204a 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -15,6 +15,7 @@ CREATE TABLE IF NOT EXISTS `zt_action` ( KEY `date` (`date`), KEY `actor` (`actor`), KEY `project` (`project`), + KEY `action` (`action`), KEY `objectID` (`objectID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_block`; @@ -108,6 +109,8 @@ CREATE TABLE IF NOT EXISTS `zt_bug` ( KEY `plan` (`plan`), KEY `story` (`story`), KEY `case` (`case`), + KEY `toStory` (`toStory`), + KEY `result` (`result`), KEY `assignedTo` (`assignedTo`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_build`; @@ -185,6 +188,7 @@ CREATE TABLE IF NOT EXISTS `zt_case` ( PRIMARY KEY (`id`), KEY `product` (`product`), KEY `story` (`story`), + KEY `fromBug` (`fromBug`), KEY `module` (`module`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_casestep`; @@ -458,6 +462,7 @@ CREATE TABLE IF NOT EXISTS `zt_job` ( `svnDir` varchar(255) NOT NULL, `atDay` varchar(255) DEFAULT NULL, `atTime` varchar(10) DEFAULT NULL, + `customParam` text NOT NULL, `comment` varchar(255) DEFAULT NULL, `createdBy` varchar(30) NOT NULL, `createdDate` datetime NOT NULL, @@ -466,7 +471,6 @@ CREATE TABLE IF NOT EXISTS `zt_job` ( `lastExec` datetime DEFAULT NULL, `lastStatus` varchar(255) DEFAULT NULL, `lastTag` varchar(255) DEFAULT NULL, - `customParam` text NOT NULL, `deleted` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; @@ -492,7 +496,7 @@ CREATE TABLE IF NOT EXISTS `zt_module` ( ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_notify`; CREATE TABLE IF NOT EXISTS `zt_notify` ( - `id` mediumint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, + `id` mediumint unsigned NOT NULL AUTO_INCREMENT, `objectType` varchar(50) NOT NULL, `objectID` mediumint unsigned NOT NULL, `action` mediumint NOT NULL, @@ -504,7 +508,9 @@ CREATE TABLE IF NOT EXISTS `zt_notify` ( `createdDate` datetime NOT NULL, `sendTime` datetime NOT NULL, `status` varchar(10) NOT NULL DEFAULT 'wait', - `failReason` text NOT NULL + `failReason` text NOT NULL, + PRIMARY KEY (`id`), + KEY `objectType_toList_status` (`objectType`,`toList`,`status`) ) ENGINE='MyISAM' COLLATE 'utf8_general_ci'; -- DROP TABLE IF EXISTS `zt_oauth`; CREATE TABLE IF NOT EXISTS `zt_oauth` ( @@ -794,7 +800,7 @@ CREATE TABLE IF NOT EXISTS `zt_task` ( `assignedTo` varchar(30) NOT NULL, `assignedDate` datetime NOT NULL, `estStarted` date NOT NULL, - `realStarted` date NOT NULL, + `realStarted` datetime NOT NULL, `finishedBy` varchar(30) NOT NULL, `finishedDate` datetime NOT NULL, `finishedList` text NOT NULL, @@ -809,6 +815,7 @@ CREATE TABLE IF NOT EXISTS `zt_task` ( PRIMARY KEY (`id`), KEY `project` (`project`), KEY `story` (`story`), + KEY `parent` (`parent`), KEY `assignedTo` (`assignedTo`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_taskestimate`; @@ -1001,7 +1008,8 @@ CREATE TABLE IF NOT EXISTS `zt_user` ( UNIQUE KEY `account` (`account`), KEY `dept` (`dept`), KEY `email` (`email`), - KEY `commiter` (`commiter`) + KEY `commiter` (`commiter`), + KEY `deleted` (`deleted`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_usercontact`; CREATE TABLE IF NOT EXISTS `zt_usercontact` ( @@ -1245,6 +1253,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1, 'custom', 'working'), (1, 'custom', 'index'), (1, 'custom', 'restore'), +(1, 'custom', 'project'), +(1, 'custom', 'product'), (1, 'custom', 'set'), (1, 'dept', 'browse'), (1, 'dept', 'delete'), @@ -1455,6 +1465,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1, 'story', 'change'), (1, 'story', 'close'), (1, 'story', 'create'), +(1, 'story', 'batchToTask'), (1, 'story', 'delete'), (1, 'story', 'edit'), (1, 'story', 'assignTo'), @@ -1728,6 +1739,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (2, 'story', 'bugs'), (2, 'story', 'cases'), (2, 'story', 'view'), +(2, 'story', 'batchToTask'), (2, 'svn', 'apiSync'), (2, 'svn', 'cat'), (2, 'svn', 'diff'), @@ -1923,6 +1935,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (3, 'story', 'cases'), (3, 'story', 'view'), (3, 'story', 'zeroCase'), +(3, 'story', 'batchToTask'), (3, 'svn', 'apiSync'), (3, 'svn', 'cat'), (3, 'svn', 'diff'), @@ -2210,6 +2223,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (4, 'story', 'cases'), (4, 'story', 'view'), (4, 'story', 'zeroCase'), +(4, 'story', 'batchToTask'), (4, 'svn', 'apiSync'), (4, 'svn', 'cat'), (4, 'svn', 'diff'), @@ -2746,6 +2760,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (6, 'story', 'cases'), (6, 'story', 'view'), (6, 'story', 'zeroCase'), +(6, 'story', 'batchToTask'), (6, 'svn', 'apiSync'), (6, 'svn', 'cat'), (6, 'svn', 'diff'), @@ -3223,6 +3238,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (8, 'story', 'cases'), (8, 'story', 'view'), (8, 'story', 'zeroCase'), +(8, 'story', 'batchToTask'), (8, 'svn', 'apiSync'), (8, 'svn', 'cat'), (8, 'svn', 'diff'), diff --git a/doc/CHANGELOG b/doc/CHANGELOG index 33241f4725..d822cd9513 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -1,3 +1,100 @@ +2020-11-19 12.5.stable +完成的需求 +5487 在禅道专业版、企业版的授权中增加版本号限制 +5458 任务实际开始、完成时间记录上完整的日期+时分秒 +5389 安装成功后页面语言优化 +5387 后台-二开-应用 代号错误提醒多余标点去掉 +5383 增加需求一键转任务功能 +5382 删除项目的时候给一个确认提示 +5261 看板模式下面移动任务到进行中甬道时默认保持指派给字段不变 +5221 测试-测试单关联用例的搜索中增加所属库字段 +5219 文档增加抄送功能 +5218 可以按照指定的日期添加待办 +5217 期望版本增加标签和查询功能。 +5194 任务页面点击相关需求可以直接对需求创建用例 +5193 期望用例在测试单中显示和用例库的关联图标 +5144 后台自定义增加产品和项目的关闭后是否只读的开关 +5126 构建增加给jenkins传参功能 +4421 一键安装包兼容centos8 +4329 增加webhook权限控制 +3423 session.save_path 逻辑调整 +修复的Bug +3625 CNVD-C-2020-238015 禅道CMS存在文件上传漏洞 +3621 测试单中用例搜索后无法正常排序 +3620 升级成功后默认不应该跳转到非研发页面 +3619 国际版禅道安装和升级页面,zdoo网址应换为英文网址链接 +3618 提bug页面IE浏览器加载所有用户失败 +3617 批量编辑修改需求阶段后未起效 +3612 项目-需求 点击B字段中数据弹窗中数据统计问题 +3600 windows一键安装包无法更改数据库密码 +3599 xampp中存在大量mariadb ssl报错 +3597 父需求的任务数不会自动计算 +3596 CNVD-C-2020-204858_关于zentao开源版V12.3.3后台存在任意文件读取漏洞的情况通报 +3595 CNVD-C-2020-204868_关于zentao开源版后台存在SQL注入漏洞的情况通报 +3594 CNVD-C-2020-230107 关于禅道专业版后台存在命令执行漏洞的情况通报 +3593 CNVD-C-2020-209376_关于青岛易企天创管理咨询有限公司禅道PMS存在SQL注入漏洞的情况通报 +3592 项目需求下批量创建需求没有关联到项目 +3591 安装界面最后一步,输入框离文字太远 +3590 创建OK文件的页面,需要把刷新按钮加回来 +3589 bug 编辑页面需求没有根据模块展示,需要切换下模块才会规则生效 +3579 访问禅道加载失败时,给出刷新按钮 +3578 禅道应用的logo背景需要优化 +3577 人数较多时,抄送功能输入用户名回车后,输入信息不查询下一个用户名 +3576 父计划关联需求设计问题 +3575 开始任务关闭弹窗后按钮禁用 +3573 创建OK文件的页面,需要添加网页标题头 +3572 地盘需求只显示父需求 +3571 必填项限制无法批量创建测试任务。 +3570 细分需求后进行指派,被指派人我的地盘-需求显示问题 +3569 安装翻译插件后,创建翻译提示优化 +3568 windows和linux一键安装包切换日语后页面未能正确跳转 +3567 客户端调试页面ip地址建议与服务器设置页保持一致 +3566 企业微信应用消息绑定用户时提示“malformed” +3565 文档中编辑表格属性报错后未生效 +3564 批量编辑用例模块处没有显示title +3563 zbox一键安装包域名解析问题 +3562 自定义添加需求来源后导出需求模板无法正常打开 +3561 添加必填后批量创建需求页面提示后无法正常跳转 +3557 创建需求保存时页面有报错 +3551 父任务指派,提示剩余工时不能为空 +3550 禁用和删除日志插件后文件无法成功删除 +3548 批量编辑项目时,调整重名的逻辑 +3546 终身版插件安装后到期日期显示错误 +3543 客户端登录禅道后用户最后的登录ip记录的是xxd的ip +3535 所属计划设为必填项后不生效 +3534 用户后台绑定社区账号无法确认 +3507 集成版本库点击刷新按钮数据不更新 +3505 查看相关需求不存在时出现空白弹窗 +3504 客户端创建文档链接报错 +3503 客户端关于页面无法展示 +3502 在步骤里面编辑内容会触发页面自动滚动 +3501 发布关联子需求后父需求的阶段没有自动更新 +3500 xampp启动失败没有任何日志记录 +3496 帮助手册不能正常查看 +3493 用户被锁定,仍可以成功登录禅道客户端 +3492 锁定用户的时间,有时没到10分钟就失效 +3490 插件目录结构未显示信息 +3489 插件详情页页面需优化 +3482 改进意见:任务确认变更,展示需求的详情信息 +3481 9.6升级到12.1,有sql报错 +3480 11.5升级到12.3,升级失败有sql报错 +3479 通知邮件中的连接地址拼装不正确 +3319 创建任务提示报错,还可以正常创建 +3250 bug详情页面有2排操作按钮都可以点击 +3212 Markdown格式的文档中表格列宽显示问题 +3097 数据量大导致禅道操作过程中锁表 +3089 导出文件时编码字段默认“UTF-8”,导出的excel中文字不能正常展示。 +3078 客户端如果停留在我的地盘点击通知里面的信息跳转不过去 +3040 覆盖新版本代码后不会自动跳转upgrade.php会报错config或者userview表不存在 +3022 发布bug列表页面显示优化 +2979 数据比较多时下拉框渲染比较慢 +2963 项目-版本中解决的bug移除不过后bug解决版本没有更新 +2909 linux 在centos 8.0 兼容问题 +2855 阿里云mysql,备份数据还原报错 +2604 关闭客户端提醒后,整个页面都置灰 + +2020-11-03 12.4.4 + 2020-10-13 12.4.3 修复的Bug 2385 客户端访问禅道多次点击新手教程页面空白 diff --git a/module/common/lang/de.php b/module/common/lang/de.php index 2831a90f31..dab6f4c9f8 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -408,7 +408,7 @@ $lang->admin = new stdclass(); $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->message = array('link' => 'Notification|message|index', 'subModule' => 'message,mail,webhook'); -$lang->admin->menu->custom = array('link' => 'Custom|custom|product', 'subModule' => 'custom'); +$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom'); $lang->admin->menu->sso = array('link' => 'Integration|admin|sso'); $lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension'); $lang->admin->menu->dev = array('link' => 'Entwicklung|dev|api', 'alias' => 'db', 'subModule' => 'dev,entry'); diff --git a/module/common/lang/en.php b/module/common/lang/en.php index e83152dd6b..7f11fddb8c 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -408,7 +408,7 @@ $lang->admin = new stdclass(); $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->message = array('link' => 'Notification|message|index', 'subModule' => 'message,mail,webhook'); -$lang->admin->menu->custom = array('link' => 'Custom|custom|product', 'subModule' => 'custom'); +$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom'); $lang->admin->menu->sso = array('link' => 'Integration|admin|sso'); $lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension'); $lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,entry'); diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php index 1df287359e..b9da22bc9b 100644 --- a/module/common/lang/fr.php +++ b/module/common/lang/fr.php @@ -408,7 +408,7 @@ $lang->admin = new stdclass(); $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => 'Accueil|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->message = array('link' => 'Notification|message|index', 'subModule' => 'message,mail,webhook'); -$lang->admin->menu->custom = array('link' => 'Personnalisation|custom|product', 'subModule' => 'custom'); +$lang->admin->menu->custom = array('link' => 'Personnalisation|custom|index', 'subModule' => 'custom'); $lang->admin->menu->sso = array('link' => 'Intégration|admin|sso'); $lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension'); $lang->admin->menu->dev = array('link' => 'Dévelop.|dev|api', 'alias' => 'db', 'subModule' => 'dev,entry'); diff --git a/module/common/lang/vi.php b/module/common/lang/vi.php index 2066593828..55ad7ef364 100644 --- a/module/common/lang/vi.php +++ b/module/common/lang/vi.php @@ -408,7 +408,7 @@ $lang->admin = new stdclass(); $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => 'Home|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->message = array('link' => 'Thông báo|message|index', 'subModule' => 'message,mail,webhook'); -$lang->admin->menu->custom = array('link' => 'Custom|custom|product', 'subModule' => 'custom'); +$lang->admin->menu->custom = array('link' => 'Custom|custom|index', 'subModule' => 'custom'); $lang->admin->menu->sso = array('link' => 'Integration|admin|sso'); $lang->admin->menu->extension = array('link' => 'Extension|extension|browse', 'subModule' => 'extension'); $lang->admin->menu->dev = array('link' => 'Develop|dev|api', 'alias' => 'db', 'subModule' => 'dev,entry'); diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 5b11c4547a..6e1ab65d25 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -408,7 +408,7 @@ $lang->admin = new stdclass(); $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => '首页|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->message = array('link' => '通知|message|index', 'subModule' => 'message,mail,webhook'); -$lang->admin->menu->custom = array('link' => '自定义|custom|product', 'subModule' => 'custom'); +$lang->admin->menu->custom = array('link' => '自定义|custom|index', 'subModule' => 'custom'); $lang->admin->menu->sso = array('link' => '集成|admin|sso', 'subModule' => ''); $lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension'); $lang->admin->menu->dev = array('link' => '二次开发|dev|api', 'alias' => 'db', 'subModule' => 'dev,entry'); diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php index 53e5de2873..f19873b89d 100644 --- a/module/common/lang/zh-tw.php +++ b/module/common/lang/zh-tw.php @@ -408,7 +408,7 @@ $lang->admin = new stdclass(); $lang->admin->menu = new stdclass(); $lang->admin->menu->index = array('link' => '首頁|admin|index', 'alias' => 'register,certifytemail,certifyztmobile,ztcompany'); $lang->admin->menu->message = array('link' => '通知|message|index', 'subModule' => 'message,mail,webhook'); -$lang->admin->menu->custom = array('link' => '自定義|custom|product', 'subModule' => 'custom'); +$lang->admin->menu->custom = array('link' => '自定義|custom|index', 'subModule' => 'custom'); $lang->admin->menu->sso = array('link' => '整合|admin|sso', 'subModule' => ''); $lang->admin->menu->extension = array('link' => '插件|extension|browse', 'subModule' => 'extension'); $lang->admin->menu->dev = array('link' => '二次開發|dev|api', 'alias' => 'db', 'subModule' => 'dev,entry'); diff --git a/module/custom/control.php b/module/custom/control.php index fa72023235..51df187483 100644 --- a/module/custom/control.php +++ b/module/custom/control.php @@ -19,7 +19,14 @@ class custom extends control */ public function index() { - die(js::locate(inlink('set'))); + if(common::hasPriv('custom', 'product')) die(js::locate(inlink('product'))); + if(common::hasPriv('custom', 'project')) die(js::locate(inlink('project'))); + if(common::hasPriv('custom', 'set')) die(js::locate(inlink('set'))); + + foreach($this->lang->custom->system as $sysObject) + { + if(common::hasPriv('custom', $sysObject)) die(js::locate(inlink($sysObject))); + } } /** diff --git a/module/custom/lang/zh-tw.php b/module/custom/lang/zh-tw.php index 46640e212b..4cf77b59eb 100644 --- a/module/custom/lang/zh-tw.php +++ b/module/custom/lang/zh-tw.php @@ -106,7 +106,7 @@ $lang->custom->notice->noClosedBlock = '沒有永久關閉的區 $lang->custom->notice->required = '頁面提交時,選中的欄位必填'; $lang->custom->notice->conceptResult = '我們已經根據您的選擇為您設置了 %s-%s 模式,使用%s + %s。'; $lang->custom->notice->conceptPath = '您可以在:後台 -> 自定義 -> 流程頁面修改。'; -$lang->custom->notice->readOnlyOfProduct = '禁止修改後,已關閉' . $lang->productCommon . '下的' . $lang->storyCommon . '、Bug、用例、日誌、發布、計劃都禁止修改。'; +$lang->custom->notice->readOnlyOfProduct = '禁止修改後,已關閉' . $lang->productCommon . '下的' . $lang->storyCommon . '、Bug、用例、日誌、發佈、計劃都禁止修改。'; $lang->custom->notice->readOnlyOfProject = '禁止修改後,已關閉' . $lang->projectCommon . '下的任務、版本、日誌以及關聯需求都禁止修改。'; $lang->custom->notice->indexPage['product'] = "從8.2版本起增加了產品主頁視圖,是否預設進入產品主頁?"; diff --git a/module/doc/lang/zh-tw.php b/module/doc/lang/zh-tw.php index dc51309549..b7cf1708f0 100644 --- a/module/doc/lang/zh-tw.php +++ b/module/doc/lang/zh-tw.php @@ -47,6 +47,7 @@ $lang->doc->users = '用戶'; $lang->doc->item = '項'; $lang->doc->num = '文檔數量'; $lang->doc->searchResult = '搜索結果'; +$lang->doc->mailto = '抄送給'; $lang->doc->moduleDoc = '按模組瀏覽'; $lang->doc->searchDoc = '搜索'; @@ -155,6 +156,12 @@ $lang->doc->customShowLibsList['zero'] = '顯示空文檔的庫'; $lang->doc->customShowLibsList['children'] = '顯示子分類的文檔'; $lang->doc->customShowLibsList['unclosed'] = '只顯示未關閉的項目'; +$lang->doc->mail = new stdclass(); +$lang->doc->mail->create = new stdclass(); +$lang->doc->mail->edit = new stdclass(); +$lang->doc->mail->create->title = "%s創建了文檔 #%s:%s"; +$lang->doc->mail->edit->title = "%s編輯了文檔 #%s:%s"; + $lang->doc->confirmDelete = "您確定刪除該文檔嗎?"; $lang->doc->confirmDeleteLib = "您確定刪除該文檔庫嗎?"; $lang->doc->errorEditSystemDoc = "系統文檔庫無需修改。"; diff --git a/module/group/lang/de.php b/module/group/lang/de.php index 3fe0981f69..65e41d4bb9 100644 --- a/module/group/lang/de.php +++ b/module/group/lang/de.php @@ -51,6 +51,7 @@ $lang->group->copyOptions['copyPriv'] = 'Rechte kopieren'; $lang->group->copyOptions['copyUser'] = 'Benutzer kopieren'; $lang->group->versions[''] = 'Verlauf'; +$lang->group->versions['12_5'] = 'ZenTao12.5'; $lang->group->versions['12_3'] = 'ZenTao12.3'; $lang->group->versions['11_6_2'] = 'ZenTao11.6.2'; $lang->group->versions['10_6'] = 'ZenTao10.6'; diff --git a/module/group/lang/en.php b/module/group/lang/en.php index fbd50428d1..c8977b6871 100644 --- a/module/group/lang/en.php +++ b/module/group/lang/en.php @@ -51,6 +51,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privileges'; $lang->group->copyOptions['copyUser'] = 'Copy Users'; $lang->group->versions[''] = 'History'; +$lang->group->versions['12_5'] = 'ZenTao12.5'; $lang->group->versions['12_3'] = 'ZenTao12.3'; $lang->group->versions['11_6_2'] = 'ZenTao11.6.2'; $lang->group->versions['10_6'] = 'ZenTao10.6'; diff --git a/module/group/lang/fr.php b/module/group/lang/fr.php index b6140ff954..91aea5b326 100644 --- a/module/group/lang/fr.php +++ b/module/group/lang/fr.php @@ -51,6 +51,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copier Privilèges'; $lang->group->copyOptions['copyUser'] = 'Copier Utilisateurs'; $lang->group->versions[''] = 'History'; +$lang->group->versions['12_5'] = 'ZenTao12.5'; $lang->group->versions['12_3'] = 'ZenTao12.3'; $lang->group->versions['11_6_2'] = 'ZenTao11.6.2'; $lang->group->versions['10_6'] = 'ZenTao10.6'; diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 91c5e619ad..29f2bcdae4 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -827,6 +827,8 @@ $lang->mail->methodOrder[65] = 'ztCloud'; $lang->resource->custom = new stdclass(); $lang->resource->custom->index = 'index'; $lang->resource->custom->set = 'set'; +$lang->resource->custom->project = 'project'; +$lang->resource->custom->product = 'product'; $lang->resource->custom->restore = 'restore'; $lang->resource->custom->flow = 'flow'; $lang->resource->custom->working = 'working'; @@ -835,11 +837,13 @@ $lang->resource->custom->timezone = 'timezone'; $lang->custom->methodOrder[5] = 'index'; $lang->custom->methodOrder[10] = 'set'; -$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->custom->methodOrder[15] = 'project'; +$lang->custom->methodOrder[10] = 'product'; +$lang->custom->methodOrder[25] = 'restore'; +$lang->custom->methodOrder[30] = 'flow'; +$lang->custom->methodOrder[35] = 'working'; +$lang->custom->methodOrder[40] = 'setPublic'; +$lang->custom->methodOrder[45] = 'timezone'; $lang->resource->datatable = new stdclass(); $lang->resource->datatable->setGlobal = 'setGlobal'; @@ -1479,7 +1483,9 @@ $lang->changelog['12.3'][] = 'testtask-importUnitResult'; $lang->changelog['12.3'][] = 'job-view'; $lang->changelog['12.3'][] = 'ci-commitResult'; -$lang->changelog['12.4.5'][] = 'story-batchToTask'; +$lang->changelog['12.5'][] = 'story-batchToTask'; +$lang->changelog['12.5'][] = 'custom-product'; +$lang->changelog['12.5'][] = 'custom-project'; global $config; if($config->global->flow != 'full') diff --git a/module/group/lang/vi.php b/module/group/lang/vi.php index fa7f7a25fe..fbf34d7831 100644 --- a/module/group/lang/vi.php +++ b/module/group/lang/vi.php @@ -51,6 +51,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy Privileges'; $lang->group->copyOptions['copyUser'] = 'Copy người dùng'; $lang->group->versions[''] = 'Lịch sử'; +$lang->group->versions['12_5'] = 'ZenTao12.5'; $lang->group->versions['12_3'] = 'ZenTao12.3'; $lang->group->versions['11_6_2'] = 'ZenTao11.6.2'; $lang->group->versions['10_6'] = 'ZenTao10.6'; diff --git a/module/group/lang/zh-cn.php b/module/group/lang/zh-cn.php index ad104330ea..964e661091 100644 --- a/module/group/lang/zh-cn.php +++ b/module/group/lang/zh-cn.php @@ -51,6 +51,7 @@ $lang->group->copyOptions['copyPriv'] = '复制权限'; $lang->group->copyOptions['copyUser'] = '复制用户'; $lang->group->versions[''] = '修改历史'; +$lang->group->versions['12_5'] = '禅道12.5'; $lang->group->versions['12_3'] = '禅道12.3'; $lang->group->versions['11_6_2'] = '禅道11.6.2'; $lang->group->versions['10_6'] = '禅道10.6'; diff --git a/module/group/lang/zh-tw.php b/module/group/lang/zh-tw.php index 4cb2f72ac0..6ae39ff239 100644 --- a/module/group/lang/zh-tw.php +++ b/module/group/lang/zh-tw.php @@ -51,6 +51,7 @@ $lang->group->copyOptions['copyPriv'] = '複製權限'; $lang->group->copyOptions['copyUser'] = '複製用戶'; $lang->group->versions[''] = '修改歷史'; +$lang->group->versions['12_5'] = '禪道12.5'; $lang->group->versions['12_3'] = '禪道12.3'; $lang->group->versions['11_6_2'] = '禪道11.6.2'; $lang->group->versions['10_6'] = '禪道10.6'; diff --git a/module/misc/lang/de.php b/module/misc/lang/de.php index 1bf9f6e5cd..a9fb9ce074 100644 --- a/module/misc/lang/de.php +++ b/module/misc/lang/de.php @@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = 'Letzte Version'; $lang->misc->feature->detailed = 'Details'; +$lang->misc->releaseDate['12.5.stable'] = '2020-11-19'; $lang->misc->releaseDate['12.4.4'] = '2020-10-30'; $lang->misc->releaseDate['12.4.3'] = '2020-10-13'; $lang->misc->releaseDate['12.4.2'] = '2020-09-18'; @@ -135,6 +136,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['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => ''); + $lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => ''); $lang->misc->feature->all['12.4.3'][] = array('title'=>'Fix Bug', 'desc' => ''); $lang->misc->feature->all['12.4.2'][] = array('title'=>'Fix Bug', 'desc' => ''); diff --git a/module/misc/lang/en.php b/module/misc/lang/en.php index 4861ecc79f..8e43235703 100644 --- a/module/misc/lang/en.php +++ b/module/misc/lang/en.php @@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = 'Latest Version'; $lang->misc->feature->detailed = 'Detail'; +$lang->misc->releaseDate['12.5.stable'] = '2020-11-19'; $lang->misc->releaseDate['12.4.4'] = '2020-10-30'; $lang->misc->releaseDate['12.4.3'] = '2020-10-13'; $lang->misc->releaseDate['12.4.2'] = '2020-09-18'; @@ -135,6 +136,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['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => ''); + $lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => ''); $lang->misc->feature->all['12.4.3'][] = array('title'=>'Fix Bug', 'desc' => ''); $lang->misc->feature->all['12.4.2'][] = array('title'=>'Fix Bug', 'desc' => ''); diff --git a/module/misc/lang/fr.php b/module/misc/lang/fr.php index f4ec05ae7f..b5bcbaf474 100644 --- a/module/misc/lang/fr.php +++ b/module/misc/lang/fr.php @@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = 'Dernière Version'; $lang->misc->feature->detailed = 'Détail'; +$lang->misc->releaseDate['12.5.stable'] = '2020-11-19'; $lang->misc->releaseDate['12.4.4'] = '2020-10-30'; $lang->misc->releaseDate['12.4.3'] = '2020-10-13'; $lang->misc->releaseDate['12.4.2'] = '2020-09-18'; @@ -135,6 +136,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['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => ''); + $lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => ''); $lang->misc->feature->all['12.4.3'][] = array('title'=>'Fix Bug', 'desc' => ''); $lang->misc->feature->all['12.4.2'][] = array('title'=>'Fix Bug', 'desc' => ''); diff --git a/module/misc/lang/vi.php b/module/misc/lang/vi.php index 2c51f7780f..cab2b4621a 100644 --- a/module/misc/lang/vi.php +++ b/module/misc/lang/vi.php @@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = 'Latest Version'; $lang->misc->feature->detailed = 'Chi tiết'; +$lang->misc->releaseDate['12.5.stable'] = '2020-11-19'; $lang->misc->releaseDate['12.4.4'] = '2020-10-30'; $lang->misc->releaseDate['12.4.3'] = '2020-10-13'; $lang->misc->releaseDate['12.4.2'] = '2020-09-18'; @@ -135,6 +136,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['12.5.stable'][] = array('title' => 'Fix Bug. Complete high priority story.', 'desc' => ''); + $lang->misc->feature->all['12.4.4'][] = array('title'=>'Compatible with professional and enterprise editions', 'desc' => ''); $lang->misc->feature->all['12.4.3'][] = array('title'=>'Fix Bug', 'desc' => ''); $lang->misc->feature->all['12.4.2'][] = array('title'=>'Fix Bug', 'desc' => ''); diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php index 373ee35fdd..54a3a5365c 100644 --- a/module/misc/lang/zh-cn.php +++ b/module/misc/lang/zh-cn.php @@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '详情'; +$lang->misc->releaseDate['12.5.stable'] = '2020-11-19'; $lang->misc->releaseDate['12.4.4'] = '2020-10-30'; $lang->misc->releaseDate['12.4.3'] = '2020-10-13'; $lang->misc->releaseDate['12.4.2'] = '2020-09-18'; @@ -135,10 +136,12 @@ $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['12.4.4'][] = array('title'=>'兼容专业版和企业版', 'desc' => ''); -$lang->misc->feature->all['12.4.3'][] = array('title'=>'修复Bug', 'desc' => ''); -$lang->misc->feature->all['12.4.2'][] = array('title'=>'修复Bug', 'desc' => ''); -$lang->misc->feature->all['12.4.1'][] = array('title'=>'修复Bug', 'desc' => ''); +$lang->misc->feature->all['12.5.stable'][] = array('title' => '解决bug,完成高优先级需求。', 'desc' => ''); + +$lang->misc->feature->all['12.4.4'][] = array('title' => '兼容专业版和企业版', 'desc' => ''); +$lang->misc->feature->all['12.4.3'][] = array('title' => '修复Bug', 'desc' => ''); +$lang->misc->feature->all['12.4.2'][] = array('title' => '修复Bug', 'desc' => ''); +$lang->misc->feature->all['12.4.1'][] = array('title' => '修复Bug', 'desc' => ''); $lang->misc->feature->all['12.4.stable'][] = array('title'=>'修复Bug', 'desc' => ''); diff --git a/module/misc/lang/zh-tw.php b/module/misc/lang/zh-tw.php index f58a6ccf23..6d233854e1 100644 --- a/module/misc/lang/zh-tw.php +++ b/module/misc/lang/zh-tw.php @@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '詳情'; +$lang->misc->releaseDate['12.5.stable'] = '2020-11-19'; $lang->misc->releaseDate['12.4.4'] = '2020-10-30'; $lang->misc->releaseDate['12.4.3'] = '2020-10-13'; $lang->misc->releaseDate['12.4.2'] = '2020-09-18'; @@ -135,10 +136,12 @@ $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['12.4.4'][] = array('title'=>'兼容專業版和企業版', 'desc' => ''); -$lang->misc->feature->all['12.4.3'][] = array('title'=>'修復Bug', 'desc' => ''); -$lang->misc->feature->all['12.4.2'][] = array('title'=>'修復Bug', 'desc' => ''); -$lang->misc->feature->all['12.4.1'][] = array('title'=>'修復Bug', 'desc' => ''); +$lang->misc->feature->all['12.5.stable'][] = array('title' => '解決bug,完成高優先順序需求。', 'desc' => ''); + +$lang->misc->feature->all['12.4.4'][] = array('title' => '兼容專業版和企業版', 'desc' => ''); +$lang->misc->feature->all['12.4.3'][] = array('title' => '修復Bug', 'desc' => ''); +$lang->misc->feature->all['12.4.2'][] = array('title' => '修復Bug', 'desc' => ''); +$lang->misc->feature->all['12.4.1'][] = array('title' => '修復Bug', 'desc' => ''); $lang->misc->feature->all['12.4.stable'][] = array('title'=>'修復Bug', 'desc' => ''); diff --git a/module/project/lang/zh-tw.php b/module/project/lang/zh-tw.php index d288710045..7f7ddad669 100644 --- a/module/project/lang/zh-tw.php +++ b/module/project/lang/zh-tw.php @@ -275,6 +275,9 @@ $lang->project->noweekend = '去除周末'; $lang->project->withweekend = '顯示周末'; $lang->project->interval = '間隔'; $lang->project->fixFirstWithLeft = '修改剩餘工時'; +$lang->project->unfinishedProject = "該{$lang->projectCommon}下還有"; +$lang->project->unfinishedTask = "[%s]個未完成的任務,"; +$lang->project->unresolvedBug = "[%s]個未解決的bug,"; $lang->project->action = new stdclass(); $lang->project->action->opened = '$date, 由 $actor 創建。$extra' . "\n"; diff --git a/module/story/lang/zh-tw.php b/module/story/lang/zh-tw.php index 26eeea5c62..5f06ca660f 100644 --- a/module/story/lang/zh-tw.php +++ b/module/story/lang/zh-tw.php @@ -9,57 +9,63 @@ * @version $Id: zh-tw.php 5141 2013-07-15 05:57:15Z chencongzhi520@gmail.com $ * @link http://www.zentao.net */ -$lang->story->create = "提{$lang->storyCommon}"; -$lang->story->batchCreate = "批量創建"; -$lang->story->change = "變更"; -$lang->story->changeAction = "變更{$lang->storyCommon}"; -$lang->story->changed = "{$lang->storyCommon}變更"; -$lang->story->assignTo = '指派'; -$lang->story->assignAction = "指派{$lang->storyCommon}"; -$lang->story->review = '評審'; -$lang->story->reviewAction = "評審{$lang->storyCommon}"; -$lang->story->needReview = '需要評審'; -$lang->story->batchReview = '批量評審'; -$lang->story->edit = "編輯"; -$lang->story->batchEdit = "批量編輯"; -$lang->story->subdivide = '細分'; -$lang->story->subdivideAction = "細分{$lang->storyCommon}"; -$lang->story->splitRequirent = '拆分'; -$lang->story->close = '關閉'; -$lang->story->closeAction = "關閉{$lang->storyCommon}"; -$lang->story->batchClose = '批量關閉'; -$lang->story->activate = '激活'; -$lang->story->activateAction = "激活{$lang->storyCommon}"; -$lang->story->delete = "刪除"; -$lang->story->deleteAction = "刪除{$lang->storyCommon}"; -$lang->story->view = "{$lang->storyCommon}詳情"; -$lang->story->setting = "設置"; -$lang->story->tasks = "相關任務"; -$lang->story->bugs = "相關Bug"; -$lang->story->cases = "相關用例"; -$lang->story->taskCount = '任務數'; -$lang->story->bugCount = 'Bug數'; -$lang->story->caseCount = '用例數'; -$lang->story->taskCountAB = 'T'; -$lang->story->bugCountAB = 'B'; -$lang->story->caseCountAB = 'C'; -$lang->story->linkStory = "關聯{$lang->storyCommon}"; -$lang->story->unlinkStory = "移除相關{$lang->storyCommon}"; -$lang->story->export = "導出數據"; -$lang->story->exportAction = "導出{$lang->storyCommon}"; -$lang->story->zeroCase = "零用例{$lang->storyCommon}"; -$lang->story->zeroTask = "只列零任務{$lang->storyCommon}"; -$lang->story->reportChart = "統計報表"; -$lang->story->reportAction = "統計報表"; -$lang->story->copyTitle = "同{$lang->storyCommon}名稱"; +$lang->story->create = "提{$lang->storyCommon}"; +$lang->story->batchCreate = "批量創建"; +$lang->story->change = "變更"; +$lang->story->changeAction = "變更{$lang->storyCommon}"; +$lang->story->changed = "{$lang->storyCommon}變更"; +$lang->story->assignTo = '指派'; +$lang->story->assignAction = "指派{$lang->storyCommon}"; +$lang->story->review = '評審'; +$lang->story->reviewAction = "評審{$lang->storyCommon}"; +$lang->story->needReview = '需要評審'; +$lang->story->batchReview = '批量評審'; +$lang->story->edit = "編輯"; +$lang->story->batchEdit = "批量編輯"; +$lang->story->subdivide = '細分'; +$lang->story->subdivideAction = "細分{$lang->storyCommon}"; +$lang->story->splitRequirent = '拆分'; +$lang->story->close = '關閉'; +$lang->story->closeAction = "關閉{$lang->storyCommon}"; +$lang->story->batchClose = '批量關閉'; +$lang->story->activate = '激活'; +$lang->story->activateAction = "激活{$lang->storyCommon}"; +$lang->story->delete = "刪除"; +$lang->story->deleteAction = "刪除{$lang->storyCommon}"; +$lang->story->view = "{$lang->storyCommon}詳情"; +$lang->story->setting = "設置"; +$lang->story->tasks = "相關任務"; +$lang->story->bugs = "相關Bug"; +$lang->story->cases = "相關用例"; +$lang->story->taskCount = '任務數'; +$lang->story->bugCount = 'Bug數'; +$lang->story->caseCount = '用例數'; +$lang->story->taskCountAB = 'T'; +$lang->story->bugCountAB = 'B'; +$lang->story->caseCountAB = 'C'; +$lang->story->linkStory = "關聯{$lang->storyCommon}"; +$lang->story->unlinkStory = "移除相關{$lang->storyCommon}"; +$lang->story->export = "導出數據"; +$lang->story->exportAction = "導出{$lang->storyCommon}"; +$lang->story->zeroCase = "零用例{$lang->storyCommon}"; +$lang->story->zeroTask = "只列零任務{$lang->storyCommon}"; +$lang->story->reportChart = "統計報表"; +$lang->story->reportAction = "統計報表"; +$lang->story->copyTitle = "同{$lang->storyCommon}名稱"; $lang->story->batchChangePlan = "批量修改計劃"; $lang->story->batchChangeBranch = "批量修改分支"; $lang->story->batchChangeStage = "批量修改階段"; $lang->story->batchAssignTo = "批量指派"; $lang->story->batchChangeModule = "批量修改模組"; $lang->story->viewAll = '查看全部'; -$lang->story->skipStory = '需求:%s 為父需求,將不會被關閉。'; -$lang->story->closedStory = '需求:%s 已關閉,將不會被關閉。'; +$lang->story->toTask = '轉任務'; +$lang->story->batchToTask = '批量轉任務'; +$lang->story->convertRelations = '換算關係'; + +$lang->story->skipStory = '需求:%s 為父需求,將不會被關閉。'; +$lang->story->closedStory = '需求:%s 已關閉,將不會被關閉。'; +$lang->story->batchToTaskTips = "此操作會創建與所選{$lang->storyCommon}同名的任務,並將{$lang->storyCommon}關聯到任務中,已關閉的需求不會轉為任務。"; +$lang->story->successToTask = '批量轉任務成功'; $lang->story->common = $lang->storyCommon; $lang->story->id = '編號'; @@ -121,6 +127,8 @@ $lang->story->allStories = "所有{$lang->storyCommon}"; $lang->story->unclosed = '未關閉'; $lang->story->deleted = '已刪除'; $lang->story->released = "已發佈{$lang->storyCommon}數"; +$lang->story->one = '一個'; +$lang->story->field = '同步的欄位'; $lang->story->ditto = '同上'; $lang->story->dittoNotice = "該{$lang->storyCommon}與上一{$lang->storyCommon}不屬於同一產品!"; @@ -337,3 +345,11 @@ $lang->story->chosen->reviewedBy = '選擇評審人...'; $lang->story->notice = new stdClass(); $lang->story->notice->closed = "您選擇的{$lang->storyCommon}已經被關閉了!"; + +$lang->story->convertToTask = new stdClass(); +$lang->story->convertToTask->fieldList = array(); +$lang->story->convertToTask->fieldList['module'] = '所屬模組'; +$lang->story->convertToTask->fieldList['spec'] = "{$lang->storyCommon}描述"; +$lang->story->convertToTask->fieldList['pri'] = '優先順序'; +$lang->story->convertToTask->fieldList['mailto'] = '抄送給'; +$lang->story->convertToTask->fieldList['assignedTo'] = '指派給'; diff --git a/module/upgrade/lang/version.php b/module/upgrade/lang/version.php index 2e2bf9fd19..6bc3a97d90 100644 --- a/module/upgrade/lang/version.php +++ b/module/upgrade/lang/version.php @@ -128,3 +128,4 @@ $lang->upgrade->fromVersions['12_4'] = '12.4'; $lang->upgrade->fromVersions['12_4_1'] = '12.4.1'; $lang->upgrade->fromVersions['12_4_2'] = '12.4.2'; $lang->upgrade->fromVersions['12_4_3'] = '12.4.3'; +$lang->upgrade->fromVersions['12_4_4'] = '12.4.4'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 0738038171..bdd5ce3621 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -619,6 +619,11 @@ class upgradeModel extends model case '12_4_3': $this->saveLogs('Execute 12_4_3'); $this->appendExec('12_4_3'); + case '12_4_4': + $this->saveLogs('Execute 12_4_4'); + $this->execSQL($this->getUpgradeFile('12.4.4')); + $this->adjustPriv12_5(); + $this->appendExec('12_4_4'); } $this->deletePatch(); @@ -798,6 +803,7 @@ class upgradeModel extends model case '12_4_1': $confirmContent .= file_get_contents($this->getUpgradeFile('12.4.1')); case '12_4_2': $confirmContent .= file_get_contents($this->getUpgradeFile('12.4.2')); case '12_4_3': + case '12_4_4': $confirmContent .= file_get_contents($this->getUpgradeFile('12.4.4')); } return str_replace('zt_', $this->config->db->prefix, $confirmContent); } @@ -3872,6 +3878,45 @@ class upgradeModel extends model return true; } + /** + * Adjust priv 12.5. + * + * @access public + * @return bool + */ + public function adjustPriv12_5() + { + $this->saveLogs('Run Method ' . __FUNCTION__); + + $groups = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('custom')->andWhere('method')->eq('set')->fetchPairs('group', 'group'); + foreach($groups as $groupID) + { + $groupPriv = new stdclass(); + $groupPriv->group = $groupID; + $groupPriv->module = 'custom'; + $groupPriv->method = 'product'; + $this->dao->replace(TABLE_GROUPPRIV)->data($groupPriv)->exec(); + $this->saveLogs($this->dao->get()); + + $groupPriv->method = 'project'; + $this->dao->replace(TABLE_GROUPPRIV)->data($groupPriv)->exec(); + $this->saveLogs($this->dao->get()); + } + + $groups = $this->dao->select('*')->from(TABLE_GROUPPRIV)->where('module')->eq('task')->andWhere('method')->eq('create')->fetchPairs('group', 'group'); + foreach($groups as $groupID) + { + $groupPriv = new stdclass(); + $groupPriv->group = $groupID; + $groupPriv->module = 'story'; + $groupPriv->method = 'batchToTask'; + $this->dao->replace(TABLE_GROUPPRIV)->data($groupPriv)->exec(); + $this->saveLogs($this->dao->get()); + } + + return true; + } + /** * Save Logs. * diff --git a/module/user/lang/zh-tw.php b/module/user/lang/zh-tw.php index f50429dba5..40941d2950 100644 --- a/module/user/lang/zh-tw.php +++ b/module/user/lang/zh-tw.php @@ -63,6 +63,8 @@ $lang->user->unlock = "解鎖用戶"; $lang->user->delete = "刪除用戶"; $lang->user->unbind = "解除ZDOO綁定"; $lang->user->login = "用戶登錄"; +$lang->user->bind = "綁定已有賬戶"; +$lang->user->oauthRegister = "註冊新賬號"; $lang->user->mobileLogin = "手機訪問"; $lang->user->editProfile = "修改檔案"; $lang->user->deny = "訪問受限"; diff --git a/tools/check.php b/tools/check.php index fc735007ba..e4b83496a5 100755 --- a/tools/check.php +++ b/tools/check.php @@ -51,6 +51,7 @@ $whiteList[] = 'testtask-sendmail'; $whiteList[] = 'user-login'; $whiteList[] = 'im-login'; $whiteList[] = 'im-debug'; +$whiteList[] = 'im-sysgetserverinfo'; $whiteList[] = 'user-deny'; $whiteList[] = 'user-logout'; $whiteList[] = 'user-setreferer';