This commit is contained in:
hufangzhou
2021-03-11 16:18:11 +08:00
53 changed files with 717 additions and 659 deletions

View File

@@ -159,21 +159,20 @@ $filter->product->default->cookie['lastProduct'] = 'int';
$filter->product->default->cookie['preProductID'] = 'int';
$filter->product->index->cookie['preBranch'] = 'int';
$filter->product->export->cookie['checkedItem'] = 'reg::checked';
$filter->product->project->cookie['PRJMine'] = 'code';
$filter->product->project->cookie['involved'] = 'code';
$filter->program->default->cookie['lastPGM'] = 'int';
$filter->program->default->cookie['lastPRJ'] = 'int';
$filter->program->prjbrowse->cookie['programType'] = 'code';
$filter->program->prjbrowse->cookie['PRJMine'] = 'code';
$filter->program->pgmproject->cookie['PRJMine'] = 'code';
$filter->program->prjbrowse->cookie['mine'] = 'code';
$filter->program->pgmbrowse->cookie['showClosed'] = 'code';
$filter->program->project->cookie['involved'] = 'code';
$filter->program->browse->cookie['showClosed'] = 'code';
$filter->program->export->cookie['checkedItem'] = 'reg::checked';
$filter->program->ajaxgetpgmdropmenu->cookie['showClosed'] = 'code';
$filter->project->default->cookie['lastProject'] = 'int';
$filter->project->default->cookie['lastPRJ'] = 'int';
$filter->project->default->cookie['projectMode'] = 'code';
$filter->project->browse->cookie['involved'] = 'code';
$filter->project->story->cookie['storyModuleParam'] = 'int';
$filter->project->story->cookie['storyPreProjectID'] = 'int';
$filter->project->story->cookie['storyProductParam'] = 'int';

View File

@@ -335,6 +335,5 @@ INSERT INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VA
('zh-cn', 'custom', 'URSRList', '1', '{\"SRName\":\"\\u8f6f\\u4ef6\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '2', '{\"SRName\":\"\\u7814\\u53d1\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '3', '{\"SRName\":\"\\u8f6f\\u9700\",\"URName\":\"\\u7528\\u9700\"}', '1'),
('zh-cn', 'custom', 'URSRList', '4', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '5', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u53f2\\u8bd7\"}', '1'),
('zh-cn', 'custom', 'URSRList', '6', '{\"SRName\":\"\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1');
('zh-cn', 'custom', 'URSRList', '4', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u53f2\\u8bd7\"}', '1'),
('zh-cn', 'custom', 'URSRList', '5', '{\"SRName\":\"\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1');

View File

@@ -1,346 +0,0 @@
ALTER TABLE `zt_project` DROP `isCat`, DROP `catID`;
ALTER TABLE `zt_project` ADD `project` mediumint(8) NOT NULL DEFAULT 0 AFTER `id`;
ALTER TABLE `zt_project` ADD `model` char(30) NOT NULL AFTER `project`;
ALTER TABLE `zt_project` CHANGE `type` `type` char(30) NOT NULL DEFAULT 'sprint' AFTER `model`;
ALTER TABLE `zt_project` CHANGE `acl` `acl` char(30) NOT NULL DEFAULT 'open';
ALTER TABLE `zt_project` ADD `product` varchar(20) NOT NULL DEFAULT 'single' AFTER `type`;
ALTER TABLE `zt_project` ADD `lifetime` char(30) NOT NULL AFTER `product`;
ALTER TABLE `zt_project` ADD `budget` varchar(30) NOT NULL DEFAULT '0' AFTER `lifetime`;
ALTER TABLE `zt_project` ADD `budgetUnit` char(30) NOT NULL DEFAULT 'yuan' AFTER `budget`;
ALTER TABLE `zt_project` ADD `percent` float unsigned NOT NULL DEFAULT '0' AFTER `budgetUnit`;
ALTER TABLE `zt_project` ADD `path` varchar(255) NOT NULL AFTER `parent`;
ALTER TABLE `zt_project` ADD `grade` tinyint unsigned NOT NULL AFTER `path`;
ALTER TABLE `zt_project` ADD `auth` char(30) NOT NULL AFTER `percent`;
ALTER TABLE `zt_project` ADD `milestone` enum('0','1') NOT NULL default '0' AFTER `percent`;
ALTER TABLE `zt_project` ADD `attribute` varchar(30) NOT NULL DEFAULT '' AFTER `budgetUnit`;
ALTER TABLE `zt_project` ADD `realBegan` date NOT NULL AFTER `end`;
ALTER TABLE `zt_project` ADD `realEnd` date NOT NULL AFTER `realBegan`;
ALTER TABLE `zt_project` ADD `version` smallint(6) NOT NULL AFTER `desc`;
ALTER TABLE `zt_project` ADD `parentVersion` smallint(6) NOT NULL AFTER `version`;
ALTER TABLE `zt_project` ADD `planDuration` int(11) NOT NULL AFTER `parentVersion`;
ALTER TABLE `zt_project` ADD `realDuration` int(11) NOT NULL AFTER `planDuration`;
ALTER TABLE `zt_project` ADD `output` text NOT NULL AFTER `milestone`;
ALTER TABLE `zt_product` ADD `program` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_product` ADD `bind` enum('0','1') NOT NULL DEFAULT '0' AFTER `code`;
ALTER TABLE `zt_task` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_doc` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_story` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_repo` ADD `PRJ` varchar(255) NOT NULL AFTER `id`;
ALTER TABLE `zt_bug` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_case` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_testtask` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_testreport` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_testsuite` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_build` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_release` ADD `PRJ` mediumint(8) unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_group` ADD `PRJ` mediumint NOT NULL AFTER `id`;
INSERT INTO `zt_group` (`name`, `role`, `desc`) VALUES ('项目管理员', 'PRJAdmin', '项目管理员可以维护项目的权限');
ALTER TABLE `zt_usergroup` ADD `PRJ` text NOT NULL;
ALTER TABLE `zt_userview` ADD `programs` mediumtext NOT NULL AFTER `account`;
ALTER TABLE `zt_userview` ADD `sprints` mediumtext NOT NULL AFTER `programs`;
ALTER TABLE `zt_user` ADD `company` mediumint unsigned NOT NULL AFTER `id`;
ALTER TABLE `zt_user` ADD `type` char(30) NOT NULL default 'inside' AFTER `account`;
ALTER TABLE `zt_user` ADD `nature` text NOT NULL AFTER `zipcode`;
ALTER TABLE `zt_user` ADD `analysis` text NOT NULL AFTER `nature`;
ALTER TABLE `zt_user` ADD `strategy` text NOT NULL AFTER `analysis`;
-- DROP TABLE IF EXISTS `zt_stage`;
CREATE TABLE IF NOT EXISTS `zt_stage` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`percent` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL,
`editedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_stakeholder`;
CREATE TABLE IF NOT EXISTS `zt_stakeholder` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`objectID` mediumint(8) NOT NULL,
`objectType` char(30) NOT NULL,
`user` char(30) NOT NULL,
`type` char(30) NOT NULL,
`key` enum('0','1') NOT NULL,
`from` char(30) NOT NULL,
`createdBy` char(30) NOT NULL,
`createdDate` date NOT NULL,
`editedBy` char(30) NOT NULL,
`editedDate` date NOT NULL,
`deleted` enum('0','1') NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_expect`;
CREATE TABLE IF NOT EXISTS `zt_expect` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`userID` mediumint(8) NOT NULL,
`PRJ` mediumint(8) NOT NULL DEFAULT 0,
`expect` text NOT NULL,
`progress` text NOT NULL,
`createdBy` char(30) NOT NULL,
`createdDate` date NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
REPLACE INTO `zt_stage` (`name`,`percent`,`type`,`createdBy`,`createdDate`,`editedBy`,`editedDate`,`deleted`) VALUES
('需求','10','request','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
('设计','10','design','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
('开发','50','dev','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
('测试','15','qa','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
('发布','10','release','admin','2020-02-08 21:08:30','admin','2020-02-12 13:50:27','0'),
('总结评审','5','review','admin','2020-02-08 21:08:45','admin','2020-02-12 13:50:27','0');
-- DROP TABLE IF EXISTS `zt_design`;
CREATE TABLE IF NOT EXISTS `zt_design` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`PRJ` varchar(255) NOT NULL,
`product` varchar(255) NOT NULL,
`commit` text NOT NULL,
`project` mediumint(9) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL,
`status` varchar(30) NOT NULL,
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL,
`editedDate` datetime NOT NULL,
`assignedTo` varchar(30) NOT NULL,
`assignedBy` varchar(30) NOT NULL,
`assignedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
`story` char(30) NOT NULL,
`desc` text NOT NULL,
`version` smallint(6) NOT NULL,
`type` char(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_designspec` (
`design` mediumint(8) NOT NULL,
`version` smallint(6) NOT NULL,
`name` varchar(255) NOT NULL,
`desc` text NOT NULL,
`files` varchar(255) NOT NULL,
UNIQUE KEY `design` (`design`,`version`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_issue`;
CREATE TABLE IF NOT EXISTS `zt_issue` (
`id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`resolvedBy` varchar(30) NOT NULL,
`PRJ` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`desc` text NOT NULL,
`pri` char(30) NOT NULL,
`severity` char(30) NOT NULL,
`type` char(30) NOT NULL,
`activity` varchar(255) NOT NULL,
`deadline` date NOT NULL,
`resolution` char(30) NOT NULL,
`resolutionComment` text NOT NULL,
`objectID` varchar(255) NOT NULL,
`resolvedDate` date NOT NULL,
`status` varchar(30) NOT NULL,
`owner` varchar(255) NOT NULL,
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL,
`editedDate` datetime NOT NULL,
`activateBy` varchar(30) NOT NULL,
`activateDate` date NOT NULL,
`closedBy` varchar(30) NOT NULL,
`closedDate` date NOT NULL,
`assignedTo` varchar(30) NOT NULL,
`assignedBy` varchar(30) NOT NULL,
`assignedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_risk` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`PRJ` varchar(255) NOT NULL,
`name` varchar(255) NOT NULL,
`source` char(30) NOT NULL,
`category` char(30) NOT NULL,
`strategy` char(30) NOT NULL,
`status` varchar(30) NOT NULL DEFAULT 'active',
`impact` char(30) NOT NULL,
`probability` char(30) NOT NULL,
`rate` char(30) NOT NULL,
`pri` char(30) NOT NULL,
`identifiedDate` date NOT NULL,
`prevention` text NOT NULL,
`remedy` text NOT NULL,
`plannedClosedDate` date NOT NULL,
`actualClosedDate` date NOT NULL,
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL,
`editedDate` datetime NOT NULL,
`resolution` text NOT NULL,
`resolvedBy` varchar(30) NOT NULL,
`activateBy` varchar(30) NOT NULL,
`activateDate` date NOT NULL,
`assignedTo` varchar(30) NOT NULL,
`cancelBy` varchar(30) NOT NULL,
`cancelDate` date NOT NULL,
`cancelReason` char(30) NOT NULL,
`hangupBy` varchar(30) NOT NULL,
`hangupDate` date NOT NULL,
`trackedBy` varchar(30) NOT NULL,
`trackedDate` date NOT NULL,
`assignedDate` date NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_projectspec`;
CREATE TABLE IF NOT EXISTS `zt_projectspec` (
`project` mediumint(8) NOT NULL,
`version` smallint(6) NOT NULL,
`name` varchar(255) NOT NULL,
`milestone` enum('0','1') NOT NULL DEFAULT '0',
`begin` date NOT NULL,
`end` date NOT NULL,
UNIQUE KEY `project` (`project`,`version`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_budget`;
CREATE TABLE IF NOT EXISTS `zt_budget` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`PRJ` mediumint(8) NOT NULL,
`stage` char(30) NOT NULL,
`subject` mediumint(8) NOT NULL,
`amount` char(30) NOT NULL,
`name` varchar(255) NOT NULL,
`desc` text NOT NULL,
`createdBy` char(30) NOT NULL,
`createdDate` date NOT NULL,
`lastEditedBy` char(30) NOT NULL,
`lastEditedDate` date NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_durationestimation`;
CREATE TABLE IF NOT EXISTS `zt_durationestimation` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`PRJ` mediumint(8) unsigned NOT NULL,
`stage` mediumint(9) NOT NULL,
`workload` varchar(255) NOT NULL,
`worktimeRate` varchar(255) NOT NULL,
`people` varchar(255) NOT NULL,
`startDate` date NOT NULL,
`endDate` date NOT NULL,
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL,
`editedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_workestimation`;
CREATE TABLE IF NOT EXISTS `zt_workestimation` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`PRJ` mediumint(8) unsigned NOT NULL,
`scale` mediumint(8) unsigned NOT NULL,
`productivity` smallint(3) unsigned NOT NULL,
`duration` mediumint(8) unsigned NOT NULL,
`unitLaborCost` mediumint(8) unsigned NOT NULL,
`totalLaborCost` mediumint(8) unsigned NOT NULL,
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL,
`editedDate` datetime NOT NULL,
`assignedTo` varchar(30) NOT NULL,
`assignedDate` datetime NOT NULL,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
`dayHour` float(5,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_holiday` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL DEFAULT '',
`type` enum('holiday', 'working') NOT NULL DEFAULT 'holiday',
`desc` text NOT NULL,
`year` char(4) NOT NULL,
`begin` date NOT NULL,
`end` date NOT NULL,
PRIMARY KEY (`id`),
KEY `year` (`year`),
KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER TABLE `zt_task` ADD `design` mediumint(8) unsigned NOT NULL AFTER `module`;
ALTER TABLE `zt_task` ADD `version` smallint(6) NOT NULL AFTER `desc`;
ALTER TABLE `zt_task` ADD `activatedDate` date NOT NULL AFTER `lastEditedDate`;
ALTER TABLE `zt_task` ADD `planDuration` int(11) NOT NULL AFTER `closedDate`;
ALTER TABLE `zt_task` ADD `realDuration` int(11) NOT NULL AFTER `closedDate`;
ALTER TABLE `zt_task` ADD `designVersion` smallint(6) unsigned NOT NULL AFTER `storyVersion`;
ALTER TABLE `zt_burn` ADD `storyPoint` float NOT NULL AFTER `consumed`;
ALTER TABLE `zt_burn` ADD `product` mediumint(8) unsigned NOT NULL DEFAULT '0' AFTER `project`;
-- DROP TABLE IF EXISTS `zt_taskspec`;
CREATE TABLE IF NOT EXISTS `zt_taskspec` (
`task` mediumint(8) NOT NULL,
`version` smallint(6) NOT NULL,
`name` varchar(255) NOT NULL,
`estStarted` date NOT NULL,
`deadline` date NOT NULL,
UNIQUE KEY `task` (`task`,`version`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_weeklyreport`(
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`PRJ` mediumint(8) unsigned NOT NULL,
`weekStart` date NOT NULL,
`pv` float(9,2) NOT NULL,
`ev` float(9,2) NOT NULL,
`ac` float(9,2) NOT NULL,
`sv` float(9,2) NOT NULL,
`cv` float(9,2) NOT NULL,
`staff` smallint(5) unsigned NOT NULL,
`progress` varchar(255) NOT NULL,
`workload` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `week` (`PRJ`,`weekStart`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
ALTER TABLE `zt_block` ADD `type` char(30) NOT NULL AFTER `module`;
ALTER TABLE `zt_block` ADD UNIQUE `account_module_type_order` (`account`, `module`, `type`, `order`), DROP INDEX `accountModuleOrder`;
INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type`, `buildin`, `status`, `lastTime`) VALUES ('1', '0', '*', '*', '*', 'moduleName=weekly&methodName=computeWeekly', '更新项目周报', 'system', 0, 'normal', '2020-08-27 10:07:53');
ALTER TABLE `zt_story` ADD `URChanged` enum('0','1') NOT NULL DEFAULT '0' AFTER `version`;
ALTER TABLE `zt_team` MODIFY `type` enum('project','task','stage','sprint') NOT NULL DEFAULT 'project' AFTER `root`;
CREATE TABLE IF NOT EXISTS `zt_planstory` (
`plan` mediumint(8) unsigned NOT NULL,
`story` mediumint(8) unsigned NOT NULL,
`order` mediumint(9) NOT NULL,
UNIQUE KEY `unique` (`plan`,`story`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `zt_acl` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`account` char(30) NOT NULL,
`objectType` char(30) NOT NULL,
`objectID` mediumint(9) NOT NULL DEFAULT '0',
`type` char(40) NOT NULL DEFAULT 'whitelist',
`source` char(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

View File

@@ -1,23 +0,0 @@
ALTER TABLE `zt_workestimation`
MODIFY COLUMN `scale` decimal(10, 2) UNSIGNED NOT NULL AFTER `PRJ`,
MODIFY COLUMN `productivity` decimal(10, 2) UNSIGNED NOT NULL AFTER `scale`,
MODIFY COLUMN `duration` decimal(10, 2) UNSIGNED NOT NULL AFTER `productivity`,
MODIFY COLUMN `unitLaborCost` decimal(10, 2) UNSIGNED NOT NULL AFTER `duration`,
MODIFY COLUMN `totalLaborCost` decimal(10, 2) UNSIGNED NOT NULL AFTER `unitLaborCost`,
MODIFY COLUMN `dayHour` decimal(10, 2) NULL DEFAULT NULL AFTER `deleted`;
ALTER TABLE `zt_project` ADD `storyConcept` smallint(5) unsigned NOT NULL AFTER `days`;
ALTER TABLE `zt_product` ADD `storyConcept` smallint(5) NOT NULL AFTER `RD`;
INSERT INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VALUES
('zh-cn', 'custom', 'URList', '1', '用户需求', '1'),
('zh-cn', 'custom', 'URList', '2', '用需', '1'),
('zh-cn', 'custom', 'URList', '3', '需求', '1'),
('zh-cn', 'custom', 'URList', '4', '史诗', '1'),
('zh-cn', 'custom', 'SRList', '1', '软件需求', '1'),
('zh-cn', 'custom', 'SRList', '2', '软需', '1'),
('zh-cn', 'custom', 'SRList', '3', '故事', '1'),
('zh-cn', 'custom', 'SRList', '4', '故事', '1');
TRUNCATE TABLE `zt_block`;
DELETE FROM `zt_config` WHERE `key` = 'blockInited';

View File

@@ -1,14 +0,0 @@
ALTER TABLE `zt_design` MODIFY `commit` text NOT NULL AFTER `product`;
ALTER TABLE `zt_design` ADD `commitedBy` varchar(30) NOT NULL AFTER `commit`;
DELETE FROM `zt_lang` WHERE `section` = 'URSRList' or `section` = 'URList' or `section` = 'SRList';
INSERT INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VALUES
('zh-cn', 'custom', 'URSRList', '1', '{\"SRName\":\"\\u8f6f\\u4ef6\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '2', '{\"SRName\":\"\\u8f6f\\u9700\",\"URName\":\"\\u7528\\u9700\"}', '1'),
('zh-cn', 'custom', 'URSRList', '3', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '4', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u53f2\\u8bd7\"}', '1');
DELETE FROM `zt_config` WHERE `key` = 'URSRName' or `key` = 'URAndSR';
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'custom', '', 'URSR', '3');
UPDATE `zt_block` SET title = '指派给我', source = '', block = 'assigntome', params='{"todoNum":"20","taskNum":"20","bugNum":"20","riskNum":"20","issueNum":"20","storyNum":"20"}' WHERE module = 'my' AND block = 'task';

View File

@@ -1,4 +0,0 @@
ALTER TABLE `zt_risk` add `closedBy` char(30) AFTER `assignedTo`;
ALTER TABLE `zt_risk` add `closedDate` date AFTER `closedBy`;
ALTER TABLE `zt_repo` CHANGE `PRJ` `product` varchar(255) NOT NULL AFTER `id`;
ALTER TABLE `zt_project` CHANGE `budgetUnit` `budgetUnit` char(30) NOT NULL DEFAULT 'wanyuan' AFTER `budget`;

View File

@@ -1,173 +0,0 @@
REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'product', 'dashboard'),
(1, 'projectstory', 'story'),
(1, 'projectstory', 'track'),
(1, 'projectstory', 'view'),
(1, 'projectstory', 'linkStory'),
(1, 'projectstory', 'unLinkStory'),
(1, 'my', 'preference'),
(1, 'my', 'uploadAvatar'),
(1, 'user', 'execution'),
(1, 'user', 'issue'),
(1, 'user', 'risk'),
(1, 'user', 'cropAvatar'),
(1, 'program', 'PRJView'),
(2, 'product', 'dashboard'),
(2, 'projectstory', 'story'),
(2, 'projectstory', 'track'),
(2, 'projectstory', 'view'),
(2, 'my', 'preference'),
(2, 'my', 'uploadAvatar'),
(2, 'user', 'execution'),
(2, 'user', 'issue'),
(2, 'user', 'risk'),
(2, 'user', 'cropAvatar'),
(3, 'product', 'dashboard'),
(3, 'projectstory', 'story'),
(3, 'projectstory', 'track'),
(3, 'projectstory', 'view'),
(3, 'my', 'preference'),
(3, 'my', 'uploadAvatar'),
(3, 'user', 'execution'),
(3, 'user', 'issue'),
(3, 'user', 'risk'),
(3, 'user', 'cropAvatar'),
(4, 'product', 'dashboard'),
(4, 'projectstory', 'story'),
(4, 'projectstory', 'track'),
(4, 'projectstory', 'view'),
(4, 'my', 'preference'),
(4, 'my', 'uploadAvatar'),
(4, 'user', 'execution'),
(4, 'user', 'issue'),
(4, 'user', 'risk'),
(4, 'user', 'cropAvatar'),
(4, 'program', 'PRJView'),
(5, 'product', 'dashboard'),
(5, 'projectstory', 'story'),
(5, 'projectstory', 'track'),
(5, 'projectstory', 'view'),
(5, 'projectstory', 'linkStory'),
(5, 'projectstory', 'unLinkStory'),
(5, 'my', 'preference'),
(5, 'my', 'uploadAvatar'),
(5, 'user', 'execution'),
(5, 'user', 'issue'),
(5, 'user', 'risk'),
(5, 'user', 'cropAvatar'),
(5, 'program', 'PRJView'),
(6, 'product', 'dashboard'),
(6, 'projectstory', 'story'),
(6, 'projectstory', 'track'),
(6, 'projectstory', 'view'),
(6, 'my', 'preference'),
(6, 'my', 'uploadAvatar'),
(6, 'user', 'execution'),
(6, 'user', 'issue'),
(6, 'user', 'risk'),
(6, 'user', 'cropAvatar'),
(6, 'program', 'PRJView'),
(7, 'product', 'dashboard'),
(7, 'projectstory', 'story'),
(7, 'projectstory', 'track'),
(7, 'projectstory', 'view'),
(7, 'projectstory', 'linkStory'),
(7, 'projectstory', 'unLinkStory'),
(7, 'my', 'preference'),
(7, 'my', 'uploadAvatar'),
(7, 'user', 'execution'),
(7, 'user', 'issue'),
(7, 'user', 'risk'),
(7, 'user', 'cropAvatar'),
(7, 'program', 'PRJView'),
(8, 'product', 'dashboard'),
(8, 'projectstory', 'story'),
(8, 'projectstory', 'track'),
(8, 'projectstory', 'view'),
(8, 'my', 'preference'),
(8, 'my', 'uploadAvatar'),
(8, 'user', 'execution'),
(8, 'user', 'issue'),
(8, 'user', 'risk'),
(8, 'user', 'cropAvatar'),
(8, 'program', 'PRJView'),
(9, 'product', 'dashboard'),
(9, 'projectstory', 'story'),
(9, 'projectstory', 'track'),
(9, 'projectstory', 'view'),
(9, 'projectstory', 'linkStory'),
(9, 'projectstory', 'unLinkStory'),
(9, 'my', 'preference'),
(9, 'my', 'uploadAvatar'),
(9, 'user', 'execution'),
(9, 'user', 'issue'),
(9, 'user', 'risk'),
(9, 'user', 'cropAvatar'),
(9, 'program', 'PRJView'),
(10, 'product', 'dashboard'),
(10, 'projectstory', 'story'),
(10, 'projectstory', 'track'),
(10, 'projectstory', 'view'),
(10, 'my', 'preference'),
(10, 'my', 'uploadAvatar'),
(10, 'user', 'execution'),
(10, 'user', 'issue'),
(10, 'user', 'risk'),
(10, 'user', 'cropAvatar'),
(11, 'product', 'dashboard'),
(11, 'projectstory', 'story'),
(11, 'projectstory', 'track'),
(11, 'projectstory', 'view'),
(11, 'my', 'preference'),
(11, 'my', 'uploadAvatar'),
(11, 'user', 'execution'),
(11, 'user', 'issue'),
(11, 'user', 'risk'),
(11, 'user', 'cropAvatar');
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'program', '', 'unitList', 'CNY,USD');
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'program', '', 'defaultCurrency', 'CNY');
ALTER TABLE `zt_project` DROP `storyConcept`;
ALTER TABLE `zt_product` DROP `storyConcept`;
ALTER TABLE `zt_user` CHANGE `avatar` `avatar` text NOT NULL AFTER `commiter`;
ALTER TABLE `zt_project` CHANGE `budgetUnit` `budgetUnit` char(30) NOT NULL DEFAULT 'CNY' AFTER `budget`;
-- DROP TABLE IF EXISTS `zt_searchindex`;
CREATE TABLE IF NOT EXISTS `zt_searchindex` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`objectType` char(20) NOT NULL,
`objectID` mediumint(9) NOT NULL,
`title` text NOT NULL,
`content` text NOT NULL,
`addedDate` datetime NOT NULL,
`editedDate` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `object` (`objectType`,`objectID`),
KEY `addedDate` (`addedDate`),
FULLTEXT KEY `content` (`content`),
FULLTEXT KEY `title` (`title`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_searchdict`;
CREATE TABLE IF NOT EXISTS `zt_searchdict` (
`key` smallint(5) unsigned NOT NULL,
`value` char(3) NOT NULL,
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'search', 'index'),
(2, 'search', 'index'),
(3, 'search', 'index'),
(4, 'search', 'index'),
(5, 'search', 'index'),
(6, 'search', 'index'),
(7, 'search', 'index'),
(8, 'search', 'index'),
(9, 'search', 'index'),
(10, 'search', 'index'),
(1, 'search', 'buildIndex');
ALTER TABLE `zt_config` MODIFY COLUMN `value` longtext NOT NULL AFTER `key`;

View File

@@ -4138,9 +4138,8 @@ INSERT INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`) VA
('zh-cn', 'custom', 'URSRList', '1', '{\"SRName\":\"\\u8f6f\\u4ef6\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '2', '{\"SRName\":\"\\u7814\\u53d1\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '3', '{\"SRName\":\"\\u8f6f\\u9700\",\"URName\":\"\\u7528\\u9700\"}', '1'),
('zh-cn', 'custom', 'URSRList', '4', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u9700\\u6c42\"}', '1'),
('zh-cn', 'custom', 'URSRList', '5', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u53f2\\u8bd7\"}', '1'),
('zh-cn', 'custom', 'URSRList', '6', '{\"SRName\":\"\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1');
('zh-cn', 'custom', 'URSRList', '4', '{\"SRName\":\"\\u6545\\u4e8b\",\"URName\":\"\\u53f2\\u8bd7\"}', '1'),
('zh-cn', 'custom', 'URSRList', '5', '{\"SRName\":\"\\u9700\\u6c42\",\"URName\":\"\\u7528\\u6237\\u9700\\u6c42\"}', '1');
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'custom', '', 'hourPoint', '1');
INSERT INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', '', 'CRProduct', '1');

View File

@@ -0,0 +1 @@
<?php

View File

@@ -0,0 +1,70 @@
<?php
/**
* The control file of automation module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package automation
* @version $Id: control.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
class automation extends control
{
/**
* Project id.
*
* @var int
* @access public
*/
public $projectID = 0;
/**
* Products.
*
* @var array
* @access public
*/
public $products = array();
/**
* Construct function, load product module, assign products to view auto.
*
* @access public
* @return void
*/
public function __construct($moduleName = '', $methodName = '')
{
parent::__construct($moduleName, $methodName);
/* Set testtask menu group. */
$this->projectID = isset($_GET['PRJ']) ? $_GET['PRJ'] : 0;
if(!$this->projectID)
{
$this->app->loadConfig('qa');
foreach($this->config->qa->menuList as $module) $this->lang->navGroup->$module = 'qa';
}
$this->view->products = $this->products = $this->loadModel('product')->getProductPairsByProject($this->projectID);
}
/**
* Automation details.
*
* @param int $productID
* @param int $branch
* @access public
* @return void
*/
public function browse($productID = 0, $branch = 0)
{
/* Set menu. */
$productID = $this->product->saveState($productID, $this->products);
if(empty($branch)) $branch = (int)$this->cookie->preBranch;
$this->automation->setMenu($this->products, $productID, $branch);
$this->view->title = $this->lang->automation->common;
$this->view->position[] = $this->lang->automation->index;
$this->display();
}
}

View File

@@ -0,0 +1,87 @@
<?php
/**
* The admin module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package admin
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
$lang->admin->common = 'Admin';
$lang->admin->index = 'Admin Home';
$lang->admin->checkDB = 'Datenbank prüfen';
$lang->admin->sso = 'SSO';
$lang->admin->ssoAction = 'Link Zdoo';
$lang->admin->safeIndex = 'Sicherheit';
$lang->admin->checkWeak = 'Schwache Passwörter prüfen';
$lang->admin->certifyMobile = 'Prüfen Sie die Mobilnummer';
$lang->admin->certifyEmail = 'Prüfen Sie die Emailadresse';
$lang->admin->ztCompany = 'Prüfen Sie das Unternehmen';
$lang->admin->captcha = 'Bestätigungscode';
$lang->admin->getCaptcha = 'Bestätigungscode anfordern';
$lang->admin->register = 'Register';
$lang->admin->api = 'API';
$lang->admin->log = 'Log';
$lang->admin->setting = 'Einstellungen';
$lang->admin->days = 'Gültige Tage';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'Aktuelle Version ist %s. ';
$lang->admin->info->links = 'You can visit links below';
$lang->admin->info->account = 'Ihr ZenTao Konto ist %s.';
$lang->admin->info->log = 'Logs die über die Gültigen Tage hinausgehen werden gelöscht. Aufgabenplanung muss laufen (cron).';
$lang->admin->notice = new stdclass();
$lang->admin->notice->register = "Hinweiß: Sie haben sich nicht bei ZenTao (www.zentao.pm) registriert. %s um die aktuellen Updates und News zu erhalten.";
$lang->admin->notice->ignore = "Ignorieren";
$lang->admin->notice->int = "『%s』sollte eine positive Zahl sein.";
$lang->admin->registerNotice = new stdclass();
$lang->admin->registerNotice->common = 'Verbinde neues Konto';
$lang->admin->registerNotice->caption = 'In der Zentao Community registieren';
$lang->admin->registerNotice->click = 'Bitte registieren Sie sich hier';
$lang->admin->registerNotice->lblAccount = 'mindestens 3 Zeichen bitte; mit Buchsten und Ziffern.';
$lang->admin->registerNotice->lblPasswd = 'mindestens 6 Zeichen bitte; mit Buchsten und Ziffern.';
$lang->admin->registerNotice->submit = 'Registieren';
$lang->admin->registerNotice->bind = "Verbinde bestehendes Konto";
$lang->admin->registerNotice->success = "Sie haben sich erfolgreich registriert!";
$lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Konto verknüpfen';
$lang->admin->bind->success = "Konto wurde verknüpft!";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Sicherheits-Regeln';
$lang->admin->safe->set = 'PasswortStärke';
$lang->admin->safe->password = 'Passwort Stärke';
$lang->admin->safe->weak = 'Schwache Passwörter';
$lang->admin->safe->reason = 'Typ';
$lang->admin->safe->checkWeak = 'Schwache Passwörter prüfen';
$lang->admin->safe->changeWeak = 'Ihr Passwort ist schwach. Bitte ändern.';
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Passwort nach der ersten Anmeldung ändern';
$lang->admin->safe->modeList[0] = 'N/A';
$lang->admin->safe->modeList[1] = 'Medium';
$lang->admin->safe->modeList[2] = 'Stark';
$lang->admin->safe->modeRuleList[1] = 'Beinhaltet Groß und Kleinbuchstaben sowie Ziffern. Länge >= 6';
$lang->admin->safe->modeRuleList[2] = 'Beinhaltet Groß und Kleinbuchstaben, Ziffern sowie Sonderzeichen. Länge >= 10.';
$lang->admin->safe->reasonList['weak'] = 'Bekannte Schwache Passwörter';
$lang->admin->safe->reasonList['account'] = 'Entspricht ihrem Konto';
$lang->admin->safe->reasonList['mobile'] = 'Entspricht Ihrer Mobilnummer';
$lang->admin->safe->reasonList['phone'] = 'Entspricht Ihrer Telefonnummer';
$lang->admin->safe->reasonList['birthday'] = 'Entspricht Ihrem Geburtstag';
$lang->admin->safe->modifyPasswordList[1] = 'Ja';
$lang->admin->safe->modifyPasswordList[0] = 'Nein';
$lang->admin->safe->loginCaptchaList[1] = 'Ja';
$lang->admin->safe->loginCaptchaList[0] = 'Nein';
$lang->admin->safe->noticeMode = 'Password will be checked when a user logs in, or a user is added or edited.';
$lang->admin->safe->noticeStrong = '';

View File

@@ -0,0 +1,87 @@
<?php
/**
* The admin module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package admin
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
$lang->admin->common = 'Admin';
$lang->admin->index = 'Admin Home';
$lang->admin->checkDB = 'Check Database';
$lang->admin->sso = 'Zdoo';
$lang->admin->ssoAction = 'Link Zdoo';
$lang->admin->safeIndex = 'Security';
$lang->admin->checkWeak = 'Check Weak Password';
$lang->admin->certifyMobile = 'Verify your cellphone';
$lang->admin->certifyEmail = 'Verify your Email';
$lang->admin->ztCompany = 'Verify your company';
$lang->admin->captcha = 'Verification Code';
$lang->admin->getCaptcha = 'Send Verification Code';
$lang->admin->register = 'Register';
$lang->admin->api = 'API';
$lang->admin->log = 'Log';
$lang->admin->setting = 'Setting';
$lang->admin->days = 'Valid Day';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'Current Version is %s. ';
$lang->admin->info->links = 'You can visit links below';
$lang->admin->info->account = 'Your ZenTao account is %s.';
$lang->admin->info->log = 'Log that exceeds valid days will be deleted and you have to run cron.';
$lang->admin->notice = new stdclass();
$lang->admin->notice->register = "Note: You haven't registered in ZenTao official website(www.zentao.pm). %s then get the Latest ZenTao Upgrades and News.";
$lang->admin->notice->ignore = "Ignore";
$lang->admin->notice->int = "『%s』should be a positive integer.";
$lang->admin->registerNotice = new stdclass();
$lang->admin->registerNotice->common = 'Bind Account';
$lang->admin->registerNotice->caption = 'ZenTao Community Signup';
$lang->admin->registerNotice->click = 'Sign Up';
$lang->admin->registerNotice->lblAccount = '>= 3 letters and numbers';
$lang->admin->registerNotice->lblPasswd = '>= 6 letters and numbers';
$lang->admin->registerNotice->submit = 'Submit';
$lang->admin->registerNotice->bind = "Bind Exsiting Account";
$lang->admin->registerNotice->success = "You have signed up!";
$lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Link Account';
$lang->admin->bind->success = "Account is linked!";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Security Policy';
$lang->admin->safe->set = 'Password Settings';
$lang->admin->safe->password = 'Password Strength';
$lang->admin->safe->weak = 'Common Weak Passwords';
$lang->admin->safe->reason = 'Type';
$lang->admin->safe->checkWeak = 'Weak Password Scan';
$lang->admin->safe->changeWeak = 'Force to change weak password';
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Force to change password after first login';
$lang->admin->safe->modeList[0] = 'I don\'t care.';
$lang->admin->safe->modeList[1] = 'Medium';
$lang->admin->safe->modeList[2] = 'Strong';
$lang->admin->safe->modeRuleList[1] = ' >= 6 upper and lower case, and numbers';
$lang->admin->safe->modeRuleList[2] = ' >= 10 upper and lower case, numbers and special characters.';
$lang->admin->safe->reasonList['weak'] = 'Common Weak Password';
$lang->admin->safe->reasonList['account'] = 'Same as account';
$lang->admin->safe->reasonList['mobile'] = 'Same as mobilephone number';
$lang->admin->safe->reasonList['phone'] = 'Same as phone number';
$lang->admin->safe->reasonList['birthday'] = 'Same as DOB';
$lang->admin->safe->modifyPasswordList[1] = 'Yes';
$lang->admin->safe->modifyPasswordList[0] = 'No';
$lang->admin->safe->loginCaptchaList[1] = 'Yes'
$lang->admin->safe->loginCaptchaList[0] = 'No';
$lang->admin->safe->noticeMode = 'Password will be checked when a user logs in, or a user is added or edited.';
$lang->admin->safe->noticeStrong = '';

View File

@@ -0,0 +1,87 @@
<?php
/**
* The admin module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package admin
* @version $Id: en.php 4460 2013-02-26 02:28:02Z chencongzhi520@gmail.com $
* @link https://www.zentao.pm
*/
$lang->admin->common = 'Admin';
$lang->admin->index = 'Admin Home';
$lang->admin->checkDB = 'Check Database';
$lang->admin->sso = 'Zdoo';
$lang->admin->ssoAction = 'Link Zdoo';
$lang->admin->safeIndex = 'Sécurité';
$lang->admin->checkWeak = 'Contrôle niveau de sécurité des mots de passe';
$lang->admin->certifyMobile = 'Vérifier votre smartphone';
$lang->admin->certifyEmail = 'Vérifier votre Email';
$lang->admin->ztCompany = 'Vérifier votre entreprise';
$lang->admin->captcha = 'Code de vérification';
$lang->admin->getCaptcha = 'Obtenir le Code de vérification';
$lang->admin->register = 'Register';
$lang->admin->api = 'API';
$lang->admin->log = 'Log';
$lang->admin->setting = 'Paramétrage';
$lang->admin->days = 'Durée de conservation';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'La version actuelle est %s customisée. ';
$lang->admin->info->links = 'Vous pouvez visiter les liens ci-dessous';
$lang->admin->info->account = 'Votre identifiant client ZenTao est %s.';
$lang->admin->info->log = 'Les logs qui dépassent la durée de conservation seront supprimés et vous devrez exécuter un cron.';
$lang->admin->notice = new stdclass();
$lang->admin->notice->register = "Note: Vous n'êtes pas enregistré sur le site officiel de ZenTao (www.zentao.pm). %s vous pourrez ensuite obtenir les dernières Mises à Jour de ZenTao et des informations.";
$lang->admin->notice->ignore = "Ignorer";
$lang->admin->notice->int = "『 %s 』 devrait être un entier positif.";
$lang->admin->registerNotice = new stdclass();
$lang->admin->registerNotice->common = 'Connectez-vous avec votre nouveau compte';
$lang->admin->registerNotice->caption = "S'enregistrer sur la communauté Zentao";
$lang->admin->registerNotice->click = "S'enregistrer ici";
$lang->admin->registerNotice->lblAccount = '>= 3 lettres et chiffres';
$lang->admin->registerNotice->lblPasswd = '>= 6 lettres et chiffres';
$lang->admin->registerNotice->submit = "S'enregistrer";
$lang->admin->registerNotice->bind = "S'associer à un compte existant";
$lang->admin->registerNotice->success = "Vous êtes enregistré !";
$lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Lier au compte';
$lang->admin->bind->success = "Le compte est associé !";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Politique de sécurité';
$lang->admin->safe->set = 'Paramétrages du Mot de passe';
$lang->admin->safe->password = 'Force du Mot de passe';
$lang->admin->safe->weak = 'Mots de passes non sécurisés courrants';
$lang->admin->safe->reason = 'Type';
$lang->admin->safe->checkWeak = 'Balayage des mots de passe faibles';
$lang->admin->safe->changeWeak = 'Forcer le changement des mots de passe faibles';
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Forcer le changement du mot de passe après la première connexion';
$lang->admin->safe->modeList[0] = "Contrôle Modéré";
$lang->admin->safe->modeList[1] = 'Contrôle Moyen';
$lang->admin->safe->modeList[2] = 'Contrôle Fort';
$lang->admin->safe->modeRuleList[1] = ' >= 6 Majuscules, minuscules et chiffres';
$lang->admin->safe->modeRuleList[2] = ' >= 10 Majuscules, minuscules, chiffres et caractères spéciaux';
$lang->admin->safe->reasonList['weak'] = 'Mots de passe faibles courants';
$lang->admin->safe->reasonList['account'] = 'Identique au compte';
$lang->admin->safe->reasonList['mobile'] = 'Identique au numéro de mobile';
$lang->admin->safe->reasonList['phone'] = 'Identique au téléphone fixe';
$lang->admin->safe->reasonList['birthday'] = 'Identique à la date de naissance';
$lang->admin->safe->modifyPasswordList[1] = 'Oui';
$lang->admin->safe->modifyPasswordList[0] = 'Non';
$lang->admin->safe->loginCaptchaList[1] = 'Oui'
$lang->admin->safe->loginCaptchaList[0] = 'Non';
$lang->admin->safe->noticeMode = "Le mot de passe sera vérifié quand un utilisateur se connectera ou qu'un utilisateur sera créé ou modifier.";
$lang->admin->safe->noticeStrong = '';

View File

@@ -0,0 +1,87 @@
<?php
/**
* The admin module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Nguyễn Quốc Nho <quocnho@gmail.com>
* @package admin
* @version $Id: vi.php 4460 2013-02-26 02:28:02Z quocnho@gmail.com $
* @link http://www.zentao.net
*/
$lang->admin->common = 'Quản trị';
$lang->admin->index = 'Trang quản trị';
$lang->admin->checkDB = 'Kiểm tra CSDL';
$lang->admin->sso = 'Zdoo';
$lang->admin->ssoAction = 'Liên kết Zdoo';
$lang->admin->safeIndex = 'Bảo mật';
$lang->admin->checkWeak = 'Kiểm tra độ yếu mật khẩu';
$lang->admin->certifyMobile = 'Xác thực di động của bạn';
$lang->admin->certifyEmail = 'Xác thực email của bạn';
$lang->admin->ztCompany = 'Xác thực doanh nghiệp của bạn';
$lang->admin->captcha = 'Mã xác thực';
$lang->admin->getCaptcha = 'Gửi Mã xác thực';
$lang->admin->register = 'Register';
$lang->admin->api = 'API';
$lang->admin->log = 'Nhật ký';
$lang->admin->setting = 'Thiết lập';
$lang->admin->days = 'Ngày hợp lệ';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'Phiên bản hiện tại là %s. ';
$lang->admin->info->links = ' Bạn có thể ghé thăm liên kết sau';
$lang->admin->info->account = 'Tài khoản ZenTao của bạn là %s.';
$lang->admin->info->log = 'Nhật ký vượt quá ngày hợp lệ sẽ bị xóa và bạn phải chay Cron.';
$lang->admin->notice = new stdclass();
$lang->admin->notice->register = "Chú ý: Bạn chưa đăng ký trên trang web chính thức của ZenTao (www.zentao.pm). %s sau đó nhận Bản tin và nâng cấp mới nhất của ZenTao.";
$lang->admin->notice->ignore = "Bỏ qua";
$lang->admin->notice->int = "『%s』 nên là số nguyên dương.";
$lang->admin->registerNotice = new stdclass();
$lang->admin->registerNotice->common = 'Kết nối tài khoản';
$lang->admin->registerNotice->caption = 'Đăng ký cộng đồng ZenTao';
$lang->admin->registerNotice->click = 'Đăng ký';
$lang->admin->registerNotice->lblAccount = '>= 3 chữ và số';
$lang->admin->registerNotice->lblPasswd = '>= 6 chữ và số';
$lang->admin->registerNotice->submit = 'Gửi';
$lang->admin->registerNotice->bind = "Kết nối với tài khoản đang tồn tại";
$lang->admin->registerNotice->success = "Bạn đã đăng ký!";
$lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Liên kết tài khoản';
$lang->admin->bind->success = "Tài khoản đã được kết nối!";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Chính sách bảo mật';
$lang->admin->safe->set = 'Thiết lập mật khẩu';
$lang->admin->safe->password = 'Độ mạnh mật khẩu';
$lang->admin->safe->weak = 'Mật khẩu yếu thường dùng';
$lang->admin->safe->reason = 'Loại';
$lang->admin->safe->checkWeak = 'Quét mật khẩu yếu';
$lang->admin->safe->changeWeak = 'Chủ động thay đổi mật khẩu yếu';
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Chủ động thay đổi mật khẩu sau lần đăng nhập đầu tiên';
$lang->admin->safe->modeList[0] = 'Yếu';
$lang->admin->safe->modeList[1] = 'Trung bình';
$lang->admin->safe->modeList[2] = 'Mạnh';
$lang->admin->safe->modeRuleList[1] = ' >= 6 chữ hoa, chữ thường và số';
$lang->admin->safe->modeRuleList[2] = ' >= 10 chữ hoa, chữ thường, số và ký tự đặc biệt.';
$lang->admin->safe->reasonList['weak'] = 'Mật khẩu yếu thường dùng';
$lang->admin->safe->reasonList['account'] = 'Giống tài khoản';
$lang->admin->safe->reasonList['mobile'] = 'Giống số di động';
$lang->admin->safe->reasonList['phone'] = 'Giống số điện thoại';
$lang->admin->safe->reasonList['birthday'] = 'Giống ngày sinh';
$lang->admin->safe->modifyPasswordList[1] = 'Có';
$lang->admin->safe->modifyPasswordList[0] = 'Không';
$lang->admin->safe->loginCaptchaList[1] = 'Yes'
$lang->admin->safe->loginCaptchaList[0] = 'No';
$lang->admin->safe->noticeMode = 'Mật khẩu sẽ được kiểm tra khi người dùng đăng nhập hoặc người dùng thêm hoặc sửa.';
$lang->admin->safe->noticeStrong = '';

View File

@@ -0,0 +1,21 @@
<?php
/**
* The automation module zh-cn file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package automation
* @version $Id: zh-cn.php 4767 2013-05-05 06:10:13Z wwccss $
* @link http://www.zentao.net
*/
$lang->automation->common = '自动化测试';
$lang->automation->index = '首页';
$lang->automation->description = '自动化测试解决方案';
$lang->automation->ztf = 'ZTF自动化测试管理框架';
$lang->automation->zendata = 'ZenData数据生成工具';
$lang->automation->details = '';
$lang->automation->ztfDetails = '';
$lang->automation->zendataDetails = '';

View File

@@ -0,0 +1,83 @@
<?php
/**
* The admin module zh-tw file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青島易軟天創網絡科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package admin
* @version $Id: zh-tw.php 4767 2013-05-05 06:10:13Z wwccss $
* @link http://www.zentao.net
*/
$lang->admin->common = '後台管理';
$lang->admin->index = '後台管理首頁';
$lang->admin->checkDB = '檢查資料庫';
$lang->admin->sso = 'ZDOO整合';
$lang->admin->ssoAction = 'ZDOO整合';
$lang->admin->safeIndex = '安全';
$lang->admin->checkWeak = '弱口令檢查';
$lang->admin->certifyMobile = '認證手機';
$lang->admin->certifyEmail = '認證郵箱';
$lang->admin->ztCompany = '認證公司';
$lang->admin->captcha = '驗證碼';
$lang->admin->getCaptcha = '獲取驗證碼';
$lang->admin->register = '登記';
$lang->admin->api = '介面';
$lang->admin->log = '日誌';
$lang->admin->setting = '設置';
$lang->admin->days = '日誌保存天數';
$lang->admin->info = new stdclass();
$lang->admin->info->version = '當前系統的版本是%s';
$lang->admin->info->links = '您可以訪問以下連結:';
$lang->admin->info->account = "您的禪道社區賬戶為%s。";
$lang->admin->info->log = '超出存天數的日誌會被刪除,需要開啟計劃任務。';
$lang->admin->notice = new stdclass();
$lang->admin->notice->register = "友情提示:您還未在禪道社區(www.zentao.net)登記,%s進行登記以及時獲得禪道最新信息。";
$lang->admin->notice->ignore = "不再提示";
$lang->admin->notice->int = "『%s』應當是正整數。";
$lang->admin->registerNotice = new stdclass();
$lang->admin->registerNotice->common = '註冊新帳號綁定';
$lang->admin->registerNotice->caption = '禪道社區登記';
$lang->admin->registerNotice->click = '點擊此處';
$lang->admin->registerNotice->lblAccount = '請設置您的用戶名,英文字母和數字的組合,三位以上。';
$lang->admin->registerNotice->lblPasswd = '請設置您的密碼。數字和字母的組合,六位以上。';
$lang->admin->registerNotice->submit = '登記';
$lang->admin->registerNotice->bind = "綁定已有帳號";
$lang->admin->registerNotice->success = "登記賬戶成功";
$lang->admin->bind = new stdclass();
$lang->admin->bind->caption = '關聯社區帳號';
$lang->admin->bind->success = "關聯賬戶成功";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = '安全策略';
$lang->admin->safe->set = '密碼安全設置';
$lang->admin->safe->password = '密碼安全';
$lang->admin->safe->weak = '常用弱口令';
$lang->admin->safe->reason = '類型';
$lang->admin->safe->checkWeak = '弱口令掃瞄';
$lang->admin->safe->changeWeak = '修改弱口令密碼';
$lang->admin->safe->modifyPasswordFirstLogin = '首次登錄修改密碼';
$lang->admin->safe->modeList[0] = '不檢查';
$lang->admin->safe->modeList[1] = '中';
$lang->admin->safe->modeList[2] = '強';
$lang->admin->safe->modeRuleList[1] = '6位以上包含大小寫字母數字。';
$lang->admin->safe->modeRuleList[2] = '10位以上包含字母數字特殊字元。';
$lang->admin->safe->reasonList['weak'] = '常用弱口令';
$lang->admin->safe->reasonList['account'] = '與帳號相同';
$lang->admin->safe->reasonList['mobile'] = '與手機相同';
$lang->admin->safe->reasonList['phone'] = '與電話相同';
$lang->admin->safe->reasonList['birthday'] = '與生日相同';
$lang->admin->safe->modifyPasswordList[1] = '必須修改';
$lang->admin->safe->modifyPasswordList[0] = '不強制';
$lang->admin->safe->noticeMode = '系統會在登錄、創建和修改用戶、修改密碼的時候檢查用戶口令。';
$lang->admin->safe->noticeStrong = '密碼長度越長,含有大寫字母或數字或特殊符號越多,密碼字母越不重複,安全度越強!';

View File

@@ -0,0 +1,46 @@
<?php
/**
* The model file of automation module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package automation
* @version $Id: model.php 5148 2013-07-16 01:31:08Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
?>
<?php
class automationModel extends model
{
/**
* Set the menu.
*
* @param array $products
* @param int $productID
* @param int $branch
* @access public
* @return void
*/
public function setMenu($products, $productID, $branch = 0)
{
$this->loadModel('product');
foreach($this->lang->testtask->menu as $key => $value)
{
if($this->lang->navGroup->testtask != 'qa') $this->loadModel('qa')->setSubMenu('automation', $key, $productID);
common::setMenuVars($this->lang->testtask->menu, $key, $productID);
}
if($this->lang->navGroup->automation == 'qa')
{
foreach($this->lang->qa->subMenu->automation as $key => $menu)
{
common::setMenuVars($this->lang->qa->subMenu->automation, $key, $productID);
}
$this->lang->qa->menu = $this->lang->automation->menu;
$this->lang->automation->menu = $this->lang->qa->subMenu->automation;
$this->lang->qa->switcherMenu = $this->product->getSwitcher($productID, '', $branch);
}
}
}

View File

@@ -0,0 +1,38 @@
<?php
/**
* The view file of automation module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package automation
* @version $Id: view.html.php 2568 2012-02-09 06:56:35Z shiyangyangwork@yahoo.cn $
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.html.php';?>
<div id='mainContent' class='main-content'>
<div class="row">
<div class="col-xs-3">
<ul class="nav nav-tabs nav-stacked">
<li class="active"><a href="###" data-target="#tab3Content1" data-toggle="tab"><?php echo $lang->automation->description;?></a></li>
<li><a href="###" data-target="#tab3Content2" data-toggle="tab"><?php echo $lang->automation->ztf;?></a></li>
<li><a href="###" data-target="#tab3Content3" data-toggle="tab"><?php echo $lang->automation->zendata;?></a></li>
</ul>
</div>
<div class="col-xs-9">
<div class="tab-content col-xs-9">
<div class="tab-pane fade active in" id="tab3Content1">
<p>我是标签1。</p>
</div>
<div class="tab-pane fade" id="tab3Content2">
<p>标签2的内容。</p>
</div>
<div class="tab-pane fade" id="tab3Content3">
<p>这是标签3的内容。</p>
</div>
</div>
</div>
</div>
</div>
<?php include '../../common/view/footer.html.php';?>

View File

@@ -106,11 +106,15 @@ $lang->qa->menuOrder[30] = 'report';
$lang->qa->menuOrder[35] = 'testsuite';
$lang->qa->menuOrder[40] = 'caselib';
$lang->bug->menuOrder = $lang->qa->menuOrder;
$lang->testcase->menuOrder = $lang->bug->menuOrder;
$lang->testtask->menuOrder = $lang->testcase->menuOrder;
$lang->testsuite->menuOrder = $lang->testcase->menuOrder;
$lang->caselib->menuOrder = $lang->testcase->menuOrder;
$lang->testreport->menuOrder = $lang->testcase->menuOrder;
$lang->testtask->menuOrder = $lang->qa->menuOrder;
$lang->testreport->menuOrder = $lang->qa->menuOrder;
$lang->testcase->menuOrder[5] = 'feature';
$lang->testcase->menuOrder[10] = 'unit';
$lang->testcase->menuOrder[15] = 'testsuite';
$lang->testcase->menuOrder[20] = 'caselib';
$lang->caselib->menuOrder = $lang->testcase->menuOrder;
$lang->testsuite->menuOrder = $lang->testcase->menuOrder;
$lang->ci->menuOrder[5] = 'code';
$lang->ci->menuOrder[10] = 'build';

View File

@@ -349,7 +349,7 @@ $lang->execution->viewMenu->qa = array('link' => '测试|qa|index|');
$lang->execution->viewMenu->ci = array('link' => '代码|repo|browse|');
$lang->execution->viewMenu->doc = array('link' => '文档|doc|objectLibs|type=execution&objectID=%s&from=execution', 'subModule' => 'doc');
$lang->execution->viewMenu->build = array('link' => '版本|execution|build|executionID=%s', 'subModule' => 'build');
$lang->execution->viewMenu->release = array('link' => '发布|projectrelease|browse|project={PROJECT}');
$lang->execution->viewMenu->release = array('link' => '发布|projectrelease|browse|project=%s');
$lang->execution->viewMenu->action = array('link' => '动态|execution|dynamic|executionID=%s');
$lang->execution->viewMenu->setting = array('link' => '设置|execution|view|executionID=%s', 'subModule' => 'personnel', 'alias' => 'edit', 'class' => 'dropdown dropdown-hover');
@@ -377,7 +377,7 @@ $lang->qa->menu = new stdclass();
$lang->qa->menu->index = array('link' => '仪表盘|qa|index');
$lang->qa->menu->bug = array('link' => 'Bug|bug|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,resolve,close,activate,report,batchedit,batchactivate,confirmbug,assignto');
$lang->qa->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'alias' => 'view,create,batchcreate,edit,batchedit,showimport,groupcase,importfromlib', 'class' => 'dropdown dropdown-hover');
$lang->qa->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'subModule' => 'testsuite,caselib', 'class' => 'dropdown dropdown-hover');
$lang->qa->menu->testtask = array('link' => '测试单|testtask|browse|productID=%s', 'alias' => 'view,create,edit,linkcase,cases,start,close,batchrun,groupcase,report,importunitresult', 'class' => 'dropdown dropdown-hover');
$lang->qa->menu->automation = array('link' => '自动化|automation|browse|productID=%s', 'alias' => '', 'class' => 'dropdown dropdown-hover');
@@ -394,10 +394,10 @@ $lang->qa->subMenu->testtask->report = array('link' => '报告|testreport|brow
$lang->qa->subMenu->automation = new stdclass();
$lang->qa->subMenu->automation->browse = array('link' => '介绍|automation|browse|productID=%s', 'alias' => '');
$lang->qa->subMenu->automation->framework = array('link' => '框架|automation|framework|productID=%s', 'alias' => '');
$lang->qa->subMenu->automation->data = array('link' => '数据|automation|date|productID=%s', 'alias' => '');
$lang->qa->subMenu->automation->interface = array('link' => '接口|automation|interface|productID=%s', 'alias' => '');
$lang->qa->subMenu->automation->environment = array('link' => '环境|automation|environment|productID=%s', 'alias' => '');
//$lang->qa->subMenu->automation->framework = array('link' => '框架|automation|framework|productID=%s', 'alias' => '');
//$lang->qa->subMenu->automation->data = array('link' => '数据|automation|date|productID=%s', 'alias' => '');
//$lang->qa->subMenu->automation->interface = array('link' => '接口|automation|interface|productID=%s', 'alias' => '');
//$lang->qa->subMenu->automation->environment = array('link' => '环境|automation|environment|productID=%s', 'alias' => '');
$lang->bug = new stdclass();
$lang->bug->menu = new stdclass();
@@ -454,6 +454,15 @@ $lang->caselib->menu->testcase = array('link' => '用例|testcase|browse|produ
$lang->caselib->menu->testtask = array('link' => '测试单|testtask|browse|productID=%s', 'class' => 'dropdown dropdown-hover');
$lang->caselib->menu->automation = array('link' => '自动化|automation|browse|productID=%s', 'alias' => '', 'class' => 'dropdown dropdown-hover');
$lang->automation = new stdclass();
$lang->automation->menu = new stdclass();
$lang->automation->subMenu = $lang->qa->subMenu;
$lang->automation->menu->index = array('link' => '仪表盘|qa|index');
$lang->automation->menu->bug = array('link' => 'Bug|bug|browse|productID=%s');
$lang->automation->menu->testcase = array('link' => '用例|testcase|browse|productID=%s', 'class' => 'dropdown dropdown-hover');
$lang->automation->menu->testtask = array('link' => '测试单|testtask|browse|productID=%s', 'subModule' => 'testreport', 'class' => 'dropdown dropdown-hover');
$lang->automation->menu->automation = array('link' => '自动化|automation|browse|productID=%s', 'alias' => '', 'class' => 'dropdown dropdown-hover');
$lang->ci = new stdclass();
$lang->ci->menu = new stdclass();
$lang->ci->menu->code = array('link' => '代码|repo|browse|repoID=%s', 'alias' => 'diff,view,revision,log,blame,showsynccomment');
@@ -583,11 +592,7 @@ $lang->menugroup->upgrade = 'admin';
$lang->menugroup->user = 'company';
$lang->menugroup->group = 'company';
$lang->menugroup->bug = 'qa';
$lang->menugroup->testcase = 'qa';
$lang->menugroup->case = 'qa';
$lang->menugroup->testtask = 'qa';
$lang->menugroup->testsuite = 'qa';
$lang->menugroup->caselib = 'qa';
$lang->menugroup->testreport = 'qa';
$lang->menugroup->people = 'admin';
$lang->menugroup->dept = 'company';

View File

@@ -103,7 +103,7 @@ $lang->doc->libTypeList['product'] = $lang->productCommon . ' Bibliothek';
$lang->doc->libTypeList['execution'] = $lang->executionCommon . ' Bibliothek';
$lang->doc->libTypeList['custom'] = 'Eigene Bibliothek';
$lang->doc->libIconList['product'] = 'icon-cube';
$lang->doc->libIconList['product'] = 'icon-product';
$lang->doc->libIconList['execution'] = 'icon-stack';
$lang->doc->libIconList['custom'] = 'icon-folder-o';

View File

@@ -103,7 +103,7 @@ $lang->doc->libTypeList['product'] = $lang->productCommon . ' Library';
$lang->doc->libTypeList['execution'] = $lang->executionCommon . ' Library';
$lang->doc->libTypeList['custom'] = 'Custom Library';
$lang->doc->libIconList['product'] = 'icon-cube';
$lang->doc->libIconList['product'] = 'icon-product';
$lang->doc->libIconList['execution'] = 'icon-stack';
$lang->doc->libIconList['custom'] = 'icon-folder-o';

View File

@@ -103,7 +103,7 @@ $lang->doc->libTypeList['product'] = $lang->productCommon . ' Library';
$lang->doc->libTypeList['execution'] = 'Bibliothèque ' . $lang->executionCommon;
$lang->doc->libTypeList['custom'] = 'Bib. Personnalisée';
$lang->doc->libIconList['product'] = 'icon-cube';
$lang->doc->libIconList['product'] = 'icon-product';
$lang->doc->libIconList['execution'] = 'icon-stack';
$lang->doc->libIconList['custom'] = 'icon-folder-o';

View File

@@ -103,7 +103,7 @@ $lang->doc->libTypeList['product'] = $lang->productCommon . ' thư viện';
$lang->doc->libTypeList['execution'] = $lang->executionCommon . ' thư viện';
$lang->doc->libTypeList['custom'] = 'Tùy biến thư viện';
$lang->doc->libIconList['product'] = 'icon-cube';
$lang->doc->libIconList['product'] = 'icon-product';
$lang->doc->libIconList['execution'] = 'icon-stack';
$lang->doc->libIconList['custom'] = 'icon-folder-o';

View File

@@ -103,7 +103,7 @@ $lang->doc->libTypeList['product'] = $lang->productCommon . '文档库';
$lang->doc->libTypeList['execution'] = $lang->executionCommon . '文档库';
$lang->doc->libTypeList['custom'] = '自定义文档库';
$lang->doc->libIconList['product'] = 'icon-cube';
$lang->doc->libIconList['product'] = 'icon-product';
$lang->doc->libIconList['execution'] = 'icon-stack';
$lang->doc->libIconList['custom'] = 'icon-folder-o';

View File

@@ -103,7 +103,7 @@ $lang->doc->libTypeList['product'] = $lang->productCommon . '文檔庫';
$lang->doc->libTypeList['project'] = $lang->executionCommon . '文檔庫';
$lang->doc->libTypeList['custom'] = '自定義文檔庫';
$lang->doc->libIconList['product'] = 'icon-cube';
$lang->doc->libIconList['product'] = 'icon-product';
$lang->doc->libIconList['project'] = 'icon-stack';
$lang->doc->libIconList['custom'] = 'icon-folder-o';

View File

@@ -24,4 +24,4 @@
.is-firefox .group-header:before {content: ' '; position: absolute; top: 0; right: 0; left: 0; bottom: 0; background: #fff; z-index: 0;}
.is-firefox .group-header > a,
.is-firefox .group-header > .groupSummary {position: relative; z-index: 1;}
.c-hours {white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.c-hours {white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right;}

View File

@@ -412,7 +412,7 @@ class executionModel extends model
$member = new stdclass();
$member->root = $executionID;
$member->account = $this->app->user->account;
$member->role = $this->lang->user->roleList[$this->app->user->role];
$member->role = zget($this->lang->user->roleList, $this->app->user->role, '');
$member->join = $today;
$member->type = $sprintType;
$member->days = $sprint->days;

View File

@@ -22,6 +22,7 @@
.table td.has-child > .plan-toggle > .icon:before {text-align: left;}
.table td.has-child > .plan-toggle.collapsed > .icon {-ms-transform:rotate(90deg); -moz-transform:rotate(90deg); -o-transform:rotate(90deg); -webkit-transform:rotate(90deg); transform: rotate(90deg);}
.main-table tbody > tr.table-children > td:first-child::before {width: 3px;}
.hours {text-align: right;}
@-moz-document url-prefix() {.main-table tbody > tr.table-children > td:first-child::before {width: 4px;}}
</style>
<div id='mainMenu' class='clearfix'>
@@ -75,9 +76,9 @@
<th class='thWidth'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->execution->PM);?></th>
<th class='w-90px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->execution->end);?></th>
<th class='w-90px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->execution->status);?></th>
<th class='w-70px'><?php echo $lang->execution->totalEstimate;?></th>
<th class='w-70px'><?php echo $lang->execution->totalConsumed;?></th>
<th class='w-70px'><?php echo $lang->execution->totalLeft;?></th>
<th class='w-70px hours'><?php echo $lang->execution->totalEstimate;?></th>
<th class='w-70px hours'><?php echo $lang->execution->totalConsumed;?></th>
<th class='w-70px hours'><?php echo $lang->execution->totalLeft;?></th>
<th class='w-150px'><?php echo $lang->execution->progress;?></th>
<th class='w-100px'><?php echo $lang->execution->burn;?></th>
<?php if($canOrder):?>
@@ -113,9 +114,9 @@
<td class='c-status' title='<?php echo $executionStatus;?>'>
<span class="status-execution status-<?php echo $execution->status?>"><?php echo $executionStatus;?></span>
</td>
<td><?php echo $execution->hours->totalEstimate . ' ' . $config->hourUnit;?></td>
<td><?php echo $execution->hours->totalConsumed . ' ' . $config->hourUnit;?></td>
<td><?php echo $execution->hours->totalLeft . ' ' . $config->hourUnit;?></td>
<td class='hours'><?php echo $execution->hours->totalEstimate . ' ' . $config->hourUnit;?></td>
<td class='hours'><?php echo $execution->hours->totalConsumed . ' ' . $config->hourUnit;?></td>
<td class='hours'><?php echo $execution->hours->totalLeft . ' ' . $config->hourUnit;?></td>
<td class="c-progress">
<div class="progress progress-text-left">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $execution->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $execution->hours->progress;?>%">
@@ -157,9 +158,9 @@
<td class='c-status' title='<?php echo $executionStatus;?>'>
<span class="status-execution status-<?php echo $child->status?>"><?php echo $executionStatus;?></span>
</td>
<td><?php echo $child->hours->totalEstimate;?></td>
<td><?php echo $child->hours->totalConsumed;?></td>
<td><?php echo $child->hours->totalLeft;?></td>
<td class='hours'><?php echo $child->hours->totalEstimate;?></td>
<td class='hours'><?php echo $child->hours->totalConsumed;?></td>
<td class='hours'><?php echo $child->hours->totalLeft;?></td>
<td class="c-progress">
<div class="progress progress-text-left">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="<?php echo $child->hours->progress;?>" aria-valuemin="0" aria-valuemax="100" style="width: <?php echo $child->hours->progress;?>%">

View File

@@ -90,7 +90,7 @@
</p>
</div>
<?php else:?>
<table class="table table-grouped text-center">
<table class="table table-grouped">
<thead>
<tr class="<?php if($allCount) echo 'divider';?>">
<th class="c-side text-left has-btn group-menu">
@@ -117,9 +117,9 @@
<th class="c-status"><?php echo $lang->task->status;?></th>
<th class="text-left w-60px"><?php echo $lang->task->assignedTo;?></th>
<th class="w-90px"><?php echo $lang->task->finishedBy;?></th>
<th class="w-60px text-right"><?php echo $lang->task->estimateAB;?></th>
<th class="w-50px"><?php echo $lang->task->consumedAB;?></th>
<th class="w-50px"><?php echo $lang->task->leftAB;?></th>
<th class="w-60px c-hours"><?php echo $lang->task->estimateAB;?></th>
<th class="w-50px c-hours"><?php echo $lang->task->consumedAB;?></th>
<th class="w-50px c-hours"><?php echo $lang->task->leftAB;?></th>
<th class="w-50px" title='<?php echo $lang->task->progress;?>'><?php echo $lang->task->progressAB;?></th>
<th class="c-type"><?php echo $lang->typeAB;?></th>
<th class="c-date"><?php echo $lang->task->deadlineAB;?></th>
@@ -202,7 +202,7 @@
<td class="c-status"><span class='status-task status-<?php echo $task->status;?>'> <?php echo $this->processStatus('task', $task);?></span></td>
<td class="c-assign text-left"><?php echo "<span class='$assignedToClass'>" . $task->assignedToRealName . "</span>";?></td>
<td class='c-user'><?php echo zget($users, $task->finishedBy);?></td>
<td class="c-hours em text-right" title="<?php echo $task->estimate . ' ' . $lang->execution->workHour;?>"><?php echo $task->estimate . ' ' . $lang->execution->workHourUnit;?></td>
<td class="c-hours em" title="<?php echo $task->estimate . ' ' . $lang->execution->workHour;?>"><?php echo $task->estimate . ' ' . $lang->execution->workHourUnit;?></td>
<td class="c-hours em" title="<?php echo $task->consumed . ' ' . $lang->execution->workHour;?>"><?php echo $task->consumed . ' ' . $lang->execution->workHourUnit;?></td>
<td class="c-hours em" title="<?php echo $task->left . ' ' . $lang->execution->workHour;?>"><?php echo $task->left . ' ' . $lang->execution->workHourUnit;?></td>
<td class="c-num em"><?php echo $task->progress . '%';?></td>

View File

@@ -75,7 +75,7 @@
echo html::a($storyLink, $story->title);
?>
</td>
<td title='<?php echo $story->planTitle;?>'><?php echo $story->planTitle;?></td>
<td class='text-ellipsis' title='<?php echo $story->planTitle;?>'><?php echo $story->planTitle;?></td>
<td><?php echo zget($lang->story->stageList, $story->stage);?></td>
<?php if($productType != 'normal'):?>
<td><?php if(isset($branchGroups[$story->product][$story->branch])) echo $branchGroups[$story->product][$story->branch];?></td>

View File

@@ -72,11 +72,11 @@ class product extends control
* @param string $status
* @param int $productID
* @param int $branch
* @param int $projectMine
* @param int $involved
* @access public
* @return void
*/
public function project($status = 'all', $productID = 0, $branch = 0, $projectMine = 0)
public function project($status = 'all', $productID = 0, $branch = 0, $involved = 0)
{
$this->product->setMenu($this->products, $productID, $branch);
$this->lang->product->switcherMenu = $this->product->getSwitcher($productID);
@@ -88,7 +88,7 @@ class product extends control
/* Get PM id list. */
$accounts = array();
$projectStats = $this->product->getProjectStatsByProduct($productID, $status, $branch, $projectMine);
$projectStats = $this->product->getProjectStatsByProduct($productID, $status, $branch, $involved);
foreach($projectStats as $project)
{
if(!empty($project->PM) and !in_array($project->PM, $accounts)) $accounts[] = $project->PM;

View File

@@ -1,9 +1,9 @@
$(function()
{
$('#mainMenu input[name^="PRJMine"]').click(function()
$('#mainMenu input[name^="involved"]').click(function()
{
var PRJMine = $(this).is(':checked') ? 1 : 0;
$.cookie('PRJMine', PRJMine, {expires:config.cookieLife, path:config.webRoot});
var involved = $(this).is(':checked') ? 1 : 0;
$.cookie('involved', involved, {expires:config.cookieLife, path:config.webRoot});
window.location.reload();
});
});

View File

@@ -875,11 +875,11 @@ class productModel extends model
* @param int $productID
* @param string $browseType
* @param int $branch
* @param int $projectMine
* @param int $involved
* @access public
* @return array
*/
public function getProjectListByProduct($productID, $browseType = 'all', $branch = 0, $projectMine = 0)
public function getProjectListByProduct($productID, $browseType = 'all', $branch = 0, $involved = 0)
{
$projectList = $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
@@ -887,7 +887,7 @@ class productModel extends model
->andWhere('t2.type')->eq('project')
->beginIF($browseType != 'all')->andWhere('t2.status')->eq($browseType)->fi()
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
->beginIF($this->cookie->projectMine or $projectMine)
->beginIF($this->cookie->involved or $involved)
->andWhere('t2.openedBy', true)->eq($this->app->user->account)
->orWhere('t2.PM')->eq($this->app->user->account)
->markRight(1)
@@ -910,13 +910,13 @@ class productModel extends model
* @param int $productID
* @param string $browseType
* @param int $branch
* @param int $projectMine
* @param int $involved
* @access public
* @return array
*/
public function getProjectStatsByProduct($productID, $browseType = 'all', $branch = 0, $projectMine = 0)
public function getProjectStatsByProduct($productID, $browseType = 'all', $branch = 0, $involved = 0)
{
$projects = $this->getProjectListByProduct($productID, $browseType, $branch, $projectMine);
$projects = $this->getProjectListByProduct($productID, $browseType, $branch, $involved);
if(empty($projects)) return array();
$projectKeys = array_keys($projects);

View File

@@ -47,7 +47,7 @@
foreach($userIdPairs as $userID => $name)
{
if(!$userID) continue;
$searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $userID, '') . '"') : '';
$searchKey = $withSearch ? ('data-key="' . zget($usersPinYin, $name, '') . '"') : '';
echo html::a($this->createLink('product', 'dynamic', "productID=$productID&type=account&param=$userID"), $name, '', $searchKey);
}
?>

View File

@@ -15,7 +15,7 @@
<?php foreach($lang->execution->featureBar['all'] as $key => $label):?>
<?php echo html::a(inlink("project", "status=$key&productID=$productID"), "<span class='text'>{$label}</span>" . ($status == $key ? " <span class='label label-light label-badge'>" . count($projectStats) . "</span>" : ''), '', "class='btn btn-link" . ($status == $key ? ' btn-active-text' : '') . "' id='{$key}Tab'");?>
<?php endforeach;?>
<?php echo html::checkbox('projectMine', array('1' => $lang->project->mine), '', $this->cookie->projectMine ? 'checked=checked' : '');?>
<?php echo html::checkbox('involved', array('1' => $lang->project->mine), '', $this->cookie->involved ? 'checked=checked' : '');?>
<div class="tip"><icon class='icon icon-help' data-toggle='popover' data-trigger='focus hover' data-placement='right' data-tip-class='text-muted popover-sm' data-content=<?php echo $lang->product->projectInfo;?>></icon></div>
</div>
</div>

View File

@@ -662,7 +662,7 @@ class program extends control
foreach($projects as $id => $name)
{
$active = $data->cpoyProjectID == $id ? 'active' : '';
$html .= "<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id=$id class='nobr $active'>" . html::icon($this->lang->icons['project'], 'text-muted') . $name . "</a></div>";
$html .= "<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id=$id class='nobr $active'>" . html::icon($this->lang->icons['project'], 'text-muted') . $name . "</a></div>";
}
echo $html;
}
@@ -691,7 +691,7 @@ class program extends control
{
$programs = $this->post->programs;
foreach($programs as $id => $order)
{
{
$this->dao->update(TABLE_PROJECT)
->set('`order`')->eq($order)
->where('id')->eq($id)

View File

@@ -128,11 +128,11 @@ class programModel extends model
* @param string $orderBy
* @param object $pager
* @param int $programTitle
* @param int $projectMine
* @param int $involved
* @access public
* @return object
*/
public function getProjectList($programID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $projectMine = 0)
public function getProjectList($programID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $involved = 0)
{
$path = '';
if($programID)
@@ -148,7 +148,7 @@ class programModel extends model
->beginIF($path)->andWhere('path')->like($path . '%')->fi()
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'new')->andWhere('id')->in($this->app->user->view->projects)->fi()
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'classic')->andWhere('id')->in($this->app->user->view->sprints)->fi()
->beginIF($this->cookie->projectMine or $projectMine)
->beginIF($this->cookie->involved or $involved)
->andWhere('openedBy', true)->eq($this->app->user->account)
->orWhere('PM')->eq($this->app->user->account)
->markRight(1)
@@ -777,14 +777,14 @@ class programModel extends model
* @param string $orderBy
* @param object $pager
* @param string $programTitle
* @param int $projectMine
* @param int $involved
* @access public
* @return array
*/
public function getProjectStats($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $projectMine = 0)
public function getProjectStats($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $involved = 0)
{
/* Init vars. */
$projects = $this->getProjectList($programID, $browseType, $queryID, $orderBy, $pager, $programTitle, $projectMine);
$projects = $this->getProjectList($programID, $browseType, $queryID, $orderBy, $pager, $programTitle, $involved);
if(empty($projects)) return array();
$projectKeys = array_keys($projects);

View File

@@ -26,7 +26,7 @@ js::set('browseType', $browseType);
<?php if($browseType == $key) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('project', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('involved ', array('1' => $lang->project->mine), '', $this->cookie->PRJMine ? 'checked=checked' : '');?>
<?php echo html::checkbox('involved ', array('1' => $lang->project->mine), '', $this->cookie->involved ? 'checked=checked' : '');?>
</div>
<div class="btn-toolbar pull-right">
<?php if(isset($this->config->maxVersion)):?>
@@ -98,10 +98,10 @@ js::set('browseType', $browseType);
</div>
</div>
<script>
$('#PRJMine1').click(function()
$('input[name^="involved"]').click(function()
{
var PRJMine = $(this).is(':checked') ? 1 : 0;
$.cookie('PRJMine', PRJMine, {expires:config.cookieLife, path:config.webRoot});
var involved = $(this).is(':checked') ? 1 : 0;
$.cookie('involved', involved, {expires:config.cookieLife, path:config.webRoot});
window.location.reload();
});
</script>

View File

@@ -1,9 +1,9 @@
$(function()
{
$('#projectMine').click(function()
$('input[name^="involved"]').click(function()
{
var mine = $(this).is(':checked') ? 1 : 0;
$.cookie('projectMine', mine, {expires:config.cookieLife, path:config.webRoot});
var involved = $(this).is(':checked') ? 1 : 0;
$.cookie('involved', involved, {expires:config.cookieLife, path:config.webRoot});
window.location.reload();
});
});

View File

@@ -92,6 +92,7 @@ $lang->project->teamCount = 'Team';
$lang->project->longTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->moreProject = 'More Project';
$lang->project->days = 'Manntage';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';

View File

@@ -92,6 +92,7 @@ $lang->project->teamCount = 'Team';
$lang->project->longTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->moreProject = 'More Project';
$lang->project->days = 'Available Days';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';

View File

@@ -92,6 +92,7 @@ $lang->project->teamCount = 'Team';
$lang->project->longTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->moreProject = 'More Project';
$lang->project->days = 'Available Days';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';

View File

@@ -92,6 +92,7 @@ $lang->project->teamCount = 'Team';
$lang->project->longTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->moreProject = 'More Project';
$lang->project->days = 'Available Days';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';

View File

@@ -93,6 +93,7 @@ $lang->project->teamCount = '项目成员';
$lang->project->longTime = '长期';
$lang->project->future = '待定';
$lang->project->moreProject = '更多项目';
$lang->project->days = '可用工作日';
$lang->project->productNotEmpty = '请关联产品或创建产品。';
$lang->project->existProductName = '产品名称已存在。';

View File

@@ -35,7 +35,7 @@ js::set('browseType', $browseType);
<?php if($browseType == $key) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('browse', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('projectMine', array('1' => $lang->project->mine), '', $this->cookie->projectMine ? 'checked=checked' : '');?>
<?php echo html::checkbox('involved', array('1' => $lang->project->mine), '', $this->cookie->involved ? 'checked=checked' : '');?>
</div>
<div class="btn-toolbar pull-right">
<?php if(isset($this->config->maxVersion)):?>

View File

@@ -84,7 +84,7 @@
</tr>
<?php if($project->model == 'scrum'):?>
<tr>
<th><?php echo $lang->execution->days;?></th>
<th><?php echo $lang->project->days;?></th>
<td>
<div class='input-group'>
<?php echo html::input('days', $project->days, "class='form-control'");?>

View File

@@ -1,2 +1,2 @@
<?php
$config->qa->menuList = array('caselib', 'testreport', 'testsuite', 'testtask', 'testcase', 'bug', 'qa');
$config->qa->menuList = array('caselib', 'testreport', 'testsuite', 'testtask', 'testcase', 'bug', 'qa', 'automation');

View File

@@ -141,7 +141,7 @@
<th class='w-40px'> <?php echo $lang->priAB;?></th>
<th> <?php echo $lang->story->title;?></th>
<th class='w-100px'><?php echo $lang->story->assignedTo;?></th>
<th class='w-80px'> <?php echo $lang->story->estimate;?></th>
<th class='w-90px'> <?php echo $lang->story->estimate;?></th>
<th class='w-80px'> <?php echo $lang->story->status;?></th>
<th class='w-200px'><?php echo $lang->actions;?></th>
</tr>

View File

@@ -43,7 +43,6 @@ class testtask extends control
{
$this->app->loadConfig('qa');
foreach($this->config->qa->menuList as $module) $this->lang->navGroup->$module = 'qa';
//$this->lang->noMenuModule[] = $this->app->rawModule;
}
$this->loadModel('product');

View File

@@ -1,2 +1,2 @@
td.delayed {color: #fff; background: #e84e0f !important;}
.hours {white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.hours {white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right;}

View File

@@ -38,13 +38,13 @@
<?php $vars = "userID={$user->id}&storyType=$storyType&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; ?>
<thead>
<tr class='colhead'>
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
<th class='w-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th class='w-200px'> <?php common::printOrderLink('product', $orderBy, $vars, $lang->story->product);?></th>
<th> <?php common::printOrderLink('title', $orderBy, $vars, $lang->story->title);?></th>
<th class='w-150px'> <?php common::printOrderLink('plan', $orderBy, $vars, $lang->story->plan);?></th>
<th class='w-90px'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='w-80px'> <?php common::printOrderLink('estimate', $orderBy, $vars, $lang->story->estimateAB);?></th>
<th class='w-id'> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
<th class='w-pri'> <?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th class='w-200px'><?php common::printOrderLink('product', $orderBy, $vars, $lang->story->product);?></th>
<th> <?php common::printOrderLink('title', $orderBy, $vars, $lang->story->title);?></th>
<th class='w-150px'><?php common::printOrderLink('plan', $orderBy, $vars, $lang->story->plan);?></th>
<th class='w-90px'> <?php common::printOrderLink('openedBy', $orderBy, $vars, $lang->openedByAB);?></th>
<th class='w-80px text-right'><?php common::printOrderLink('estimate', $orderBy, $vars, $lang->story->estimateAB);?></th>
<th class='w-status'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
<th class='w-100px'> <?php common::printOrderLink('stage', $orderBy, $vars, $lang->story->stageAB);?></th>
</tr>
@@ -59,7 +59,7 @@
<td class='text-left nobr'><?php echo html::a($storyLink, $story->title);?></td>
<td title='<?php echo $story->planTitle;?>'><?php echo $story->planTitle;?></td>
<td><?php echo zget($users, $story->openedBy);?></td>
<td><?php echo $story->estimate . ' ' . $config->hourUnit;?></td>
<td class='text-right' title="<?php echo $story->estimate . ' ' . $lang->hourCommon;?>"><?php echo $story->estimate . ' ' . $config->hourUnit;?></td>
<td class='story-<?php echo $story->status;?>'><?php echo $this->processStatus('story', $story);?></td>
<td><?php echo $lang->story->stageList[$story->stage];?></td>
</tr>

View File

@@ -41,15 +41,15 @@
<?php $vars = "userID={$user->id}&type=$type&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}"; ?>
<thead>
<tr class='colhead'>
<th class='w-id'><?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
<th class='w-pri'><?php common::printOrderLink('pri', $orderBy, $vars, $lang->priAB);?></th>
<th class='w-id'><?php echo $lang->idAB;?></th>
<th class='w-pri'><?php echo $lang->priAB;?></th>
<th><?php common::printOrderLink('execution', $orderBy, $vars, $lang->task->execution);?></th>
<th><?php common::printOrderLink('name', $orderBy, $vars, $lang->task->name);?></th>
<th class='w-70px'><?php common::printOrderLink('estimate', $orderBy, $vars, $lang->task->estimateAB);?></th>
<th class='w-70px'><?php common::printOrderLink('consumed', $orderBy, $vars, $lang->task->consumedAB);?></th>
<th class='w-hour'><?php common::printOrderLink('left', $orderBy, $vars, $lang->task->leftAB);?></th>
<th class='w-date'><?php common::printOrderLink('deadline', $orderBy, $vars, $lang->task->deadlineAB);?></th>
<th class='w-70px'><?php common::printOrderLink('status', $orderBy, $vars, $lang->statusAB);?></th>
<th class='w-70px hours'><?php echo $lang->task->estimateAB;?></th>
<th class='w-70px hours'><?php echo $lang->task->consumedAB;?></th>
<th class='w-hour hours'><?php echo $lang->task->leftAB;?></th>
<th class='w-date'><?php echo $lang->task->deadlineAB;?></th>
<th class='w-70px'><?php echo $lang->statusAB;?></th>
</tr>
</thead>
<tbody>