* change for 9.8.1 version.
This commit is contained in:
+5
-5
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;?>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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%}
|
||||
|
||||
@@ -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>.
|
||||
|
||||
@@ -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 = '看看最新的版本';
|
||||
|
||||
@@ -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 = '資料庫伺服器';
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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'> " . $lang->install->or . ' </span>';
|
||||
echo html::a('index.php', $lang->install->login, '', "class='btn btn-primary'");
|
||||
?>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 . '©ProjectID=&planID=' . $planID, $url, 'parent', 'parent'));
|
||||
die(js::confirm($this->lang->project->importPlanStory, $this->createLink('project', 'create', "projectID=$projectID©ProjectID=&planID=$planID"), $url, 'parent', 'parent'));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 = '所有';
|
||||
|
||||
@@ -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 = '所有';
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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')
|
||||
{
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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'))
|
||||
|
||||
Reference in New Issue
Block a user