From 65c64de03abdb61452c31bfb5061efcf0b5e4dc5 Mon Sep 17 00:00:00 2001
From: wangyidong
Date: Fri, 15 May 2020 13:03:14 +0800
Subject: [PATCH] * add new version and upgrade.
---
VERSION | 2 +-
config/config.php | 2 +-
db/standard/zentao12.3.1.sql | 1066 ++++++++++++++++++++++++++++++
doc/CHANGELOG | 49 ++
module/admin/lang/zh-tw.php | 4 +-
module/backup/lang/de.php | 13 +-
module/backup/lang/en.php | 13 +-
module/backup/lang/fr.php | 13 +-
module/backup/lang/vi.php | 13 +-
module/backup/lang/zh-tw.php | 17 +-
module/common/lang/zh-tw.php | 4 +-
module/custom/lang/de.php | 8 +-
module/custom/lang/en.php | 8 +-
module/custom/lang/fr.php | 8 +-
module/custom/lang/vi.php | 8 +-
module/custom/lang/zh-tw.php | 8 +-
module/doc/lang/zh-tw.php | 2 -
module/file/lang/de.php | 3 +
module/file/lang/en.php | 3 +
module/file/lang/fr.php | 3 +
module/file/lang/vi.php | 3 +
module/file/lang/zh-tw.php | 26 +-
module/install/lang/zh-tw.php | 12 +-
module/misc/lang/de.php | 2 +
module/misc/lang/en.php | 2 +
module/misc/lang/fr.php | 2 +
module/misc/lang/vi.php | 2 +
module/misc/lang/zh-cn.php | 2 +
module/misc/lang/zh-tw.php | 6 +-
module/my/lang/zh-tw.php | 2 +-
module/product/lang/zh-tw.php | 4 +-
module/sso/lang/zh-tw.php | 6 +-
module/task/lang/de.php | 1 +
module/task/lang/en.php | 1 +
module/task/lang/fr.php | 1 +
module/task/lang/vi.php | 1 +
module/testreport/lang/de.php | 1 +
module/testreport/lang/en.php | 1 +
module/testreport/lang/fr.php | 1 +
module/testreport/lang/vi.php | 1 +
module/testreport/lang/zh-tw.php | 1 +
module/upgrade/lang/version.php | 1 +
module/upgrade/model.php | 4 +
module/user/lang/zh-tw.php | 6 +-
44 files changed, 1269 insertions(+), 67 deletions(-)
create mode 100644 db/standard/zentao12.3.1.sql
diff --git a/VERSION b/VERSION
index ea35fc166c..9c028e25d4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-12.3.stable
+12.3.1
diff --git a/config/config.php b/config/config.php
index 19dfc34543..ba933cad5d 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.3'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
+$config->version = '12.3.1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
$config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time.
$config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php.
diff --git a/db/standard/zentao12.3.1.sql b/db/standard/zentao12.3.1.sql
new file mode 100644
index 0000000000..fd371d9d16
--- /dev/null
+++ b/db/standard/zentao12.3.1.sql
@@ -0,0 +1,1066 @@
+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 `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 `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,
+ `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 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,
+ `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,
+ `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 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,
+ `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(30) 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,
+ `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`)
+) 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 `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` 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,
+ `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`)
+) 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/doc/CHANGELOG b/doc/CHANGELOG
index 7f960cef18..92807dfe07 100644
--- a/doc/CHANGELOG
+++ b/doc/CHANGELOG
@@ -1,3 +1,52 @@
+2020-05-15 12.3.1
+完成的需求:
+4827 debug关闭状态网页上不显示任何报错信息
+4807 后台增加对用户需求和软件需求流程的自定义功能
+4771 安装的时候修改session path为空的语言提示
+4767 将然之改为zdoo
+4696 备份附件过程中记录文件的数量和文件的大小
+4668 子任务增加批量折叠和记忆功能
+4612 一键安装包默认的php内存改为512M
+4545 用例详情页面默认全屏
+修复的Bug
+2919 通过计划创建项目保存后页面空白
+2984 解决bug时填写解决版本设为必填项后,无法在解决页面创建版本
+2994 视图维护报错
+3019 解决在php7.4下面的语法兼容问题
+3030 客户端查看需求 - 报表,任务 - 报表 都报错
+3037 还原备份报错
+3048 多人任务转交按钮逻辑问题
+3050 产品视图首页的统计区块高亮的产品和右边的数据对不上
+3054 QQ浏览器支持不是很好
+3058 项目需求按照计划关联会把已经关闭的需求关联上
+3061 文档详情页面点击删除附件无反应
+3062 svn提交注释解析问题
+3066 编辑已关闭bug后指派用户会自动变为当前用户
+3067 任务复制页面比较大渲染时间容易超时
+3073 相关需求设置为必填项运维类型项目无法创建任务
+3074 私有项目修改项目负责人后没有项目访问权限
+3076 集成git库后同步代码库时卡住
+3080 父需求名称过长无法显示展开子需求按钮
+3081 用例关联需求选择弹窗样式问题
+3082 添加模块时填写&符合可以被解析
+3083 需求列表阶段下拉框被遮挡
+3086 在首页点击“然之协同”页面跳转到了禅道官网。
+3087 升级结果页面、首页相关logo需更新为最新logo。
+3092 完成任务时消耗工时检查问题
+3093 用例库用例列表的所属模块无法展示
+3094 开始任务时填写的备注信息无法显示
+3096 产品概况页面的路线图区块展示问题
+3098 无法导入大量测试用例
+3100 用例覆盖率的计算公式问题
+3102 提bug页面设置所属项目必填无效
+3103 创建项目超时
+3104 图片上传xss漏洞
+3107 多人任务关闭后重新激活指派人不生效
+3109 地盘指派给我的用例报错
+3110 软件需求编辑页面父需求下拉需要过滤用户需求
+3112 集成svn库报错
+3114 一个项目还没关联需求,通过创建测试任务的时候勾选“选择测试需求”,会导致该任务无法关联需求
+
2020-04-08 12.3
完成的需求:
4711 地址类型为GET时,导出用例提示没有数据
diff --git a/module/admin/lang/zh-tw.php b/module/admin/lang/zh-tw.php
index 0aac8e0be6..8d66fa868d 100644
--- a/module/admin/lang/zh-tw.php
+++ b/module/admin/lang/zh-tw.php
@@ -12,8 +12,8 @@
$lang->admin->common = '後台管理';
$lang->admin->index = '後台管理首頁';
$lang->admin->checkDB = '檢查資料庫';
-$lang->admin->sso = '然之整合';
-$lang->admin->ssoAction = '然之整合';
+$lang->admin->sso = 'ZDOO整合';
+$lang->admin->ssoAction = 'ZDOO整合';
$lang->admin->safeIndex = '安全';
$lang->admin->checkWeak = '弱口令檢查';
$lang->admin->certifyMobile = '認證手機';
diff --git a/module/backup/lang/de.php b/module/backup/lang/de.php
index d07f835311..78e5f84752 100644
--- a/module/backup/lang/de.php
+++ b/module/backup/lang/de.php
@@ -9,9 +9,15 @@ $lang->backup->change = 'Ablaufdatum';
$lang->backup->changeAB = 'Bearbeiten';
$lang->backup->rmPHPHeader = 'Remove PHP header';
-$lang->backup->time = 'Datum';
-$lang->backup->files = 'Dateien';
-$lang->backup->size = 'Größe';
+$lang->backup->time = 'Datum';
+$lang->backup->files = 'Dateien';
+$lang->backup->allCount = 'All Count';
+$lang->backup->count = 'Backup Count';
+$lang->backup->size = 'Größe';
+$lang->backup->status = 'Status';
+
+$lang->backup->statusList['success'] = 'Success';
+$lang->backup->statusList['fail'] = 'Fail';
$lang->backup->setting = 'Settings';
$lang->backup->settingDir = 'Backup Directory';
@@ -25,6 +31,7 @@ $lang->backup->progressCode = 'SQL backup is completed.
Attachment ba
$lang->backup->confirmDelete = 'Möchten Sie das Backup löschen?';
$lang->backup->confirmRestore = 'Möchten Sie das Backup wiederherstellen?';
$lang->backup->holdDays = 'Behalten der letzen %s Tage der Backups';
+$lang->backup->copiedFail = 'Copy failed files: ';
$lang->backup->restoreTip = 'Nur Dateien und Datenbanken können wiederhergestellt werden. Code kann manuell wieder hergestellt werden.';
$lang->backup->success = new stdclass();
diff --git a/module/backup/lang/en.php b/module/backup/lang/en.php
index d9ea65e77b..230cf42c20 100644
--- a/module/backup/lang/en.php
+++ b/module/backup/lang/en.php
@@ -9,9 +9,15 @@ $lang->backup->change = 'Edit Expiration';
$lang->backup->changeAB = 'Edit';
$lang->backup->rmPHPHeader = 'Remove PHP header';
-$lang->backup->time = 'Date';
-$lang->backup->files = 'Files';
-$lang->backup->size = 'Size';
+$lang->backup->time = 'Date';
+$lang->backup->files = 'Files';
+$lang->backup->allCount = 'All Count';
+$lang->backup->count = 'Backup Count';
+$lang->backup->size = 'Size';
+$lang->backup->status = 'Status';
+
+$lang->backup->statusList['success'] = 'Success';
+$lang->backup->statusList['fail'] = 'Fail';
$lang->backup->setting = 'Settings';
$lang->backup->settingDir = 'Backup Directory';
@@ -25,6 +31,7 @@ $lang->backup->progressCode = '
SQL backup is completed.
Attachment ba
$lang->backup->confirmDelete = 'Do you want to delete the backup?';
$lang->backup->confirmRestore = 'Do you want to restore the backup?';
$lang->backup->holdDays = 'Hold last %s days of backup';
+$lang->backup->copiedFail = 'Copy failed files: ';
$lang->backup->restoreTip = 'Only files and databases can be restored by clicking Restore. Code can be restored manually.';
$lang->backup->success = new stdclass();
diff --git a/module/backup/lang/fr.php b/module/backup/lang/fr.php
index a70c0afa9e..e9ff3c6adc 100644
--- a/module/backup/lang/fr.php
+++ b/module/backup/lang/fr.php
@@ -9,9 +9,15 @@ $lang->backup->change = 'Editer Expiration';
$lang->backup->changeAB = 'Editer';
$lang->backup->rmPHPHeader = 'Enlever PHP header';
-$lang->backup->time = 'Date';
-$lang->backup->files = 'Fichiers';
-$lang->backup->size = 'Taille';
+$lang->backup->time = 'Date';
+$lang->backup->files = 'Fichiers';
+$lang->backup->allCount = 'All Count';
+$lang->backup->count = 'Backup Count';
+$lang->backup->size = 'Taille';
+$lang->backup->status = 'Status';
+
+$lang->backup->statusList['success'] = 'Success';
+$lang->backup->statusList['fail'] = 'Fail';
$lang->backup->setting = 'Paramétrage';
$lang->backup->settingDir = 'Répertoire Backup';
@@ -25,6 +31,7 @@ $lang->backup->progressCode = '
SQL backup est terminé.
Attachment ba
$lang->backup->confirmDelete = 'Voulez-vous supprimer la sauvegarde ?';
$lang->backup->confirmRestore = 'Voulez-vous restaurer la sauvegarde ?';
$lang->backup->holdDays = 'conserver les derniers %s jours de backup';
+$lang->backup->copiedFail = 'Copy failed files: ';
$lang->backup->restoreTip = 'Seulement les fichiers et les bases peuvent être restaurées en cliquant sur Restaurer. Le code doit être restauré manuellement.';
$lang->backup->success = new stdclass();
diff --git a/module/backup/lang/vi.php b/module/backup/lang/vi.php
index 1e497c8c55..095b3f6454 100644
--- a/module/backup/lang/vi.php
+++ b/module/backup/lang/vi.php
@@ -9,9 +9,15 @@ $lang->backup->change = 'Sửa Expiration';
$lang->backup->changeAB = 'Sửa';
$lang->backup->rmPHPHeader = 'Xóa PHP header';
-$lang->backup->time = 'Ngày';
-$lang->backup->files = 'Files';
-$lang->backup->size = 'Size';
+$lang->backup->time = 'Ngày';
+$lang->backup->files = 'Files';
+$lang->backup->allCount = 'All Count';
+$lang->backup->count = 'Backup Count';
+$lang->backup->size = 'Size';
+$lang->backup->status = 'Status';
+
+$lang->backup->statusList['success'] = 'Success';
+$lang->backup->statusList['fail'] = 'Fail';
$lang->backup->setting = 'Thiết lập';
$lang->backup->settingDir = 'Thư mục sao lưu';
@@ -25,6 +31,7 @@ $lang->backup->progressCode = '
Sao lưu SQL đã hoàn thành.
Sao l
$lang->backup->confirmDelete = 'Bạn có muốn xóa sao lưu này?';
$lang->backup->confirmRestore = 'Bạn có muốn khôi phục sao lưu này?';
$lang->backup->holdDays = 'Giữ ít nhất %s ngày sao lưu';
+$lang->backup->copiedFail = 'Copy failed files: ';
$lang->backup->restoreTip = 'Chỉ tập tin và CSDL có thể được khôi phục bằng cách Click Khôi phục. Mã nguồn có thể khôi phục thủ công.';
$lang->backup->success = new stdclass();
diff --git a/module/backup/lang/zh-tw.php b/module/backup/lang/zh-tw.php
index 9104eff58a..6eb3443ae3 100644
--- a/module/backup/lang/zh-tw.php
+++ b/module/backup/lang/zh-tw.php
@@ -9,9 +9,15 @@ $lang->backup->change = '保留時間';
$lang->backup->changeAB = '修改';
$lang->backup->rmPHPHeader = '去除安全設置';
-$lang->backup->time = '備份時間';
-$lang->backup->files = '備份檔案';
-$lang->backup->size = '大小';
+$lang->backup->time = '備份時間';
+$lang->backup->files = '備份檔案';
+$lang->backup->allCount = '總檔案數';
+$lang->backup->count = '備份檔案數';
+$lang->backup->size = '大小';
+$lang->backup->status = '狀態';
+
+$lang->backup->statusList['success'] = '成功';
+$lang->backup->statusList['fail'] = '失敗';
$lang->backup->setting = '設置';
$lang->backup->settingDir = '備份目錄';
@@ -20,11 +26,12 @@ $lang->backup->settingList['nosafe'] = '不需要防下載PHP檔案頭';
$lang->backup->waitting = '正在進行中,請稍候...';
$lang->backup->progressSQL = '
SQL備份中,已備份%s
';
-$lang->backup->progressAttach = 'SQL備份完成
附件備份中,已備份%s
';
-$lang->backup->progressCode = 'SQL備份完成
附件備份完成
代碼備份中,已備份%s
';
+$lang->backup->progressAttach = 'SQL備份完成
附件備份中,共有%s個檔案,已經備份%s個
';
+$lang->backup->progressCode = 'SQL備份完成
附件備份完成
代碼備份中,共有%s個檔案,已經備份%s個
';
$lang->backup->confirmDelete = '是否刪除備份?';
$lang->backup->confirmRestore = '是否還原該備份?';
$lang->backup->holdDays = '備份保留最近 %s 天';
+$lang->backup->copiedFail = '複製失敗的檔案:';
$lang->backup->restoreTip = '還原功能只還原附件和資料庫,如果需要還原代碼,可以手動還原。';
$lang->backup->success = new stdclass();
diff --git a/module/common/lang/zh-tw.php b/module/common/lang/zh-tw.php
index 251e27eb44..1599e01c53 100644
--- a/module/common/lang/zh-tw.php
+++ b/module/common/lang/zh-tw.php
@@ -58,6 +58,8 @@ $lang->trunk = '主幹';
$lang->sort = '排序';
$lang->required = '必填';
$lang->noData = '暫無';
+$lang->fullscreen = '全屏';
+$lang->retrack = '收起';
$lang->actions = '操作';
$lang->restore = '恢復預設';
@@ -420,7 +422,7 @@ $lang->admin->subMenu->message->browser = array('link' => '瀏覽器|message|bro
$lang->admin->subMenu->message->setting = array('link' => '設置|message|setting');
$lang->admin->subMenu->sso = new stdclass();
-$lang->admin->subMenu->sso->ranzhi = '然之協同|admin|sso';
+$lang->admin->subMenu->sso->ranzhi = 'ZDOO|admin|sso';
$lang->admin->subMenu->dev = new stdclass();
$lang->admin->subMenu->dev->api = array('link' => 'API|dev|api');
diff --git a/module/custom/lang/de.php b/module/custom/lang/de.php
index 2eaf322bc8..747116ced6 100644
--- a/module/custom/lang/de.php
+++ b/module/custom/lang/de.php
@@ -149,9 +149,10 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Plan';
$lang->custom->moduleName['project'] = $lang->projectCommon;
-$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
-$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
-$lang->custom->conceptQuestions['storypoint'] = "2. Do you use hours or story points to make estimations in your company?";
+$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
+$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
+$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?";
+$lang->custom->conceptQuestions['storypoint'] = "3. Do you use hours or story points to make estimations in your company?";
$lang->custom->conceptOptions = new stdclass;
@@ -162,3 +163,4 @@ $lang->custom->conceptOptions->story['1'] = 'Story';
$lang->custom->conceptOptions->hourPoint = array();
$lang->custom->conceptOptions->hourPoint['0'] = 'Hour';
$lang->custom->conceptOptions->hourPoint['1'] = 'Story Point';
+$lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
diff --git a/module/custom/lang/en.php b/module/custom/lang/en.php
index 09a344ff86..f652d76368 100644
--- a/module/custom/lang/en.php
+++ b/module/custom/lang/en.php
@@ -149,9 +149,10 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Plan';
$lang->custom->moduleName['project'] = $lang->projectCommon;
-$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
-$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
-$lang->custom->conceptQuestions['storypoint'] = "2. Do you use hours or story points to make estimations in your company?";
+$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
+$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
+$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?";
+$lang->custom->conceptQuestions['storypoint'] = "3. Do you use hours or story points to make estimations in your company?";
$lang->custom->conceptOptions = new stdclass;
@@ -162,3 +163,4 @@ $lang->custom->conceptOptions->story['1'] = 'Story';
$lang->custom->conceptOptions->hourPoint = array();
$lang->custom->conceptOptions->hourPoint['0'] = 'Hour';
$lang->custom->conceptOptions->hourPoint['1'] = 'Story Point';
+$lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
diff --git a/module/custom/lang/fr.php b/module/custom/lang/fr.php
index 71f1d1cc11..3e8bf37d13 100644
--- a/module/custom/lang/fr.php
+++ b/module/custom/lang/fr.php
@@ -149,9 +149,10 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Plan';
$lang->custom->moduleName['project'] = $lang->projectCommon;
-$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
-$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
-$lang->custom->conceptQuestions['storypoint'] = "2. Do you use hours or story points to make estimations in your company?";
+$lang->custom->conceptQuestions['overview'] = "1. Which combination of management fits your company?";
+$lang->custom->conceptQuestions['story'] = "2. Do you use the concept of requirement or user story in your company?";
+$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?";
+$lang->custom->conceptQuestions['storypoint'] = "3. Do you use hours or story points to make estimations in your company?";
$lang->custom->conceptOptions = new stdclass;
@@ -162,3 +163,4 @@ $lang->custom->conceptOptions->story['1'] = 'Story';
$lang->custom->conceptOptions->hourPoint = array();
$lang->custom->conceptOptions->hourPoint['0'] = 'Hour';
$lang->custom->conceptOptions->hourPoint['1'] = 'Story Point';
+$lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
diff --git a/module/custom/lang/vi.php b/module/custom/lang/vi.php
index 0ce6cfd1c9..7496e2dac1 100644
--- a/module/custom/lang/vi.php
+++ b/module/custom/lang/vi.php
@@ -149,9 +149,10 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = 'Kế hoạch';
$lang->custom->moduleName['project'] = $lang->projectCommon;
-$lang->custom->conceptQuestions['overview'] = "1. Sự kết hợp quản lý nào phù hợp với công ty của bạn?";
-$lang->custom->conceptQuestions['story'] = "2. Bạn có sử dụng mô hình điều kiện hay câu chuyện người dùng trong doanh nghiệp của bạn?";
-$lang->custom->conceptQuestions['storypoint'] = "2. Bạn có dùng giờ hoặc điểm để tạo dự kiến trong doanh nghiệp của bạn ?";
+$lang->custom->conceptQuestions['overview'] = "1. Sự kết hợp quản lý nào phù hợp với công ty của bạn?";
+$lang->custom->conceptQuestions['story'] = "2. Bạn có sử dụng mô hình điều kiện hay câu chuyện người dùng trong doanh nghiệp của bạn?";
+$lang->custom->conceptQuestions['requirementpoint'] = "3. Do you use hours or function points to make estimations in your company?";
+$lang->custom->conceptQuestions['storypoint'] = "3. Bạn có dùng giờ hoặc điểm để tạo dự kiến trong doanh nghiệp của bạn ?";
$lang->custom->conceptOptions = new stdclass;
@@ -162,3 +163,4 @@ $lang->custom->conceptOptions->story['1'] = 'Câu chuyện';
$lang->custom->conceptOptions->hourPoint = array();
$lang->custom->conceptOptions->hourPoint['0'] = 'Giờ';
$lang->custom->conceptOptions->hourPoint['1'] = 'Điểm';
+$lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
diff --git a/module/custom/lang/zh-tw.php b/module/custom/lang/zh-tw.php
index 77c8e82e38..5c1bcd16c4 100644
--- a/module/custom/lang/zh-tw.php
+++ b/module/custom/lang/zh-tw.php
@@ -149,9 +149,10 @@ $lang->custom->moduleName['product'] = $lang->productCommon;
$lang->custom->moduleName['productplan'] = '計劃';
$lang->custom->moduleName['project'] = $lang->projectCommon;
-$lang->custom->conceptQuestions['overview'] = "1. 下述哪種組合方式更適合您公司的管理現狀?";
-$lang->custom->conceptQuestions['story'] = "2. 您公司是在使用需求概念還是用戶故事概念?";
-$lang->custom->conceptQuestions['storypoint'] = "3. 您公司是在使用工時還是故事點來做規模估算?";
+$lang->custom->conceptQuestions['overview'] = "1. 下述哪種組合方式更適合您公司的管理現狀?";
+$lang->custom->conceptQuestions['story'] = "2. 您公司是在使用需求概念還是用戶故事概念?";
+$lang->custom->conceptQuestions['requirementpoint'] = "3. 您公司是在使用工時還是功能點來做規模估算?";
+$lang->custom->conceptQuestions['storypoint'] = "3. 您公司是在使用工時還是故事點來做規模估算?";
$lang->custom->conceptOptions = new stdclass;
@@ -162,3 +163,4 @@ $lang->custom->conceptOptions->story['1'] = '故事';
$lang->custom->conceptOptions->hourPoint = array();
$lang->custom->conceptOptions->hourPoint['0'] = '工時';
$lang->custom->conceptOptions->hourPoint['1'] = '故事點';
+$lang->custom->conceptOptions->hourPoint['2'] = '功能點';
diff --git a/module/doc/lang/zh-tw.php b/module/doc/lang/zh-tw.php
index c1b8ab910a..8768b99325 100644
--- a/module/doc/lang/zh-tw.php
+++ b/module/doc/lang/zh-tw.php
@@ -47,8 +47,6 @@ $lang->doc->users = '用戶';
$lang->doc->item = '項';
$lang->doc->num = '文檔數量';
$lang->doc->searchResult = '搜索結果';
-$lang->doc->fullscreen = '全屏';
-$lang->doc->retrack = '收起';
$lang->doc->moduleDoc = '按模組瀏覽';
$lang->doc->searchDoc = '搜索';
diff --git a/module/file/lang/de.php b/module/file/lang/de.php
index 11b3d186a8..b96450de99 100644
--- a/module/file/lang/de.php
+++ b/module/file/lang/de.php
@@ -47,6 +47,9 @@ $lang->file->extra = 'Extra';
$lang->file->dragFile = 'Bitte hier ablegen.';
$lang->file->childTaskTips = 'It\'s a child task if there is a \'>\' before the name.';
$lang->file->uploadImagesExplain = 'Hinweis: Beim Upload von .jpg, .jpeg, .gif, und .png Dateien. Der Dateiname wird als Titel der Story genutzt und das Bild als der Inhalt.';
+$lang->file->saveAndNext = 'Save and Next';
+$lang->file->importPager = 'Total: %s. Page %s of %s';
+$lang->file->importSummary = "Import %s items You can %s items/page, so you have to import %s times.";
$lang->file->errorNotExists = "'%s' wurde nicht gefunden.";
$lang->file->errorCanNotWrite = "'%s' ist nicht beschreibbar. Bitte passen Sie die Berechtigungen an. Befehl sudo chmod -R 777 '%s' in Linux.";
diff --git a/module/file/lang/en.php b/module/file/lang/en.php
index 1bc14734df..615b0dd7a2 100644
--- a/module/file/lang/en.php
+++ b/module/file/lang/en.php
@@ -47,6 +47,9 @@ $lang->file->extra = 'Comment';
$lang->file->dragFile = 'Drag images here.';
$lang->file->childTaskTips = 'It\'s a child task if there is a \'>\' before the name.';
$lang->file->uploadImagesExplain = 'Note: upload .jpg, .jpeg, .gif, or .png images. The image name will be the name of the story and the image will be the description.';
+$lang->file->saveAndNext = 'Save and Next';
+$lang->file->importPager = 'Total: %s. Page %s of %s';
+$lang->file->importSummary = "Import %s items You can %s items/page, so you have to import %s times.";
$lang->file->errorNotExists = "'%s' is not found.";
$lang->file->errorCanNotWrite = "'%s' is not writable. Please change its permission. Enter sudo chmod -R 777 '%s' in Linux.";
diff --git a/module/file/lang/fr.php b/module/file/lang/fr.php
index c982c46d48..03e03faae1 100644
--- a/module/file/lang/fr.php
+++ b/module/file/lang/fr.php
@@ -47,6 +47,9 @@ $lang->file->extra = 'Commentaires';
$lang->file->dragFile = 'Faites glisser images ici.';
$lang->file->childTaskTips = 'Il s\'agit d\'une sous-tâche s\'il y a un \'>\' devant le nom.';
$lang->file->uploadImagesExplain = "Note : Chargez images au format .jpg, .jpeg, .gif, ou .png. Le nom de l'image sera le nom de la Story et l'image en sera sa description.";
+$lang->file->saveAndNext = 'Save and Next';
+$lang->file->importPager = 'Total: %s. Page %s of %s';
+$lang->file->importSummary = "Import %s items You can %s items/page, so you have to import %s times.";
$lang->file->errorNotExists = "'%s' non trouvé.";
$lang->file->errorCanNotWrite = "'%s' non inscriptible. Changez les permissions. Entre sudo chmod -R 777 '%s' dans Linux.";
diff --git a/module/file/lang/vi.php b/module/file/lang/vi.php
index 75f06ec90e..9d52749081 100644
--- a/module/file/lang/vi.php
+++ b/module/file/lang/vi.php
@@ -47,6 +47,9 @@ $lang->file->extra = 'Nhận xét';
$lang->file->dragFile = 'Drag images here.';
$lang->file->childTaskTips = 'It\'s a child task if there is a \'>\' before the name.';
$lang->file->uploadImagesExplain = 'Ghi chú: upload .jpg, .jpeg, .gif, or .png images. The image name will be the name of the story and the image will be the description.';
+$lang->file->saveAndNext = 'Save and Next';
+$lang->file->importPager = 'Total: %s. Page %s of %s';
+$lang->file->importSummary = "Import %s items You can %s items/page, so you have to import %s times.";
$lang->file->errorNotExists = "'%s' không là found.";
$lang->file->errorCanNotWrite = "'%s' không thể ghi. Vui lòng change its permission. Enter sudo chmod -R 777 '%s' in Linux.";
diff --git a/module/file/lang/zh-tw.php b/module/file/lang/zh-tw.php
index 3c6386a434..9ca24199d5 100644
--- a/module/file/lang/zh-tw.php
+++ b/module/file/lang/zh-tw.php
@@ -46,15 +46,19 @@ $lang->file->extra = '備註';
$lang->file->dragFile = '請拖拽檔案到此處';
$lang->file->childTaskTips = "任務名稱前有'>'標記的為子任務";
-$lang->file->errorNotExists = "檔案夾 '%s' 不存在";
-$lang->file->errorCanNotWrite = "檔案夾 '%s' 不可寫,請改變檔案夾的權限。在linux中輸入指令: sudo chmod -R 777 %s";
-$lang->file->confirmDelete = " 您確定刪除該附件嗎?";
-$lang->file->errorFileSize = " 檔案大小已經超過%s,可能不能成功上傳!";
-$lang->file->errorFileUpload = " 檔案上傳失敗,檔案大小可能超出限制";
-$lang->file->errorFileFormate = " 檔案上傳失敗,檔案格式不在規定範圍內";
-$lang->file->errorFileMove = " 檔案上傳失敗,移動檔案時出錯";
-$lang->file->dangerFile = " 您選擇的檔案存在安全風險,系統將不予上傳。";
-$lang->file->errorSuffix = '壓縮包格式錯誤,只能上傳zip壓縮包!';
-$lang->file->errorExtract = '解壓縮失敗!可能檔案已經損壞,或壓縮包裡含有非法上傳檔案。';
$lang->file->uploadImagesExplain = '註:請上傳"jpg, jpeg, gif, png"格式的圖片,程序會以檔案名作為標題,以圖片作為內容。';
-$lang->file->fileNotFound = '未找到該檔案,可能物理檔案已被刪除!';
+$lang->file->saveAndNext = '保存並跳轉下一頁';
+$lang->file->importPager = '共有%s條記錄,當前第%s頁,共有%s頁';
+$lang->file->importSummary = "本次導入共有%s條記錄,每頁導入%s條,需要導入%s次";
+
+$lang->file->errorNotExists = "檔案夾 '%s' 不存在";
+$lang->file->errorCanNotWrite = "檔案夾 '%s' 不可寫,請改變檔案夾的權限。在linux中輸入指令: sudo chmod -R 777 %s";
+$lang->file->confirmDelete = " 您確定刪除該附件嗎?";
+$lang->file->errorFileSize = " 檔案大小已經超過%s,可能不能成功上傳!";
+$lang->file->errorFileUpload = " 檔案上傳失敗,檔案大小可能超出限制";
+$lang->file->errorFileFormate = " 檔案上傳失敗,檔案格式不在規定範圍內";
+$lang->file->errorFileMove = " 檔案上傳失敗,移動檔案時出錯";
+$lang->file->dangerFile = " 您選擇的檔案存在安全風險,系統將不予上傳。";
+$lang->file->errorSuffix = '壓縮包格式錯誤,只能上傳zip壓縮包!';
+$lang->file->errorExtract = '解壓縮失敗!可能檔案已經損壞,或壓縮包裡含有非法上傳檔案。';
+$lang->file->fileNotFound = '未找到該檔案,可能物理檔案已被刪除!';
diff --git a/module/install/lang/zh-tw.php b/module/install/lang/zh-tw.php
index e36c629094..bc15a379fe 100644
--- a/module/install/lang/zh-tw.php
+++ b/module/install/lang/zh-tw.php
@@ -177,7 +177,7 @@ $lang->install->joinZentao = <<您已經成功安裝禪道管理系統%s,請及時刪除install.php。
友情提示:為了您及時獲得禪道的最新動態,請在禪道社區(www.zentao.net)進行登記。
EOT;
-$lang->install->product = array('chanzhi', 'ranzhi', 'xuanxuan', 'ydisk', 'meshiot');
+$lang->install->product = array('chanzhi', 'zdoo', 'xuanxuan', 'ydisk', 'meshiot');
$lang->install->promotion = "為您推薦易軟天創旗下其他產品:";
$lang->install->chanzhi = new stdclass();
@@ -193,11 +193,11 @@ $lang->install->chanzhi->desc = <<
EOD;
-$lang->install->ranzhi = new stdclass();
-$lang->install->ranzhi->name = '然之協同';
-$lang->install->ranzhi->logo = 'images/main/ranzhi.ico';
-$lang->install->ranzhi->url = 'http://www.ranzhi.org';
-$lang->install->ranzhi->desc = <<install->zdoo = new stdclass();
+$lang->install->zdoo->name = 'ZDOO';
+$lang->install->zdoo->logo = 'images/main/zdoo.ico';
+$lang->install->zdoo->url = 'http://www.zdoo.com';
+$lang->install->zdoo->desc = <<
客戶管理,訂單跟蹤
項目任務,公告文檔
diff --git a/module/misc/lang/de.php b/module/misc/lang/de.php
index 8f970a5f1c..6f7b2b820b 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.3.1'] = '2020-05-15';
$lang->misc->releaseDate['12.3'] = '2020-04-08';
$lang->misc->releaseDate['12.2'] = '2020-03-25';
$lang->misc->releaseDate['12.1'] = '2020-03-10';
@@ -127,6 +128,7 @@ $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.3.1'][] = array('title'=>'Fix bugs of high severity.', 'desc' => '');
$lang->misc->feature->all['12.3'][] = array('title'=>'Integrate unit test, open the continuous integration closed-loop.', 'desc' => '');
$lang->misc->feature->all['12.2'][] = array('title'=>'Add parent-child story, compatible xuanxuan.', 'desc' => '');
$lang->misc->feature->all['12.1'][] = array('title'=>'Add Integration.', 'desc' => 'Add integration, and build in Jenkins
');
diff --git a/module/misc/lang/en.php b/module/misc/lang/en.php
index ae36338aae..990a378f87 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.3.1'] = '2020-05-15';
$lang->misc->releaseDate['12.3'] = '2020-04-08';
$lang->misc->releaseDate['12.2'] = '2020-03-25';
$lang->misc->releaseDate['12.1'] = '2020-03-10';
@@ -127,6 +128,7 @@ $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.3.1'][] = array('title'=>'Fix bugs of high severity.', 'desc' => '');
$lang->misc->feature->all['12.3'][] = array('title'=>'Integrate unit test, open the continuous integration closed-loop.', 'desc' => '');
$lang->misc->feature->all['12.2'][] = array('title'=>'Add parent-child story, compatible Xuanxuan IM.', 'desc' => '');
$lang->misc->feature->all['12.1'][] = array('title'=>'Add Integration.', 'desc' => 'Add integration, and build in Jenkins
');
diff --git a/module/misc/lang/fr.php b/module/misc/lang/fr.php
index 918e607cfd..c615a0d1b9 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.3.1'] = '2020-05-15';
$lang->misc->releaseDate['12.3'] = '2020-04-08';
$lang->misc->releaseDate['12.2'] = '2020-03-25';
$lang->misc->releaseDate['12.1'] = '2020-03-10';
@@ -127,6 +128,7 @@ $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.3.1'][] = array('title'=>'Fix bugs of high severity.', 'desc' => '');
$lang->misc->feature->all['12.3'][] = array('title'=>'Integrate unit test, open the continuous integration closed-loop.', 'desc' => '');
$lang->misc->feature->all['12.2'][] = array('title'=>'Add parent-child story, compatible xuanxuan.', 'desc' => '');
$lang->misc->feature->all['12.1'][] = array('title'=>'Add Integration.', 'desc' => 'Add integration, and build in Jenkins
');
diff --git a/module/misc/lang/vi.php b/module/misc/lang/vi.php
index 4e741f65e9..ddba24b33b 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.3.1'] = '2020-05-15';
$lang->misc->releaseDate['12.3'] = '2020-04-08';
$lang->misc->releaseDate['12.2'] = '2020-03-25';
$lang->misc->releaseDate['12.1'] = '2020-03-10';
@@ -127,6 +128,7 @@ $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.3.1'][] = array('title'=>'Fix bugs of high severity.', 'desc' => '');
$lang->misc->feature->all['12.3'][] = array('title'=>'Integrate unit test, open the continuous integration closed-loop.', 'desc' => '');
$lang->misc->feature->all['12.2'][] = array('title'=>'Thêm parent-child story, compatible xuanxuan.', 'desc' => '');
$lang->misc->feature->all['12.1'][] = array('title'=>'Thêm Integration.', 'desc' => 'Add integration, and build in Jenkins
');
diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php
index c2ce9dc77c..abe70738ef 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.3.1'] = '2020-05-15';
$lang->misc->releaseDate['12.3'] = '2020-04-08';
$lang->misc->releaseDate['12.2'] = '2020-03-25';
$lang->misc->releaseDate['12.1'] = '2020-03-10';
@@ -127,6 +128,7 @@ $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.3.1'][] = array('title'=>'修复重要程度高的Bug。', 'desc' => '');
$lang->misc->feature->all['12.3'][] = array('title'=>'集成单元测试,打通持续集成闭环。', 'desc' => '');
$lang->misc->feature->all['12.2'][] = array('title'=>'增加父子需求,兼容最新喧喧。', 'desc' => '');
$lang->misc->feature->all['12.1'][] = array('title'=>'增加构建功能', 'desc' => '增加构建功能,集成Jenkins进行构建
');
diff --git a/module/misc/lang/zh-tw.php b/module/misc/lang/zh-tw.php
index c3dfe4fe95..6a7313243f 100644
--- a/module/misc/lang/zh-tw.php
+++ b/module/misc/lang/zh-tw.php
@@ -54,7 +54,7 @@ $lang->misc->zentao->service['servicemore']= '更多服務...';
global $config;
$lang->misc->zentao->others['chanzhi'] = "
蟬知門戶";
-$lang->misc->zentao->others['ranzhi'] = "
然之協同";
+$lang->misc->zentao->others['zdoo'] = "
ZDOO";
$lang->misc->zentao->others['xuanxuan'] = "
喧喧聊天";
$lang->misc->zentao->others['ydisk'] = "
悅庫網盤";
$lang->misc->zentao->others['meshiot' ] = "
易天物聯";
@@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = '最新版本';
$lang->misc->feature->detailed = '詳情';
+$lang->misc->releaseDate['12.3.1'] = '2020-05-15';
$lang->misc->releaseDate['12.3'] = '2020-04-08';
$lang->misc->releaseDate['12.2'] = '2020-03-25';
$lang->misc->releaseDate['12.1'] = '2020-03-10';
@@ -127,6 +128,7 @@ $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.3.1'][] = array('title'=>'修復重要程度高的Bug。', 'desc' => '');
$lang->misc->feature->all['12.3'][] = array('title'=>'整合單元測試,打通持續整合閉環。', 'desc' => '');
$lang->misc->feature->all['12.2'][] = array('title'=>'增加父子需求,兼容最新喧喧。', 'desc' => '');
$lang->misc->feature->all['12.1'][] = array('title'=>'增加構建功能', 'desc' => '增加構建功能,整合Jenkins進行構建
');
@@ -180,7 +182,7 @@ $lang->misc->feature->all['10.2.stable'][] = array('title'=>'整合喧喧IM', 'd
$lang->misc->feature->all['10.0.stable'][] = array('title'=>'全新的界面和交互體驗', 'desc' => '- 全新的我的地盤
- 全新的動態頁面
- 全新的產品主頁
- 全新的產品概況
- 全新的路線圖
- 全新的項目主頁
- 全新的項目概況
- 全新的測試主頁
- 全新的文檔主頁
- 我的地盤新增工作統計區塊
- 我的地盤待辦區塊可以直接添加、編輯、完成待辦
- 產品主頁新增產品統計區塊
- 產品主頁新增產品總覽區塊
- 項目主頁新增項目統計區塊
- 項目主頁新增項目總覽區塊
- 測試主頁新增測試統計區塊
- 所有產品、產品主頁、所有項目、項目主頁、測試主頁等按鈕從二級導航右側移動到了左側
- 項目任務列表看板、燃盡圖、樹狀圖、分組查看等按鈕從三級導航中移動到二級導航中,樹狀圖、分組查看和任務列表整合到一個下拉列表中
- 項目下二級導航中Bug、版本、測試單三個跟測試相關的導航整合到一個下拉列表中
- 版本、測試單列表按照產品分組展示,佈局更加合理
- 文檔左側增加樹狀圖顯示
- 文檔增加快速訪問功能,包括最近更新、我的文檔、我的收藏三個入口
- 文檔增加收藏功能
');
-$lang->misc->feature->all['9.8.stable'][] = array('title'=>'實現集中的消息處理機制', 'desc' => '郵件,短信,webhook都放統一的消息發送
移植然之裡面的消息通知功能
');
+$lang->misc->feature->all['9.8.stable'][] = array('title'=>'實現集中的消息處理機制', 'desc' => '郵件,短信,webhook都放統一的消息發送
移植ZDOO裡面的消息通知功能
');
$lang->misc->feature->all['9.8.stable'][] = array('title'=>'實現周期性待辦功能', 'desc' => '');
$lang->misc->feature->all['9.8.stable'][] = array('title'=>'增加指派給我的區塊', 'desc' => '');
$lang->misc->feature->all['9.8.stable'][] = array('title'=>'項目可以選擇多個測試單生成報告', 'desc' => '');
diff --git a/module/my/lang/zh-tw.php b/module/my/lang/zh-tw.php
index 4f1ef4924e..50aff514be 100644
--- a/module/my/lang/zh-tw.php
+++ b/module/my/lang/zh-tw.php
@@ -16,7 +16,7 @@ $lang->my->profile = '我的檔案';
$lang->my->dynamic = '我的動態';
$lang->my->editProfile = '修改檔案';
$lang->my->changePassword = '修改密碼';
-$lang->my->unbind = '解除然之綁定';
+$lang->my->unbind = '解除ZDOO綁定';
$lang->my->manageContacts = '維護聯繫人';
$lang->my->deleteContacts = '刪除聯繫人';
$lang->my->shareContacts = '共享聯繫人列表';
diff --git a/module/product/lang/zh-tw.php b/module/product/lang/zh-tw.php
index 4538e940bf..56475e98cc 100644
--- a/module/product/lang/zh-tw.php
+++ b/module/product/lang/zh-tw.php
@@ -133,8 +133,8 @@ $lang->product->aclList['open'] = "預設設置(有{$lang->productCommon}視
$lang->product->aclList['private'] = "私有{$lang->productCommon}(只有{$lang->productCommon}相關負責人和{$lang->projectCommon}團隊成員才能訪問)";
$lang->product->aclList['custom'] = '自定義白名單(團隊成員和白名單的成員可以訪問)';
-$lang->product->storySummary = "本頁共 %s 個{$lang->storyCommon},預計 %s 個{$lang->hourCommon},用例覆蓋率 %s。";
-$lang->product->checkedSummary = "選中 %total% 個{$lang->storyCommon},預計 %estimate% 個{$lang->hourCommon},用例覆蓋率 %rate%。";
+$lang->product->storySummary = "本頁共 %s 個%s,預計 %s 個{$lang->hourCommon},用例覆蓋率 %s。";
+$lang->product->checkedSummary = "選中 %total% 個%storyCommon%,預計 %estimate% 個{$lang->hourCommon},用例覆蓋率 %rate%。";
$lang->product->noModule = "您現在還沒有模組信息
請維護{$lang->productCommon}模組
";
$lang->product->noProduct = "暫時沒有{$lang->productCommon}。";
$lang->product->noMatched = '找不到包含"%s"的' . $lang->productCommon;
diff --git a/module/sso/lang/zh-tw.php b/module/sso/lang/zh-tw.php
index 94cc6b6345..49ae9aac99 100644
--- a/module/sso/lang/zh-tw.php
+++ b/module/sso/lang/zh-tw.php
@@ -12,7 +12,7 @@
$lang->sso = new stdclass();
$lang->sso->settings = '配置';
$lang->sso->turnon = '是否打開';
-$lang->sso->redirect = '自動跳迥然之';
+$lang->sso->redirect = '自動跳回ZDOO';
$lang->sso->code = '代號';
$lang->sso->key = '密鑰';
$lang->sso->addr = '介面地址';
@@ -30,8 +30,8 @@ $lang->sso->bindTypeList['bind'] = '綁定已有用戶';
$lang->sso->bindTypeList['add'] = '添加新用戶';
$lang->sso->help = <<1、介面地址的填寫,如果是PATH_INFO :http://然之網址/sys/sso-check.html,如果是GET:http://然之網址/sys/index.php?m=sso&f=check
-2、代號和密鑰必須與然之後台設置的一致。
+1、介面地址的填寫,如果是PATH_INFO :http://ZDOO網址/sys/sso-check.html,如果是GET:http://ZDOO網址/sys/index.php?m=sso&f=check
+2、代號和密鑰必須與ZDOO後台設置的一致。
EOD;
$lang->sso->bindNotice = '添加的新用戶暫時沒有權限,需要聯繫禪道管理員,給該用戶分配權限。';
$lang->sso->bindNoPassword = '密碼不能為空';
diff --git a/module/task/lang/de.php b/module/task/lang/de.php
index cb08f062cc..f1d09af03a 100644
--- a/module/task/lang/de.php
+++ b/module/task/lang/de.php
@@ -198,6 +198,7 @@ $lang->task->createDenied = 'Aufgben erstellen it in diesem Projekt ges
$lang->task->cannotDeleteParent = 'Cannot delete parent task';
$lang->task->error = new stdclass();
+$lang->task->error->totalNumber = '"Total Cost" must be numbers.';
$lang->task->error->consumedNumber = '"Verbraucht" muss eine Zahl sein.';
$lang->task->error->estimateNumber = '"Stunden" müss eine Zahl sein.';
$lang->task->error->recordMinus = 'Work hours should not be negative number.';
diff --git a/module/task/lang/en.php b/module/task/lang/en.php
index eed50c8a96..d646b9e83d 100644
--- a/module/task/lang/en.php
+++ b/module/task/lang/en.php
@@ -198,6 +198,7 @@ $lang->task->createDenied = 'Create Task is denied in this project';
$lang->task->cannotDeleteParent = 'Cannot delete parent task';
$lang->task->error = new stdclass();
+$lang->task->error->totalNumber = '"Total Cost" must be numbers.';
$lang->task->error->consumedNumber = '"Current Cost" must be numbers.';
$lang->task->error->estimateNumber = '"Estimates" must be numbers.';
$lang->task->error->recordMinus = 'Work hours should not be negative number.';
diff --git a/module/task/lang/fr.php b/module/task/lang/fr.php
index 5ddf7a1042..2f424052e4 100644
--- a/module/task/lang/fr.php
+++ b/module/task/lang/fr.php
@@ -198,6 +198,7 @@ $lang->task->createDenied = 'La création de tâches est interdite dans
$lang->task->cannotDeleteParent = 'Cannot delete parent task';
$lang->task->error = new stdclass();
+$lang->task->error->totalNumber = '"Total Cost" must be numbers.';
$lang->task->error->consumedNumber = '"Coût" doit être numérique.';
$lang->task->error->estimateNumber = '"Estimé" doit être numérique.';
$lang->task->error->recordMinus = 'Work hours should not be negative number.';
diff --git a/module/task/lang/vi.php b/module/task/lang/vi.php
index 48f18fee62..575a36f394 100644
--- a/module/task/lang/vi.php
+++ b/module/task/lang/vi.php
@@ -198,6 +198,7 @@ $lang->task->createDenied = 'Tạo nhiệm vụ bị từ chối trong
$lang->task->cannotDeleteParent = 'Không thể xóa nhiệm vụ cha';
$lang->task->error = new stdclass();
+$lang->task->error->totalNumber = '"Total Cost" must be numbers.';
$lang->task->error->consumedNumber = '"Giờ làm" phải là số.';
$lang->task->error->estimateNumber = '"Dự tính" phải là số.';
$lang->task->error->recordMinus = 'Giờ làm không nên là số âm';
diff --git a/module/testreport/lang/de.php b/module/testreport/lang/de.php
index c8e84d6303..21bb93c174 100644
--- a/module/testreport/lang/de.php
+++ b/module/testreport/lang/de.php
@@ -73,6 +73,7 @@ $lang->testreport->errorTrunk = "Die Trunk Version kann kein Testbericht ers
$lang->testreport->noTestTask = "No test requests for this {$lang->productCommon}, so no reports can be generated. Please go to {$lang->productCommon} which has test requests and then generate the report.";
$lang->testreport->noObjectID = "No test request or {$lang->projectCommon} is selected, so no report can be generated.";
$lang->testreport->moreProduct = "Ein Testbericht kann nur innerhalb des selben Produkts erstellt werden.";
+$lang->testreport->hiddenCase = "Hide %s use cases";
$lang->testreport->bugSummary = <<%s Bug(s) in Summe erstellt ,
diff --git a/module/testreport/lang/en.php b/module/testreport/lang/en.php
index 749f9b6bcd..847877a52c 100644
--- a/module/testreport/lang/en.php
+++ b/module/testreport/lang/en.php
@@ -73,6 +73,7 @@ $lang->testreport->errorTrunk = "You cannot create a Testing report for the
$lang->testreport->noTestTask = "No test requests for this {$lang->productCommon}, so no reports can be generated. Please go to {$lang->productCommon} which has test requests and then generate the report.";
$lang->testreport->noObjectID = "No test request or {$lang->projectCommon} is selected, so no report can be generated.";
$lang->testreport->moreProduct = "Testing reports can only be generated for the same {$lang->productCommon}.";
+$lang->testreport->hiddenCase = "Hide %s use cases";
$lang->testreport->bugSummary = <<%s Bugs reported ,
diff --git a/module/testreport/lang/fr.php b/module/testreport/lang/fr.php
index 4cffaee2b9..d59f036596 100644
--- a/module/testreport/lang/fr.php
+++ b/module/testreport/lang/fr.php
@@ -73,6 +73,7 @@ $lang->testreport->errorTrunk = "Vous ne pouvez pas créer un rapport de tes
$lang->testreport->noTestTask = "Pas de campagne de test pour ce {$lang->productCommon}, aucun rapport ne peut être généré. Choisissez un {$lang->productCommon} avec des campagnes de recette et vous pourrez produire des rapports.";
$lang->testreport->noObjectID = "Pas de campagne de test ou un {$lang->projectCommon} est sélectionné, aucun rapport ne peut être généré.";
$lang->testreport->moreProduct = "Les rapports de test ne peuvent être produits que pour le même {$lang->productCommon}.";
+$lang->testreport->hiddenCase = "Hide %s use cases";
$lang->testreport->bugSummary = <<%s Bugs signalés ,
diff --git a/module/testreport/lang/vi.php b/module/testreport/lang/vi.php
index 27cc3866e7..16305c9adf 100644
--- a/module/testreport/lang/vi.php
+++ b/module/testreport/lang/vi.php
@@ -73,6 +73,7 @@ $lang->testreport->errorTrunk = "Bạn không thể tạo một báo cáo th
$lang->testreport->noTestTask = "Không có yêu cầu thử nghiệm {$lang->productCommon} này, so no reports can be generated. Vui lòng go to {$lang->productCommon} which has test requests and then generate the report.";
$lang->testreport->noObjectID = "Không có yêu cầu test hoặc {$lang->projectCommon} được chọn, bởi vậy không có báo cáo có thể được tạo.";
$lang->testreport->moreProduct = "Báo cáo Test chỉ có thể được tạo cho cùng {$lang->productCommon}.";
+$lang->testreport->hiddenCase = "Hide %s use cases";
$lang->testreport->bugSummary = <<%s Bugs reported ,
diff --git a/module/testreport/lang/zh-tw.php b/module/testreport/lang/zh-tw.php
index 4123123c65..4b2f18b35f 100644
--- a/module/testreport/lang/zh-tw.php
+++ b/module/testreport/lang/zh-tw.php
@@ -73,6 +73,7 @@ $lang->testreport->errorTrunk = "主幹版本不能創建測試報告,請
$lang->testreport->noTestTask = "該{$lang->productCommon}下還沒有關聯非Trunk的測試單,不能創建報告。請先創建測試單,再創建。";
$lang->testreport->noObjectID = "沒有選定測試單或{$lang->projectCommon},無法創建測試報告!";
$lang->testreport->moreProduct = "只能對同一個{$lang->productCommon}生成測試報告。";
+$lang->testreport->hiddenCase = "隱藏 %s 個用例";
$lang->testreport->bugSummary = <<%s個Bug ,
diff --git a/module/upgrade/lang/version.php b/module/upgrade/lang/version.php
index e2c5abbc74..b07e083f35 100644
--- a/module/upgrade/lang/version.php
+++ b/module/upgrade/lang/version.php
@@ -120,3 +120,4 @@ $lang->upgrade->fromVersions['12_0'] = '12.0';
$lang->upgrade->fromVersions['12_0_1'] = '12.0.1';
$lang->upgrade->fromVersions['12_1'] = '12.1';
$lang->upgrade->fromVersions['12_2'] = '12.2';
+$lang->upgrade->fromVersions['12_3'] = '12.3';
diff --git a/module/upgrade/model.php b/module/upgrade/model.php
index 0895c9f043..9f21afd292 100644
--- a/module/upgrade/model.php
+++ b/module/upgrade/model.php
@@ -586,6 +586,9 @@ class upgradeModel extends model
$this->saveLogs('Execute 12_2');
$this->execSQL($this->getUpgradeFile('12.2'));
$this->appendExec('12_2');
+ case '12_3':
+ $this->saveLogs('Execute 12_3');
+ $this->appendExec('12_3');
}
$this->deletePatch();
@@ -757,6 +760,7 @@ class upgradeModel extends model
$confirmContent .= file_get_contents($xuanxuanSql);
}
case '12_2': $confirmContent .= file_get_contents($this->getUpgradeFile('12.2'));
+ case '12_3':
}
return str_replace('zt_', $this->config->db->prefix, $confirmContent);
}
diff --git a/module/user/lang/zh-tw.php b/module/user/lang/zh-tw.php
index dadf4ed61a..f50429dba5 100644
--- a/module/user/lang/zh-tw.php
+++ b/module/user/lang/zh-tw.php
@@ -42,7 +42,7 @@ $lang->user->join = '入職日期';
$lang->user->visits = '訪問次數';
$lang->user->ip = '最後IP';
$lang->user->last = '最後登錄';
-$lang->user->ranzhi = '然之帳號';
+$lang->user->ranzhi = 'ZDOO帳號';
$lang->user->ditto = '同上';
$lang->user->originalPassword = '原密碼';
$lang->user->newPassword = '新密碼';
@@ -61,14 +61,14 @@ $lang->user->edit = "編輯用戶";
$lang->user->batchEdit = "批量編輯";
$lang->user->unlock = "解鎖用戶";
$lang->user->delete = "刪除用戶";
-$lang->user->unbind = "解除然之綁定";
+$lang->user->unbind = "解除ZDOO綁定";
$lang->user->login = "用戶登錄";
$lang->user->mobileLogin = "手機訪問";
$lang->user->editProfile = "修改檔案";
$lang->user->deny = "訪問受限";
$lang->user->confirmDelete = "您確定刪除該用戶嗎?";
$lang->user->confirmUnlock = "您確定解除該用戶的鎖定狀態嗎?";
-$lang->user->confirmUnbind = "您確定解除該用戶跟然之的綁定嗎?";
+$lang->user->confirmUnbind = "您確定解除該用戶跟ZDOO的綁定嗎?";
$lang->user->relogin = "重新登錄";
$lang->user->asGuest = "遊客訪問";
$lang->user->goback = "返回前一頁";