This commit is contained in:
Catouse
2016-05-05 16:07:45 +08:00
45 changed files with 309 additions and 125 deletions
+1 -1
View File
@@ -1 +1 @@
8.1.3
8.2.beta
+1 -1
View File
@@ -17,7 +17,7 @@ if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* Basic settings. */
$config = new config();
$config->version = '8.1.3'; // The version of zentaopms. Don't change it.
$config->version = '8.2.beta'; // The version of zentaopms. Don't change it.
$config->charset = 'UTF-8'; // The charset of zentaopms.
$config->cookieLife = time() + 2592000; // The cookie life time.
$config->timezone = 'Asia/Shanghai'; // The time zone setting, for more see http://www.php.net/manual/en/timezones.php
+105 -1
View File
@@ -14,7 +14,22 @@ CREATE TABLE IF NOT EXISTS `zt_action` (
PRIMARY KEY (`id`),
KEY `action` (`objectID`,`product`,`project`,`action`,`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_block`;
CREATE TABLE IF NOT EXISTS `zt_block` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`account` char(30) NOT NULL,
`module` varchar(20) NOT NULL,
`title` varchar(100) NOT NULL,
`source` varchar(20) NOT NULL,
`block` varchar(20) NOT NULL,
`params` text NOT NULL,
`order` tinyint(3) unsigned NOT NULL DEFAULT '0',
`grid` tinyint(3) unsigned NOT NULL DEFAULT '0',
`hidden` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `accountModuleOrder` (`account`,`module`,`order`),
KEY `block` (`account`,`module`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_branch`;
CREATE TABLE IF NOT EXISTS `zt_branch` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
@@ -48,6 +63,7 @@ CREATE TABLE IF NOT EXISTS `zt_bug` (
`found` varchar(30) NOT NULL default '',
`steps` text NOT NULL,
`status` enum('active','resolved','closed') NOT NULL default 'active',
`color` char(7) NOT NULL,
`confirmed` tinyint(1) NOT NULL default '0',
`activatedCount` smallint(6) NOT NULL,
`mailto` varchar(255) NOT NULL default '',
@@ -121,6 +137,7 @@ CREATE TABLE IF NOT EXISTS `zt_case` (
`scriptStatus` varchar(30) NOT NULL,
`scriptLocation` varchar(255) NOT NULL,
`status` char(30) NOT NULL default '1',
`color` char(7) NOT NULL,
`frequency` enum('1','2','3') NOT NULL default '1',
`order` tinyint(30) unsigned NOT NULL default '0',
`openedBy` char(30) NOT NULL default '',
@@ -353,6 +370,7 @@ CREATE TABLE IF NOT EXISTS `zt_module` (
`order` smallint(5) unsigned NOT NULL default '0',
`type` char(30) NOT NULL,
`owner` varchar(30) NOT NULL,
`short` varchar(30) NOT NULL,
PRIMARY KEY (`id`),
KEY `module` (`root`,`type`,`path`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -472,6 +490,7 @@ CREATE TABLE IF NOT EXISTS `zt_story` (
`pri` tinyint(3) unsigned NOT NULL default '3',
`estimate` float unsigned NOT NULL,
`status` enum('','changed','active','draft','closed') NOT NULL default '',
`color` char(7) NOT NULL,
`stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released') NOT NULL DEFAULT 'wait',
`mailto` varchar(255) NOT NULL default '',
`openedBy` varchar(30) NOT NULL default '',
@@ -526,6 +545,7 @@ CREATE TABLE IF NOT EXISTS `zt_task` (
`left` float unsigned NOT NULL,
`deadline` date NOT NULL,
`status` enum('wait','doing','done','pause','cancel','closed') NOT NULL default 'wait',
`color` char(7) NOT NULL,
`mailto` varchar(255) NOT NULL default '',
`desc` text NOT NULL,
`openedBy` varchar(30) NOT NULL,
@@ -700,6 +720,7 @@ CREATE TABLE IF NOT EXISTS `zt_usertpl` (
`type` char(30) NOT NULL,
`title` varchar(150) NOT NULL,
`content` text NOT NULL,
`public` enum('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `account` (`account`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
@@ -760,6 +781,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'bug', 'delete'),
(1, 'bug', 'deleteTemplate'),
(1, 'bug', 'edit'),
(1, 'bug', 'batchChangeModule'),
(1, 'bug', 'linkBugs'),
(1, 'bug', 'unlinkBug'),
(1, 'bug', 'export'),
@@ -875,6 +897,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'my', 'testTask'),
(1, 'my', 'todo'),
(1, 'my', 'unbind'),
(1, 'my', 'manageContacts'),
(1, 'my', 'deleteContacts'),
(1, 'product', 'batchEdit'),
(1, 'product', 'browse'),
(1, 'product', 'close'),
@@ -884,6 +908,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'product', 'dynamic'),
(1, 'product', 'edit'),
(1, 'product', 'index'),
(1, 'product', 'all'),
(1, 'product', 'order'),
(1, 'product', 'project'),
(1, 'product', 'roadmap'),
@@ -921,6 +946,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'project', 'importBug'),
(1, 'project', 'importtask'),
(1, 'project', 'index'),
(1, 'project', 'all'),
(1, 'project', 'linkStory'),
(1, 'project', 'manageMembers'),
(1, 'project', 'manageProducts'),
@@ -930,6 +956,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'project', 'story'),
(1, 'project', 'suspend'),
(1, 'project', 'task'),
(1, 'project', 'kanban'),
(1, 'project', 'tree'),
(1, 'project', 'team'),
(1, 'project', 'testtask'),
(1, 'project', 'unlinkMember'),
@@ -975,6 +1003,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'story', 'create'),
(1, 'story', 'delete'),
(1, 'story', 'edit'),
(1, 'story', 'batchChangeModule'),
(1, 'story', 'linkStory'),
(1, 'story', 'unlinkStory'),
(1, 'story', 'export'),
@@ -999,6 +1028,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'task', 'delete'),
(1, 'task', 'deleteEstimate'),
(1, 'task', 'edit'),
(1, 'task', 'batchChangeModule'),
(1, 'task', 'editEstimate'),
(1, 'task', 'export'),
(1, 'task', 'finish'),
@@ -1018,6 +1048,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'testcase', 'createBug'),
(1, 'testcase', 'delete'),
(1, 'testcase', 'edit'),
(1, 'testcase', 'batchChangeModule'),
(1, 'testcase', 'linkCases'),
(1, 'testcase', 'unlinkCase'),
(1, 'testcase', 'export'),
@@ -1096,6 +1127,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(2, 'bug', 'create'),
(2, 'bug', 'deleteTemplate'),
(2, 'bug', 'edit'),
(2, 'bug', 'batchChangeModule'),
(2, 'bug', 'linkBugs'),
(2, 'bug', 'unlinkBug'),
(2, 'bug', 'export'),
@@ -1136,10 +1168,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(2, 'my', 'task'),
(2, 'my', 'todo'),
(2, 'my', 'unbind'),
(2, 'my', 'manageContacts'),
(2, 'my', 'deleteContacts'),
(2, 'product', 'browse'),
(2, 'product', 'doc'),
(2, 'product', 'dynamic'),
(2, 'product', 'index'),
(2, 'product', 'all'),
(2, 'product', 'project'),
(2, 'product', 'roadmap'),
(2, 'product', 'view'),
@@ -1157,8 +1192,11 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(2, 'project', 'importBug'),
(2, 'project', 'importtask'),
(2, 'project', 'index'),
(2, 'project', 'all'),
(2, 'project', 'story'),
(2, 'project', 'task'),
(2, 'project', 'kanban'),
(2, 'project', 'tree'),
(2, 'project', 'team'),
(2, 'project', 'testtask'),
(2, 'project', 'view'),
@@ -1196,6 +1234,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(2, 'task', 'create'),
(2, 'task', 'deleteEstimate'),
(2, 'task', 'edit'),
(2, 'task', 'batchChangeModule'),
(2, 'task', 'editEstimate'),
(2, 'task', 'export'),
(2, 'task', 'finish'),
@@ -1256,6 +1295,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3, 'bug', 'create'),
(3, 'bug', 'deleteTemplate'),
(3, 'bug', 'edit'),
(3, 'bug', 'batchChangeModule'),
(3, 'bug', 'linkBugs'),
(3, 'bug', 'unlinkBug'),
(3, 'bug', 'export'),
@@ -1297,10 +1337,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3, 'my', 'testTask'),
(3, 'my', 'todo'),
(3, 'my', 'unbind'),
(3, 'my', 'manageContacts'),
(3, 'my', 'deleteContacts'),
(3, 'product', 'browse'),
(3, 'product', 'doc'),
(3, 'product', 'dynamic'),
(3, 'product', 'index'),
(3, 'product', 'all'),
(3, 'product', 'project'),
(3, 'product', 'roadmap'),
(3, 'product', 'view'),
@@ -1318,8 +1361,11 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3, 'project', 'importBug'),
(3, 'project', 'importtask'),
(3, 'project', 'index'),
(3, 'project', 'all'),
(3, 'project', 'story'),
(3, 'project', 'task'),
(3, 'project', 'kanban'),
(3, 'project', 'tree'),
(3, 'project', 'team'),
(3, 'project', 'testtask'),
(3, 'project', 'view'),
@@ -1358,6 +1404,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3, 'task', 'create'),
(3, 'task', 'deleteEstimate'),
(3, 'task', 'edit'),
(3, 'task', 'batchChangeModule'),
(3, 'task', 'editEstimate'),
(3, 'task', 'export'),
(3, 'task', 'finish'),
@@ -1375,6 +1422,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3, 'testcase', 'create'),
(3, 'testcase', 'createBug'),
(3, 'testcase', 'edit'),
(3, 'testcase', 'batchChangeModule'),
(3, 'testcase', 'linkCases'),
(3, 'testcase', 'unlinkCase'),
(3, 'testcase', 'export'),
@@ -1444,6 +1492,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4, 'bug', 'delete'),
(4, 'bug', 'deleteTemplate'),
(4, 'bug', 'edit'),
(4, 'bug', 'batchChangeModule'),
(4, 'bug', 'linkBugs'),
(4, 'bug', 'unlinkBug'),
(4, 'bug', 'export'),
@@ -1501,10 +1550,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4, 'my', 'testTask'),
(4, 'my', 'todo'),
(4, 'my', 'unbind'),
(4, 'my', 'manageContacts'),
(4, 'my', 'deleteContacts'),
(4, 'product', 'browse'),
(4, 'product', 'doc'),
(4, 'product', 'dynamic'),
(4, 'product', 'index'),
(4, 'product', 'all'),
(4, 'product', 'project'),
(4, 'product', 'roadmap'),
(4, 'product', 'view'),
@@ -1529,6 +1581,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4, 'project', 'importBug'),
(4, 'project', 'importtask'),
(4, 'project', 'index'),
(4, 'project', 'all'),
(4, 'project', 'linkStory'),
(4, 'project', 'manageMembers'),
(4, 'project', 'manageProducts'),
@@ -1538,6 +1591,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4, 'project', 'story'),
(4, 'project', 'suspend'),
(4, 'project', 'task'),
(4, 'project', 'kanban'),
(4, 'project', 'tree'),
(4, 'project', 'team'),
(4, 'project', 'testtask'),
(4, 'project', 'unlinkMember'),
@@ -1580,6 +1635,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4, 'task', 'delete'),
(4, 'task', 'deleteEstimate'),
(4, 'task', 'edit'),
(4, 'task', 'batchChangeModule'),
(4, 'task', 'editEstimate'),
(4, 'task', 'export'),
(4, 'task', 'finish'),
@@ -1655,6 +1711,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'bug', 'create'),
(5, 'bug', 'deleteTemplate'),
(5, 'bug', 'edit'),
(5, 'bug', 'batchChangeModule'),
(5, 'bug', 'linkBugs'),
(5, 'bug', 'unlinkBug'),
(5, 'bug', 'export'),
@@ -1703,6 +1760,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'my', 'testTask'),
(5, 'my', 'todo'),
(5, 'my', 'unbind'),
(5, 'my', 'manageContacts'),
(5, 'my', 'deleteContacts'),
(5, 'product', 'batchEdit'),
(5, 'product', 'browse'),
(5, 'product', 'close'),
@@ -1712,6 +1771,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'product', 'dynamic'),
(5, 'product', 'edit'),
(5, 'product', 'index'),
(5, 'product', 'all'),
(5, 'product', 'order'),
(5, 'product', 'project'),
(5, 'product', 'roadmap'),
@@ -1749,6 +1809,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'project', 'importBug'),
(5, 'project', 'importtask'),
(5, 'project', 'index'),
(5, 'project', 'all'),
(5, 'project', 'linkStory'),
(5, 'project', 'manageMembers'),
(5, 'project', 'manageProducts'),
@@ -1758,6 +1819,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'project', 'story'),
(5, 'project', 'suspend'),
(5, 'project', 'task'),
(5, 'project', 'kanban'),
(5, 'project', 'tree'),
(5, 'project', 'team'),
(5, 'project', 'testtask'),
(5, 'project', 'unlinkMember'),
@@ -1802,6 +1865,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'story', 'create'),
(5, 'story', 'delete'),
(5, 'story', 'edit'),
(5, 'story', 'batchChangeModule'),
(5, 'story', 'linkStory'),
(5, 'story', 'unlinkStory'),
(5, 'story', 'export'),
@@ -1884,6 +1948,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6, 'bug', 'delete'),
(6, 'bug', 'deleteTemplate'),
(6, 'bug', 'edit'),
(6, 'bug', 'batchChangeModule'),
(6, 'bug', 'linkBugs'),
(6, 'bug', 'unlinkBug'),
(6, 'bug', 'export'),
@@ -1941,10 +2006,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6, 'my', 'testTask'),
(6, 'my', 'todo'),
(6, 'my', 'unbind'),
(6, 'my', 'manageContacts'),
(6, 'my', 'deleteContacts'),
(6, 'product', 'browse'),
(6, 'product', 'doc'),
(6, 'product', 'dynamic'),
(6, 'product', 'index'),
(6, 'product', 'all'),
(6, 'product', 'project'),
(6, 'product', 'roadmap'),
(6, 'product', 'view'),
@@ -1969,6 +2037,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6, 'project', 'importBug'),
(6, 'project', 'importtask'),
(6, 'project', 'index'),
(6, 'project', 'all'),
(6, 'project', 'linkStory'),
(6, 'project', 'manageMembers'),
(6, 'project', 'manageProducts'),
@@ -1978,6 +2047,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6, 'project', 'story'),
(6, 'project', 'suspend'),
(6, 'project', 'task'),
(6, 'project', 'kanban'),
(6, 'project', 'tree'),
(6, 'project', 'team'),
(6, 'project', 'testtask'),
(6, 'project', 'unlinkMember'),
@@ -2020,6 +2091,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6, 'task', 'delete'),
(6, 'task', 'deleteEstimate'),
(6, 'task', 'edit'),
(6, 'task', 'batchChangeModule'),
(6, 'task', 'editEstimate'),
(6, 'task', 'export'),
(6, 'task', 'finish'),
@@ -2093,6 +2165,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'bug', 'delete'),
(7, 'bug', 'deleteTemplate'),
(7, 'bug', 'edit'),
(7, 'bug', 'batchChangeModule'),
(7, 'bug', 'linkBugs'),
(7, 'bug', 'unlinkBug'),
(7, 'bug', 'export'),
@@ -2141,6 +2214,8 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'my', 'testTask'),
(7, 'my', 'todo'),
(7, 'my', 'unbind'),
(7, 'my', 'manageContacts'),
(7, 'my', 'deleteContacts'),
(7, 'product', 'batchEdit'),
(7, 'product', 'browse'),
(7, 'product', 'close'),
@@ -2150,6 +2225,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'product', 'dynamic'),
(7, 'product', 'edit'),
(7, 'product', 'index'),
(7, 'product', 'all'),
(7, 'product', 'order'),
(7, 'product', 'project'),
(7, 'product', 'roadmap'),
@@ -2177,10 +2253,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'project', 'dynamic'),
(7, 'project', 'grouptask'),
(7, 'project', 'index'),
(7, 'project', 'all'),
(7, 'project', 'linkStory'),
(7, 'project', 'manageProducts'),
(7, 'project', 'story'),
(7, 'project', 'task'),
(7, 'project', 'kanban'),
(7, 'project', 'tree'),
(7, 'project', 'team'),
(7, 'project', 'testtask'),
(7, 'project', 'unlinkStory'),
@@ -2224,6 +2303,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'story', 'create'),
(7, 'story', 'delete'),
(7, 'story', 'edit'),
(7, 'story', 'batchChangeModule'),
(7, 'story', 'linkStory'),
(7, 'story', 'unlinkStory'),
(7, 'story', 'export'),
@@ -2306,6 +2386,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'bug', 'delete'),
(8, 'bug', 'deleteTemplate'),
(8, 'bug', 'edit'),
(8, 'bug', 'batchChangeModule'),
(8, 'bug', 'linkBugs'),
(8, 'bug', 'unlinkBug'),
(8, 'bug', 'export'),
@@ -2357,10 +2438,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'my', 'testTask'),
(8, 'my', 'todo'),
(8, 'my', 'unbind'),
(8, 'my', 'manageContacts'),
(8, 'my', 'deleteContacts'),
(8, 'product', 'browse'),
(8, 'product', 'doc'),
(8, 'product', 'dynamic'),
(8, 'product', 'index'),
(8, 'product', 'all'),
(8, 'product', 'project'),
(8, 'product', 'roadmap'),
(8, 'product', 'view'),
@@ -2376,8 +2460,11 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'project', 'importBug'),
(8, 'project', 'importtask'),
(8, 'project', 'index'),
(8, 'project', 'all'),
(8, 'project', 'story'),
(8, 'project', 'task'),
(8, 'project', 'kanban'),
(8, 'project', 'tree'),
(8, 'project', 'team'),
(8, 'project', 'testtask'),
(8, 'project', 'view'),
@@ -2417,6 +2504,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'task', 'delete'),
(8, 'task', 'deleteEstimate'),
(8, 'task', 'edit'),
(8, 'task', 'batchChangeModule'),
(8, 'task', 'editEstimate'),
(8, 'task', 'export'),
(8, 'task', 'finish'),
@@ -2436,6 +2524,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'testcase', 'createBug'),
(8, 'testcase', 'delete'),
(8, 'testcase', 'edit'),
(8, 'testcase', 'batchChangeModule'),
(8, 'testcase', 'linkCases'),
(8, 'testcase', 'unlinkCase'),
(8, 'testcase', 'export'),
@@ -2547,10 +2636,13 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(9, 'my', 'testTask'),
(9, 'my', 'todo'),
(9, 'my', 'unbind'),
(9, 'my', 'manageContacts'),
(9, 'my', 'deleteContacts'),
(9, 'product', 'browse'),
(9, 'product', 'doc'),
(9, 'product', 'dynamic'),
(9, 'product', 'index'),
(9, 'product', 'all'),
(9, 'product', 'project'),
(9, 'product', 'roadmap'),
(9, 'product', 'view'),
@@ -2566,8 +2658,11 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(9, 'project', 'dynamic'),
(9, 'project', 'grouptask'),
(9, 'project', 'index'),
(9, 'project', 'all'),
(9, 'project', 'story'),
(9, 'project', 'task'),
(9, 'project', 'kanban'),
(9, 'project', 'tree'),
(9, 'project', 'team'),
(9, 'project', 'view'),
(9, 'qa', 'index'),
@@ -2647,6 +2742,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(10, 'bug', 'close'),
(10, 'bug', 'create'),
(10, 'bug', 'edit'),
(10, 'bug', 'batchChangeModule'),
(10, 'bug', 'linkBugs'),
(10, 'bug', 'unlinkBug'),
(10, 'bug', 'index'),
@@ -2675,6 +2771,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(10, 'product', 'doc'),
(10, 'product', 'dynamic'),
(10, 'product', 'index'),
(10, 'product', 'all'),
(10, 'product', 'roadmap'),
(10, 'product', 'view'),
(10, 'productplan', 'browse'),
@@ -2687,8 +2784,11 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(10, 'project', 'dynamic'),
(10, 'project', 'grouptask'),
(10, 'project', 'index'),
(10, 'project', 'all'),
(10, 'project', 'story'),
(10, 'project', 'task'),
(10, 'project', 'kanban'),
(10, 'project', 'tree'),
(10, 'project', 'team'),
(10, 'project', 'testtask'),
(10, 'project', 'view'),
@@ -2754,6 +2854,7 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(11, 'product', 'doc'),
(11, 'product', 'dynamic'),
(11, 'product', 'index'),
(11, 'product', 'all'),
(11, 'product', 'roadmap'),
(11, 'product', 'view'),
(11, 'productplan', 'browse'),
@@ -2766,8 +2867,11 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(11, 'project', 'dynamic'),
(11, 'project', 'grouptask'),
(11, 'project', 'index'),
(11, 'project', 'all'),
(11, 'project', 'story'),
(11, 'project', 'task'),
(11, 'project', 'kanban'),
(11, 'project', 'tree'),
(11, 'project', 'team'),
(11, 'project', 'testtask'),
(11, 'project', 'view'),
-5
View File
@@ -42,7 +42,6 @@ $lang->admin->safe = new stdclass();
$lang->admin->safe->common = '安全';
$lang->admin->safe->set = '密碼安全設置';
$lang->admin->safe->password = '密碼安全';
$lang->admin->safe->md5Pwd = '密碼加密';
$lang->admin->safe->weak = '常用弱口令';
$lang->admin->safe->reason = '類型';
$lang->admin->safe->checkWeak = '弱口令掃瞄';
@@ -51,9 +50,6 @@ $lang->admin->safe->modeList[0] = '不檢查';
$lang->admin->safe->modeList[1] = '中';
$lang->admin->safe->modeList[2] = '強';
$lang->admin->safe->md5PwdList[0] = '不加密';
$lang->admin->safe->md5PwdList[1] = '加密';
$lang->admin->safe->reasonList['weak'] = '常用弱口令';
$lang->admin->safe->reasonList['account'] = '與賬號相同';
$lang->admin->safe->reasonList['mobile'] = '與手機相同';
@@ -61,5 +57,4 @@ $lang->admin->safe->reasonList['phone'] = '與電話相同';
$lang->admin->safe->reasonList['birthday'] = '與生日相同';
$lang->admin->safe->noticeMode = '系統會在登錄、創建和修改用戶、修改密碼的時候檢查用戶口令。';
$lang->admin->safe->noticeMd5Pwd = '系統會在登錄的時候,對密碼做加密後再提交。';
$lang->admin->safe->noticeStrong = '密碼長度越長,含有大寫字母或數字或特殊符合越多,密碼字母越不重複,安全度越強!';
-1
View File
@@ -31,7 +31,6 @@ $lang->block->createBlock = 'Add block';
$lang->block->editBlock = 'Edit block';
$lang->block->ordersSaved = 'Sort have been saved';
$lang->block->confirmRemoveBlock = 'Are you sure remove block [{0}] ?';
$lang->block->emptyMessage = 'Nothing here, custom it now!';
$lang->block->refresh = 'Refresh';
$lang->block->hidden = 'Hidden';
$lang->block->dynamicInfo = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>.";
+34 -26
View File
@@ -16,11 +16,12 @@ $lang->block->style = '外觀';
$lang->block->grid = '寬度';
$lang->block->color = '顏色';
$lang->block->lblModule = '模組';
$lang->block->lblBlock = '區塊';
$lang->block->lblNum = '條數';
$lang->block->lblHtml = 'HTML內容';
$lang->block->dynamic = '最新動態';
$lang->block->lblModule = '模組';
$lang->block->lblBlock = '區塊';
$lang->block->lblNum = '條數';
$lang->block->lblHtml = 'HTML內容';
$lang->block->dynamic = '最新動態';
$lang->block->lblFlowchart = '流程圖';
$lang->block->params = new stdclass();
$lang->block->params->name = '參數名稱';
@@ -30,11 +31,11 @@ $lang->block->createBlock = '添加區塊';
$lang->block->editBlock = '編輯區塊';
$lang->block->ordersSaved = '排序已保存';
$lang->block->confirmRemoveBlock = '確定移除區塊【{0}】嗎?';
$lang->block->emptyMessage = '這裡什麼也沒有。快來定製你的頁面!';
$lang->block->refresh = '刷新';
$lang->block->hidden = '隱藏';
$lang->block->dynamicInfo = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>。";
$lang->block->default['product']['1']['title'] = $lang->productCommon . '列表';
$lang->block->default['product']['1']['title'] = '未關閉的' . $lang->productCommon;
$lang->block->default['product']['1']['block'] = 'list';
$lang->block->default['product']['1']['grid'] = 8;
@@ -49,7 +50,7 @@ $lang->block->default['product']['2']['params']['num'] = 15;
$lang->block->default['product']['2']['params']['orderBy'] = 'id_desc';
$lang->block->default['product']['2']['params']['type'] = 'assignedTo';
$lang->block->default['project']['1']['title'] = $lang->projectCommon . '列表';
$lang->block->default['project']['1']['title'] = '進行中的' . $lang->projectCommon;
$lang->block->default['project']['1']['block'] = 'list';
$lang->block->default['project']['1']['grid'] = 8;
@@ -79,7 +80,7 @@ $lang->block->default['qa']['2']['grid'] = 4;
$lang->block->default['qa']['2']['params']['num'] = 15;
$lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc';
$lang->block->default['qa']['2']['params']['type'] = 'assignedTo';
$lang->block->default['qa']['2']['params']['type'] = 'assigntome';
$lang->block->default['qa']['3']['title'] = '待測版本列表';
$lang->block->default['qa']['3']['block'] = 'testtask';
@@ -89,23 +90,23 @@ $lang->block->default['qa']['3']['params']['num'] = 15;
$lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc';
$lang->block->default['qa']['3']['params']['type'] = 'wait';
$lang->block->default['my']['1'] = $lang->block->default['project']['1'];
$lang->block->default['my']['1']['source'] = 'project';
$lang->block->default['my']['1']['title'] = '流程圖';
$lang->block->default['my']['1']['block'] = 'flowchart';
$lang->block->default['my']['1']['grid'] = 8;
$lang->block->default['my']['1']['source'] = '';
$lang->block->default['my']['2']['title'] = '最新動態';
$lang->block->default['my']['2']['block'] = 'dynamic';
$lang->block->default['my']['2']['grid'] = 4;
$lang->block->default['my']['2']['source'] = '';
$lang->block->default['my']['3'] = $lang->block->default['product']['1'];
$lang->block->default['my']['3']['source'] = 'product';
$lang->block->default['my']['3'] = $lang->block->default['project']['1'];
$lang->block->default['my']['3']['source'] = 'project';
$lang->block->default['my']['4']['title'] = '我的待辦';
$lang->block->default['my']['4']['block'] = 'list';
$lang->block->default['my']['4']['grid'] = 4;
$lang->block->default['my']['4']['source'] = 'todo';
$lang->block->default['my']['4']['params']['num'] = '20';
$lang->block->default['my']['5']['title'] = '流程圖';
$lang->block->default['my']['5']['block'] = 'flowchart';
$lang->block->default['my']['5']['grid'] = 8;
$lang->block->default['my']['5']['source'] = '';
$lang->block->default['my']['5'] = $lang->block->default['product']['1'];
$lang->block->default['my']['5']['source'] = 'product';
$lang->block->default['my']['6'] = $lang->block->default['project']['2'];
$lang->block->default['my']['6']['source'] = 'project';
$lang->block->default['my']['7'] = $lang->block->default['qa']['1'];
@@ -121,13 +122,17 @@ $lang->block->orderBy = '排序';
$lang->block->availableBlocks = new stdclass();
$lang->block->availableBlocks->todo = '我的待辦';
$lang->block->availableBlocks->task = '我的任務';
$lang->block->availableBlocks->bug = '我的Bug';
$lang->block->availableBlocks->case = '我的用例';
$lang->block->availableBlocks->story = '我的需求';
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
$lang->block->availableBlocks->project = $lang->projectCommon . '列表';
$lang->block->availableBlocks->todo = '我的待辦';
$lang->block->availableBlocks->task = '我的任務';
$lang->block->availableBlocks->bug = '我的Bug';
$lang->block->availableBlocks->case = '我的用例';
$lang->block->availableBlocks->story = '我的需求';
$lang->block->availableBlocks->product = $lang->productCommon . '列表';
$lang->block->availableBlocks->project = $lang->projectCommon . '列表';
$lang->block->availableBlocks->plan = '計劃列表';
$lang->block->availableBlocks->release = '發佈列表';
$lang->block->availableBlocks->build = '版本列表';
$lang->block->availableBlocks->testtask = '測試版本列表';
$lang->block->moduleList['product'] = $lang->productCommon;
$lang->block->moduleList['project'] = $lang->projectCommon;
@@ -237,9 +242,12 @@ $lang->block->modules['qa']->moreLinkList->case = 'my|testcase|type=%s';
$lang->block->modules['qa']->moreLinkList->testtask = 'my|testtask|type=%s';
$lang->block->modules['todo']->moreLinkList = new stdclass();
$lang->block->modules['todo']->moreLinkList->list = 'my|todo|type=all';
$lang->block->modules['common'] = new stdclass();
$lang->block->modules['common']->moreLinkList = new stdclass();
$lang->block->modules['common']->moreLinkList->dynamic = 'company|dynamic|';
$lang->block->flowchart = array();
$lang->block->flowchart[] = array('管理員', '維護公司', '添加用戶', '維護權限');
$lang->block->flowchart = array();
$lang->block->flowchart[] = array('管理員', '維護公司', '添加用戶', '維護權限');
$lang->block->flowchart[] = array('產品經理', '創建產品', '維護模組', '維護計劃', '維護需求', '創建發佈');
$lang->block->flowchart[] = array('項目經理', '創建項目', '維護團隊', '關聯產品', '關聯需求', '分解任務');
$lang->block->flowchart[] = array('研發人員', '領取任務和Bug', '更新狀態', '完成任務和Bug');
+3 -3
View File
@@ -63,6 +63,7 @@ $lang->bug->lastEditedDateAB = '修改日期';
$lang->bug->lastEditedDate = '修改日期';
$lang->bug->fromCase = '來源用例';
$lang->bug->toCase = '生成用例';
$lang->bug->colorTag = '顏色標籤';
/* 方法列表。*/
$lang->bug->index = '首頁';
@@ -72,6 +73,7 @@ $lang->bug->confirmBug = '確認';
$lang->bug->batchConfirm = '批量確認';
$lang->bug->edit = '編輯';
$lang->bug->batchEdit = '批量編輯';
$lang->bug->batchChangeModule = '批量修改模組';
$lang->bug->batchClose = '批量關閉';
$lang->bug->assignTo = '指派';
$lang->bug->batchAssignTo = '批量指派';
@@ -86,11 +88,9 @@ $lang->bug->export = '導出數據';
$lang->bug->delete = '刪除';
$lang->bug->deleted = '已刪除';
$lang->bug->saveTemplate = '保存模板';
$lang->bug->setPublic = '設為公共模板';
$lang->bug->deleteTemplate = '刪除模板';
$lang->bug->confirmStoryChange = '確認需求變動';
$lang->bug->setPublic = '設為公共模板';
$lang->bug->colorTag = '顏色標籤';
$lang->bug->batchChangeModule = '批量修改模組';
/* 查詢條件列表。*/
$lang->bug->assignToMe = '指派給我';
+7 -7
View File
@@ -65,10 +65,10 @@ $lang->duplicate = '已有相同標題的%s';
$lang->ipLimited = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /></head><body>抱歉,管理員限制當前IP登錄,請聯繫管理員解除限制。</body></html>";
$lang->unfold = '+';
$lang->fold = '-';
$lang->hideNotCheck = '頁面隱藏取消選中欄位';
$lang->homepage = '設為主頁';
$lang->tutorial = '新手教程';
$lang->feature = '瞭解新功能';
$lang->changeLog = '修改日誌';
$lang->manual = '手冊';
$lang->customMenu = '自定義導航';
$lang->tutorialConfirm = '檢測到你尚未退出新手教程模式,是否現在退出?';
@@ -178,7 +178,6 @@ $lang->product = new stdclass();
$lang->product->menu = new stdclass();
$lang->product->menu->list = array('link' => '%s', 'fixed' => true);
$lang->product->menu->index = '首頁|product|index|locate=no';
$lang->product->menu->story = array('link' => '需求|product|browse|productID=%s', 'alias' => 'batchedit', 'subModule' => 'story');
$lang->product->menu->dynamic = '動態|product|dynamic|productID=%s';
$lang->product->menu->plan = array('link' => '計劃|productplan|browse|productID=%s', 'subModule' => 'productplan');
@@ -191,6 +190,7 @@ $lang->product->menu->view = array('link' => '概況|product|view|productID=%
$lang->product->menu->project = "{$lang->projectCommon}|product|project|status=all&productID=%s";
$lang->product->menu->create = array('link' => "<i class='icon-plus'></i>&nbsp;添加{$lang->productCommon}|product|create", 'float' => 'right');
$lang->product->menu->all = array('link' => "<i class='icon-cubes'></i>&nbsp;所有{$lang->productCommon}|product|all|productID=%s", 'float' => 'right');
$lang->product->menu->index = array('link' => "<i class='icon-home'></i>產品主頁|product|index|locate=no", 'float' => 'right');
$lang->story = new stdclass();
$lang->productplan = new stdclass();
@@ -207,7 +207,6 @@ $lang->project = new stdclass();
$lang->project->menu = new stdclass();
$lang->project->menu->list = array('link' => '%s', 'fixed' => true);
$lang->project->menu->index = '首頁|project|index|locate=no';
$lang->project->menu->task = array('link' => '任務|project|task|projectID=%s', 'subModule' => 'task,tree', 'alias' => 'grouptask,importtask,burn,importbug,kanban,printkanban,tree');
$lang->project->menu->story = array('link' => '需求|project|story|projectID=%s', 'subModule' => 'story', 'alias' => 'linkstory');
$lang->project->menu->bug = 'Bug|project|bug|projectID=%s';
@@ -220,6 +219,7 @@ $lang->project->menu->product = $lang->productCommon . '|project|manageproduct
$lang->project->menu->view = array('link' => '概況|project|view|projectID=%s', 'alias' => 'edit,start,suspend,putoff,close');
$lang->project->menu->create = array('link' => "<i class='icon-plus'></i>&nbsp;添加{$lang->projectCommon}|project|create", 'float' => 'right');
$lang->project->menu->all = array('link' => "<i class='icon-th-large'></i>&nbsp;所有{$lang->projectCommon}|project|all|status=undone&projectID=%s", 'float' => 'right');
$lang->project->menu->index = array('link' => "<i class='icon-home'></i>項目主頁|project|index|locate=no", 'float' => 'right');
$lang->task = new stdclass();
$lang->build = new stdclass();
@@ -231,28 +231,28 @@ $lang->qa = new stdclass();
$lang->qa->menu = new stdclass();
$lang->qa->menu->product = array('link' => '%s', 'fixed' => true);
$lang->qa->menu->index = '首頁|qa|index|locate=no&productID=%s';
$lang->qa->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->qa->menu->testcase = array('link' => '用例|testcase|browse|productID=%s');
$lang->qa->menu->testtask = array('link' => '版本|testtask|browse|productID=%s');
$lang->qa->menu->index = array('link' => "<i class='icon-home'></i>測試主頁|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->bug = new stdclass();
$lang->bug->menu = new stdclass();
$lang->bug->menu->product = array('link' => '%s', 'fixed' => true);
$lang->bug->menu->index = '首頁|qa|index|locate=no&productID=%s';
$lang->bug->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,confirmbug,assignto', 'subModule' => 'tree');
$lang->bug->menu->testcase = array('link' => '用例|testcase|browse|productID=%s');
$lang->bug->menu->testtask = array('link' => '版本|testtask|browse|productID=%s');
$lang->bug->menu->index = array('link' => "<i class='icon-home'></i>測試主頁|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->testcase = new stdclass();
$lang->testcase->menu = new stdclass();
$lang->testcase->menu->product = array('link' => '%s', 'fixed' => true);
$lang->testcase->menu->index = '首頁|qa|index|locate=no&productID=%s';
$lang->testcase->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->testcase->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase', 'subModule' => 'tree');
$lang->testcase->menu->testtask = array('link' => '版本|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase');
$lang->testcase->menu->index = array('link' => "<i class='icon-home'></i>測試主頁|qa|index|locate=no&productID=%s", 'float' => 'right');
$lang->testtask = new stdclass();
$lang->testtask->menu = $lang->testcase->menu;
+13 -11
View File
@@ -15,14 +15,14 @@
.panel > .datatable, .panel-body > .datatable {margin-bottom: 0;}
</style>
<script>
<?php $dtId = $this->moduleName . $this->methodName;?>
<?php $datatableId = $this->moduleName . ucfirst($this->methodName);?>
$(document).ready(function()
{
'use strict';
var $datatable = $('table.datatable').first();
var dtId = $datatable.attr('id');
var dtSetting = $.cookie('datatable.<?php echo $dtId?>' + '.cols') || {};
var $datatable = $('table.datatable').first();
var datatableId = $datatable.attr('id');
var dtSetting = $.cookie('datatable.<?php echo $datatableId?>' + '.cols') || {};
if(dtSetting === 'null') dtSetting = {};
if(typeof dtSetting === 'string') dtSetting = $.parseJSON(dtSetting);
var $modal = $('#customDatatable');
@@ -75,7 +75,7 @@ $(document).ready(function()
window.saveDatatableConfig = function(name, value, reload)
{
var datatableId = '<?php echo $dtId;?>';
var datatableId = '<?php echo $datatableId;?>';
if(typeof value === 'object') value = JSON.stringify(value);
if('<?php echo $this->app->user->account?>' == 'guest') return;
$.ajax(
@@ -101,17 +101,19 @@ $(document).ready(function()
function fixScroll()
{
var $scrollwrapper = $('div.datatable').first().find('.scroll-wrapper:first');
var $tfoot = $('div.datatable').first().find('table tfoot:last');
var $scrollOffset = $scrollwrapper.offset().top + $scrollwrapper.find('.scroll-slide').height();
if($tfoot.size() > 0) $scrollOffset += $tfoot.height();
if($('div.datatable.head-fixed').size() == 0) $scrollOffset -= '34';
if($scrollwrapper.size() == 0)return;
var $tfoot = $('div.datatable').first().find('table tfoot:last');
var scrollOffset = $scrollwrapper.offset().top + $scrollwrapper.find('.scroll-slide').height();
if($tfoot.size() > 0) scrollOffset += $tfoot.height();
if($('div.datatable.head-fixed').size() == 0) scrollOffset -= '34';
var windowH = $(window).height();
var bottom = $tfoot.hasClass('fixedTfootAction') ? 53 + $tfoot.height() : 53;
if($scrollOffset > windowH + $(window).scrollTop()) $scrollwrapper.css({'position': 'fixed', 'bottom': bottom + 'px'});
if(scrollOffset > windowH + $(window).scrollTop()) $scrollwrapper.css({'position': 'fixed', 'bottom': bottom + 'px'});
$(window).scroll(function()
{
newBottom = $tfoot.hasClass('fixedTfootAction') ? 53 + $tfoot.height() : 53;
if($scrollOffset <= windowH + $(window).scrollTop())
if(scrollOffset <= windowH + $(window).scrollTop())
{
$scrollwrapper.css({'position':'relative', 'bottom': '0px'});
}
+1 -1
View File
@@ -35,7 +35,7 @@ $clientTheme = $this->app->getClientTheme();
css::import($defaultTheme . $this->cookie->lang . '.' . $this->cookie->theme . '.css');
}
if(commonModel::isTutorialMode())
if(!defined('IN_INSTALL') and commonModel::isTutorialMode())
{
$wizardModule = defined('WIZARD_MODULE') ? WIZARD_MODULE : $this->moduleName;
$wizardMethod = defined('WIZARD_METHOD') ? WIZARD_METHOD : $this->methodName;
+8
View File
@@ -254,6 +254,14 @@ class custom extends control
{
$this->app->loadLang($module);
$this->loadModel('search')->mergeFeatureBar($module, $method);
/* Mark search query item. */
if(isset($this->lang->$module->featureBar[$method]))
{
foreach($this->lang->$module->featureBar[$method] as $barKey => $barValue)
{
if(strpos($barKey, 'QUERY') === 0)$this->lang->$module->featureBar[$method][$barKey] = "<i class='icon icon-search'></i> " . $barValue;
}
}
}
if($module !== 'main')
{
+4 -2
View File
@@ -68,7 +68,9 @@ $lang->custom->confirmRestore = '是否要恢復預設配置?';
$lang->custom->notice = new stdclass();
$lang->custom->notice->userRole = '鍵的長度必須小於20個字元!';
$lang->custom->notice->indexPage = "%s增加首頁頁面,是否設該頁面為主頁?";
$lang->custom->notice->indexPage['product'] = "從8.2版本起增加了產品主頁視圖,是否預設進入產品主頁?";
$lang->custom->notice->indexPage['project'] = "從8.2版本起增加了項目主頁視圖,是否預設進入項目主頁?";
$lang->custom->notice->indexPage['qa'] = "從8.2版本起增加了測試主頁視圖,是否預設進入測試主頁?";
$lang->custom->storyReview = '評審流程';
$lang->custom->reviewList[1] = '開啟';
@@ -81,5 +83,5 @@ $lang->custom->productProject->relation['1_1'] = '項目 - 迭代';
$lang->custom->productProject->notice = '請根據實際情況選擇適合自己團隊的概念。';
$lang->custom->menuTip = '點擊導航項目來切換顯示或隱藏,拖動導航項目來更改顯示順序。';
$lang->custom->menuTip = '點擊顯示或隱藏導航條目,拖拽來更改顯示順序。';
$lang->custom->saveFail = '保存失敗!';
+1 -1
View File
@@ -53,7 +53,7 @@ class datatable extends control
public function ajaxCustom($module, $method)
{
$account = $this->app->user->account;
$name = 'owner=' . $account . '&module=datatable&section=' . $module . $method . '&key=cols';
$name = 'owner=' . $account . '&module=datatable&section=' . $module . ucfirst($method) . '&key=cols';
if($module == 'testtask')
{
$this->loadModel('testcase');
+3 -3
View File
@@ -14,7 +14,7 @@ $lang->datatable->required = '必選';
$lang->datatable->branch = '分支';
$lang->datatable->platform = '平台';
$lang->datatable->showModule = '標題是否顯示模組';
$lang->datatable->showModule = '列表頁是否顯示模組名';
$lang->datatable->showModuleList[] = '不顯示';
$lang->datatable->showModuleList['base'] = '根節點';
$lang->datatable->showModuleList['end'] = '終極節點';
$lang->datatable->showModuleList['base'] = '只顯示一級模組';
$lang->datatable->showModuleList['end'] = '只顯示最後一級模組';
+1
View File
@@ -23,6 +23,7 @@ $lang->file->tplTitle = "Title";
$lang->file->setPublic = "Set public template";
$lang->file->exportFields = "To export fields";
$lang->file->defaultTPL = "Default template";
$lang->file->setExportTPL = "Setting";
$lang->file->errorNotExists = "<span class='red'>The directory '%s' is no exist</span>";
$lang->file->errorCanNotWrite = "<span class='red'>The directory '%s' is unwritable, please change it's permission. Command in linux:sudo -R chmod 777 '%s'</span>";
+2
View File
@@ -22,6 +22,8 @@ $lang->file->applyTemplate = "應用模板";
$lang->file->tplTitle = "模板名稱";
$lang->file->setPublic = "設置公共模板";
$lang->file->exportFields = "要導出欄位";
$lang->file->defaultTPL = "預設模板";
$lang->file->setExportTPL = "設置";
$lang->file->errorNotExists = "<span class='red'>檔案夾 '%s' 不存在</span>";
$lang->file->errorCanNotWrite = "<span class='red'>檔案夾 '%s' 不可寫,請改變檔案夾的權限。在linux中輸入指令:sudo chmod -R 777 '%s'</span>";
+20 -18
View File
@@ -118,8 +118,9 @@ $(document).ready(function()
<strong><?php echo $lang->export;?></strong>
</div>
</div>
<form class='form-condensed' method='post' target='hiddenwin' style='padding: 40px 5% 50px'>
<table class='w-p100'>
<?php $isCustomExport = (!empty($customExport) and !empty($allExportFields));?>
<form class='form-condensed' method='post' target='hiddenwin' style='padding: 40px 1% 50px'>
<table class='w-p100 table-fixed'>
<tr>
<td>
<div class='input-group'>
@@ -127,31 +128,31 @@ $(document).ready(function()
<?php echo html::input('fileName', '', 'class=form-control');?>
</div>
</td>
<td class='w-80px'>
<td class='w-60px'>
<?php echo html::select('fileType', $lang->exportFileTypeList, '', 'onchange=switchEncode(this.value) class="form-control"');?>
</td>
<td class='w-90px'>
<td class='w-80px'>
<?php echo html::select('encode', $config->charsets[$this->cookie->lang], 'utf-8', key($lang->exportFileTypeList) == 'csv' ? "class='form-control'" : "class='form-control'");?>
</td>
<td class='w-100px'>
<td class='w-90px'>
<?php echo html::select('exportType', $lang->exportTypeList, 'all', "class='form-control'");?>
</td>
<td><?php echo html::submitButton($lang->export, "onclick='setDownloading();' ");?></td>
</tr>
<?php if(!empty($customExport) and !empty($allExportFields)):?>
<tr>
<td colspan='5'>
<div class='input-group' style='width:100%'>
<span class='input-group-addon'><?php echo $lang->file->applyTemplate?></span>
<span id='tplBox'><?php echo $this->fetch('file', 'buildExportTPL', 'module=' . $this->moduleName);?></span>
<span class='input-group-btn'><button type='button' onclick='deleteTemplate()' class='btn'><?php echo $lang->delete?></button></span>
<span class='input-group-btn'><button type='button' onclick='setExportTPL()' class='btn'><?php echo $lang->file->setExportTPL?></button></span>
<?php if($isCustomExport):?>
<td class='w-110px' style='overflow:visible'>
<span id='tplBox'><?php echo $this->fetch('file', 'buildExportTPL', 'module=' . $this->moduleName);?></span>
</td>
<?php endif?>
<td style='width:<?php echo $isCustomExport ? '94px' : '50px'?>'>
<div class='input-group'>
<?php echo html::submitButton($lang->export, "onclick='setDownloading();' ");?>
<?php if($isCustomExport):?>
<button type='button' onclick='setExportTPL()' class='btn'><?php echo $lang->file->setExportTPL?></button>
<?php endif;?>
</div>
</td>
</tr>
<?php endif;?>
</table>
<?php if(!empty($customExport) and !empty($allExportFields)):?>
<?php if($isCustomExport):?>
<?php
$allExportFields = explode(',', $allExportFields);
$selectedFields = array();
@@ -166,7 +167,7 @@ $(document).ready(function()
}
?>
<div class='mb-150px' style='margin-bottom:150px'></div>
<div class='panel' id='customFields' style='margin-bottom:150px;display:none'>
<div class='panel' id='customFields' style='display:none'>
<div class='panel-heading'><strong><?php echo $lang->file->exportFields?></strong></div>
<div class='panel-body'>
<p><?php echo html::select('exportFields[]', $exportFieldPairs, $selectedFields, "class='form-control chosen' multiple")?></p>
@@ -178,6 +179,7 @@ $(document).ready(function()
<span class='input-group-addon'><?php echo html::checkbox('public', array(1 => $lang->public));?></span>
<?php endif?>
<span class='input-group-btn'><button id='saveTpl' type='button' onclick='saveTemplate()' class='btn btn-primary'><?php echo $lang->save?></button></span>
<span class='input-group-btn'><button type='button' onclick='deleteTemplate()' class='btn'><?php echo $lang->delete?></button></span>
</div>
</div>
</div>
+1
View File
@@ -46,6 +46,7 @@ $lang->group->copyOptions['copyPriv'] = 'Copy priviledge';
$lang->group->copyOptions['copyUser'] = 'Copy user';
$lang->group->versions[''] = 'History';
$lang->group->versions['8_2_beta'] = 'Zentao 8.2.beta';
$lang->group->versions['8_0_1'] = 'Zentao 8.0.1';
$lang->group->versions['8_0'] = 'Zentao 8.0';
$lang->group->versions['7_4_beta'] = 'Zentao 7.4.beta';
+2
View File
@@ -1166,3 +1166,5 @@ $lang->changelog['8.1.3'][] = 'my-deleteContacts';
$lang->changelog['8.2.beta'][] = 'product-all';
$lang->changelog['8.2.beta'][] = 'project-tree';
$lang->changelog['8.2.beta'][] = 'project-all';
$lang->changelog['8.2.beta'][] = 'project-kanban';
$lang->changelog['8.2.beta'][] = 'project-tree';
+1
View File
@@ -46,6 +46,7 @@ $lang->group->copyOptions['copyPriv'] = '复制权限';
$lang->group->copyOptions['copyUser'] = '复制用户';
$lang->group->versions[''] = '修改历史';
$lang->group->versions['8_2_beta'] = '禅道8.2.beta';
$lang->group->versions['8_0_1'] = '禅道8.0.1';
$lang->group->versions['8_0'] = '禅道8.0';
$lang->group->versions['7_4_beta'] = '禅道7.4.beta';
+1
View File
@@ -46,6 +46,7 @@ $lang->group->copyOptions['copyPriv'] = '複製權限';
$lang->group->copyOptions['copyUser'] = '複製用戶';
$lang->group->versions[''] = '修改歷史';
$lang->group->versions['8_2_beta'] = '禪道8.2.beta';
$lang->group->versions['8_0_1'] = '禪道8.0.1';
$lang->group->versions['8_0'] = '禪道8.0';
$lang->group->versions['7_4_beta'] = '禪道7.4.beta';
+7 -2
View File
@@ -65,5 +65,10 @@ $lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = 'Latest';
$lang->misc->feature->all = array();
$lang->misc->feature->all['latest'] = array();
$lang->misc->feature->all['latest'][] = array('title'=>'Customizable home page', 'desc' => '<p>You can add contents blocks to home page and determine how to display them.</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'Full customizable navigations', 'desc' => '<p>You can sort and hide items in navigations.</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'首页自定义', 'desc' => '<p>我的地盘由我做主。现在开始,你可以向首页添加多种多样的内容区块,而且还可以决定如何排列和显示他们。</p><p>我的地盘、产品、项目、测试模块下均支持首页自定义功能。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'导航定制', 'desc' => '<p>导航上显示的项目现在完全由你来决定,不仅仅可以决定在导航上展示哪些内容,还可以决定展示的顺序。</p><p>将鼠标悬浮在导航上稍后会在右侧显示定制按钮,点击打开定制对话框,通过点击切换是否显示,拖放操作来更改显示顺序。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'批量添加、编辑自定义', 'desc' => '<p>可以在批量添加和批量编辑页面自定义操作的字段。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'添加需求、任务、Bug、用例自定义', 'desc' => '<p>可以在添加需求、任务、Bug、用例页面,自定义部分字段是否显示。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'导出自定义', 'desc' => '<p>在导出需求、任务、Bug、用例的时候,用户可以自定义导出的字段,也可以保存模板方便每次导出。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'需求、任务、Bug、用例组合检索功能', 'desc' => '<p>在需求、任务、Bug、用例列表页面,可以实现模块和标签的组合检索。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'增加新手教程', 'desc' => '<p>增加新手教程,方便新用户了解禅道使用。</p>');
+5
View File
@@ -67,3 +67,8 @@ $lang->misc->feature->all = array();
$lang->misc->feature->all['latest'] = array();
$lang->misc->feature->all['latest'][] = array('title'=>'首页自定义', 'desc' => '<p>我的地盘由我做主。现在开始,你可以向首页添加多种多样的内容区块,而且还可以决定如何排列和显示他们。</p><p>我的地盘、产品、项目、测试模块下均支持首页自定义功能。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'导航定制', 'desc' => '<p>导航上显示的项目现在完全由你来决定,不仅仅可以决定在导航上展示哪些内容,还可以决定展示的顺序。</p><p>将鼠标悬浮在导航上稍后会在右侧显示定制按钮,点击打开定制对话框,通过点击切换是否显示,拖放操作来更改显示顺序。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'批量添加、编辑自定义', 'desc' => '<p>可以在批量添加和批量编辑页面自定义操作的字段。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'添加需求、任务、Bug、用例自定义', 'desc' => '<p>可以在添加需求、任务、Bug、用例页面,自定义部分字段是否显示。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'导出自定义', 'desc' => '<p>在导出需求、任务、Bug、用例的时候,用户可以自定义导出的字段,也可以保存模板方便每次导出。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'需求、任务、Bug、用例组合检索功能', 'desc' => '<p>在需求、任务、Bug、用例列表页面,可以实现模块和标签的组合检索。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'增加新手教程', 'desc' => '<p>增加新手教程,方便新用户了解禅道使用。</p>');
+9 -4
View File
@@ -62,8 +62,13 @@ $lang->misc->tableStatus = "狀態";
$lang->misc->novice = "您可能初次使用禪道,是否進入新手模式?";
$lang->misc->feature = new stdclass();
$lang->misc->feature->lastest = '最新版本';
$lang->misc->feature->all = array();
$lang->misc->feature->lastest = '最新版本';
$lang->misc->feature->all = array();
$lang->misc->feature->all['latest'] = array();
$lang->misc->feature->all['latest'][] = array('title'=>'可自定義內容的首頁', 'desc' => '<p>你的地盤由你做主。現在開始,你可以向首頁添加多種多樣的內容區塊,而且還可以決定如何排列和顯示他們。</p>', 'img' => '1.gif');
$lang->misc->feature->all['latest'][] = array('title'=>'完全定製所有導航內容', 'desc' => '<p>導航上顯示的項目現在完全由你來決定。將滑鼠懸浮在導航上稍後會在右側顯示定製按鈕,點擊打開定製對話框,通過點擊切換項目是否顯示,拖拽導航項目來更改顯示順序。</p>', 'img' => '2.gif');
$lang->misc->feature->all['latest'][] = array('title'=>'首頁自定義', 'desc' => '<p>我的地盤由我做主。現在開始,你可以向首頁添加多種多樣的內容區塊,而且還可以決定如何排列和顯示他們。</p><p>我的地盤、產品、項目、測試模組下均支持首頁自定義功能。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'導航定製', 'desc' => '<p>導航上顯示的項目現在完全由你來決定,不僅僅可以決定在導航上展示哪些內容,還可以決定展示的順序。</p><p>將滑鼠懸浮在導航上稍後會在右側顯示定製按鈕,點擊打開定製對話框,通過點擊切換是否顯示,拖放操作來更改顯示順序。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'批量添加、編輯自定義', 'desc' => '<p>可以在批量添加和批量編輯頁面自定義操作的欄位。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'添加需求、任務、Bug、用例自定義', 'desc' => '<p>可以在添加需求、任務、Bug、用例頁面,自定義部分欄位是否顯示。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'導出自定義', 'desc' => '<p>在導出需求、任務、Bug、用例的時候,用戶可以自定義導出的欄位,也可以保存模板方便每次導出。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'需求、任務、Bug、用例組合檢索功能', 'desc' => '<p>在需求、任務、Bug、用例列表頁面,可以實現模組和標籤的組合檢索。</p>');
$lang->misc->feature->all['latest'][] = array('title'=>'增加新手教程', 'desc' => '<p>增加新手教程,方便新用戶瞭解禪道使用。</p>');
+1 -1
View File
@@ -10,7 +10,7 @@ if(empty($features))
<div class='container mw-800px'>
<div id='titlebar'>
<div class='heading'>
<strong><?php echo $lang->feature ?></strong>
<strong><?php echo $lang->changeLog ?></strong>
</div>
</div>
<div class='dropdown' id='versionMenu'>
+1 -1
View File
@@ -22,7 +22,7 @@
if($period == 'before') $vars .= "&account={$app->user->account}&status=undone";
echo "<li id='$period'>" . html::a(inlink('todo', $vars), $label) . '</li>';
}
echo "<li id='byDate' class='datepicker-wrapper datepicker-date'>" . html::input('date', $date,"class='form-control form-date' onchange='changeDate(this.value)' autocomplete='off'") . '</li>';
echo "<li id='byDate'>" . html::input('date', $date,"class='form-control form-date' onchange='changeDate(this.value)' autocomplete='off'") . '</li>';
if(is_numeric($type))
{
+2 -2
View File
@@ -23,10 +23,10 @@
#projectTree .item-type-tasks > .tree-item-wrapper:hover {background-color: #f5f5f5}
#projectTree .task-pri {position: relative; top: -1px}
#projectTree .task-assignto {display: inline-block; margin-left: 10px; color: #808080}
#projectTree .task-info {float: right; display: none}
#projectTree .task-info {display: none;}
#projectTree .task-info > div {display: inline-block; margin: 0 5px;}
#projectTree .task-info > div.buttons {position: relative; top: 2px}
#projectTree .item-type-task:hover .task-info {display: block}
#projectTree .item-type-task:hover .task-info {display: inline-block; margin-left:10px;}
.tree-view-btn {min-width: 36px;}
.main > .panel > .panel-heading > .panel-actions {margin-top: -8px; margin-right: -12px;}
+2 -3
View File
@@ -124,7 +124,6 @@ $lang->project->importTask = 'Transfer task';
$lang->project->importBug = 'Import bug';
$lang->project->updateOrder = 'Order';
$lang->project->tree = 'Tree';
$lang->project->list = 'List';
/* Browse. */
$lang->project->allTasks = 'All';
@@ -153,10 +152,10 @@ $lang->project->groupFilter['pri']['all'] = $lang->project->all;
$lang->project->groupFilter['pri']['setted'] = 'Setted';
$lang->project->groupFilter['assignedTo']['undone'] = 'Undone';
$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all;
$lang->project->groupFilter['finishedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['finishedBy']['done'] = 'Done';
$lang->project->groupFilter['closedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['finishedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['closedBy']['closed'] = 'Closed';
$lang->project->groupFilter['closedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['deadline']['all'] = $lang->project->all;
$lang->project->groupFilter['deadline']['setted'] = '已设置';
+1 -2
View File
@@ -123,8 +123,7 @@ $lang->project->batchUnlinkStory = '批量移除需求';
$lang->project->importTask = '转入任务';
$lang->project->importBug = '导入Bug';
$lang->project->updateOrder = '排序';
$lang->project->tree = '树视图';
$lang->project->list = '列表';
$lang->project->tree = '树状图';
/* 分组浏览。*/
$lang->project->allTasks = '所有';
+11 -12
View File
@@ -123,8 +123,7 @@ $lang->project->batchUnlinkStory = '批量移除需求';
$lang->project->importTask = '轉入任務';
$lang->project->importBug = '導入Bug';
$lang->project->updateOrder = '排序';
$lang->project->tree = '樹視圖';
$lang->project->list = '列表';
$lang->project->tree = '樹狀圖';
/* 分組瀏覽。*/
$lang->project->allTasks = '所有';
@@ -148,15 +147,15 @@ $lang->project->groups['type'] = '類型分組';
$lang->project->groups['deadline'] = '截止分組';
$lang->project->groupFilter['story']['all'] = $lang->project->all;
$lang->project->groupFilter['story']['linked'] = '關聯需求的任務';
$lang->project->groupFilter['story']['linked'] = '已關聯需求的任務';
$lang->project->groupFilter['pri']['all'] = $lang->project->all;
$lang->project->groupFilter['pri']['setted'] = '已設置';
$lang->project->groupFilter['assignedTo']['undone'] = '未完成';
$lang->project->groupFilter['assignedTo']['all'] = $lang->project->all;
$lang->project->groupFilter['finishedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['finishedBy']['done'] = '已完成';
$lang->project->groupFilter['closedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['finishedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['closedBy']['closed'] = '已關閉';
$lang->project->groupFilter['closedBy']['all'] = $lang->project->all;
$lang->project->groupFilter['deadline']['all'] = $lang->project->all;
$lang->project->groupFilter['deadline']['setted'] = '已設置';
@@ -171,16 +170,18 @@ $lang->project->aboveAllProject = "以上所有{$lang->projectCommon}";
$lang->project->selectProject = "請選擇{$lang->projectCommon}";
$lang->project->beginAndEnd = '起止時間';
$lang->project->lblStats = '工時統計';
$lang->project->workHours = '7.0';
$lang->project->stats = '可用工時<strong>%s</strong>工時<br />總共預計<strong>%s</strong>工時<br />已經消耗<strong>%s</strong>工時<br />預計剩餘<strong>%s</strong>工時';
$lang->project->taskSummary = "本頁共 <strong>%s</strong> 個任務,未開始<strong>%s</strong>,進行中<strong>%s</strong>,總預計<strong>%s</strong>工時,已消耗<strong>%s</strong>工時,剩餘<strong>%s</strong>工時。";
$lang->project->taskSummary = "本頁共 <strong>%s</strong> 個任務,未開始 <strong>%s</strong>,進行中 <strong>%s</strong>,總預計<strong>%s</strong>工時,已消耗<strong>%s</strong>工時,剩餘<strong>%s</strong>工時。";
$lang->project->memberHours = "%s共有 <strong>%s</strong> 個可用工時,";
$lang->project->groupSummary = "本組共 <strong>%s</strong> 個任務,未開始<strong>%s</strong>,進行中<strong>%s</strong>,總預計<strong>%s</strong>工時,已消耗<strong>%s</strong>工時,剩餘<strong>%s</strong>工時。";
$lang->project->noTimeSummary = "本組共 <strong>%s</strong> 個任務,未開始<strong>%s</strong>,進行中<strong>%s</strong>";
$lang->project->groupSummary = "本組共 <strong>%s</strong> 個任務,未開始 <strong>%s</strong>,進行中 <strong>%s</strong>,總預計<strong>%s</strong>工時,已消耗<strong>%s</strong>工時,剩餘<strong>%s</strong>工時。";
$lang->project->noTimeSummary = "本組共 <strong>%s</strong> 個任務,未開始 <strong>%s</strong>,進行中 <strong>%s</strong>";
$lang->project->wbs = "分解任務";
$lang->project->batchWBS = "批量分解";
$lang->project->howToUpdateBurn = "<a href='http://api.zentao.net/goto.php?item=burndown&lang=zh-tw' target='_blank' title='如何更新燃盡圖?' class='btn btn-sm'>幫助</a>";
$lang->project->whyNoStories = "看起來沒有需求可以關聯。請檢查下{$lang->projectCommon}關聯的{$lang->productCommon}中有沒有需求,而且要確保它們已經審核通過。";
$lang->project->doneProjects = '已結束';
$lang->project->selectDept = '請選擇部門';
$lang->project->copyTeam = '複製團隊';
$lang->project->copyFromTeam = "複製自{$lang->projectCommon}團隊: <strong>%s</strong>";
$lang->project->noMatched = "找不到包含'%s'的$lang->projectCommon";
@@ -257,7 +258,5 @@ $lang->project->featureBar['task']['needconfirm'] = '需求變動';
$lang->project->featureBar['task']['status'] = $lang->project->statusSelects[''];
$lang->project->treeLevel = array();
$lang->project->treeLevel['product'] = array('icon' => 'icon-cube', 'text' => '產品視圖');
$lang->project->treeLevel['module'] = array('icon' => 'icon-bookmark-empty', 'text' => '模組視圖');
$lang->project->treeLevel['story'] = array('icon' => 'icon-lightbulb', 'text' => '需求視圖');
$lang->project->treeLevel['task'] = array('icon' => 'icon-tasks', 'text' => '任務視圖');
$lang->project->treeLevel['story'] = '顯示需求';
$lang->project->treeLevel['task'] = '顯示任務';
+1
View File
@@ -23,6 +23,7 @@ $lang->search->setQueryTitle = 'Please input the title(execute searching befor
$lang->search->select = 'Stories/Tasks filter';
$lang->search->me = 'Me';
$lang->search->noQuery = 'Save no query!';
$lang->search->onMenuBar = 'Show on menu bar';
$lang->search->operators['='] = '=';
$lang->search->operators['!='] = '!=';
+1 -3
View File
@@ -22,10 +22,8 @@ $lang->search->deleteQuery = '刪除查詢';
$lang->search->setQueryTitle = '請輸入查詢標題(保存之前請先查詢):';
$lang->search->select = '需求/任務篩選';
$lang->search->me = '自己';
$lang->search->shortcut = '快捷';
$lang->search->noQuery = '還沒有保存查詢!';
$lang->search->noticeShortcut = '設置快捷訪問,可以將保存的查詢固定到列表導航,方便查看!';
$lang->search->onMenuBar = '顯示在菜單欄';
$lang->search->operators['='] = '=';
$lang->search->operators['!='] = '!=';
+3
View File
@@ -93,6 +93,9 @@ $lang->task->ditto = 'Ditto';
$lang->task->dittoNotice = "Current task and task above it do not belong to same project!";
$lang->task->selectAllUser = 'All';
$lang->task->noStory = 'No Story';
$lang->task->noAssigned = 'No assigned';
$lang->task->noFinished = 'No finished';
$lang->task->noClosed = 'No closed';
$lang->task->statusList[''] = '';
$lang->task->statusList['wait'] = 'Pending';
+5 -1
View File
@@ -13,6 +13,7 @@ $lang->task->index = "任務一覽";
$lang->task->create = "建任務";
$lang->task->batchCreate = "批量添加";
$lang->task->batchEdit = "批量編輯";
$lang->task->batchChangeModule = "批量修改模組";
$lang->task->edit = "編輯";
$lang->task->delete = "刪除";
$lang->task->deleted = "已刪除";
@@ -31,7 +32,6 @@ $lang->task->export = "導出數據";
$lang->task->reportChart = "報表統計";
$lang->task->fromBug = '來源Bug';
$lang->task->confirmStoryChange = "確認需求變動";
$lang->task->batchChangeModule = "批量修改模組";
$lang->task->common = '任務';
$lang->task->id = '編號';
@@ -92,6 +92,10 @@ $lang->task->files = '附件';
$lang->task->ditto = '同上';
$lang->task->dittoNotice = "該任務與上一任務不屬於同一項目!";
$lang->task->selectAllUser = '全部';
$lang->task->noStory = '無需求';
$lang->task->noAssigned = '未指派';
$lang->task->noFinished = '未完成';
$lang->task->noClosed = '未關閉';
$lang->task->statusList[''] = '';
$lang->task->statusList['wait'] = '未開始';
+2 -2
View File
@@ -38,6 +38,7 @@ $lang->testcase->version = '用例版本';
$lang->testcase->lastRunner = '執行人';
$lang->testcase->lastRunDate = '執行時間';
$lang->testcase->assignedTo = '指派給';
$lang->testcase->colorTag = '顏色標籤';
$lang->testcase->lastRunResult = '結果';
$lang->testcase->allProduct = "所有{$lang->productCommon}";
$lang->testcase->fromBug = '來源Bug';
@@ -58,6 +59,7 @@ $lang->testcase->delete = "刪除用例";
$lang->testcase->view = "用例詳情";
$lang->testcase->edit = "編輯";
$lang->testcase->batchEdit = "批量編輯 ";
$lang->testcase->batchChangeModule = "批量修改模組";
$lang->testcase->delete = "刪除";
$lang->testcase->batchDelete = "批量刪除 ";
$lang->testcase->browse = "用例列表";
@@ -68,8 +70,6 @@ $lang->testcase->exportTemplet = "導出模板";
$lang->testcase->export = "導出數據";
$lang->testcase->confirmChange = '確認用例變動';
$lang->testcase->confirmStoryChange = '確認需求變動';
$lang->testcase->colorTag = '顏色標籤';
$lang->testcase->batchChangeModule = "批量修改模組";
$lang->testcase->new = '新增';
+1 -1
View File
@@ -2,7 +2,7 @@
<div id='featurebar'>
<ul class='nav'>
<li>
<div class='label-angle<?php if($moduleID) echo ' with-close';?>'>
<div class='label-angle<?php if(!empty($moduleID)) echo ' with-close';?>'>
<?php
echo isset($moduleID) ? $moduleName : $this->lang->tree->all;
if(!empty($moduleID))
+5 -5
View File
@@ -4,17 +4,17 @@
</div>
<div class='nav'>
<li>
<span>
<div class='label-angle <?php echo !empty($moduleID) ? 'with-close' : ''?>'>
<?php
$this->app->loadLang('tree');
echo isset($moduleID) ? $moduleName : $this->lang->tree->all;
if(!empty($moduleID))
{
$removeLink = $browseType == 'bymodule' ? inlink('cases', "taskID=$taskID&browseType=$browseType&param=0&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}") : 'javascript:removeCookieByKey("caseModule")';
echo '&nbsp;' . html::a($removeLink, "<i class='icon icon-remove'></i>", '', "class='text-muted'") . '&nbsp;';
$removeLink = $browseType == 'bymodule' ? inlink('cases', "taskID=$taskID&browseType=$browseType&param=0&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}") : 'javascript:removeCookieByKey("taskCaseModule")';
echo html::a($removeLink, "<span class='close'>&times;</span>", '', "class='text-muted'");
}
echo " <i class='icon-angle-right'></i>&nbsp; ";
?>
</span>
</div>
</li>
<?php
$hasCasesPriv = common::hasPriv('testtask', 'cases');
+1
View File
@@ -108,6 +108,7 @@ class tutorial extends control
$target = 'parent';
if(($module == 'story' or $module == 'task' or $module == 'bug') and $method == 'create') $target = 'self';
if($module == 'project' and $method == 'linkStory') $target = 'self';
if($module == 'project' and $method == 'managemembers') $target = 'self';
die(js::locate(helper::createLink('tutorial', 'wizard', "module=$module&method=$method&params=" . helper::safe64Encode($params)), $target));
}
die($this->fetch($module, $method, $params));
+7 -1
View File
@@ -14,7 +14,7 @@ $lang->tutorial = new stdclass();
$lang->tutorial->common = '新手教程';
$lang->tutorial->desc = '通過完成一系列任務,快速瞭解禪道的基本使用方法。這可能會花費您10分鐘,你可以隨時退出任務。';
$lang->tutorial->start = '立即開始';
$lang->tutorial->exit = '退出任務';
$lang->tutorial->exit = '退出教程';
$lang->tutorial->congratulation = '恭喜,你已完成了所有任務!';
$lang->tutorial->restart = '重新開始';
$lang->tutorial->currentTask = '當前任務';
@@ -29,6 +29,8 @@ $lang->tutorial->targetPageTip = '按此指示打開【%s】頁面';
$lang->tutorial->requiredTip = '【%s】為必填項';
$lang->tutorial->congratulateTask = '恭喜,你完成了任務 【<span class="task-name-current"></span>】!';
$lang->tutorial->serverErrorTip = '發生了一些錯誤。';
$lang->tutorial->ajaxSetError = '必須指定已完成的任務,如果要重置任務,請設置值為空。';
$lang->tutorial->novice = "您可能初次使用禪道,是否進入新手教程";
$lang->tutorial->tasks = array();
@@ -48,6 +50,10 @@ $lang->tutorial->tasks['createProject'] = array('title' => '創建項目
$lang->tutorial->tasks['createProject']['nav'] = array('module' => 'project', 'method' => 'create', 'menu' => 'create', 'form' => '#dataform', 'submit' => '#submit', 'targetPageName' => '添加項目');
$lang->tutorial->tasks['createProject']['desc'] = "<p>在系統創建一個新的項目:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 項目 <i class='icon icon-angle-right'></i> 添加項目</span> 頁面;</li><li data-target='form'>在表單中填寫要創建的項目信息;</li><li data-target='submit'>保存項目信息。</li></ul>";
$lang->tutorial->tasks['manageTeam'] = array('title' => '管理團隊');
$lang->tutorial->tasks['manageTeam']['nav'] = array('module' => 'project', 'method' => 'managemembers', 'menu' => 'team', 'target' => '.manage-team-btn', 'form' => '#teamForm', 'requiredFields' => 'account1', 'submit' => '#submit', 'targetPageName' => '團隊管理');
$lang->tutorial->tasks['manageTeam']['desc'] = "<p>管理項目團隊成員:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 項目 <i class='icon icon-angle-right'></i> 團隊 <i class='icon icon-angle-right'></i> 團隊管理</span> 頁面;</li><li data-target='form'>選擇要加入團隊的成員;</li><li data-target='submit'>保存團隊成員信息。</li></ul>";
$lang->tutorial->tasks['linkStory'] = array('title' => '關聯需求');
$lang->tutorial->tasks['linkStory']['nav'] = array('module' => 'project', 'method' => 'linkStory', 'menu' => 'story', 'target' => '.link-story-btn', 'form' => '#linkStoryForm', 'formType' => 'table', 'submit' => '#submit', 'targetPageName' => '關聯需求');
$lang->tutorial->tasks['linkStory']['desc'] = "<p>將需求關聯到項目:</p><ul><li data-target='nav'>打開 <span class='task-nav'> 項目 <i class='icon icon-angle-right'></i> 需求 <i class='icon icon-angle-right'></i> 關聯需求</span> 頁面;</li><li data-target='form'>在需求列表中勾選要關聯的需求;</li><li data-target='submit'>保存關聯的需求信息。</li></ul>";
+17 -2
View File
@@ -192,6 +192,12 @@ class tutorialModel extends model
return array($story->id => $story->title);
}
/**
* Get tutorial team members.
*
* @access public
* @return array
*/
public function getTeamMembers()
{
$member = new stdclass();
@@ -206,10 +212,19 @@ class tutorialModel extends model
return array($member->account => $member);
}
/**
* Get tutorial user pairs.
*
* @access public
* @return void
*/
public function getUserPairs()
{
$users[$this->app->user->account] = $this->app->user->account;
$users['test'] = 'Test';
$account = $this->app->user->account;
$users[''] = '';
$users[$account] = $account;
$users['test'] = 'Test';
return $users;
}
}
+1
View File
@@ -99,3 +99,4 @@ $lang->upgrade->fromVersions['7_4_beta'] = '7.4.beta';
$lang->upgrade->fromVersions['8_0'] = '8.0';
$lang->upgrade->fromVersions['8_0_1'] = '8.0.1';
$lang->upgrade->fromVersions['8_1'] = '8.1';
$lang->upgrade->fromVersions['8_1_3'] = '8.1.3';
+1
View File
@@ -99,3 +99,4 @@ $lang->upgrade->fromVersions['7_4_beta'] = '7.4.beta';
$lang->upgrade->fromVersions['8_0'] = '8.0';
$lang->upgrade->fromVersions['8_0_1'] = '8.0.1';
$lang->upgrade->fromVersions['8_1'] = '8.1';
$lang->upgrade->fromVersions['8_1_3'] = '8.1.3';
+1
View File
@@ -99,3 +99,4 @@ $lang->upgrade->fromVersions['7_4_beta'] = '7.4.beta';
$lang->upgrade->fromVersions['8_0'] = '8.0';
$lang->upgrade->fromVersions['8_0_1'] = '8.0.1';
$lang->upgrade->fromVersions['8_1'] = '8.1';
$lang->upgrade->fromVersions['8_1_3'] = '8.1.3';
+7 -2
View File
@@ -215,6 +215,7 @@ class upgradeModel extends model
case '8_0':
case '8_0_1': $confirmContent .= file_get_contents($this->getUpgradeFile('8.0.1'));
case '8_1': $confirmContent .= file_get_contents($this->getUpgradeFile('8.1'));
case '8_1_3': $confirmContent .= file_get_contents($this->getUpgradeFile('8.1.3'));
}
return str_replace('zt_', $this->config->db->prefix, $confirmContent);
}
@@ -855,9 +856,13 @@ class upgradeModel extends model
$groups = $this->dao->select('`group`')->from($privTable)->where('`module`')->eq('project')->andWhere('`method`')->eq('index')->fetchPairs('group', 'group');
foreach($groups as $group) $this->dao->replace($privTable)->set('module')->eq('project')->set('method')->eq('all')->set('`group`')->eq($group)->exec();
/* Add kanban priv. */
/* Add kanban and tree priv. */
$groups = $this->dao->select('`group`')->from($privTable)->where('`module`')->eq('project')->andWhere('`method`')->eq('task')->fetchPairs('group', 'group');
foreach($groups as $group) $this->dao->replace($privTable)->set('module')->eq('project')->set('method')->eq('kanban')->set('`group`')->eq($group)->exec();
foreach($groups as $group)
{
$this->dao->replace($privTable)->set('module')->eq('project')->set('method')->eq('kanban')->set('`group`')->eq($group)->exec();
$this->dao->replace($privTable)->set('module')->eq('project')->set('method')->eq('tree')->set('`group`')->eq($group)->exec();
}
/* Change manageContacts priv. */
$groups = $this->dao->select('`group`')->from($privTable)->where('`module`')->eq('user')->andWhere('`method`')->eq('manageContacts')->fetchPairs('group', 'group');
+8
View File
@@ -21,8 +21,10 @@ $whiteList[] = 'admin-setflow';
$whiteList[] = 'bug-buildtemplates';
$whiteList[] = 'bug-sendmail';
$whiteList[] = 'board-managechild';
$whiteList[] = 'custom-menu';
$whiteList[] = 'company-create';
$whiteList[] = 'company-delete';
$whiteList[] = 'file-buildexporttpl';
$whiteList[] = 'file-buildform';
$whiteList[] = 'file-printfiles';
$whiteList[] = 'file-export2csv';
@@ -68,6 +70,12 @@ $whiteList[] = 'sso-binduser';
$whiteList[] = 'sso-createuser';
$whiteList[] = 'mail-asyncsend';
$whiteList[] = 'user-reset';
$whiteList[] = 'product-showerrornone';
$whiteList[] = 'tutorial-start';
$whiteList[] = 'tutorial-index';
$whiteList[] = 'tutorial-quit';
$whiteList[] = 'tutorial-wizard';
$whiteList[] = 'my-buildcontactlists';
/* checking actions of every module. */
echo '-------------action checking-----------------' . "\n";