Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
+1
-1
@@ -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
@@ -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'),
|
||||
|
||||
@@ -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 = '密碼長度越長,含有大寫字母或數字或特殊符合越多,密碼字母越不重複,安全度越強!';
|
||||
|
||||
@@ -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
@@ -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');
|
||||
|
||||
@@ -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 = '指派給我';
|
||||
|
||||
@@ -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> 添加{$lang->productCommon}|product|create", 'float' => 'right');
|
||||
$lang->product->menu->all = array('link' => "<i class='icon-cubes'></i> 所有{$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> 添加{$lang->projectCommon}|project|create", 'float' => 'right');
|
||||
$lang->project->menu->all = array('link' => "<i class='icon-th-large'></i> 所有{$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;
|
||||
|
||||
@@ -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'});
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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')
|
||||
{
|
||||
|
||||
@@ -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 = '保存失敗!';
|
||||
|
||||
@@ -53,7 +53,7 @@ class datatable extends control
|
||||
public function ajaxCustom($module, $method)
|
||||
{
|
||||
$account = $this->app->user->account;
|
||||
$name = 'owner=' . $account . '&module=datatable§ion=' . $module . $method . '&key=cols';
|
||||
$name = 'owner=' . $account . '&module=datatable§ion=' . $module . ucfirst($method) . '&key=cols';
|
||||
if($module == 'testtask')
|
||||
{
|
||||
$this->loadModel('testcase');
|
||||
|
||||
@@ -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'] = '只顯示最後一級模組';
|
||||
|
||||
@@ -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>";
|
||||
|
||||
@@ -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>";
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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>');
|
||||
|
||||
@@ -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>');
|
||||
|
||||
@@ -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>');
|
||||
|
||||
@@ -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'>
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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'] = '已设置';
|
||||
|
||||
|
||||
@@ -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 = '所有';
|
||||
|
||||
@@ -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'] = '顯示任務';
|
||||
|
||||
@@ -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['!='] = '!=';
|
||||
|
||||
@@ -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['!='] = '!=';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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'] = '未開始';
|
||||
|
||||
@@ -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 = '新增';
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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¶m=0&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}") : 'javascript:removeCookieByKey("caseModule")';
|
||||
echo ' ' . html::a($removeLink, "<i class='icon icon-remove'></i>", '', "class='text-muted'") . ' ';
|
||||
$removeLink = $browseType == 'bymodule' ? inlink('cases', "taskID=$taskID&browseType=$browseType¶m=0&orderBy=$orderBy&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}") : 'javascript:removeCookieByKey("taskCaseModule")';
|
||||
echo html::a($removeLink, "<span class='close'>×</span>", '', "class='text-muted'");
|
||||
}
|
||||
echo " <i class='icon-angle-right'></i> ";
|
||||
?>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
$hasCasesPriv = common::hasPriv('testtask', 'cases');
|
||||
|
||||
@@ -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¶ms=" . helper::safe64Encode($params)), $target));
|
||||
}
|
||||
die($this->fetch($module, $method, $params));
|
||||
|
||||
@@ -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>";
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user