* change for 9.8.1 version.

This commit is contained in:
wangyidong
2018-03-13 11:29:28 +08:00
parent 341a9ce721
commit 8d64b4c9eb
49 changed files with 227 additions and 193 deletions
+1 -1
View File
@@ -1 +1 @@
9.8.stable
9.8.1
+5 -5
View File
@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* 基本设置。Basic settings. */
$config->version = '9.8'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->version = '9.8.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.
@@ -115,6 +115,10 @@ if(file_exists($filterConfig)) include $filterConfig;
$dbConfig = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'db.php';
if(file_exists($dbConfig)) include $dbConfig;
/* 引用自定义的配置。 Include the custom config file. */
$myConfig = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'my.php';
if(file_exists($myConfig)) include $myConfig;
/* 禅道配置文件。zentaopms settings. */
$zentaopmsConfig = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'zentaopms.php';
if(file_exists($zentaopmsConfig)) include $zentaopmsConfig;
@@ -122,7 +126,3 @@ if(file_exists($zentaopmsConfig)) include $zentaopmsConfig;
/* Include extension config files. */
$extConfigFiles = glob(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'ext/*.php');
if($extConfigFiles) foreach($extConfigFiles as $extConfigFile) include $extConfigFile;
/* 引用自定义的配置。 Include the custom config file. */
$myConfig = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'my.php';
if(file_exists($myConfig)) include $myConfig;
+7 -7
View File
@@ -297,13 +297,13 @@ INSERT INTO `zt_testtask` (`id`, `name`, `product`, `project`, `build`, `owner`,
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(2, 5, 'productManager', 'e10adc3949ba59abbe56e057f20f883e', 'po', '产品经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338866083, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(3, 6, 'projectManager', 'e10adc3949ba59abbe56e057f20f883e', 'pm', '项目经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338865876, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(4, 2, 'dev1', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338863860, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(5, 2, 'dev2', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864116, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(6, 2, 'dev3', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864187, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(7, 3, 'tester1', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338865739, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(8, 3, 'tester2', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 2, '192.168.0.8', 1338865450, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(9, 3, 'tester3', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338865125, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(10, 1, 'testManager', 'e10adc3949ba59abbe56e057f20f883e', 'qd', '测试经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 6, '192.168.0.8', 1338865842, '0');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(4, 2, 'dev1', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338863860, '1');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(5, 2, 'dev2', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864116, '1');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(6, 2, 'dev3', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864187, '1');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(7, 3, 'tester1', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338865739, '1');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(8, 3, 'tester2', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 2, '192.168.0.8', 1338865450, '1');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(9, 3, 'tester3', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338865125, '1');
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(10, 1, 'testManager', 'e10adc3949ba59abbe56e057f20f883e', 'qd', '测试经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 6, '192.168.0.8', 1338865842, '1');
INSERT INTO `zt_usergroup` (`account`, `group`) VALUES('productManager', 5);
INSERT INTO `zt_usergroup` (`account`, `group`) VALUES('projectManager', 4);
+68 -86
View File
@@ -39,15 +39,15 @@ INSERT INTO `zt_action` (`id`, `objectType`, `objectID`, `product`, `project`, `
(33, 'user', 1, ',0,', 0, 'admin', 'login', '2017-12-12 15:18:58', '', '', '0'),
(34, 'user', 10, ',0,', 0, 'admin', 'deleted', '2017-12-12 15:20:05', '', '1', '0'),
(35, 'user', 1, ',0,', 0, 'admin', 'logout', '2017-12-12 15:22:11', '', '', '0'),
(36, 'user', 12, ',0,', 0, 'theQS', 'login', '2017-12-12 15:22:36', '', '', '0'),
(37, 'user', 12, ',0,', 0, 'theQS', 'logout', '2017-12-12 15:22:48', '', '', '0'),
(36, 'user', 12, ',0,', 0, 'pm1', 'login', '2017-12-12 15:22:36', '', '', '0'),
(37, 'user', 12, ',0,', 0, 'pm1', 'logout', '2017-12-12 15:22:48', '', '', '0'),
(38, 'user', 1, ',0,', 0, 'admin', 'login', '2017-12-12 15:23:02', '', '', '0'),
(39, 'user', 1, ',0,', 0, 'admin', 'logout', '2017-12-12 15:23:27', '', '', '0'),
(40, 'user', 11, ',0,', 0, 'qa1', 'login', '2017-12-12 15:23:34', '', '', '0'),
(41, 'build', 1, ',1,', 1, 'qa1', 'opened', '2017-12-12 15:25:13', '', '', '0'),
(42, 'bug', 1, ',1,', 1, 'qa1', 'opened', '2017-12-12 15:27:56', '', '', '0'),
(43, 'bug', 2, ',1,', 1, 'qa1', 'opened', '2017-12-12 15:30:32', '', '', '0'),
(44, 'user', 11, ',0,', 0, 'qa1', 'logout', '2017-12-12 15:32:26', '', '', '0'),
(40, 'user', 11, ',0,', 0, 'pm1', 'login', '2017-12-12 15:23:34', '', '', '0'),
(41, 'build', 1, ',1,', 1, 'pm1', 'opened', '2017-12-12 15:25:13', '', '', '0'),
(42, 'bug', 1, ',1,', 1, 'pm1', 'opened', '2017-12-12 15:27:56', '', '', '0'),
(43, 'bug', 2, ',1,', 1, 'pm1', 'opened', '2017-12-12 15:30:32', '', '', '0'),
(44, 'user', 11, ',0,', 0, 'pm1', 'logout', '2017-12-12 15:32:26', '', '', '0'),
(45, 'user', 1, ',0,', 0, 'admin', 'login', '2017-12-12 15:32:41', '', '', '0'),
(46, 'project', 1, ',1,', 1, 'admin', 'started', '2017-12-12 15:32:54', '', '', '0'),
(47, 'product', 2, ',2,', 0, 'admin', 'opened', '2017-12-12 23:28:29', '', '', '0'),
@@ -80,54 +80,54 @@ INSERT INTO `zt_action` (`id`, `objectType`, `objectID`, `product`, `project`, `
(74, 'task', 8, ',2,', 2, 'pm1', 'started', '2017-12-12 23:45:36', '', '', '0'),
(75, 'task', 7, ',2,', 2, 'pm1', 'recordestimate', '2017-12-12 23:45:53', '', '8', '0'),
(76, 'user', 3, ',0,', 0, 'pm1', 'logout', '2017-12-12 23:46:28', '', '', '0'),
(77, 'user', 5, ',0,', 0, 'pg1', 'login', '2017-12-12 23:46:35', '', '', '0'),
(78, 'task', 9, ',2,', 2, 'pg1', 'started', '2017-12-12 23:46:58', '', '', '0'),
(79, 'task', 5, ',2,', 2, 'pg1', 'started', '2017-12-12 23:47:03', '', '', '0'),
(80, 'task', 5, ',2,', 2, 'pg1', 'finished', '2017-12-12 23:47:37', 'Finished general setup at backend', '', '0'),
(81, 'user', 5, ',0,', 0, 'pg1', 'logout', '2017-12-12 23:48:31', '', '', '0'),
(82, 'user', 7, ',0,', 0, 'pg3', 'login', '2017-12-12 23:48:39', '', '', '0'),
(83, 'build', 2, ',2,', 2, 'pg3', 'opened', '2017-12-12 23:49:31', '', '', '0'),
(84, 'task', 9, ',2,', 2, 'pg3', 'recordestimate', '2017-12-12 23:51:14', 'Finished page design.', '8', '0'),
(85, 'user', 7, ',0,', 0, 'pg3', 'logout', '2017-12-12 23:52:27', '', '', '0'),
(77, 'user', 5, ',0,', 0, 'pm1', 'login', '2017-12-12 23:46:35', '', '', '0'),
(78, 'task', 9, ',2,', 2, 'pm1', 'started', '2017-12-12 23:46:58', '', '', '0'),
(79, 'task', 5, ',2,', 2, 'pm1', 'started', '2017-12-12 23:47:03', '', '', '0'),
(80, 'task', 5, ',2,', 2, 'pm1', 'finished', '2017-12-12 23:47:37', 'Finished general setup at backend', '', '0'),
(81, 'user', 5, ',0,', 0, 'pm1', 'logout', '2017-12-12 23:48:31', '', '', '0'),
(82, 'user', 7, ',0,', 0, 'pm1', 'login', '2017-12-12 23:48:39', '', '', '0'),
(83, 'build', 2, ',2,', 2, 'pm1', 'opened', '2017-12-12 23:49:31', '', '', '0'),
(84, 'task', 9, ',2,', 2, 'pm1', 'recordestimate', '2017-12-12 23:51:14', 'Finished page design.', '8', '0'),
(85, 'user', 7, ',0,', 0, 'pm1', 'logout', '2017-12-12 23:52:27', '', '', '0'),
(86, 'user', 2, ',0,', 0, 'thePO', 'login', '2017-12-12 23:52:30', '', '', '0'),
(87, 'story', 10, ',2,', 2, 'thePO', 'edited', '2017-12-12 23:52:40', '', '', '0'),
(88, 'story', 11, ',2,', 2, 'thePO', 'edited', '2017-12-12 23:53:04', '', '', '0'),
(89, 'project', 2, ',2,', 2, 'thePO', 'started', '2017-12-12 23:54:13', '', '', '0'),
(90, 'user', 2, ',0,', 0, 'thePO', 'logout', '2017-12-12 23:55:42', '', '', '0'),
(91, 'user', 7, ',0,', 0, 'pg3', 'login', '2017-12-12 23:55:49', '', '', '0'),
(92, 'testtask', 1, ',2,', 2, 'pg3', 'opened', '2017-12-12 23:56:59', '', '', '0'),
(93, 'user', 7, ',0,', 0, 'pg3', 'logout', '2017-12-12 23:57:22', '', '', '0'),
(94, 'user', 11, ',0,', 0, 'qa1', 'login', '2017-12-12 23:57:33', '', '', '0'),
(95, 'case', 1, ',2,', 0, 'qa1', 'opened', '2017-12-13 00:00:29', '', '', '0'),
(96, 'case', 2, ',2,', 0, 'qa1', 'opened', '2017-12-13 00:04:09', '', '', '0'),
(97, 'testsuite', 1, ',0,', 0, 'qa1', 'opened', '2017-12-13 00:05:13', '', '', '0'),
(98, 'bug', 3, ',2,', 2, 'qa1', 'opened', '2017-12-13 00:09:48', '', '', '0'),
(99, 'case', 3, ',2,', 0, 'qa1', 'opened', '2017-12-13 00:13:25', '', '', '0'),
(100, 'case', 2, ',2,', 0, 'qa1', 'edited', '2017-12-13 00:18:17', '', '', '0'),
(101, 'bug', 4, ',2,', 2, 'qa1', 'opened', '2017-12-13 00:30:07', '', '', '0'),
(102, 'bug', 4, ',2,', 2, 'qa1', 'edited', '2017-12-13 00:30:41', '', '', '0'),
(103, 'bug', 3, ',2,', 2, 'qa1', 'edited', '2017-12-13 00:31:10', '', '', '0'),
(104, 'bug', 5, ',2,', 2, 'qa1', 'opened', '2017-12-13 00:32:08', '', '', '0'),
(105, 'user', 11, ',0,', 0, 'qa1', 'logout', '2017-12-13 00:34:34', '', '', '0');
(91, 'user', 7, ',0,', 0, 'pm1', 'login', '2017-12-12 23:55:49', '', '', '0'),
(92, 'testtask', 1, ',2,', 2, 'pm1', 'opened', '2017-12-12 23:56:59', '', '', '0'),
(93, 'user', 7, ',0,', 0, 'pm1', 'logout', '2017-12-12 23:57:22', '', '', '0'),
(94, 'user', 11, ',0,', 0, 'pm1', 'login', '2017-12-12 23:57:33', '', '', '0'),
(95, 'case', 1, ',2,', 0, 'pm1', 'opened', '2017-12-13 00:00:29', '', '', '0'),
(96, 'case', 2, ',2,', 0, 'pm1', 'opened', '2017-12-13 00:04:09', '', '', '0'),
(97, 'testsuite', 1, ',0,', 0, 'pm1', 'opened', '2017-12-13 00:05:13', '', '', '0'),
(98, 'bug', 3, ',2,', 2, 'pm1', 'opened', '2017-12-13 00:09:48', '', '', '0'),
(99, 'case', 3, ',2,', 0, 'pm1', 'opened', '2017-12-13 00:13:25', '', '', '0'),
(100, 'case', 2, ',2,', 0, 'pm1', 'edited', '2017-12-13 00:18:17', '', '', '0'),
(101, 'bug', 4, ',2,', 2, 'pm1', 'opened', '2017-12-13 00:30:07', '', '', '0'),
(102, 'bug', 4, ',2,', 2, 'pm1', 'edited', '2017-12-13 00:30:41', '', '', '0'),
(103, 'bug', 3, ',2,', 2, 'pm1', 'edited', '2017-12-13 00:31:10', '', '', '0'),
(104, 'bug', 5, ',2,', 2, 'pm1', 'opened', '2017-12-13 00:32:08', '', '', '0'),
(105, 'user', 11, ',0,', 0, 'pm1', 'logout', '2017-12-13 00:34:34', '', '', '0');
INSERT INTO `zt_bug` (`id`, `product`, `branch`, `module`, `project`, `plan`, `story`, `storyVersion`, `task`, `toTask`, `toStory`, `title`, `keywords`, `severity`, `pri`, `type`, `os`, `browser`, `hardware`, `found`, `steps`, `status`, `color`, `confirmed`, `activatedCount`, `activatedDate`, `mailto`, `openedBy`, `openedDate`, `openedBuild`, `assignedTo`, `assignedDate`, `deadline`, `resolvedBy`, `resolution`, `resolvedBuild`, `resolvedDate`, `closedBy`, `closedDate`, `duplicateBug`, `linkBug`, `case`, `caseVersion`, `result`, `testtask`, `lastEditedBy`, `lastEditedDate`, `deleted`) VALUES
(1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 'Switch desktops three time, then the order of desktops is different from that before.', '', 3, 0, 'codeerror', 'all', '', '', '', '<p>[Steps]Switch desktops three times.</p>\r\n<p>[Results]The order of desktops is different from that was before.</p>\r\n<p>[Expectations]The order of desktops is the same as that was before.</p>', 'active', '', 0, 0, '0000-00-00 00:00:00', ',pm1', 'qa1', '2017-12-12 15:27:55', '1', 'pm1', '2017-12-12 15:27:55', '2017-12-16', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '0'),
(2, 1, 0, 2, 1, 0, 0, 1, 0, 0, 0, 'Full text retrieval in Word files. If Chinese characters exist in the file, it cannot be retrieved.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]Enter “禅道(ZenTao)” in a Word and serach “禅道”.</p>\r\n<p>[Results] “禅道” is not found.</p>\r\n<p>[Expectations] “禅道” is found.</p>', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'qa1', '2017-12-12 15:30:32', '1', 'pm1', '2017-12-12 15:30:32', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '0'),
(3, 2, 0, 8, 2, 0, 10, 1, 0, 0, 0, '400 page is incomplete.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]</p>\r\n1. Click “400 page”<br /><p>[Results]</p>\r\n1. Not all 400 page is displayed.<br /><p>[Expectations]</p>\r\n1. List all 400 error pages.<br />', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'qa1', '2017-12-13 00:09:48', '2', '', '0000-00-00 00:00:00', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 2, 1, 1, 1, 'qa1', '2017-12-13 00:31:10', '0'),
(4, 2, 0, 8, 2, 0, 10, 1, 0, 0, 0, 'Generate sitemap.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]</p>\r\n1. Click “Generate sitemap”.<br /><p>[Results]</p>\r\n1. ‘Contact Us’ page is missing in sitemap.<br /><p>[Expectations]</p>\r\n1. Generate sitemap.<br />', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'qa1', '2017-12-13 00:30:07', '2', '', '0000-00-00 00:00:00', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 2, 2, 0, 0, 'qa1', '2017-12-13 00:30:41', '0'),
(5, 2, 0, 8, 2, 0, 10, 1, 0, 0, 0, 'Database error in adding blogroll.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]</p>\r\n1. Add ”www.zentao.pm\"<br /><p>[Results]</p>\r\n1. It cannot be added, and database error prompts.<br /><p>[Expectations]</p>1. In database form ‘friend link’, add ”www.zentao.pm\"<br />', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'qa1', '2017-12-13 00:32:08', '2', '', '0000-00-00 00:00:00', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 2, 2, 0, 0, '', '0000-00-00 00:00:00', '0');
(1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 'Switch desktops three time, then the order of desktops is different from that before.', '', 3, 0, 'codeerror', 'all', '', '', '', '<p>[Steps]Switch desktops three times.</p>\r\n<p>[Results]The order of desktops is different from that was before.</p>\r\n<p>[Expectations]The order of desktops is the same as that was before.</p>', 'active', '', 0, 0, '0000-00-00 00:00:00', ',pm1', 'pm1', '2017-12-12 15:27:55', '1', 'pm1', '2017-12-12 15:27:55', '2017-12-16', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '0'),
(2, 1, 0, 2, 1, 0, 0, 1, 0, 0, 0, 'Full text retrieval in Word files. If Chinese characters exist in the file, it cannot be retrieved.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]Enter “禅道(ZenTao)” in a Word and serach “禅道”.</p>\r\n<p>[Results] “禅道” is not found.</p>\r\n<p>[Expectations] “禅道” is found.</p>', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 15:30:32', '1', 'pm1', '2017-12-12 15:30:32', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '0'),
(3, 2, 0, 8, 2, 0, 10, 1, 0, 0, 0, '400 page is incomplete.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]</p>\r\n1. Click “400 page”<br /><p>[Results]</p>\r\n1. Not all 400 page is displayed.<br /><p>[Expectations]</p>\r\n1. List all 400 error pages.<br />', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'pm1', '2017-12-13 00:09:48', '2', '', '0000-00-00 00:00:00', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 2, 1, 1, 1, 'pm1', '2017-12-13 00:31:10', '0'),
(4, 2, 0, 8, 2, 0, 10, 1, 0, 0, 0, 'Generate sitemap.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]</p>\r\n1. Click “Generate sitemap”.<br /><p>[Results]</p>\r\n1. ‘Contact Us’ page is missing in sitemap.<br /><p>[Expectations]</p>\r\n1. Generate sitemap.<br />', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'pm1', '2017-12-13 00:30:07', '2', '', '0000-00-00 00:00:00', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 2, 2, 0, 0, 'pm1', '2017-12-13 00:30:41', '0'),
(5, 2, 0, 8, 2, 0, 10, 1, 0, 0, 0, 'Database error in adding blogroll.', '', 3, 0, 'codeerror', '', '', '', '', '<p>[Steps]</p>\r\n1. Add ”www.zentao.pm\"<br /><p>[Results]</p>\r\n1. It cannot be added, and database error prompts.<br /><p>[Expectations]</p>1. In database form ‘friend link’, add ”www.zentao.pm\"<br />', 'active', '', 0, 0, '0000-00-00 00:00:00', '', 'pm1', '2017-12-13 00:32:08', '2', '', '0000-00-00 00:00:00', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 2, 2, 0, 0, '', '0000-00-00 00:00:00', '0');
INSERT INTO `zt_build` (`id`, `product`, `branch`, `project`, `name`, `scmPath`, `filePath`, `date`, `stories`, `bugs`, `builder`, `desc`, `deleted`) VALUES
(1, 1, 0, 1, 'win10 V1.0build1', '', '', '2017-12-12', '', '', 'qa1', '', '0'),
(2, 2, 0, 2, 'blog v0.1', '', '', '2017-12-12', '', '', 'pg3', 'build for inner test<br />', '0');
(1, 1, 0, 1, 'win10 V1.0build1', '', '', '2017-12-12', '', '', 'pm1', '', '0'),
(2, 2, 0, 2, 'blog v0.1', '', '', '2017-12-12', '', '', 'pm1', 'build for inner test<br />', '0');
INSERT INTO `zt_burn` (`project`, `date`, `estimate`, `left`, `consumed`) VALUES
(1, '2017-12-12', 280, 184, 68);
INSERT INTO `zt_case` (`id`, `product`, `branch`, `lib`, `module`, `path`, `story`, `storyVersion`, `title`, `precondition`, `keywords`, `pri`, `type`, `stage`, `howRun`, `scriptedBy`, `scriptedDate`, `scriptStatus`, `scriptLocation`, `status`, `color`, `frequency`, `order`, `openedBy`, `openedDate`, `reviewedBy`, `reviewedDate`, `lastEditedBy`, `lastEditedDate`, `version`, `linkCase`, `fromBug`, `fromCaseID`, `deleted`, `lastRunner`, `lastRunDate`, `lastRunResult`) VALUES
(1, 2, 0, 0, 8, 0, 11, 1, 'Cache setup test', '', '', 3, 'feature', ',unittest,feature', '', '', '0000-00-00', '', '', 'normal', '', '1', 0, 'qa1', '2017-12-13 00:00:29', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, '0', 'qa1', '2017-12-13 00:10:24', 'pass'),
(2, 2, 0, 0, 8, 0, 10, 1, 'SEO setup test', '', '', 2, 'feature', ',feature', '', '', '0000-00-00', '', '', 'normal', '', '1', 0, 'qa1', '2017-12-13 00:04:09', '', '0000-00-00', 'qa1', '2017-12-13 00:18:17', 2, '', 0, 0, '0', 'qa1', '2017-12-13 00:23:48', 'fail'),
(3, 2, 0, 0, 8, 0, 0, 1, 'general setup test', '', '', 3, 'feature', '', '', '', '0000-00-00', '', '', 'normal', '', '1', 0, 'qa1', '2017-12-13 00:13:25', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, '0', '', '0000-00-00 00:00:00', '');
(1, 2, 0, 0, 8, 0, 11, 1, 'Cache setup test', '', '', 3, 'feature', ',unittest,feature', '', '', '0000-00-00', '', '', 'normal', '', '1', 0, 'pm1', '2017-12-13 00:00:29', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, '0', 'pm1', '2017-12-13 00:10:24', 'pass'),
(2, 2, 0, 0, 8, 0, 10, 1, 'SEO setup test', '', '', 2, 'feature', ',feature', '', '', '0000-00-00', '', '', 'normal', '', '1', 0, 'pm1', '2017-12-13 00:04:09', '', '0000-00-00', 'pm1', '2017-12-13 00:18:17', 2, '', 0, 0, '0', 'pm1', '2017-12-13 00:23:48', 'fail'),
(3, 2, 0, 0, 8, 0, 0, 1, 'general setup test', '', '', 3, 'feature', '', '', '', '0000-00-00', '', '', 'normal', '', '1', 0, 'pm1', '2017-12-13 00:13:25', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, '0', '', '0000-00-00 00:00:00', '');
INSERT INTO `zt_casestep` (`id`, `parent`, `case`, `version`, `type`, `desc`, `expect`) VALUES
(1, 0, 1, 1, 'step', 'Switch on cache.', 'Cache is on.'),
@@ -159,15 +159,15 @@ INSERT INTO `zt_history` (`id`, `action`, `field`, `old`, `new`, `diff`) VALUES
(1, 7, 'desc', 'Finish developing system drive program.', 'Add advanced features such as remote desktop.', '001- <del>Finish developing system drive program.</del>\n001+ <ins>Add advanced features such as remote desktop.</ins>'),
(2, 8, 'desc', 'Finish developing general features.<br />', 'Finish developing general features for users.<br />', '001- <del>Finish developing features that are often used.<br /></del>\n001+ <ins>Finish developing general features for users.<br /></ins>'),
(3, 27, 'realStarted', '0000-00-00', '2017-12-12', ''),
(4, 27, 'assignedTo', 'pg2', 'pm1', ''),
(4, 27, 'assignedTo', 'pm1', 'pm1', ''),
(5, 27, 'status', 'wait', 'doing', ''),
(6, 28, 'left', '100', '64', ''),
(7, 28, 'consumed', '0', '8', ''),
(8, 29, 'realStarted', '0000-00-00', '2017-12-12', ''),
(9, 29, 'assignedTo', 'pg2', 'pm1', ''),
(9, 29, 'assignedTo', 'pm1', 'pm1', ''),
(10, 29, 'status', 'wait', 'doing', ''),
(11, 30, 'realStarted', '0000-00-00', '2017-12-12', ''),
(12, 30, 'assignedTo', 'pg3', 'pm1', ''),
(12, 30, 'assignedTo', 'pm1', 'pm1', ''),
(13, 30, 'status', 'wait', 'doing', ''),
(14, 31, 'left', '60', '0', ''),
(15, 31, 'consumed', '0', '60', ''),
@@ -183,11 +183,11 @@ INSERT INTO `zt_history` (`id`, `action`, `field`, `old`, `new`, `diff`) VALUES
(25, 79, 'realStarted', '0000-00-00', '2017-12-12', ''),
(26, 79, 'status', 'wait', 'doing', ''),
(27, 80, 'consumed', '0', '30', ''),
(28, 80, 'assignedTo', 'pg1', 'pm1', ''),
(28, 80, 'assignedTo', 'pm1', 'pm1', ''),
(29, 80, 'finishedDate', '', '2017-12-12 23:47:37', ''),
(30, 80, 'left', '40', '0', ''),
(31, 80, 'status', 'doing', 'done', ''),
(32, 80, 'finishedBy', '', 'pg1', ''),
(32, 80, 'finishedBy', '', 'pm1', ''),
(33, 84, 'left', '60', '50', ''),
(34, 84, 'consumed', '0', '8', ''),
(35, 87, 'pri', '3', '2', ''),
@@ -215,8 +215,8 @@ INSERT INTO `zt_module` (`id`, `root`, `branch`, `name`, `parent`, `path`, `grad
(10, 2, 0, 'Manage Articles', 7, ',7,10,', 2, 30, 'story', '', '', '0');
INSERT INTO `zt_product` (`id`, `name`, `code`, `line`, `type`, `status`, `desc`, `PO`, `QD`, `RD`, `acl`, `whitelist`, `createdBy`, `createdDate`, `createdVersion`, `order`, `deleted`) VALUES
(1, 'windows 10', 'win10', 0, 'normal', 'normal', '', 'thePO', 'thePM', 'pg3', 'open', '', 'thePO', '2017-12-12 14:44:55', '9.6.3', 5, '0'),
(2, 'Blog', 'blog', 0, 'normal', 'normal', 'A blogging system<br />', 'thePO', 'theQS', 'pg3', 'open', '', 'admin', '2017-12-12 23:28:29', '9.6.3', 10, '0');
(1, 'windows 10', 'win10', 0, 'normal', 'normal', '', 'thePO', 'pm1', 'pm1', 'open', '', 'thePO', '2017-12-12 14:44:55', '9.6.3', 5, '0'),
(2, 'Blog', 'blog', 0, 'normal', 'normal', 'A blogging system<br />', 'thePO', 'pm1', 'pm1', 'open', '', 'admin', '2017-12-12 23:28:29', '9.6.3', 10, '0');
INSERT INTO `zt_productplan` (`id`, `product`, `branch`, `title`, `desc`, `begin`, `end`, `deleted`) VALUES
(1, 1, 0, 'win10 v1.0', 'Finish developing general features for users.<br />', '2017-12-30', '2018-07-03', '0'),
@@ -285,13 +285,13 @@ INSERT INTO `zt_task` (`id`, `parent`, `project`, `module`, `story`, `storyVersi
(1, 0, 1, 1, 1, 1, 0, 'Offer up to 10 desktops to users.', 'devel', 3, 100, 8, 64, '0000-00-00', 'doing', '', NULL, 'User can do different tasks on different desktops.', 'pm1', '2017-12-12 15:05:06', 'pm1', '2017-12-12 15:12:17', '0000-00-00', '2017-12-12', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 15:13:13', '0'),
(2, 0, 1, 1, 2, 1, 0, 'Custom desktop wallpaper', 'devel', 3, 80, 0, 80, '0000-00-00', 'doing', '', NULL, '', 'pm1', '2017-12-12 15:05:06', 'pm1', '2017-12-12 15:13:25', '0000-00-00', '2017-12-12', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 15:13:25', '0'),
(3, 0, 1, 1, 3, 1, 0, 'Auto classify files.', 'devel', 3, 60, 60, 0, '0000-00-00', 'done', '', NULL, '', 'pm1', '2017-12-12 15:05:06', 'pm1', '2017-12-12 15:14:47', '0000-00-00', '2017-12-12', 'pm1', '2017-12-12 15:14:47', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 15:14:47', '0'),
(4, 0, 1, 1, 3, 1, 0, 'File type configuration', 'devel', 4, 40, 0, 40, '0000-00-00', 'wait', '', NULL, '', 'pm1', '2017-12-12 15:05:06', 'pg3', '2017-12-12 15:05:06', '0000-00-00', '0000-00-00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '0'),
(5, 0, 2, 8, 9, 1, 0, 'General backend setup', 'devel', 3, 40, 30, 0, '0000-00-00', 'done', '', NULL, '', 'pm1', '2017-12-12 23:45:14', 'pm1', '2017-12-12 23:47:37', '0000-00-00', '2017-12-12', 'pg1', '2017-12-12 23:47:37', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pg1', '2017-12-12 23:47:37', '0'),
(6, 0, 2, 8, 10, 1, 0, 'backend SEO setup', 'devel', 3, 50, 0, 50, '0000-00-00', 'wait', '', NULL, 'Set SEO switch and report.', 'pm1', '2017-12-12 23:45:14', 'pg2', '2017-12-12 23:45:14', '0000-00-00', '0000-00-00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '0'),
(4, 0, 1, 1, 3, 1, 0, 'File type configuration', 'devel', 4, 40, 0, 40, '0000-00-00', 'wait', '', NULL, '', 'pm1', '2017-12-12 15:05:06', 'pm1', '2017-12-12 15:05:06', '0000-00-00', '0000-00-00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '0'),
(5, 0, 2, 8, 9, 1, 0, 'General backend setup', 'devel', 3, 40, 30, 0, '0000-00-00', 'done', '', NULL, '', 'pm1', '2017-12-12 23:45:14', 'pm1', '2017-12-12 23:47:37', '0000-00-00', '2017-12-12', 'pm1', '2017-12-12 23:47:37', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 23:47:37', '0'),
(6, 0, 2, 8, 10, 1, 0, 'backend SEO setup', 'devel', 3, 50, 0, 50, '0000-00-00', 'wait', '', NULL, 'Set SEO switch and report.', 'pm1', '2017-12-12 23:45:14', 'pm1', '2017-12-12 23:45:14', '0000-00-00', '0000-00-00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '0'),
(7, 0, 2, 8, 11, 1, 0, 'backend cache setup', 'devel', 3, 30, 8, 55, '0000-00-00', 'doing', '', NULL, 'Set cache switch and time.', 'pm1', '2017-12-12 23:45:14', 'pm1', '2017-12-12 23:45:53', '0000-00-00', '2017-12-12', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 23:45:53', '0'),
(8, 0, 2, 8, 12, 1, 0, 'backend security setup', 'devel', 3, 30, 0, 30, '0000-00-00', 'doing', '', NULL, '', 'pm1', '2017-12-12 23:45:14', 'pm1', '2017-12-12 23:45:14', '0000-00-00', '2017-12-12', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 23:45:35', '0'),
(9, 0, 2, 9, 13, 1, 0, 'backend UI setup', 'devel', 3, 60, 8, 50, '0000-00-00', 'doing', '', NULL, '', 'pm1', '2017-12-12 23:45:14', 'pg1', '2017-12-12 23:45:14', '0000-00-00', '2017-12-12', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pg3', '2017-12-12 23:51:14', '0'),
(10, 0, 2, 6, 14, 1, 0, 'Page display', 'devel', 3, 60, 0, 60, '0000-00-00', 'wait', '', NULL, '', 'pm1', '2017-12-12 23:45:14', 'pg2', '2017-12-12 23:45:14', '0000-00-00', '0000-00-00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '0');
(9, 0, 2, 9, 13, 1, 0, 'backend UI setup', 'devel', 3, 60, 8, 50, '0000-00-00', 'doing', '', NULL, '', 'pm1', '2017-12-12 23:45:14', 'pm1', '2017-12-12 23:45:14', '0000-00-00', '2017-12-12', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 'pm1', '2017-12-12 23:51:14', '0'),
(10, 0, 2, 6, 14, 1, 0, 'Page display', 'devel', 3, 60, 0, 60, '0000-00-00', 'wait', '', NULL, '', 'pm1', '2017-12-12 23:45:14', 'pm1', '2017-12-12 23:45:14', '0000-00-00', '0000-00-00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '0');
INSERT INTO `zt_taskestimate` (`id`, `task`, `date`, `left`, `consumed`, `account`, `work`) VALUES
(1, 1, '2017-12-12', 100, 0, 'pm1', NULL),
@@ -301,55 +301,37 @@ INSERT INTO `zt_taskestimate` (`id`, `task`, `date`, `left`, `consumed`, `accoun
(5, 3, '2017-12-12', 0, 60, 'pm1', 'Finish'),
(6, 8, '2017-12-12', 30, 0, 'pm1', NULL),
(7, 7, '2017-12-12', 55, 8, 'pm1', ''),
(8, 9, '2017-12-12', 60, 0, 'pg1', NULL),
(9, 5, '2017-12-12', 40, 0, 'pg1', NULL),
(10, 5, '2017-12-12', 0, 30, 'pg1', NULL),
(11, 9, '2017-12-13', 50, 8, 'pg3', 'Finish page design');
(8, 9, '2017-12-12', 60, 0, 'pm1', NULL),
(9, 5, '2017-12-12', 40, 0, 'pm1', NULL),
(10, 5, '2017-12-12', 0, 30, 'pm1', NULL),
(11, 9, '2017-12-13', 50, 8, 'pm1', 'Finish page design');
INSERT INTO `zt_team` (`root`, `type`, `account`, `role`, `limited`, `join`, `days`, `hours`, `estimate`, `consumed`, `left`, `order`) VALUES
(1, 'project', 'thePO', 'Product Owner', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(1, 'project', 'pm1', 'Project Manager', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(1, 'project', 'pg2', 'Developer', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(1, 'project', 'pg3', 'Developer', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(1, 'project', 'qa1', 'Tester', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(2, 'project', 'thePO', 'Product Owner', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(2, 'project', 'pm1', 'Project Manager', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(2, 'project', 'pg1', 'Developer', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(2, 'project', 'pg2', 'Developer', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(2, 'project', 'pg3', 'Developer', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0);
(1, 'project', 'thePO', 'Product Owner', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0),
(1, 'project', 'pm1', 'Project Manager', 'no', '2017-12-12', 10, 7.0, 0.00, 0.00, 0.00, 0);
INSERT INTO `zt_testresult` (`id`, `run`, `case`, `version`, `caseResult`, `stepResults`, `lastRunner`, `date`) VALUES
(1, 1, 2, 1, 'fail', 'a:3:{i:3;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:4;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:24:\"Not all 400 page is displayed.\";}i:5;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'qa1', '2017-12-13 00:08:52'),
(2, 2, 1, 1, 'pass', 'a:2:{i:1;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:2;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'qa1', '2017-12-13 00:10:24'),
(3, 0, 2, 2, 'fail', 'a:4:{i:7;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:42:\"‘Contact Us’ page is missing in sitemap.\";}i:8;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:36:\"400 page is missing.‘/notExitPage’;\";}i:9;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:10;a:2:{s:6:\"result\";s:3:\"n/a\";s:4:\"real\";s:45:\"Blogroll cannot be added, and database error prompts.\";}}', 'qa1', '2017-12-13 00:23:41'),
(4, 0, 2, 2, 'fail', 'a:4:{i:7;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:42:\"‘Contact Us’ page is missing in sitemap.\";}i:8;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:36:\"400 page is missing.‘/notExitPage’;\";}i:9;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:10;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:45:\"Blogroll cannot be added, and database error prompts.\";}}', 'qa1', '2017-12-13 00:23:48');
(1, 1, 2, 1, 'fail', 'a:3:{i:3;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:4;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:24:\"Not all 400 page is displayed.\";}i:5;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'pm1', '2017-12-13 00:08:52'),
(2, 2, 1, 1, 'pass', 'a:2:{i:1;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:2;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'pm1', '2017-12-13 00:10:24'),
(3, 0, 2, 2, 'fail', 'a:4:{i:7;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:42:\"‘Contact Us’ page is missing in sitemap.\";}i:8;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:36:\"400 page is missing.‘/notExitPage’;\";}i:9;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:10;a:2:{s:6:\"result\";s:3:\"n/a\";s:4:\"real\";s:45:\"Blogroll cannot be added, and database error prompts.\";}}', 'pm1', '2017-12-13 00:23:41'),
(4, 0, 2, 2, 'fail', 'a:4:{i:7;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:42:\"‘Contact Us’ page is missing in sitemap.\";}i:8;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:36:\"400 page is missing.‘/notExitPage’;\";}i:9;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}i:10;a:2:{s:6:\"result\";s:4:\"fail\";s:4:\"real\";s:45:\"Blogroll cannot be added, and database error prompts.\";}}', 'pm1', '2017-12-13 00:23:48');
INSERT INTO `zt_testrun` (`id`, `task`, `case`, `version`, `assignedTo`, `lastRunner`, `lastRunDate`, `lastRunResult`, `status`) VALUES
(1, 1, 2, 2, 'theQS', 'qa1', '2017-12-13 00:08:52', 'fail', 'done'),
(2, 1, 1, 1, 'qa1', 'qa1', '2017-12-13 00:10:24', 'pass', 'done');
(1, 1, 2, 2, 'pm1', 'pm1', '2017-12-13 00:08:52', 'fail', 'done'),
(2, 1, 1, 1, 'pm1', 'pm1', '2017-12-13 00:10:24', 'pass', 'done');
INSERT INTO `zt_testsuite` (`id`, `product`, `name`, `desc`, `type`, `addedBy`, `addedDate`, `lastEditedBy`, `lastEditedDate`, `deleted`) VALUES
(1, 2, 'Testsuite', 'Testsuite', 'public', 'qa1', '2017-12-13 00:05:13', '', '0000-00-00 00:00:00', '0');
(1, 2, 'Testsuite', 'Testsuite', 'public', 'pm1', '2017-12-13 00:05:13', '', '0000-00-00 00:00:00', '0');
INSERT INTO `zt_testtask` (`id`, `name`, `product`, `project`, `build`, `owner`, `pri`, `begin`, `end`, `mailto`, `desc`, `report`, `status`, `deleted`) VALUES
(1, 'test for blog v0.1', 2, 2, '2', 'thePO', 0, '2018-01-05', '2018-01-20', '', '', '', 'wait', '0');
INSERT INTO `zt_user` (`dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `yahoo`, `gtalk`, `wangwang`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `fails`, `locked`, `ranzhi`, `score`, `scoreLevel`, `deleted`) VALUES
(1, 'thePO', 'e10adc3949ba59abbe56e057f20f883e', 'po', 'Richard', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '127.0.0.1', 1513093950, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(5, 'pm1', 'e10adc3949ba59abbe56e057f20f883e', 'pm', 'Daniel', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 2, '127.0.0.1', 1513093318, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(6, 'pm2', 'e10adc3949ba59abbe56e057f20f883e', 'pm', 'Matthew', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 0, '', 0, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(5, 'pg1', 'e10adc3949ba59abbe56e057f20f883e', 'dev', 'Mark', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '127.0.0.1', 1513093595, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(5, 'pg2', 'e10adc3949ba59abbe56e057f20f883e', 'dev', 'Andrew', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 0, '', 0, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(5, 'pg3', 'e10adc3949ba59abbe56e057f20f883e', 'dev', 'Jean', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 2, '127.0.0.1', 1513094149, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(3, 'thePM', 'e10adc3949ba59abbe56e057f20f883e', 'qd', 'Tracy', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 0, '', 0, 0, '0000-00-00 00:00:00', '', 0, 0, '1'),
(3, 'qa1', 'e10adc3949ba59abbe56e057f20f883e', 'qa', 'Robert', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', 'admin', '0000-00-00', 2, '127.0.0.1', 1513094253, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(3, 'theQS', 'e10adc3949ba59abbe56e057f20f883e', 'qd', 'Hannah', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '127.0.0.1', 1513063356, 0, '0000-00-00 00:00:00', '', 0, 0, '0');
(5, 'pm1', 'e10adc3949ba59abbe56e057f20f883e', 'pm', 'Daniel', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 2, '127.0.0.1', 1513093318, 0, '0000-00-00 00:00:00', '', 0, 0, '0');
INSERT INTO `zt_usergroup` (`account`, `group`) VALUES
('pg1', 2),
('pg2', 2),
('pg3', 2),
('pm1', 4),
('pm2', 4),
('qa1', 3),
('thePM', 8),
('thePO', 5);
+2 -2
View File
@@ -1485,8 +1485,8 @@ class baseRouter
if(!method_exists($tmpModelClass, $method)) continue;
$methodRelfection = new reflectionMethod($tmpModelClass, $method);
$definedFile = $methodRelfection->getFileName();
$startLine = $methodRelfection->getStartLine() . ' ';
$endLine = $methodRelfection->getEndLine() . ' ';
$startLine = $methodRelfection->getStartLine();
$endLine = $methodRelfection->getEndLine();
/* 将Hook脚本和老的代码合并在一起,并替换原来的定义。Merge hook codes with old codes and replace back. */
$oldCodes = $definedFile == $tmpModelFile ? $mergedModelCodes : $mainModelCodes;
+1
View File
@@ -280,6 +280,7 @@ class baseValidater
public static function checkDatetime($datetime)
{
if(empty($datetime)) return true;
if($datetime == '0000-00-00') return true;
if($datetime == '0000-00-00 00:00:00') return true;
$stamp = strtotime($datetime);
if(!is_numeric($stamp)) return false;
+2 -2
View File
@@ -191,13 +191,13 @@ $lang->action->label->release = '发布|release|view|productID=%s';
$lang->action->label->story = '需求|story|view|storyID=%s';
$lang->action->label->project = "{$lang->projectCommon}|project|view|projectID=%s";
$lang->action->label->task = '任务|task|view|taskID=%s';
$lang->action->label->build = 'Build|build|view|buildID=%s';
$lang->action->label->build = '版本|build|view|buildID=%s';
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
$lang->action->label->case = '用例|testcase|view|caseID=%s';
$lang->action->label->testtask = '测试单|testtask|view|caseID=%s';
$lang->action->label->testsuite = '测试套件|testsuite|view|suiteID=%s';
$lang->action->label->caselib = '测试库|testsuite|libview|libID=%s';
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
$lang->action->label->todo = '待办|todo|view|todoID=%s';
$lang->action->label->doclib = '文档库|doc|browse|libID=%s';
$lang->action->label->doc = '文档|doc|view|docID=%s';
$lang->action->label->user = '用户|user|view|account=%s';
+2 -2
View File
@@ -191,13 +191,13 @@ $lang->action->label->release = '發佈|release|view|productID=%s';
$lang->action->label->story = '需求|story|view|storyID=%s';
$lang->action->label->project = "{$lang->projectCommon}|project|view|projectID=%s";
$lang->action->label->task = '任務|task|view|taskID=%s';
$lang->action->label->build = 'Build|build|view|buildID=%s';
$lang->action->label->build = '版本|build|view|buildID=%s';
$lang->action->label->bug = 'Bug|bug|view|bugID=%s';
$lang->action->label->case = '用例|testcase|view|caseID=%s';
$lang->action->label->testtask = '測試單|testtask|view|caseID=%s';
$lang->action->label->testsuite = '測試套件|testsuite|view|suiteID=%s';
$lang->action->label->caselib = '測試庫|testsuite|libview|libID=%s';
$lang->action->label->todo = 'todo|todo|view|todoID=%s';
$lang->action->label->todo = '待辦|todo|view|todoID=%s';
$lang->action->label->doclib = '文檔庫|doc|browse|libID=%s';
$lang->action->label->doc = '文檔|doc|view|docID=%s';
$lang->action->label->user = '用戶|user|view|account=%s';
+1 -1
View File
@@ -707,7 +707,7 @@ class actionModel extends model
$objectIds = array_unique($objectIds);
$table = $this->config->objectTables[$objectType];
$field = $this->config->action->objectNameFields[$objectType];
if($table != '`zt_todo`')
if($table != TABLE_TODO)
{
$objectNames[$objectType] = $this->dao->select("id, $field AS name")->from($table)->where('id')->in($objectIds)->fetchPairs();
}
-28
View File
@@ -644,10 +644,8 @@ class block extends control
public function printAssignToMeBlock()
{
if(common::hasPriv('todo', 'view')) $hasViewPriv['todo'] = true;
if(common::hasPriv('story', 'view')) $hasViewPriv['story'] = true;
if(common::hasPriv('task', 'view')) $hasViewPriv['task'] = true;
if(common::hasPriv('bug', 'view')) $hasViewPriv['bug'] = true;
if(common::hasPriv('testcase', 'view')) $hasViewPriv['case'] = true;
if(isset($hasViewPriv['todo']))
{
@@ -667,14 +665,6 @@ class block extends control
if(empty($todos)) unset($hasViewPriv['todo']);
$this->view->todos = $todos;
}
if(isset($hasViewPriv['story']))
{
$this->app->loadLang('story');
$stories = $this->dao->select('*')->from(TABLE_STORY)->where('assignedTo')->eq($this->app->user->account)->andWhere('deleted')->eq('0')->orderBy('id_desc')->fetchAll();
if(empty($stories)) unset($hasViewPriv['story']);
$this->view->stories = $stories;
}
if(isset($hasViewPriv['task']))
{
$this->app->loadLang('task');
@@ -691,24 +681,6 @@ class block extends control
if(empty($bugs)) unset($hasViewPriv['bug']);
$this->view->bugs = $bugs;
}
if(isset($hasViewPriv['case']))
{
$this->app->loadLang('testcase');
$this->app->loadLang('testtask');
$cases = $this->dao->select('t1.assignedTo AS assignedTo, t2.*')->from(TABLE_TESTRUN)->alias('t1')
->leftJoin(TABLE_CASE)->alias('t2')->on('t1.case = t2.id')
->leftJoin(TABLE_TESTTASK)->alias('t3')->on('t1.task = t3.id')
->Where('t1.assignedTo')->eq($this->app->user->account)
->andWhere('t1.status')->ne('done')
->andWhere('t3.status')->ne('done')
->andWhere('t3.deleted')->eq(0)
->andWhere('t2.deleted')->eq(0)
->orderBy('id_desc')
->fetchAll();
if(empty($cases)) unset($hasViewPriv['case']);
$this->view->cases = $cases;
}
$this->view->hasViewPriv = $hasViewPriv;
$this->display();
@@ -12,7 +12,7 @@
?>
<div id='assigntomeBlock'>
<?php foreach($hasViewPriv as $type => $bool):?>
<div class="tab-pane fade<?php if($type == $active) echo " active in"?>" id="<?php echo $type?>">
<div id="<?php echo $type?>">
<?php include "{$type}block.html.php";?>
</div>
<?php endforeach;?>
+1 -1
View File
@@ -39,7 +39,7 @@ foreach(explode(',', $showFields) as $field)
<tr>
<th class='w-50px'> <?php echo $lang->idAB;?></th>
<th class='w-120px<?php echo zget($visibleFields, $product->type, ' hidden')?>'> <?php echo $lang->product->branch;?></th>
<th class='w-120px<?php echo zget($visibleFields, 'module', ' hidden')?>'> <?php echo $lang->bug->module;?> <span class='required'></span></th>
<th class='w-120px'> <?php echo $lang->bug->module;?> <span class='required'></span></th>
<th class='w-130px<?php echo zget($visibleFields, 'project', ' hidden')?>'><?php echo $lang->bug->project;?></th>
<th><?php echo $lang->bug->openedBuild;?> <span class='required'></span></th>
<th><?php echo $lang->bug->title;?> <span class='required'></span></th>
+2 -2
View File
@@ -165,7 +165,7 @@ js::set('confirmDeleteTemplate', $lang->bug->confirmDeleteTemplate);
$hasCustomSeverity = false;
foreach($lang->bug->severityList as $severityKey => $severityValue)
{
if($severityKey != $severityValue)
if($severityKey != $severityValue or strlen($severityKey) != strlen($severityValue))
{
$hasCustomSeverity = true;
break;
@@ -190,7 +190,7 @@ js::set('confirmDeleteTemplate', $lang->bug->confirmDeleteTemplate);
$hasCustomPri = false;
foreach($lang->bug->priList as $priKey => $priValue)
{
if($priKey != $priValue)
if($priKey != $priValue or strlen($priKey) != strlen($priValue))
{
$hasCustomPri = true;
break;
+6 -2
View File
@@ -38,14 +38,18 @@ $(function()
{
$.get(createLink('message', 'ajaxGetMessage', "windowBlur=" + (windowBlur ? '1' : '0')), function(data)
{
if(!windowBlur)
if(!windowBlur)
{
$('#noticeBox').append(data);
adjustNoticePosition();
}
else
{
if(data && typeof data.message == 'string') notifyMessage(data.message);
if(data)
{
if(typeof data == 'string') data = $.parseJSON(data);
if(typeof data.message == 'string') notifyMessage(data.message);
}
}
});
}, 60 * 1000);
+1
View File
@@ -6,3 +6,4 @@ fieldset > .content table tr th { border-top: 1px solid #BBB;
background-color: #F7F7F7;
}
fieldset > .content table tr th, fieldset > .content table tr td{ padding: 5px 10px; }
.col-main{width:100%}
+4 -2
View File
@@ -17,15 +17,17 @@ $lang->install->pre = 'Back';
$lang->install->reload = 'Reload';
$lang->install->error = 'Error ';
$lang->install->officeDomain = 'https://www.zentao.pm';
$lang->install->start = 'Start to Install';
$lang->install->keepInstalling = 'Continue installing this version.';
$lang->install->seeLatestRelease = 'View Latest Version';
$lang->install->welcome = 'Thanks for using ZenTao Project Management Software!';
$lang->install->license = 'ZenTao PMS is under Z PUBLIC LICENSE(ZPL) 1.2';
$lang->install->desc = <<<EOT
ZenTao Project Management Software is an open source software released under <a href='http://zpl.pub/page/zplv12.html' target='_blank'>ZPL</a> license. It integrates with Product Management、Project Management、QA Management, Document Management, as weel as To-Dos Management, Company Managementetc. ZenTao is the best choice for software project management.
ZenTao Project Management Software is an Open Source software released under <a href='http://zpl.pub/page/zplv12.html' target='_blank'>ZPL</a> license. It integrates with Product Management, Project Management, QA Management, Document Management, as well as To-Dos Management, Company Management etc. ZenTao is the best choice for software project management.
ZenTao PMS uses PHP + MySQL as programming langugages and is based on ZenTaoPHP, an independent framwork developed by our team. Third party developers/organizations can develop extensions or customization tailored to their needs.
ZenTao PMS is built on PHP + MySQL and based on ZenTaoPHP, an independent framework developed by our team. Third party developers/organizations can develop extensions or customize for your needs.
EOT;
$lang->install->links = <<<EOT
ZenTao PMS is developed by <strong><a href='http://easysoft.ltd' target='_blank' class='text-danger'>Nature Easy Soft Co., LTD</a></strong>.
+2
View File
@@ -17,6 +17,8 @@ $lang->install->pre = '返回';
$lang->install->reload = '刷新';
$lang->install->error = '错误 ';
$lang->install->officeDomain = 'http://www.zentao.net';
$lang->install->start = '开始安装';
$lang->install->keepInstalling = '继续安装当前版本';
$lang->install->seeLatestRelease = '看看最新的版本';
+5 -3
View File
@@ -17,6 +17,8 @@ $lang->install->pre = '返回';
$lang->install->reload = '刷新';
$lang->install->error = '錯誤 ';
$lang->install->officeDomain = 'http://www.zentao.net';
$lang->install->start = '開始安裝';
$lang->install->keepInstalling = '繼續安裝當前版本';
$lang->install->seeLatestRelease = '看看最新的版本';
@@ -80,10 +82,10 @@ $lang->install->tmpRoot = '臨時檔案目錄';
$lang->install->dataRoot = '上傳檔案目錄';
$lang->install->session = 'Session存儲目錄';
$lang->install->sessionFail = '修改PHP配置檔案,設置session.save_path';
$lang->install->mkdirWin = '<p>需要創建目錄%s。命令行下面命令為:<br /> mkdir %s</p>';
$lang->install->mkdirWin = '<p>需要創建目錄%s。命令為:<br /> mkdir %s</p>';
$lang->install->chmodWin = '需要修改目錄 "%s" 的權限。';
$lang->install->mkdirLinux = '<p>需要創建目錄%s。<br /> 命令行下面命令為:<br /> mkdir -p %s</p>';
$lang->install->chmodLinux = '需要修改目錄 "%s" 的權限。<br />命令行下面命令為:<br />chmod o=rwx -R %s';
$lang->install->mkdirLinux = '<p>需要創建目錄%s。<br /> 命令為:<br /> mkdir -p %s</p>';
$lang->install->chmodLinux = '需要修改目錄 "%s" 的權限。<br />命令為:<br />chmod o=rwx -R %s';
$lang->install->defaultLang = '預設語言';
$lang->install->dbHost = '資料庫伺服器';
+4 -6
View File
@@ -55,23 +55,21 @@ EOT;
<div class='help-block text-center'>
<?php
$configRoot = $this->app->getConfigRoot();
$dbConfigFile = $configRoot . 'db.php';
$myConfigFile = $configRoot . 'my.php';
if(is_writable($configRoot))
{
if(@file_put_contents($dbConfigFile, $configContent))
if(@file_put_contents($myConfigFile, $configContent))
{
printf($lang->install->saved2File, $dbConfigFile);
printf($lang->install->saved2File, $myConfigFile);
}
else
{
printf($lang->install->save2File, $dbConfigFile);
printf($lang->install->save2File, $myConfigFile);
}
@file_put_contents($myConfigFile, "<?php\n");
}
else
{
printf($lang->install->save2File, $dbConfigFile);
printf($lang->install->save2File, $myConfigFile);
}
?>
</div>
+1 -1
View File
@@ -23,7 +23,7 @@
</div>
<div class='modal-footer'>
<?php
echo html::a('http://www.zentao.net', $lang->install->register, '_blank', "class='btn btn-success'");
echo html::a($lang->install->officeDomain, $lang->install->register, '_blank', "class='btn btn-success'");
echo "<span class='text-muted'> &nbsp; " . $lang->install->or . ' &nbsp; </span>';
echo html::a('index.php', $lang->install->login, '', "class='btn btn-primary'");
?>
+2 -2
View File
@@ -83,7 +83,7 @@ class message extends control
$messages .= $message->data . $newline;
$idList[] = $message->id;
}
$this->dao->update(TABLE_NOTIFY)->set('status')->eq('sended')->andWhere('sendTime')->eq(helper::now())->where('id')->in($idList)->exec();
$this->dao->update(TABLE_NOTIFY)->set('status')->eq('sended')->set('sendTime')->eq(helper::now())->where('id')->in($idList)->exec();
foreach($todos as $todo) $messages .= $todo->data . $newline;
if($windowBlur) $messages = strip_tags($messages);
@@ -103,6 +103,6 @@ class message extends control
EOT;
}
$this->dao->delete('*')->from(TABLE_NOTIFY)->where('objectType')->eq('message')->andWhere('status')->eq('sended')->exec();
$this->dao->delete()->from(TABLE_NOTIFY)->where('objectType')->eq('message')->andWhere('status')->ne('wait')->exec();
}
}
+1 -1
View File
@@ -4,5 +4,5 @@ $lang->message->index = 'Index';
$lang->message->setting = 'Setting';
$lang->message->typeList['mail'] = 'Mail';
$lang->message->typeList['message'] = 'Message';
$lang->message->typeList['message'] = 'Browser notifications';
$lang->message->typeList['webhook'] = 'Webhook';
+1 -1
View File
@@ -4,5 +4,5 @@ $lang->message->index = '首页';
$lang->message->setting = '设置';
$lang->message->typeList['mail'] = '邮件';
$lang->message->typeList['message'] = '消息';
$lang->message->typeList['message'] = '浏览器通知';
$lang->message->typeList['webhook'] = 'Webhook';
+1 -1
View File
@@ -4,5 +4,5 @@ $lang->message->index = '首頁';
$lang->message->setting = '設置';
$lang->message->typeList['mail'] = '郵件';
$lang->message->typeList['message'] = '消息';
$lang->message->typeList['message'] = '瀏覽器通知';
$lang->message->typeList['webhook'] = 'Webhook';
+1 -1
View File
@@ -48,7 +48,7 @@
</td>
<td><span class='<?php echo 'severity' . zget($lang->bug->severityList, $bug->severity, $bug->severity)?>'><?php echo zget($lang->bug->severityList, $bug->severity, $bug->severity);?></span></td>
<td><span class='<?php echo 'pri' . zget($lang->bug->priList, $bug->pri, $bug->pri)?>'><?php echo zget($lang->bug->priList, $bug->pri, $bug->pri)?></span></td>
<td><?php echo $lang->bug->typeList[$bug->type]?></td>
<td><?php echo zget($lang->bug->typeList, $bug->type, '');?></td>
<td class='text-left nobr'><?php echo html::a($this->createLink('bug', 'view', "bugID=$bug->id"), $bug->title, null, "style='color: $bug->color'");?></td>
<td><?php echo $users[$bug->openedBy];?></td>
<td><?php echo $users[$bug->assignedTo];?></td>
+47 -14
View File
@@ -774,37 +774,70 @@ class productModel extends model
return $stats;
}
/**
* Get priv products.
*
* @access public
* @return array
*/
public function getPrivProducts()
{
$account = ',' . $this->app->user->account . ',';
static $products;
if($products === null)
{
$groupSql = '';
$groups = '';
if(isset($this->app->user->groups))
{
foreach($this->app->user->groups as $group) $groupSql .= "INSTR(CONCAT(',', t1.whitelist, ','), ',$group,') > 0 OR ";
foreach($this->app->user->groups as $group) $groups .= ",$group,";
}
$groupSql = !empty($groupSql) ? '(' . substr($groupSql, 0, strlen($groupSql) - 4) . ')' : '1 != 1';
$products = $this->dao->select('distinct t1.id')->from(TABLE_PRODUCT)->alias('t1')
$stmt = $this->dao->select('distinct t1.*,t3.account as teamAccount')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.product')
->leftJoin(TABLE_TEAM)->alias('t3')->on('t2.project = t3.root')
->leftJoin(TABLE_PROJECT)->alias('t4')->on('t2.project = t4.id')
->beginIF($this->app->user->admin)->where('t1.deleted')->eq(0)->fi()
->where('t1.deleted')->eq(0)
->beginIF(!$this->app->user->admin)
->where('t1.acl')->eq('open')
->orWhere("(t1.acl = 'custom' AND $groupSql)")
->orWhere('t1.PO')->eq($this->app->user->account)
->orWhere('t1.QD')->eq($this->app->user->account)
->orWhere('t1.RD')->eq($this->app->user->account)
->orWhere('t1.createdBy')->eq($this->app->user->account)
->orWhere('t3.account')->eq($this->app->user->account)
->andWhere('t1.deleted')->eq(0)
->andWhere('t3.type')->eq('project')
->andWhere('t4.deleted')->eq(0)
->fi()
->fetchAll('id');
->query();
$products = array();
$account = $this->app->user->account;
while($product = $stmt->fetch())
{
$id = $product->id;
if($this->app->user->admin)
{
$products[$id] = $id;
}
else
{
if($product->PO == $account OR $product->QD == $account OR $product->RD == $account OR $product->createdBy != $account OR $product->teamAccount == $account)
{
$products[$id] = $id;
continue;
}
if($product->acl == 'open')
{
$products[$id] = $id;
continue;
}
if($product->acl == 'custom')
{
foreach(explode(',', $product->whitelist) as $whitelist)
{
if(empty($whitelist)) continue;
if(strpos($groups, ",$whitelist,") !== false)
{
$products[$id] = $id;
break;
}
}
}
}
}
}
return $products;
}
+1 -1
View File
@@ -158,7 +158,7 @@ class productplanModel extends model
public function create()
{
$plan = fixer::input('post')->stripTags($this->config->productplan->editor->create['id'], $this->config->allowedTags)
->setIF($this->post->delta == 9999 || empty($this->post->end), 'end', '2030-01-01')
->setIF($this->post->delta == 9999 || empty($_POST['end']), 'end', '2030-01-01')
->remove('delta,uid')
->get();
$plan = $this->loadModel('file')->processImgURL($plan, $this->config->productplan->editor->create['id'], $this->post->uid);
+1 -1
View File
@@ -939,7 +939,7 @@ class project extends control
$url = $this->createLink('project', 'create', "projectID=$projectID");
if(!empty($planID))
{
die(js::confirm($this->lang->project->importPlanStory, $url . '&copyProjectID=&planID=' . $planID, $url, 'parent', 'parent'));
die(js::confirm($this->lang->project->importPlanStory, $this->createLink('project', 'create', "projectID=$projectID&copyProjectID=&planID=$planID"), $url, 'parent', 'parent'));
}
else
{
+1 -1
View File
@@ -140,7 +140,7 @@ $lang->project->updateOrder = 'Order';
$lang->project->tree = 'Tree';
$lang->project->storyKanban = 'Story Kanban';
$lang->project->storySort = 'Sort Story';
$lang->project->importPlanStory = 'Import the stories with the plan?';
$lang->project->importPlanStory = 'Create ' . $lang->projectCommon . ' success!\nImport the stories with the plan?';
/* 分组浏览。*/
$lang->project->allTasks = 'All';
+1 -1
View File
@@ -140,7 +140,7 @@ $lang->project->updateOrder = '排序';
$lang->project->tree = '树状图';
$lang->project->storyKanban = '需求看板';
$lang->project->storySort = '需求排序';
$lang->project->importPlanStory = '是否导入计划关联的相关需求?';
$lang->project->importPlanStory = '创建' . $lang->projectCommon . '成功!\n是否导入计划关联的相关需求?';
/* 分组浏览。*/
$lang->project->allTasks = '所有';
+1 -1
View File
@@ -140,7 +140,7 @@ $lang->project->updateOrder = '排序';
$lang->project->tree = '樹狀圖';
$lang->project->storyKanban = '需求看板';
$lang->project->storySort = '需求排序';
$lang->project->importPlanStory = '是否導入計劃關聯的相關需求?';
$lang->project->importPlanStory = '創建' . $lang->projectCommon . '成功!\n是否導入計劃關聯的相關需求?';
/* 分組瀏覽。*/
$lang->project->allTasks = '所有';
+3 -2
View File
@@ -44,8 +44,9 @@ include '../../common/view/chosen.html.php';
#searchlite {line-height: 127px}
#searchform.showmore #searchmore, #searchform #searchlite {display: none;}
#searchform.showmore #searchlite, #searchform #searchmore {display: inline-block;}
#searchform .chosen-container .chosen-single{max-width: 170px;}
#searchform .chosen-container .chosen-drop{min-width: 400px;}
#searchform .chosen-container[id^="field"] .chosen-drop{min-width: 120px;}
#searchform [id^="valueBox"] .chosen-container .chosen-single{max-width: 170px;}
#searchform [id^="valueBox"] .chosen-container .chosen-drop{min-width: 400px;}
#searchform .chosen-container .chosen-drop ul.chosen-results li{white-space:normal}
#searchmore > i, #searchlite > i {font-size: 28px;}
#searchmore > i {position: relative; top: 4px;}
-1
View File
@@ -494,7 +494,6 @@ class storyModel extends model
if(!dao::isError())
{
$this->setStage($storyID);
if($story->product != $oldStory->product)
{
$this->dao->update(TABLE_PROJECTSTORY)->set('product')->eq($story->product)->where('story')->eq($storyID)->exec();
+1 -1
View File
@@ -40,7 +40,7 @@ if($this->story->checkForceReview()) unset($visibleFields['review']);
<tr class='text-center'>
<th class='w-30px'><?php echo $lang->idAB;?></th>
<th class='w-120px<?php echo zget($visibleFields, $product->type, ' hidden')?>'><?php echo $lang->product->branch;?></th>
<th class='w-p15<?php echo zget($visibleFields, 'module', ' hidden')?>'><?php echo $lang->story->module;?> <span class='required'></span></th>
<th class='w-p15'><?php echo $lang->story->module;?> <span class='required'></span></th>
<th class='w-p15<?php echo zget($visibleFields, 'plan', ' hidden')?>'><?php echo $lang->story->plan;?></th>
<th <?php if(count($visibleFields) >= 9) echo "class='w-150px'"?>><?php echo $lang->story->title;?> <span class='required'></span></th>
<th class='w-p15<?php echo zget($visibleFields, 'spec', ' hidden')?>'><?php echo $lang->story->spec;?></th>
+1 -1
View File
@@ -42,7 +42,7 @@ foreach(explode(',', $showFields) as $field)
<?php if($branchProduct):?>
<th class='w-150px<?php echo zget($visibleFields, 'branch', ' hidden')?>'><?php echo $lang->story->branch;?></th>
<?php endif;?>
<th class='w-150px<?php echo zget($visibleFields, 'module', ' hidden')?>'><?php echo $lang->story->module;?></th>
<th class='w-150px'><?php echo $lang->story->module;?></th>
<th class='w-150px<?php echo zget($visibleFields, 'plan', ' hidden')?>'><?php echo $lang->story->planAB;?></th>
<th class='w-150px'> <?php echo $lang->story->title;?> <span class='required'></span></th>
<th class='w-50px<?php echo zget($visibleFields, 'estimate', ' hidden')?>'> <?php echo $lang->story->estimateAB;?></th>
+2 -2
View File
@@ -113,14 +113,14 @@
$hasCustomPri = false;
foreach($lang->story->priList as $priKey => $priValue)
{
if($priKey != $priValue)
if($priKey != $priValue or strlen($priKey) != strlen($priValue))
{
$hasCustomPri = true;
break;
}
}
?>
<?php if(!$hasCustomPri):?>
<?php if($hasCustomPri):?>
<?php echo html::select('pri', (array)$lang->story->priList, $pri, "class='form-control minw-80px chosen'");?>
<?php else: ?>
<div class='input-group-btn dropdown-pris' data-set='0,1,2,3,4'>
+2 -1
View File
@@ -678,7 +678,7 @@ class taskModel extends model
if($this->post->left == 0)
{
$task->status = 'done';
$task->finishedBy = $oldTask->openedBy; // Fix bug#1341
$task->finishedBy = $this->app->user->account;
$task->finishedDate = helper::now();
$task->assignedTo = $oldTask->openedBy; // Fix bug#1341
}
@@ -1365,6 +1365,7 @@ class taskModel extends model
->leftjoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->leftjoin(TABLE_STORY)->alias('t3')->on('t1.story = t3.id')
->where('t1.deleted')->eq(0)
->beginIF($type == 'assignedTo')->andWhere('t1.status')->ne('closed')->fi()
->beginIF($type != 'all')->andWhere("t1.`$type`")->eq($account)->fi()
->orderBy($orderBy)
->beginIF($limit > 0)->limit($limit)->fi()
+1 -1
View File
@@ -90,7 +90,7 @@
$hasCustomPri = false;
foreach($lang->task->priList as $priKey => $priValue)
{
if($priKey != $priValue)
if($priKey != $priValue or strlen($priKey) != strlen($priValue))
{
$hasCustomPri = true;
break;
+1 -1
View File
@@ -101,7 +101,7 @@
$hasCustomPri = false;
foreach($lang->testcase->priList as $priKey => $priValue)
{
if($priKey != $priValue)
if($priKey != $priValue or strlen($priKey) != strlen($priValue))
{
$hasCustomPri = true;
break;
+7
View File
@@ -192,6 +192,13 @@ class testreport extends control
$stories = $this->story->getProjectStories($project->id);
$builds = $this->build->getProjectBuilds($project->id);
$useBuilds = array();
foreach($tasks as $task)
{
if(isset($builds[$task->build])) $useBuilds[$task->build] = $builds[$task->build];
}
$builds = $useBuilds;
$begin = $project->begin;
$end = $project->end;
$owner = current($owners);
+1 -1
View File
@@ -78,7 +78,7 @@
$hasCustomPri = false;
foreach($lang->testcase->priList as $priKey => $priValue)
{
if($priKey != $priValue)
if($priKey != $priValue or strlen($priKey) != strlen($priValue))
{
$hasCustomPri = true;
break;
+1 -1
View File
@@ -1278,7 +1278,7 @@ class testtaskModel extends model
/* Set email title. */
if($actionType == 'opened')
{
return sprintf($this->lang->testtask->mail->create->title, $this->app->user->realname, $testtask->id, $tasktask->name);
return sprintf($this->lang->testtask->mail->create->title, $this->app->user->realname, $testtask->id, $testtask->name);
}
elseif($actionType == 'closed')
{
+1
View File
@@ -131,3 +131,4 @@ $lang->upgrade->fromVersions['9_6_1'] = '9.6.1';
$lang->upgrade->fromVersions['9_6_2'] = '9.6.2';
$lang->upgrade->fromVersions['9_6_3'] = '9.6.3';
$lang->upgrade->fromVersions['9_7'] = '9.7';
$lang->upgrade->fromVersions['9_8'] = '9.8';
+1
View File
@@ -131,3 +131,4 @@ $lang->upgrade->fromVersions['9_6_1'] = '9.6.1';
$lang->upgrade->fromVersions['9_6_2'] = '9.6.2';
$lang->upgrade->fromVersions['9_6_3'] = '9.6.3';
$lang->upgrade->fromVersions['9_7'] = '9.7';
$lang->upgrade->fromVersions['9_8'] = '9.8';
+1
View File
@@ -131,3 +131,4 @@ $lang->upgrade->fromVersions['9_6_1'] = '9.6.1';
$lang->upgrade->fromVersions['9_6_2'] = '9.6.2';
$lang->upgrade->fromVersions['9_6_3'] = '9.6.3';
$lang->upgrade->fromVersions['9_7'] = '9.7';
$lang->upgrade->fromVersions['9_8'] = '9.8';
+27 -1
View File
@@ -205,7 +205,9 @@ class upgradeModel extends model
$this->execSQL($this->getUpgradeFile('9.7'));
$this->changeTeamFields();
$this->moveData2Notify();
}
case '9_8':
$this->fixFinishedBy();
}
$this->deletePatch();
}
@@ -308,6 +310,7 @@ class upgradeModel extends model
case '9_6_2':
case '9_6_3': $confirmContent .= file_get_contents($this->getUpgradeFile('9.6.3'));
case '9_7': $confirmContent .= file_get_contents($this->getUpgradeFile('9.7'));
case '9_8':
}
return str_replace('zt_', $this->config->db->prefix, $confirmContent);
}
@@ -2083,4 +2086,27 @@ class upgradeModel extends model
}
return true;
}
/**
* Fix task finishedBy.
*
* @access public
* @return bool
*/
public function fixFinishedBy()
{
$stmt = $this->dao->select('t1.id as historID,t2.objectType,t2.objectID,t2.actor')->from(TABLE_HISTORY)->alias('t1')
->leftJoin(TABLE_ACTION)->alias('t2')->on('t1.action=t2.id')
->where('t1.field')->eq('finishedBy')
->andWhere('t2.objectType')->eq('task')
->andWhere('t2.action')->eq('finished')
->andWhere('t2.actor != t1.`new`')
->query();
while($action = $stmt->fetch())
{
$this->dao->update(TABLE_HISTORY)->set('`new`')->eq($action->actor)->where('id')->eq($action->historID)->exec();
$this->dao->update(TABLE_TASK)->set('`finishedBy`')->eq($action->actor)->where('id')->eq($action->objectID)->exec();
}
return true;
}
}
+1 -1
View File
@@ -781,7 +781,7 @@ class user extends control
{
$demoUsers = 'productManager,projectManager,dev1,dev2,dev3,tester1,tester2,tester3,testManager';
if($this->app->getClientLang() == 'en') $demoUsers = 'thePO,pm1,pm2,pg1,pg2,pg3,thePM,qa1,theQS';
$demoUsers = $this->dao->select('account,password,realname')->from(TABLE_USER)->where('account')->in($demoUsers)->fetchAll('account');
$demoUsers = $this->dao->select('account,password,realname')->from(TABLE_USER)->where('account')->in($demoUsers)->andWhere('deleted')->eq(0)->fetchAll('account');
$this->view->demoUsers = $demoUsers;
}
+1 -1
View File
@@ -44,7 +44,7 @@ $lang->user->last = 'Last Login';
$lang->user->ranzhi = 'Zdoo Account';
$lang->user->ditto = 'Ditto';
$lang->user->originalPassword = 'Old Password';
$lang->user->verifyPassword = 'Enter your password';
$lang->user->verifyPassword = 'Admin password';
$lang->user->resetPassword = 'Forgot Password?';
$lang->user->index = "Home";
+1 -1
View File
@@ -40,7 +40,7 @@ if(isset($_GET['mode']) and $_GET['mode'] == 'getconfig') die(helper::removeUTF8
/* Check for need upgrade. */
$config->installedVersion = $common->loadModel('setting')->getVersion();
if(!(!is_numeric($config->version{0}) and $config->version{0} != $config->installedVersion{0}) and version_compare($config->version, $config->installedVersion, '>')) die(header('location: upgrade.php'));
if(((is_numeric($config->version{0}) and is_numeric($config->installedVersion{0})) or $config->version{0} == $config->installedVersion{0}) and version_compare($config->version, $config->installedVersion, '>')) die(header('location: upgrade.php'));
/* Remove install.php and upgrade.php. */
if(file_exists('install.php') or file_exists('upgrade.php'))