This commit is contained in:
daitingting
2018-07-05 13:36:23 +08:00
39 changed files with 450 additions and 256 deletions
+104
View File
@@ -1,2 +1,106 @@
ALTER TABLE `zt_storyspec` CHANGE `title` `title` varchar(255) NOT NULL;
update `zt_todo` set assignedTo = 'closed', assignedDate = closedDate where status = 'closed';
DROP TABLE IF EXISTS `zt_webhookdatas`;
ALTER TABLE `zt_action` DROP INDEX `action`;
ALTER TABLE `zt_action` ADD INDEX `date` (`date`);
ALTER TABLE `zt_action` ADD INDEX `actor` (`actor`);
ALTER TABLE `zt_action` ADD INDEX `project` (`project`);
ALTER TABLE `zt_action` ADD INDEX `objectID` (`objectID`);
ALTER TABLE `zt_block` DROP INDEX `block`;
ALTER TABLE `zt_block` ADD INDEX `account` (`account`);
ALTER TABLE `zt_bug` DROP INDEX `bug`;
ALTER TABLE `zt_bug` ADD INDEX `product` (`product`);
ALTER TABLE `zt_bug` ADD INDEX `project` (`project`);
ALTER TABLE `zt_bug` ADD INDEX `status` (`status`);
ALTER TABLE `zt_bug` ADD INDEX `plan` (`plan`);
ALTER TABLE `zt_bug` ADD INDEX `story` (`story`);
ALTER TABLE `zt_bug` ADD INDEX `case` (`case`);
ALTER TABLE `zt_bug` ADD INDEX `assignedTo` (`assignedTo`);
ALTER TABLE `zt_build` DROP INDEX `build`;
ALTER TABLE `zt_build` ADD INDEX `product` (`product`);
ALTER TABLE `zt_build` ADD INDEX `project` (`project`);
ALTER TABLE `zt_case` DROP INDEX `case`;
ALTER TABLE `zt_case` ADD INDEX `product` (`product`);
ALTER TABLE `zt_case` ADD INDEX `story` (`story`);
ALTER TABLE `zt_case` ADD INDEX `plan` (`plan`);
ALTER TABLE `zt_casestep` DROP INDEX `case`;
ALTER TABLE `zt_casestep` ADD INDEX `case` (`case`);
ALTER TABLE `zt_casestep` ADD INDEX `version` (`version`);
ALTER TABLE `zt_dept` DROP INDEX `dept`;
ALTER TABLE `zt_dept` ADD INDEX `parent` (`parent`);
ALTER TABLE `zt_dept` ADD INDEX `path` (`path`);
ALTER TABLE `zt_doc` DROP INDEX `doc`;
ALTER TABLE `zt_doc` ADD INDEX `product` (`product`);
ALTER TABLE `zt_doc` ADD INDEX `project` (`project`);
ALTER TABLE `zt_doc` ADD INDEX `lib` (`lib`);
ALTER TABLE `zt_doclib` ADD INDEX `product` (`product`);
ALTER TABLE `zt_doclib` ADD INDEX `project` (`project`);
ALTER TABLE `zt_extension` DROP INDEX `extension`;
ALTER TABLE `zt_extension` ADD INDEX `name` (`name`);
ALTER TABLE `zt_extension` ADD INDEX `installedTime` (`installedTime`);
ALTER TABLE `zt_file` DROP INDEX `file`;
ALTER TABLE `zt_file` ADD INDEX `objectType` (`objectType`);
ALTER TABLE `zt_file` ADD INDEX `objectID` (`objectID`);
ALTER TABLE `zt_module` DROP INDEX `module`;
ALTER TABLE `zt_module` ADD INDEX `root` (`root`);
ALTER TABLE `zt_module` ADD INDEX `type` (`type`);
ALTER TABLE `zt_module` ADD INDEX `path` (`path`);
ALTER TABLE `zt_productplan` DROP INDEX `plan`;
ALTER TABLE `zt_productplan` ADD INDEX `product` (`product`);
ALTER TABLE `zt_productplan` ADD INDEX `end` (`end`);
ALTER TABLE `zt_project` DROP INDEX `project`;
ALTER TABLE `zt_project` ADD INDEX `parent` (`parent`);
ALTER TABLE `zt_project` ADD INDEX `begin` (`begin`);
ALTER TABLE `zt_project` ADD INDEX `end` (`end`);
ALTER TABLE `zt_project` ADD INDEX `status` (`status`);
ALTER TABLE `zt_project` ADD INDEX `order` (`order`);
ALTER TABLE `zt_release` ADD INDEX `product` (`product`);
ALTER TABLE `zt_story` DROP INDEX `story`;
ALTER TABLE `zt_story` ADD INDEX `product` (`product`);
ALTER TABLE `zt_story` ADD INDEX `status` (`status`);
ALTER TABLE `zt_story` ADD INDEX `assignedTo` (`assignedTo`);
ALTER TABLE `zt_task` DROP INDEX `task`;
ALTER TABLE `zt_task` ADD INDEX `project` (`project`);
ALTER TABLE `zt_task` ADD INDEX `story` (`story`);
ALTER TABLE `zt_task` ADD INDEX `assignedTo` (`assignedTo`);
ALTER TABLE `zt_testresult` DROP INDEX `testresult`;
ALTER TABLE `zt_testresult` ADD INDEX `case` (`case`);
ALTER TABLE `zt_testresult` ADD INDEX `version` (`version`);
ALTER TABLE `zt_testresult` ADD INDEX `run` (`run`);
ALTER TABLE `zt_testsuite` ADD INDEX `product` (`product`);
ALTER TABLE `zt_testtask` ADD INDEX `product` (`product`);
ALTER TABLE `zt_todo` DROP INDEX `todo`;
ALTER TABLE `zt_todo` ADD INDEX `account` (`account`);
ALTER TABLE `zt_todo` ADD INDEX `assignedTo` (`assignedTo`);
ALTER TABLE `zt_todo` ADD INDEX `finishedBy` (`finishedBy`);
ALTER TABLE `zt_todo` ADD INDEX `date` (`date`);
ALTER TABLE `zt_user` DROP INDEX `user`;
ALTER TABLE `zt_user` ADD INDEX `dept` (`dept`);
ALTER TABLE `zt_user` ADD INDEX `email` (`email`);
ALTER TABLE `zt_user` ADD INDEX `commiter` (`commiter`);
ALTER TABLE `zt_userquery` DROP INDEX `query`;
ALTER TABLE `zt_userquery` ADD INDEX `account` (`account`);
ALTER TABLE `zt_userquery` ADD INDEX `module` (`module`);
+213 -182
View File
@@ -12,7 +12,10 @@ CREATE TABLE IF NOT EXISTS `zt_action` (
`extra` text NOT NULL,
`read` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `action` (`objectID`,`product`,`project`,`action`,`date`)
KEY `date` (`date`),
KEY `actor` (`actor`),
KEY `project` (`project`),
KEY `objectID` (`objectID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_block`;
CREATE TABLE IF NOT EXISTS `zt_block` (
@@ -29,7 +32,7 @@ CREATE TABLE IF NOT EXISTS `zt_block` (
`hidden` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `accountModuleOrder` (`account`,`module`,`order`),
KEY `block` (`account`,`module`)
KEY `account` (`account`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_branch`;
CREATE TABLE IF NOT EXISTS `zt_branch` (
@@ -92,7 +95,13 @@ CREATE TABLE IF NOT EXISTS `zt_bug` (
`lastEditedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `bug` (`product`,`module`,`project`,`assignedTo`)
KEY `product` (`product`),
KEY `project` (`project`),
KEY `status` (`status`),
KEY `plan` (`plan`),
KEY `story` (`story`),
KEY `case` (`case`),
KEY `assignedTo` (`assignedTo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_build`;
CREATE TABLE IF NOT EXISTS `zt_build` (
@@ -110,7 +119,8 @@ CREATE TABLE IF NOT EXISTS `zt_build` (
`desc` text NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `build` (`product`,`project`)
KEY `product` (`product`),
KEY `project` (`project`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_burn`;
CREATE TABLE IF NOT EXISTS `zt_burn` (
@@ -161,7 +171,9 @@ CREATE TABLE IF NOT EXISTS `zt_case` (
`lastRunDate` datetime NOT NULL,
`lastRunResult` char(30) NOT NULL,
PRIMARY KEY (`id`),
KEY `case` (`product`,`module`,`story`)
KEY `product` (`product`),
KEY `story` (`story`),
KEY `plan` (`plan`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_casestep`;
CREATE TABLE IF NOT EXISTS `zt_casestep` (
@@ -173,7 +185,8 @@ CREATE TABLE IF NOT EXISTS `zt_casestep` (
`desc` text NOT NULL,
`expect` text NOT NULL,
PRIMARY KEY (`id`),
KEY `case` (`case`,`version`)
KEY `case` (`case`),
KEY `version` (`version`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_company`;
CREATE TABLE IF NOT EXISTS `zt_company` (
@@ -242,7 +255,8 @@ CREATE TABLE IF NOT EXISTS `zt_dept` (
`function` char(255) NOT NULL default '',
`manager` char(30) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `dept` (`parent`,`path`)
KEY `parent` (`parent`),
KEY `path` (`path`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_doc`;
CREATE TABLE IF NOT EXISTS `zt_doc` (
@@ -266,7 +280,9 @@ CREATE TABLE IF NOT EXISTS `zt_doc` (
`version` smallint(5) unsigned NOT NULL DEFAULT '1',
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `doc` (`product`,`project`)
KEY `product` (`product`),
KEY `project` (`project`),
KEY `lib` (`lib`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_doccontent`;
CREATE TABLE IF NOT EXISTS `zt_doccontent` (
@@ -294,7 +310,9 @@ CREATE TABLE IF NOT EXISTS `zt_doclib` (
`collector` text NOT NULL,
`order` tinyint(5) unsigned NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
KEY `product` (`product`),
KEY `project` (`project`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_effort`;
CREATE TABLE IF NOT EXISTS `zt_effort` (
@@ -331,7 +349,8 @@ CREATE TABLE IF NOT EXISTS `zt_extension` (
`status` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`),
KEY `extension` (`name`,`installedTime`)
KEY `name` (`name`),
KEY `installedTime` (`installedTime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_file`;
CREATE TABLE IF NOT EXISTS `zt_file` (
@@ -348,7 +367,8 @@ CREATE TABLE IF NOT EXISTS `zt_file` (
`extra` varchar(255) NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `file` (`objectType`,`objectID`)
KEY `objectType` (`objectType`),
KEY `objectID` (`objectID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_group`;
CREATE TABLE IF NOT EXISTS `zt_group` (
@@ -377,21 +397,6 @@ CREATE TABLE IF NOT EXISTS `zt_history` (
PRIMARY KEY (`id`),
KEY `action` (`action`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_mailqueue`;
CREATE TABLE IF NOT EXISTS `zt_mailqueue` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`toList` varchar(255) NOT NULL,
`ccList` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`body` text NOT NULL,
`addedBy` char(30) NOT NULL,
`addedDate` datetime NOT NULL,
`sendTime` datetime NOT NULL,
`status` varchar(10) NOT NULL DEFAULT 'wait',
`failReason` text NOT NULL,
PRIMARY KEY (`id`),
KEY `sendTime` (`sendTime`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_module`;
CREATE TABLE IF NOT EXISTS `zt_module` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
@@ -408,7 +413,9 @@ CREATE TABLE IF NOT EXISTS `zt_module` (
`short` varchar(30) NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `module` (`root`,`type`,`path`)
KEY `root` (`root`),
KEY `type` (`type`),
KEY `path` (`path`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_notify`;
CREATE TABLE IF NOT EXISTS `zt_notify` (
@@ -460,7 +467,8 @@ CREATE TABLE IF NOT EXISTS `zt_productplan` (
`order` text NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `plan` (`product`,`end`)
KEY `product` (`product`),
KEY `end` (`end`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_project`;
CREATE TABLE IF NOT EXISTS `zt_project` (
@@ -495,7 +503,11 @@ CREATE TABLE IF NOT EXISTS `zt_project` (
`order` mediumint(8) unsigned NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `project` (`parent`,`begin`,`end`,`status`,`order`)
KEY `parent` (`parent`),
KEY `begin` (`begin`),
KEY `end` (`end`),
KEY `status` (`status`),
KEY `order` (`order`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_projectproduct`;
CREATE TABLE IF NOT EXISTS `zt_projectproduct` (
@@ -530,6 +542,7 @@ CREATE TABLE IF NOT EXISTS `zt_release` (
`status` varchar(20) NOT NULL default 'normal',
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `product` (`product`),
KEY `build` (`build`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_story`;
@@ -569,7 +582,9 @@ CREATE TABLE IF NOT EXISTS `zt_story` (
`version` smallint(6) NOT NULL default '1',
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `story` (`product`,`module`,`status`,`assignedTo`)
KEY `product` (`product`),
KEY `status` (`status`),
KEY `assignedTo` (`assignedTo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_storyspec`;
CREATE TABLE IF NOT EXISTS `zt_storyspec` (
@@ -632,7 +647,9 @@ CREATE TABLE IF NOT EXISTS `zt_task` (
`lastEditedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `task` (`project`,`module`,`story`,`assignedTo`)
KEY `project` (`project`),
KEY `story` (`story`),
KEY `assignedTo` (`assignedTo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_taskestimate`;
CREATE TABLE IF NOT EXISTS `zt_taskestimate` (
@@ -698,7 +715,9 @@ CREATE TABLE IF NOT EXISTS `zt_testresult` (
`lastRunner` varchar(30) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `testresult` (`case`,`version`, `run`)
KEY `case` (`case`),
KEY `version` (`version`),
KEY `run` (`run`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_testrun`;
CREATE TABLE IF NOT EXISTS `zt_testrun` (
@@ -726,7 +745,8 @@ CREATE TABLE IF NOT EXISTS `zt_testsuite` (
`lastEditedBy` char(30) NOT NULL,
`lastEditedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL,
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
KEY `product` (`product`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_testtask`;
CREATE TABLE IF NOT EXISTS `zt_testtask` (
@@ -745,6 +765,7 @@ CREATE TABLE IF NOT EXISTS `zt_testtask` (
`status` enum('blocked','doing','wait','done') NOT NULL DEFAULT 'wait',
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `product` (`product`),
KEY `build` (`build`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_todo`;
@@ -771,7 +792,10 @@ CREATE TABLE IF NOT EXISTS `zt_todo` (
`closedBy` varchar(30) NOT NULL DEFAULT '',
`closedDate` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `todo` (`account`,`date`)
KEY `account` (`account`),
KEY `assignedTo` (`assignedTo`),
KEY `finishedBy` (`finishedBy`),
KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_user`;
CREATE TABLE IF NOT EXISTS `zt_user` (
@@ -808,7 +832,9 @@ CREATE TABLE IF NOT EXISTS `zt_user` (
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `account` (`account`),
KEY `user` (`dept`,`email`,`commiter`)
KEY `dept` (`dept`),
KEY `email` (`email`),
KEY `commiter` (`commiter`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_usercontact`;
CREATE TABLE IF NOT EXISTS `zt_usercontact` (
@@ -835,7 +861,8 @@ CREATE TABLE IF NOT EXISTS `zt_userquery` (
`sql` text NOT NULL,
`shortcut` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `query` (`account`, `module`)
KEY `account` (`account`),
KEY `module` (`module`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_usertpl`;
CREATE TABLE IF NOT EXISTS `zt_usertpl` (
@@ -883,18 +910,6 @@ CREATE TABLE IF NOT EXISTS `zt_webhook` (
`deleted` enum('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_webhookdatas`;
CREATE TABLE IF NOT EXISTS `zt_webhookdatas` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`webhook` mediumint(8) unsigned NOT NULL,
`action` mediumint(8) unsigned NOT NULL,
`data` text NOT NULL,
`status` enum('wait', 'sended') NOT NULL DEFAULT 'wait',
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
PRIMARY KEY `id` (`id`),
UNIQUE KEY `uniq` (`webhook`, `action`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_log`;
CREATE TABLE IF NOT EXISTS `zt_log` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
@@ -1326,17 +1341,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'testtask', 'report'),
(1, 'testtask', 'unlinkcase'),
(1, 'testtask', 'view'),
(1, 'todo', 'batchCreate'),
(1, 'todo', 'batchEdit'),
(1, 'todo', 'batchFinish'),
(1, 'todo', 'create'),
(1, 'todo', 'createCycle'),
(1, 'todo', 'delete'),
(1, 'todo', 'edit'),
(1, 'todo', 'export'),
(1, 'todo', 'finish'),
(1, 'todo', 'import2Today'),
(1, 'todo', 'view'),
(1, 'todo', 'activate',
(1, 'todo', 'assignTo',
(1, 'todo', 'batchClose',
(1, 'todo', 'batchCreate',
(1, 'todo', 'batchEdit',
(1, 'todo', 'batchFinish',
(1, 'todo', 'create',
(1, 'todo', 'createCycle',
(1, 'todo', 'close',
(1, 'todo', 'delete',
(1, 'todo', 'edit',
(1, 'todo', 'export',
(1, 'todo', 'finish',
(1, 'todo', 'import2Today',
(1, 'todo', 'view',
(1, 'tree', 'browse'),
(1, 'tree', 'browseTask'),
(1, 'tree', 'delete'),
@@ -1522,20 +1541,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(2, 'testtask', 'index'),
(2, 'testtask', 'results'),
(2, 'testtask', 'view'),
(2, 'todo', 'batchCreate'),
(2, 'todo', 'batchEdit'),
(2, 'todo', 'batchFinish'),
(2, 'todo', 'create'),
(2, 'todo', 'createCycle'),
(2, 'todo', 'delete'),
(2, 'todo', 'edit'),
(2, 'todo', 'export'),
(2, 'todo', 'finish'),
(2, 'todo', 'import2Today'),
(2, 'todo', 'view'),
(2, 'todo', 'assignTo'),
(2, 'todo', 'activate'),
(2, 'todo', 'close'),
(2, 'todo', 'activate',
(2, 'todo', 'assignTo',
(2, 'todo', 'batchClose',
(2, 'todo', 'batchCreate',
(2, 'todo', 'batchEdit',
(2, 'todo', 'batchFinish',
(2, 'todo', 'create',
(2, 'todo', 'createCycle',
(2, 'todo', 'close',
(2, 'todo', 'delete',
(2, 'todo', 'edit',
(2, 'todo', 'export',
(2, 'todo', 'finish',
(2, 'todo', 'import2Today',
(2, 'todo', 'view',
(2, 'user', 'bug'),
(2, 'user', 'deleteContacts'),
(2, 'user', 'dynamic'),
@@ -1742,17 +1762,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(3, 'testtask', 'report'),
(3, 'testtask', 'unlinkcase'),
(3, 'testtask', 'view'),
(3, 'todo', 'batchCreate'),
(3, 'todo', 'batchEdit'),
(3, 'todo', 'batchFinish'),
(3, 'todo', 'create'),
(3, 'todo', 'createCycle'),
(3, 'todo', 'delete'),
(3, 'todo', 'edit'),
(3, 'todo', 'export'),
(3, 'todo', 'finish'),
(3, 'todo', 'import2Today'),
(3, 'todo', 'view'),
(3, 'todo', 'activate',
(3, 'todo', 'assignTo',
(3, 'todo', 'batchClose',
(3, 'todo', 'batchCreate',
(3, 'todo', 'batchEdit',
(3, 'todo', 'batchFinish',
(3, 'todo', 'create',
(3, 'todo', 'createCycle',
(3, 'todo', 'close',
(3, 'todo', 'delete',
(3, 'todo', 'edit',
(3, 'todo', 'export',
(3, 'todo', 'finish',
(3, 'todo', 'import2Today',
(3, 'todo', 'view',
(3, 'user', 'bug'),
(3, 'user', 'deleteContacts'),
(3, 'user', 'dynamic'),
@@ -1969,20 +1993,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(4, 'testtask', 'index'),
(4, 'testtask', 'results'),
(4, 'testtask', 'view'),
(4, 'todo', 'batchCreate'),
(4, 'todo', 'batchEdit'),
(4, 'todo', 'batchFinish'),
(4, 'todo', 'create'),
(4, 'todo', 'createCycle'),
(4, 'todo', 'delete'),
(4, 'todo', 'edit'),
(4, 'todo', 'export'),
(4, 'todo', 'finish'),
(4, 'todo', 'import2Today'),
(4, 'todo', 'view'),
(4, 'todo', 'assignTo'),
(4, 'todo', 'activate'),
(4, 'todo', 'close'),
(4, 'todo', 'activate',
(4, 'todo', 'assignTo',
(4, 'todo', 'batchClose',
(4, 'todo', 'batchCreate',
(4, 'todo', 'batchEdit',
(4, 'todo', 'batchFinish',
(4, 'todo', 'create',
(4, 'todo', 'createCycle',
(4, 'todo', 'close',
(4, 'todo', 'delete',
(4, 'todo', 'edit',
(4, 'todo', 'export',
(4, 'todo', 'finish',
(4, 'todo', 'import2Today',
(4, 'todo', 'view',
(4, 'tree', 'browse'),
(4, 'tree', 'browseTask'),
(4, 'tree', 'delete'),
@@ -2232,20 +2257,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(5, 'testtask', 'index'),
(5, 'testtask', 'results'),
(5, 'testtask', 'view'),
(5, 'todo', 'batchCreate'),
(5, 'todo', 'batchEdit'),
(5, 'todo', 'batchFinish'),
(5, 'todo', 'create'),
(5, 'todo', 'createCycle'),
(5, 'todo', 'delete'),
(5, 'todo', 'edit'),
(5, 'todo', 'export'),
(5, 'todo', 'finish'),
(5, 'todo', 'import2Today'),
(5, 'todo', 'view'),
(5, 'todo', 'assignTo'),
(5, 'todo', 'activate'),
(5, 'todo', 'close'),
(5, 'todo', 'activate',
(5, 'todo', 'assignTo',
(5, 'todo', 'batchClose',
(5, 'todo', 'batchCreate',
(5, 'todo', 'batchEdit',
(5, 'todo', 'batchFinish',
(5, 'todo', 'create',
(5, 'todo', 'createCycle',
(5, 'todo', 'close',
(5, 'todo', 'delete',
(5, 'todo', 'edit',
(5, 'todo', 'export',
(5, 'todo', 'finish',
(5, 'todo', 'import2Today',
(5, 'todo', 'view',
(5, 'tree', 'browse'),
(5, 'tree', 'browseTask'),
(5, 'tree', 'delete'),
@@ -2467,20 +2493,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(6, 'testtask', 'index'),
(6, 'testtask', 'results'),
(6, 'testtask', 'view'),
(6, 'todo', 'batchCreate'),
(6, 'todo', 'batchEdit'),
(6, 'todo', 'batchFinish'),
(6, 'todo', 'create'),
(6, 'todo', 'createCycle'),
(6, 'todo', 'delete'),
(6, 'todo', 'edit'),
(6, 'todo', 'export'),
(6, 'todo', 'finish'),
(6, 'todo', 'import2Today'),
(6, 'todo', 'view'),
(6, 'todo', 'assignTo'),
(6, 'todo', 'activate'),
(6, 'todo', 'close'),
(6, 'todo', 'activate',
(6, 'todo', 'assignTo',
(6, 'todo', 'batchClose',
(6, 'todo', 'batchCreate',
(6, 'todo', 'batchEdit',
(6, 'todo', 'batchFinish',
(6, 'todo', 'create',
(6, 'todo', 'createCycle',
(6, 'todo', 'close',
(6, 'todo', 'delete',
(6, 'todo', 'edit',
(6, 'todo', 'export',
(6, 'todo', 'finish',
(6, 'todo', 'import2Today',
(6, 'todo', 'view',
(6, 'tree', 'browse'),
(6, 'tree', 'browseTask'),
(6, 'tree', 'delete'),
@@ -2714,20 +2741,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(7, 'testtask', 'index'),
(7, 'testtask', 'results'),
(7, 'testtask', 'view'),
(7, 'todo', 'batchCreate'),
(7, 'todo', 'batchEdit'),
(7, 'todo', 'batchFinish'),
(7, 'todo', 'create'),
(7, 'todo', 'createCycle'),
(7, 'todo', 'delete'),
(7, 'todo', 'edit'),
(7, 'todo', 'export'),
(7, 'todo', 'finish'),
(7, 'todo', 'import2Today'),
(7, 'todo', 'view'),
(7, 'todo', 'assignTo'),
(7, 'todo', 'activate'),
(7, 'todo', 'close'),
(7, 'todo', 'activate',
(7, 'todo', 'assignTo',
(7, 'todo', 'batchClose',
(7, 'todo', 'batchCreate',
(7, 'todo', 'batchEdit',
(7, 'todo', 'batchFinish',
(7, 'todo', 'create',
(7, 'todo', 'createCycle',
(7, 'todo', 'close',
(7, 'todo', 'delete',
(7, 'todo', 'edit',
(7, 'todo', 'export',
(7, 'todo', 'finish',
(7, 'todo', 'import2Today',
(7, 'todo', 'view',
(7, 'tree', 'browse'),
(7, 'tree', 'browseTask'),
(7, 'tree', 'delete'),
@@ -2972,20 +3000,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(8, 'testtask', 'report'),
(8, 'testtask', 'unlinkcase'),
(8, 'testtask', 'view'),
(8, 'todo', 'batchCreate'),
(8, 'todo', 'batchEdit'),
(8, 'todo', 'batchFinish'),
(8, 'todo', 'create'),
(8, 'todo', 'createCycle'),
(8, 'todo', 'delete'),
(8, 'todo', 'edit'),
(8, 'todo', 'export'),
(8, 'todo', 'finish'),
(8, 'todo', 'import2Today'),
(8, 'todo', 'view'),
(8, 'todo', 'assignTo'),
(8, 'todo', 'activate'),
(8, 'todo', 'close'),
(8, 'todo', 'activate',
(8, 'todo', 'assignTo',
(8, 'todo', 'batchClose',
(8, 'todo', 'batchCreate',
(8, 'todo', 'batchEdit',
(8, 'todo', 'batchFinish',
(8, 'todo', 'create',
(8, 'todo', 'createCycle',
(8, 'todo', 'close',
(8, 'todo', 'delete',
(8, 'todo', 'edit',
(8, 'todo', 'export',
(8, 'todo', 'finish',
(8, 'todo', 'import2Today',
(8, 'todo', 'view',
(8, 'tree', 'browse'),
(8, 'tree', 'browseTask'),
(8, 'tree', 'delete'),
@@ -3143,20 +3172,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(9, 'testtask', 'index'),
(9, 'testtask', 'results'),
(9, 'testtask', 'view'),
(9, 'todo', 'batchCreate'),
(9, 'todo', 'batchEdit'),
(9, 'todo', 'batchFinish'),
(9, 'todo', 'create'),
(9, 'todo', 'createCycle'),
(9, 'todo', 'delete'),
(9, 'todo', 'edit'),
(9, 'todo', 'export'),
(9, 'todo', 'finish'),
(9, 'todo', 'import2Today'),
(9, 'todo', 'view'),
(9, 'todo', 'assignTo'),
(9, 'todo', 'activate'),
(9, 'todo', 'close'),
(9, 'todo', 'activate',
(9, 'todo', 'assignTo',
(9, 'todo', 'batchClose',
(9, 'todo', 'batchCreate',
(9, 'todo', 'batchEdit',
(9, 'todo', 'batchFinish',
(9, 'todo', 'create',
(9, 'todo', 'createCycle',
(9, 'todo', 'close',
(9, 'todo', 'delete',
(9, 'todo', 'edit',
(9, 'todo', 'export',
(9, 'todo', 'finish',
(9, 'todo', 'import2Today',
(9, 'todo', 'view',
(9, 'user', 'batchCreate'),
(9, 'user', 'batchEdit'),
(9, 'user', 'bug'),
@@ -3262,20 +3292,21 @@ INSERT INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(10, 'testsuite', 'index'),
(10, 'testsuite', 'browse'),
(10, 'testsuite', 'view'),
(10, 'todo', 'batchCreate'),
(10, 'todo', 'batchEdit'),
(10, 'todo', 'batchFinish'),
(10, 'todo', 'create'),
(10, 'todo', 'createCycle'),
(10, 'todo', 'delete'),
(10, 'todo', 'edit'),
(10, 'todo', 'export'),
(10, 'todo', 'finish'),
(10, 'todo', 'import2Today'),
(10, 'todo', 'view'),
(10, 'todo', 'assignTo'),
(10, 'todo', 'activate'),
(10, 'todo', 'close'),
(10, 'todo', 'activate',
(10, 'todo', 'assignTo',
(10, 'todo', 'batchClose',
(10, 'todo', 'batchCreate',
(10, 'todo', 'batchEdit',
(10, 'todo', 'batchFinish',
(10, 'todo', 'create',
(10, 'todo', 'createCycle',
(10, 'todo', 'close',
(10, 'todo', 'delete',
(10, 'todo', 'edit',
(10, 'todo', 'export',
(10, 'todo', 'finish',
(10, 'todo', 'import2Today',
(10, 'todo', 'view',
(10, 'user', 'bug'),
(10, 'user', 'dynamic'),
(10, 'user', 'profile'),
+4 -1
View File
@@ -62,7 +62,10 @@ function refreshBlock($panel, afterRefresh)
var $data = $(data);
if($data.hasClass('panel')) $panel.empty().append($data.children());
else if($panel.find('#assigntomeBlock').length) $panel.find('#assigntomeBlock').empty().append($data.children());
else $panel.find('.panel-body').replaceWith($data);
else
{
$panel.find('.panel-body,.empty-tip').replaceWith($data);
}
if($.isFunction(afterRefresh))
{
afterRefresh.call(this,
+1 -1
View File
@@ -1 +1 @@
#mainContent {min-height: 300px}
#mainContent {min-height: 400px}
+1 -1
View File
@@ -265,7 +265,7 @@ js::set('oldResolvedBuild' , $bug->resolvedBuild);
<tbody>
<tr class='text-top'>
<th class='w-80px'><?php echo $lang->bug->linkBug;?></th>
<td><?php echo html::a($this->createLink('bug', 'linkBugs', "bugID=$bug->id", '', true), $lang->bug->linkBugs, '', "data-toggle='modal' data-type='iframe' data-width='95%'");?></td>
<td><?php echo html::a($this->createLink('bug', 'linkBugs', "bugID=$bug->id", '', true), $lang->bug->linkBugs, '', "class='text-primary' data-toggle='modal' data-type='iframe' data-width='95%'");?></td>
</tr>
<tr>
<th></th>
+2 -2
View File
@@ -11,7 +11,7 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<div id='mainContent' class='main-content'>
<div id='mainContent' class='space'>
<div class='main-header'>
<h2>
<span class='label label-id'><?php echo $bug->id;?></span>
@@ -23,7 +23,7 @@
<?php if($bugs2Link):?>
<form class='main-table' method='post' data-ride='table' target='hiddenwin' id='linkBugsForm'>
<table class='table' id='bugList'>
<thead>
<thead class='hl-gray'>
<tr>
<th class="c-id">
<div class="checkbox-primary check-all" title="<?php echo $lang->selectAll?>">
+3 -5
View File
@@ -1,18 +1,16 @@
<?php if($extView = $this->getExtViewFile(__FILE__)){include $extView; return helper::cd();}?>
<style>
.histories-list > li{word-break: break-all; word-wrap: break-word;}
</style>
<?php if(!empty($blockHistory)):?>
<div class="panel block-histories histories" data-textDiff="<?php echo $lang->action->textDiff;?>" data-original="<?php echo $lang->action->original;?>">
<?php else:?>
<div class="detail histories" id='actionbox' data-textDiff="<?php echo $lang->action->textDiff;?>" data-original="<?php echo $lang->action->original;?>">
<?php endif;?>
<style>.histories-list > li{word-break: break-all; word-wrap: break-word;}</style>
<script>
$(function()
{
var diffButton = '<button type="button" class="btn btn-mini btn-icon btn-strip"><i class="icon icon-code icon-sm"></i></button>';
var newBoxID = ''
var oldBoxID = ''
var newBoxID = '';
var oldBoxID = '';
$('blockquote.textdiff').each(function()
{
newBoxID = $(this).parent().attr('id');
+1
View File
@@ -78,6 +78,7 @@ $(document).ready(function()
{
this.$datatable.find('.table').addClass('has-sort-head');
}
this.$datatable.find('.sparkline').sparkline();
}
});
+1 -1
View File
@@ -51,7 +51,7 @@ $(function()
}
}
});
}, 90 * 1000);
}, 5 * 60 * 1000);
})
<?php if(!empty($config->sso->redirect)):?>
-1
View File
@@ -71,6 +71,5 @@ $config->dev->tableMap['usertpl'] = 'user-tpl';
$config->dev->tableMap['history'] = 'action-history';
$config->dev->tableMap['lang'] = 'custom';
$config->dev->tableMap['config'] = 'custom';
$config->dev->tableMap['mailqueue'] = 'mail';
$config->dev->tableMap['module'] = 'tree';
$config->dev->tableMap['suitecase'] = 'testcase';
-2
View File
@@ -82,7 +82,6 @@ $lang->dev->tableList['testsuite'] = 'Test Suite';
$lang->dev->tableList['tree'] = 'Module Tree';
$lang->dev->tableList['upgrade'] = 'Update';
$lang->dev->tableList['cron'] = 'Scheduled Task';
$lang->dev->tableList['mailqueue'] = 'Mail Queue';
$lang->dev->tableList['datatable'] = 'Data Table';
$lang->dev->tableList['block'] = 'Block';
$lang->dev->tableList['branch'] = 'Branch';
@@ -93,7 +92,6 @@ $lang->dev->tableList['suitecase'] = 'Suite Case';
$lang->dev->tableList['score'] = 'Score';
$lang->dev->tableList['entry'] = 'Entry';
$lang->dev->tableList['webhook'] = 'WebHook';
$lang->dev->tableList['webhookdatas'] = 'WebHookDatas';
$lang->dev->tableList['log'] = 'Log';
$lang->dev->tableList['message'] = 'Message';
$lang->dev->tableList['notify'] = 'Notify';
-2
View File
@@ -82,7 +82,6 @@ $lang->dev->tableList['testsuite'] = '测试套件';
$lang->dev->tableList['tree'] = '模块关系';
$lang->dev->tableList['upgrade'] = '更新';
$lang->dev->tableList['cron'] = '定时任务';
$lang->dev->tableList['mailqueue'] = '邮件队列';
$lang->dev->tableList['datatable'] = '数据表格';
$lang->dev->tableList['block'] = '区块';
$lang->dev->tableList['branch'] = '平台/分支';
@@ -93,7 +92,6 @@ $lang->dev->tableList['suitecase'] = '套件用例';
$lang->dev->tableList['score'] = '积分';
$lang->dev->tableList['entry'] = '应用';
$lang->dev->tableList['webhook'] = 'WebHook';
$lang->dev->tableList['webhookdatas'] = 'WebHook数据';
$lang->dev->tableList['log'] = '接口日志';
$lang->dev->tableList['message'] = '消息';
$lang->dev->tableList['notify'] = '通知';
+1
View File
@@ -44,6 +44,7 @@ $lang->doc->acl = '權限';
$lang->doc->groups = '分組';
$lang->doc->users = '用戶';
$lang->doc->item = '項';
$lang->doc->num = '文檔數量';
$lang->doc->searchResult = '搜索結果';
$lang->doc->moduleDoc = '按模組瀏覽';
+5 -4
View File
@@ -48,7 +48,7 @@ class docModel extends model
$selectHtml .= "<div class='btn-group angle-btn'>";
$selectHtml .= "<div class='btn-group'>";
$selectHtml .= "<a data-toggle='dropdown' class='btn'>" . $mainLib . " <span class='caret'></span></a>";
$selectHtml .= "<a data-toggle='dropdown' class='btn btn-limit' title=$mainLib>" . $mainLib . " <span class='caret'></span></a>";
$selectHtml .= "<ul class='dropdown-menu'>";
foreach($this->lang->doc->fastMenuList as $key => $fastMenu)
{
@@ -68,12 +68,13 @@ class docModel extends model
if($type == 'project') $currentLib = $projectID;
if($currentLib)
{
$allLibGroups = $this->getAllLibGroups();
$currentGroups = $allLibGroups[$type];
$allLibGroups = $this->getAllLibGroups();
$currentGroups = $allLibGroups[$type];
$currentLibName = is_array($currentGroups[$currentLib]) ? $currentGroups[$currentLib]['name'] : $currentGroups[$currentLib];
$selectHtml .= "<div class='btn-group angle-btn'>";
$selectHtml .= "<div class='btn-group'>";
$selectHtml .= '<a data-toggle="dropdown" class="btn">' . (is_array($currentGroups[$currentLib]) ? $currentGroups[$currentLib]['name'] : $currentGroups[$currentLib]) . ' <span class="caret"></span></a>';
$selectHtml .= "<a data-toggle='dropdown' class='btn btn-limit' title=$currentLibName>" . $currentLibName . ' <span class="caret"></span></a>';
$selectHtml .='<ul class="dropdown-menu">';
if($type == 'custom')
{
+12 -5
View File
@@ -121,16 +121,23 @@ $lang->resource->todo->import2Today = 'import2Today';
$lang->resource->todo->assignTo = 'assignTo';
$lang->resource->todo->activate = 'activate';
$lang->resource->todo->close = 'close';
$lang->resource->todo->batchClose = 'batchClose';
$lang->todo->methodOrder[5] = 'create';
$lang->todo->methodOrder[10] = 'createCycle';
$lang->todo->methodOrder[15] = 'batchCreate';
$lang->todo->methodOrder[20] = 'edit';
$lang->todo->methodOrder[25] = 'view';
$lang->todo->methodOrder[30] = 'delete';
$lang->todo->methodOrder[35] = 'export';
$lang->todo->methodOrder[40] = 'finish';
$lang->todo->methodOrder[45] = 'import2Today';
$lang->todo->methodOrder[25] = 'batchEdit';
$lang->todo->methodOrder[30] = 'view';
$lang->todo->methodOrder[35] = 'delete';
$lang->todo->methodOrder[40] = 'export';
$lang->todo->methodOrder[45] = 'finish';
$lang->todo->methodOrder[50] = 'batchFinish';
$lang->todo->methodOrder[55] = 'import2Today';
$lang->todo->methodOrder[60] = 'assignTo';
$lang->todo->methodOrder[65] = 'activate';
$lang->todo->methodOrder[70] = 'close';
$lang->todo->methodOrder[75] = 'batchClose';
/* Product. */
$lang->resource->product = new stdclass();
+22 -4
View File
@@ -97,10 +97,23 @@
<td class="c-status"><span class="status-<?php echo $todo->status;?>"><span class="label label-dot"></span> <?php echo $lang->todo->statusList[$todo->status];?></span></td>
<td class="c-actions">
<?php
if($todo->status != 'done') common::printIcon('todo', 'assignto', "todoID=$todo->id", $todo, 'list', 'hand-right', '', "btn-icon", '', "data-toggle='assigntoModal' data-width='500'", $lang->todo->assignTo);
if($todo->status == 'done') common::printIcon('todo', 'activate', "id=$todo->id", $todo, 'list', 'magic', 'hiddenwin');
if($todo->status != 'done') common::printIcon('todo', 'finish', "id=$todo->id", $todo, 'list', 'checked', 'hiddenwin');
if($todo->status == 'done') common::printIcon('todo', 'close', "id=$todo->id", $todo, 'list', 'off', 'hiddenwin');
if($todo->status == 'done' or $todo->status == 'closed')
{
common::printIcon('todo', 'activate', "id=$todo->id", $todo, 'list', 'magic', 'hiddenwin');
if($todo->status == 'done')
{
common::printIcon('todo', 'close', "id=$todo->id", $todo, 'list', 'off', 'hiddenwin');
}
else
{
echo html::a('javascript:;', "<i class='icon-todo-close icon-off'></i>", '', "class='btn disabled'");
}
}
else
{
common::printIcon('todo', 'assignto', "todoID=$todo->id", $todo, 'list', 'hand-right', '', "btn-icon", '', "data-toggle='assigntoModal' data-width='500'", $lang->todo->assignTo);
common::printIcon('todo', 'finish', "id=$todo->id", $todo, 'list', 'checked', 'hiddenwin');
}
common::printIcon('todo', 'edit', "id=$todo->id", '', 'list', 'edit', '', 'iframe', true);
if(common::hasPriv('todo', 'delete'))
@@ -131,6 +144,11 @@
$actionLink = $this->createLink('todo', 'batchFinish');
echo html::commonButton($lang->todo->finish, "onclick=\"setFormAction('$actionLink','hiddenwin')\"");
}
if(common::hasPriv('todo', 'batchClose'))
{
$actionLink = $this->createLink('todo', 'batchClose');
echo html::commonButton($lang->todo->close, "onclick=\"setFormAction('$actionLink','hiddenwin')\"");
}
if(common::hasPriv('todo', 'import2Today') and $importFuture)
{
$actionLink = $this->createLink('todo', 'import2Today');
+1 -1
View File
@@ -88,7 +88,7 @@
<td class='text-center'><?php echo $plan->bugs;?></td>
<td class='text-center'><?php echo $plan->hour;?></td>
<td class='text-center'><?php if(!empty($plan->projectID)) echo html::a(helper::createLink('project', 'task', 'projectID=' . $plan->projectID), '<i class="icon-search"></i>');?></td>
<td title='<?php echo strip_tags($plan->desc)?>' class='text-left content'><?php echo strip_tags($plan->desc);?></td>
<td title='<?php echo strip_tags($plan->desc)?>' class='text-left content'><?php echo nl2br(strip_tags($plan->desc));?></td>
<td class='c-actions'>
<?php
if(common::hasPriv('project', 'create')) echo html::a(helper::createLink('project', 'create', "projectID=&copyProjectID=&planID=$plan->id"), '<i class="icon-plus"></i>', '', "class='btn' title='{$lang->project->create}'");
+2 -1
View File
@@ -1,4 +1,5 @@
#linkButton {border-radius: 4px !important;}
tbody > tr > td > .btn-icon {margin-right: 4px}
@media (max-width: 1200px) {#storyList .c-user, #storyList .c-estimate {display: none!important;}}
@media (max-width: 1000px) {#storyList .c-status, #storyList .c-pri {display: none!important;}}
@media (max-width: 820px) {#storyList .c-sort, #storyList .c-stage {display: none!important;}}
@media (max-width: 820px) {#storyList .c-sort, #storyList .c-stage {display: none!important;}}
+8 -2
View File
@@ -146,6 +146,8 @@ class projectModel extends model
/* Replace for dropdown submenu. */
if(isset($this->lang->project->subMenu->$key))
{
$index = 0;
$firstLink = '';
$dropTitle = '';
$hasActive = false;
$subMenu = array();
@@ -170,8 +172,10 @@ class projectModel extends model
$dropTitle = $subMenuName;
}
$replace .= "<li $active>" . html::a(helper::createLink($subMenuModule, $subMenuMethod, sprintf($subMenuParams, $projectID)), $subMenuName) . '</li>';
$link = helper::createLink($subMenuModule, $subMenuMethod, sprintf($subMenuParams, $projectID));
$replace .= "<li $active>" . html::a($link, $subMenuName) . '</li>';
if($active) $hasActive = true;
if($index == 0) $firstLink = $link;
$link = array();
$link['module'] = $subMenuModule;
@@ -184,9 +188,11 @@ class projectModel extends model
$menu->text = $subMenuName;
$menu->hidden = false;
$subMenu[] = $menu;
$index++;
}
$replace .= '</ul>';
$replace = "<a data-toggle='dropdown'>$dropTitle <span class='caret'></span></a>" . $replace;
$replace = "<a href='$firstLink'>$dropTitle <span class='caret'></span></a>" . $replace;
$this->lang->project->menu->{$key}['class'] = 'dropdown dropdown-hover';
if($hasActive) $this->lang->project->menu->{$key}['class'] .= ' active';
+20 -13
View File
@@ -38,6 +38,20 @@
<?php
common::printLink('story', 'export', "productID=$productID&orderBy=id_desc", "<i class='icon icon-export muted'></i> " . $lang->story->export, '', "class='btn btn-link export'");
$this->lang->story->create = $this->lang->project->createStory;
if($productID and !$this->loadModel('story')->checkForceReview())
{
echo "<div class='btn-group dropdown-hover'>";
echo "<button type='button' class='btn btn-link'>";
echo "<i class='icon-plus'></i> {$lang->story->create} <span class='caret'></span>";
echo '</button>';
echo "<ul class='dropdown-menu pull-right' id='createActionMenu'>";
if(common::hasPriv('story', 'create')) echo '<li>' . html::a($this->createLink('story', 'create', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id"), $lang->story->create) . '</li>';
if(common::hasPriv('story', 'batchCreate')) echo '<li>' . html::a($this->createLink('story', 'batchCreate', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id"), $lang->story->batchCreate) . '</li>';
echo '</ul>';
echo '</div>';
}
if(commonModel::isTutorialMode())
{
$wizardParams = helper::safe64Encode("project=$project->id");
@@ -45,23 +59,16 @@
}
else
{
echo "<div class='btn-group dropdown-hover' id='createActionMenu'>";
echo "<button type='button' class='btn btn-link dropdown-toggle btn-icon'>";
echo "<i class='icon-link muted'></i> {$lang->project->linkStory} <span class='caret'></span>";
echo "<div class='btn-group dropdown-hover'>";
echo "<button type='button' class='btn btn-primary' id='linkButton'>";
echo "<i class='icon-link'></i> {$lang->project->linkStory} <span class='caret'></span>";
echo '</button>';
echo "<ul class='dropdown-menu pull-right'>";
if(common::hasPriv('project', 'linkStory')) echo "<li>" . html::a($this->createLink('project', 'linkStory', "project=$project->id"), $lang->project->linkStory). "</li>";
if(common::hasPriv('project', 'importPlanStories')) echo "<li>" . html::a('#linkStoryByPlan', $lang->project->linkStoryByPlan, '', 'data-toggle="modal"') . "</li>";
echo "<ul class='dropdown-menu pull-right' id='linkActionMenu'>";
if(common::hasPriv('project', 'linkStory')) echo '<li>' . html::a(inlink('linkStory', "project=$project->id"), $lang->project->linkStory). "</li>";
if(common::hasPriv('project', 'importPlanStories')) echo '<li>' . html::a('#linkStoryByPlan', $lang->project->linkStoryByPlan, '', 'data-toggle="modal"') . "</li>";
echo '</ul>';
echo '</div>';
}
$this->lang->story->create = $this->lang->project->createStory;
if($productID and !$this->loadModel('story')->checkForceReview())
{
common::printLink('story', 'batchCreate', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id", "<i class='icon icon-plus'></i> " . $lang->story->batchCreate, '', "class='btn btn-secondary'");
common::printLink('story', 'create', "productID=$productID&branch=0&moduleID=0&story=0&project=$project->id", "<i class='icon icon-plus'></i> " . $lang->story->create, '', "class='btn btn-primary'");
}
?>
</div>
</div>
+4 -4
View File
@@ -118,9 +118,9 @@ js::set('browseType', $browseType);
common::printIcon('task', 'report', "project=$projectID&browseType=$browseType", '', 'button', 'bar-chart muted');
?>
<div class="btn-group">
<div class="btn-group dropdown-hover">
<button class="btn btn-link" data-toggle="dropdown"><i class="icon icon-export muted"></i> <span class="text"><?php echo $lang->export;?></span> <span class="caret"></span></button>
<ul class="dropdown-menu" id='exportActionMenu'>
<ul class="dropdown-menu pull-right" id='exportActionMenu'>
<?php
$misc = common::hasPriv('task', 'export') ? "class='export'" : "class=disabled";
$link = common::hasPriv('task', 'export') ? $this->createLink('task', 'export', "project=$projectID&orderBy=$orderBy&type=$browseType") : '#';
@@ -129,9 +129,9 @@ js::set('browseType', $browseType);
</ul>
</div>
<div class="btn-group">
<div class="btn-group dropdown-hover">
<button class="btn btn-link" data-toggle="dropdown"><i class="icon icon-import muted"></i> <span class="text"><?php echo $lang->import;?></span> <span class="caret"></span></button>
<ul class="dropdown-menu" id='importActionMenu'>
<ul class="dropdown-menu pull-right" id='importActionMenu'>
<?php
$misc = common::hasPriv('project', 'importTask') ? "class='import'" : "class=disabled";
$link = common::hasPriv('project', 'importTask') ? $this->createLink('project', 'importTask', "project=$project->id") : '#';
+1 -1
View File
@@ -432,7 +432,7 @@ class storyModel extends model
->stripTags($this->config->story->editor->change['id'], $this->config->allowedTags)
->remove('files,labels,comment,needNotReview,uid')
->get();
if($this->checkForceReview()) $story->status = 'changed';
if($specChanged and $story->status == 'active' and $this->checkForceReview()) $story->status = 'changed';
$story = $this->loadModel('file')->processImgURL($story, $this->config->story->editor->change['id'], $this->post->uid);
$this->dao->update(TABLE_STORY)->data($story, 'spec,verify')
->autoCheck()
+1 -1
View File
@@ -83,7 +83,7 @@ $lang->task->openedDateAB = 'Add';
$lang->task->finishedBy = 'Finished';
$lang->task->finishedByAB = 'Finished';
$lang->task->finishedDate = 'Finished on';
$lang->task->finishedDateAB = 'Date';
$lang->task->finishedDateAB = 'Finished on';
$lang->task->canceledBy = 'Cancelled by';
$lang->task->canceledDate = 'Cancelled on';
$lang->task->closedBy = 'Closed by';
+1 -1
View File
@@ -83,7 +83,7 @@ $lang->task->openedDateAB = '创建';
$lang->task->finishedBy = '由谁完成';
$lang->task->finishedByAB = '完成者';
$lang->task->finishedDate = '完成时间';
$lang->task->finishedDateAB = '完成';
$lang->task->finishedDateAB = '完成时间';
$lang->task->canceledBy = '由谁取消';
$lang->task->canceledDate = '取消时间';
$lang->task->closedBy = '由谁关闭';
+1 -1
View File
@@ -83,7 +83,7 @@ $lang->task->openedDateAB = '創建';
$lang->task->finishedBy = '由誰完成';
$lang->task->finishedByAB = '完成者';
$lang->task->finishedDate = '完成時間';
$lang->task->finishedDateAB = '完成';
$lang->task->finishedDateAB = '完成時間';
$lang->task->canceledBy = '由誰取消';
$lang->task->canceledDate = '取消時間';
$lang->task->closedBy = '由誰關閉';
+1 -1
View File
@@ -24,7 +24,7 @@
<span class="text" style='color: <?php echo $task->color; ?>'>
<?php if(!empty($task->parent)) echo '<span class="label label-badge label-primary no-margin">' . $this->lang->task->childrenAB . '</span>';?>
<?php if(!empty($task->team)) echo '<span class="label label-badge label-primary no-margin">' . $this->lang->task->multipleAB . '</span>';?>
<?php echo isset($task->parentName) ? $task->parentName . '/' : '';?><?php echo $task->name;?>
<?php echo isset($task->parentName) ? html::a(inlink('view', "taskID={$task->parent}"), $task->parentName) . ' / ' : '';?><?php echo $task->name;?>
</span>
<?php if($task->deleted):?>
<span class='label label-danger'><?php echo $lang->task->deleted;?></span>
+22 -3
View File
@@ -251,7 +251,7 @@ class todo extends control
public function activate($todoID)
{
$todo = $this->todo->getById($todoID);
if($todo->status == 'done') $this->todo->activate($todoID);
if($todo->status == 'done' or $todo->status == 'closed') $this->todo->activate($todoID);
if(isonlybody()) die(js::reload('parent.parent'));
die(js::reload('parent'));
}
@@ -396,7 +396,7 @@ class todo extends control
public function finish($todoID)
{
$todo = $this->todo->getById($todoID);
if($todo->status != 'done') $this->todo->finish($todoID);
if($todo->status != 'done' && $todo->status != 'closed') $this->todo->finish($todoID);
if(in_array($todo->type, array('bug', 'task', 'story')))
{
$confirmNote = 'confirm' . ucfirst($todo->type);
@@ -421,7 +421,26 @@ class todo extends control
foreach($_POST['todoIDList'] as $todoID)
{
$todo = $this->todo->getById($todoID);
if($todo->status != 'done') $this->todo->finish($todoID);
if($todo->status != 'done' && $todo->status != 'closed') $this->todo->finish($todoID);
}
die(js::reload('parent'));
}
}
/**
* Batch close todos.
*
* @access public
* @return void
*/
public function batchClose()
{
if(!empty($_POST['todoIDList']))
{
foreach($_POST['todoIDList'] as $todoID)
{
$todo = $this->todo->getById($todoID);
if($todo->status == 'done') $this->todo->close($todoID);
}
die(js::reload('parent'));
}
+1
View File
@@ -18,6 +18,7 @@ $lang->todo->activate = "Activate";
$lang->todo->batchCreate = "Batch Add";
$lang->todo->edit = "Edit";
$lang->todo->close = "Close";
$lang->todo->batchClose = "Batch Close";
$lang->todo->batchEdit = "Batch Edit";
$lang->todo->view = "Overview";
$lang->todo->finish = "Finish";
+1
View File
@@ -18,6 +18,7 @@ $lang->todo->activate = "激活";
$lang->todo->batchCreate = "批量添加";
$lang->todo->edit = "编辑";
$lang->todo->close = "关闭";
$lang->todo->batchClose = "批量关闭";
$lang->todo->batchEdit = "批量编辑";
$lang->todo->view = "待办详情";
$lang->todo->finish = "完成";
+1
View File
@@ -18,6 +18,7 @@ $lang->todo->activate = "激活";
$lang->todo->batchCreate = "批量添加";
$lang->todo->edit = "編輯";
$lang->todo->close = "關閉";
$lang->todo->batchClose = "批量關閉";
$lang->todo->batchEdit = "批量編輯";
$lang->todo->view = "待辦詳情";
$lang->todo->finish = "完成";
+1 -1
View File
@@ -37,7 +37,7 @@
</div>
<div class='detail-content'><?php echo $todo->desc;?></div>
</div>
<div class='detail'><?php include '../../common/view/action.html.php';?></div>
<?php include '../../common/view/action.html.php';?>
</div>
</div>
<div class='side-col col-4'>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
-1
View File
@@ -8,5 +8,4 @@
* @version $Id: style.css 1454 2009-10-23 01:45:26Z wwccss $
* @link http://www.zentao.net
*/
.divider + .divider{display:none;}
.body-modal .main-header > h2{width: 100%; overflow:hidden; text-overflow: ellipsis; white-space: nowrap;}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long