Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
+9
-9
@@ -295,15 +295,15 @@ INSERT INTO `zt_testrun` (`id`, `task`, `case`, `version`, `assignedTo`, `lastRu
|
||||
|
||||
INSERT INTO `zt_testtask` (`id`, `name`, `product`, `project`, `build`, `owner`, `begin`, `end`, `desc`, `status`, `deleted`) VALUES(1, '企业网站第一期测试任务', 1, 1, 'trunk', 'testManager', '2012-06-05', '2013-06-21', '', 'wait', '0');
|
||||
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(2, 5, 'productManager', 'e10adc3949ba59abbe56e057f20f883e', 'po', '产品经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338866083, '0');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(3, 6, 'projectManager', 'e10adc3949ba59abbe56e057f20f883e', 'pm', '项目经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338865876, '0');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(4, 2, 'dev1', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338863860, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(5, 2, 'dev2', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864116, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(6, 2, 'dev3', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864187, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(7, 3, 'tester1', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338865739, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(8, 3, 'tester2', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 2, '192.168.0.8', 1338865450, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(9, 3, 'tester3', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338865125, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(10, 1, 'testManager', 'e10adc3949ba59abbe56e057f20f883e', 'qd', '测试经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 6, '192.168.0.8', 1338865842, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(2, 5, 'productManager', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'po', '产品经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338866083, '0');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(3, 6, 'projectManager', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'pm', '项目经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338865876, '0');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(4, 2, 'dev1', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338863860, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(5, 2, 'dev2', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864116, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(6, 2, 'dev3', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'dev', '开发丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338864187, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(7, 3, 'tester1', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试甲', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338865739, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(8, 3, 'tester2', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试乙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 2, '192.168.0.8', 1338865450, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(9, 3, 'tester3', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'qa', '测试丙', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 1, '192.168.0.8', 1338865125, '1');
|
||||
INSERT INTO `zt_user` (`id`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `weixin`, `dingding`, `slack`, `mobile`, `phone`, `address`, `zipcode`, `join`, `visits`, `ip`, `last`, `deleted`) VALUES(10, 1, 'testManager', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'qd', '测试经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 6, '192.168.0.8', 1338865842, '1');
|
||||
|
||||
INSERT INTO `zt_usergroup` (`account`, `group`) VALUES('productManager', 5);
|
||||
INSERT INTO `zt_usergroup` (`account`, `group`) VALUES('projectManager', 4);
|
||||
|
||||
@@ -36,6 +36,7 @@ ALTER TABLE `zt_usergroup` ADD `program` text NOT NULL;
|
||||
ALTER TABLE `zt_userview` ADD `programs` mediumtext COLLATE 'utf8_general_ci' NOT NULL AFTER `account`;
|
||||
|
||||
ALTER TABLE `zt_user` ADD `type` char(30) NOT NULL AFTER `account`;
|
||||
update zt_user set `type` = 'inside';
|
||||
|
||||
CREATE TABLE `zt_stage` (
|
||||
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
|
||||
@@ -297,3 +298,5 @@ ALTER TABLE `zt_block` ADD UNIQUE `account_module_type_order` (`account`, `modul
|
||||
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 `storyChanged` enum('0','1') NOT NULL DEFAULT '0' AFTER `version`;
|
||||
|
||||
ALTER TABLE `zt_design` MODIFY `commit` varchar(255);
|
||||
|
||||
@@ -840,16 +840,16 @@ class baseRouter
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 从Get里取progarm id 设置到session中
|
||||
* Set program id into session.
|
||||
*
|
||||
/**
|
||||
* 从Get里取progarm id 设置到session中。
|
||||
* Get progarm id from Get and set it to session.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setProgram()
|
||||
{
|
||||
if(isset($_GET['pgm'])) $this->session->set('program', $_GET['pgm']); //Set program into session.
|
||||
{
|
||||
if(isset($_GET['pgm'])) $this->session->set('program', $_GET['pgm']); //Set program id into session.
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -405,6 +405,7 @@ $lang->action->label->entry = 'Eintrag|entry|browse|';
|
||||
$lang->action->label->webhook = 'Webhook|webhook|browse|';
|
||||
$lang->action->label->space = ' ';
|
||||
$lang->action->label->risk = 'Risk|risk|view|riskID=%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
|
||||
@@ -405,6 +405,7 @@ $lang->action->label->entry = 'Application|entry|browse|';
|
||||
$lang->action->label->webhook = 'Webhook|webhook|browse|';
|
||||
$lang->action->label->space = ' ';
|
||||
$lang->action->label->risk = 'Risk|risk|view|riskID=%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
|
||||
@@ -405,6 +405,7 @@ $lang->action->label->entry = 'Application|entry|browse|';
|
||||
$lang->action->label->webhook = 'Webhook|webhook|browse|';
|
||||
$lang->action->label->space = ' ';
|
||||
$lang->action->label->risk = 'Risk|risk|view|riskID=%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
|
||||
@@ -405,6 +405,7 @@ $lang->action->label->entry = 'Ứng dụng|entry|browse|';
|
||||
$lang->action->label->webhook = 'Webhook|webhook|browse|';
|
||||
$lang->action->label->space = ' ';
|
||||
$lang->action->label->risk = 'Risk|risk|view|riskID%s';
|
||||
$lang->action->label->issue = 'Issue|issue|view|issueID=%s';
|
||||
|
||||
/* Object type. */
|
||||
$lang->action->search->objectTypeList[''] = '';
|
||||
|
||||
@@ -1108,14 +1108,14 @@ class block extends control
|
||||
*/
|
||||
public function printWaterfallReportBlock()
|
||||
{
|
||||
$this->loadModel('program');
|
||||
$program = $this->loadModel('project')->getByID($this->session->program);
|
||||
$today = helper::today();
|
||||
$date = date('Ymd', strtotime($this->loadModel('weekly')->getThisMonday($today)));
|
||||
$date = date('Ymd', strtotime('this week Monday'));
|
||||
$begin = $program->begin;
|
||||
$weeks = $this->weekly->getWeekPairs($begin);
|
||||
$weeks = $this->loadModel('weekly')->getWeekPairs($begin);
|
||||
$current = zget($weeks, $date, '');
|
||||
$task = $this->dao->select("
|
||||
|
||||
$task = $this->dao->select("
|
||||
sum(consumed) as totalConsumed,
|
||||
sum(if(status != 'cancel' and status != 'closed', `left`, 0)) as totalLeft")
|
||||
->from(TABLE_TASK)->where('program')->eq($this->session->program)
|
||||
@@ -1304,7 +1304,7 @@ class block extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function printScrumprojectBlock()
|
||||
public function printSprintBlock()
|
||||
{
|
||||
$status = $this->dao->select('status, count(*) as count')->from(TABLE_PROJECT)
|
||||
->where('deleted')->eq(0)
|
||||
|
||||
+100
-1
@@ -32,9 +32,11 @@ $lang->block->lblNum = 'Nummer';
|
||||
$lang->block->lblHtml = 'HTML';
|
||||
$lang->block->dynamic = 'Verlauf';
|
||||
$lang->block->assignToMe = 'Mir zugewiesen';
|
||||
$lang->block->done = 'Done';
|
||||
$lang->block->lblFlowchart = 'Workflow';
|
||||
$lang->block->welcome = 'Willkommen';
|
||||
$lang->block->lblTesttask = 'Test Request Detail';
|
||||
$lang->block->contribute = 'Personal Contribution';
|
||||
|
||||
$lang->block->leftToday = 'Arbeit für Heute';
|
||||
$lang->block->myTask = 'Aufgaben';
|
||||
@@ -50,8 +52,17 @@ $lang->block->openedStories = 'The Number Of Stories Created';
|
||||
$lang->block->resolvedTasks = 'The Number Of Tasks Resolved';
|
||||
$lang->block->resolvedBugs = 'The Number Of Bugs Resolved';
|
||||
$lang->block->openedTestcases = 'The Number Of Test Case Created';
|
||||
$lang->block->waterfall = 'CMMI 3';
|
||||
$lang->block->waterfall = 'CMMI 3';
|
||||
$lang->block->scrum = 'Scrum+';
|
||||
$lang->block->allProject = 'All ' . $lang->projectCommon;
|
||||
$lang->block->doingProject = 'Doning ' . $lang->projectCommon;
|
||||
$lang->block->finishProject = 'Finish ' . $lang->projectCommon;
|
||||
$lang->block->estimatedHours = 'Estimated Hours';
|
||||
$lang->block->consumedHours = 'Consumed Hours';
|
||||
$lang->block->time = 'No';
|
||||
$lang->block->week = 'Week';
|
||||
$lang->block->month = 'Month';
|
||||
$lang->block->selectProduct = 'Product selection';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Name';
|
||||
@@ -71,6 +82,91 @@ $lang->block->nbsp = '';
|
||||
$lang->block->hidden = 'Verstecken';
|
||||
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <em>%s</em> %s <a href='%s'>%s</a></span>";
|
||||
|
||||
$lang->block->productName = $lang->productCommon . ' Name';
|
||||
$lang->block->totalStory = 'The Total ' . $lang->storyCommon;
|
||||
$lang->block->totalBug = 'The Total Bug';
|
||||
$lang->block->totalRelease = 'Release The Number';
|
||||
|
||||
$lang->block->totalInvestment = 'Total investment';
|
||||
$lang->block->totalPeople = 'Total number';
|
||||
$lang->block->spent = 'Has Been Spent';
|
||||
$lang->block->budget = 'Budget';
|
||||
$lang->block->left = 'Residuals';
|
||||
|
||||
$lang->block->default['waterfall']['program']['1']['title'] = $lang->projectCommon . 'Weekly';
|
||||
$lang->block->default['waterfall']['program']['1']['block'] = 'Pmmireport';
|
||||
$lang->block->default['waterfall']['program']['1']['source'] = 'Program';
|
||||
$lang->block->default['waterfall']['program']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['2']['title'] = 'Estimate';
|
||||
$lang->block->default['waterfall']['program']['2']['block'] = 'waterfallestimate';
|
||||
$lang->block->default['waterfall']['program']['2']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['2']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['3']['title'] = 'Plan Gantt Chart';
|
||||
$lang->block->default['waterfall']['program']['3']['block'] = 'waterfallgantt';
|
||||
$lang->block->default['waterfall']['program']['3']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['4']['title'] = 'Progress Chart';
|
||||
$lang->block->default['waterfall']['program']['4']['block'] = 'waterfallprogress';
|
||||
$lang->block->default['waterfall']['program']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['title'] = 'Program Issue';
|
||||
$lang->block->default['waterfall']['program']['5']['block'] = 'waterfallissue';
|
||||
$lang->block->default['waterfall']['program']['5']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['5']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['num'] = '15';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['waterfall']['program']['6']['title'] = 'Dynamic';
|
||||
$lang->block->default['waterfall']['program']['6']['block'] = 'dynamic';
|
||||
$lang->block->default['waterfall']['program']['6']['grid'] = 4;
|
||||
$lang->block->default['waterfall']['program']['6']['source'] = '';
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['title'] = $lang->projectCommon . 'Risk';
|
||||
$lang->block->default['waterfall']['program']['7']['block'] = 'waterfallrisk';
|
||||
$lang->block->default['waterfall']['program']['7']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['7']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['num'] = '15';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['1']['title'] = $lang->projectCommon . ' Overall';
|
||||
$lang->block->default['scrum']['program']['1']['block'] = 'scrumoverall';
|
||||
$lang->block->default['scrum']['program']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['2']['title'] = $lang->projectCommon . ' List';
|
||||
$lang->block->default['scrum']['program']['2']['block'] = 'scrumlist';
|
||||
$lang->block->default['scrum']['program']['2']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['3']['title'] = $lang->productCommon . ' Road Map';
|
||||
$lang->block->default['scrum']['program']['3']['block'] = 'scrumroadmap';
|
||||
$lang->block->default['scrum']['program']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['4']['title'] = 'Test Version';
|
||||
$lang->block->default['scrum']['program']['4']['block'] = 'scrumtest';
|
||||
$lang->block->default['scrum']['program']['4']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['4']['params']['type'] = 'all';
|
||||
$lang->block->default['scrum']['program']['4']['params']['num'] = '15';
|
||||
$lang->block->default['scrum']['program']['4']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['5']['title'] = $lang->productCommon . ' Overview';
|
||||
$lang->block->default['scrum']['program']['5']['block'] = 'scrumproduct';
|
||||
$lang->block->default['scrum']['program']['5']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['6']['title'] = $lang->projectCommon . ' Overview';
|
||||
$lang->block->default['scrum']['program']['6']['block'] = 'sprint';
|
||||
$lang->block->default['scrum']['program']['6']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['7']['title'] = 'Dynamic';
|
||||
$lang->block->default['scrum']['program']['7']['block'] = 'scrumdynamic';
|
||||
$lang->block->default['scrum']['program']['7']['grid'] = 4;
|
||||
|
||||
$lang->block->default['product']['1']['title'] = $lang->productCommon . ' Berichte';
|
||||
$lang->block->default['product']['1']['block'] = 'statistic';
|
||||
$lang->block->default['product']['1']['grid'] = 8;
|
||||
@@ -163,14 +259,17 @@ $lang->block->default['full']['my']['1']['title'] = 'Willkommen';
|
||||
$lang->block->default['full']['my']['1']['block'] = 'welcome';
|
||||
$lang->block->default['full']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['1']['source'] = '';
|
||||
|
||||
$lang->block->default['full']['my']['2']['title'] = 'Verlauf';
|
||||
$lang->block->default['full']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['full']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['2']['source'] = '';
|
||||
|
||||
$lang->block->default['full']['my']['3']['title'] = 'Flowchart';
|
||||
$lang->block->default['full']['my']['3']['block'] = 'flowchart';
|
||||
$lang->block->default['full']['my']['3']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['3']['source'] = '';
|
||||
|
||||
$lang->block->default['full']['my']['4']['title'] = 'Meine Todos';
|
||||
$lang->block->default['full']['my']['4']['block'] = 'list';
|
||||
$lang->block->default['full']['my']['4']['grid'] = 4;
|
||||
|
||||
+27
-20
@@ -62,6 +62,7 @@ $lang->block->consumedHours = 'Consumed Hours';
|
||||
$lang->block->time = 'No';
|
||||
$lang->block->week = 'Week';
|
||||
$lang->block->month = 'Month';
|
||||
$lang->block->selectProduct = 'Product selection';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Name';
|
||||
@@ -81,10 +82,16 @@ $lang->block->nbsp = ' ';
|
||||
$lang->block->hidden = 'Hide';
|
||||
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <em>%s</em> %s <a href='%s' title='%s'>%s</a></span>";
|
||||
|
||||
$lang->block->productName = $lang->productCommon . ' Name';
|
||||
$lang->block->totalStory = 'The Total ' . $lang->storyCommon;
|
||||
$lang->block->totalBug = 'The Total Bug';
|
||||
$lang->block->totalRelease = 'Release The Number';
|
||||
$lang->block->productName = $lang->productCommon . ' Name';
|
||||
$lang->block->totalStory = 'The Total ' . $lang->storyCommon;
|
||||
$lang->block->totalBug = 'The Total Bug';
|
||||
$lang->block->totalRelease = 'Release The Number';
|
||||
|
||||
$lang->block->totalInvestment = 'Total investment';
|
||||
$lang->block->totalPeople = 'Total number';
|
||||
$lang->block->spent = 'Has Been Spent';
|
||||
$lang->block->budget = 'Budget';
|
||||
$lang->block->left = 'Residuals';
|
||||
|
||||
$lang->block->default['waterfall']['program']['1']['title'] = $lang->projectCommon . 'Weekly';
|
||||
$lang->block->default['waterfall']['program']['1']['block'] = 'Pmmireport';
|
||||
@@ -153,7 +160,7 @@ $lang->block->default['scrum']['program']['5']['block'] = 'scrumproduct';
|
||||
$lang->block->default['scrum']['program']['5']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['6']['title'] = $lang->projectCommon . ' Overview';
|
||||
$lang->block->default['scrum']['program']['6']['block'] = 'scrumproject';
|
||||
$lang->block->default['scrum']['program']['6']['block'] = 'sprint';
|
||||
$lang->block->default['scrum']['program']['6']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['7']['title'] = 'Dynamic';
|
||||
@@ -334,10 +341,10 @@ $lang->block->modules['scrum']['index'] = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverall = $lang->projectCommon . ' Overall';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumlist = $lang->projectCommon . ' List';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumproject = $lang->projectCommon . ' Overview';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumroadmap = $lang->productCommon . ' Rode Map';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->sprint = $lang->projectCommon . ' Overview';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumproduct = $lang->productCommon . ' Overview';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumtest = 'Test Version';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumroadmap = $lang->productCommon . ' Rode Map';
|
||||
|
||||
$lang->block->modules['waterfall']['index'] = new stdclass();
|
||||
$lang->block->modules['waterfall']['index']->availableBlocks = new stdclass();
|
||||
@@ -472,19 +479,19 @@ $lang->block->typeList->testtask['done'] = 'Done';
|
||||
$lang->block->typeList->testtask['all'] = 'All';
|
||||
|
||||
$lang->block->modules['program']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['program']->moreLinkList->recentprogram = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->statistic = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->program = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallreport = 'weekly|index|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallestimate = 'workestimation|index|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallissue = 'issue|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallrisk = 'risk|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumlist = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumroadmap = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumtest = 'testtask|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumproduct = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumproject = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumdynamic = 'company|dynamic|';
|
||||
$lang->block->modules['program']->moreLinkList->recentprogram = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->statistic = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->program = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmireport = 'weekly|index|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmiestimate = 'workestimation|index|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmiissue = 'issue|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmirisk = 'risk|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumlist = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumroadmap = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumtest = 'testtask|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumproduct = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->sprint = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumdynamic = 'company|dynamic|';
|
||||
|
||||
$lang->block->modules['product']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['product']->moreLinkList->list = 'product|all|product=&line=0&status=%s';
|
||||
|
||||
@@ -32,9 +32,11 @@ $lang->block->lblNum = 'Numéro';
|
||||
$lang->block->lblHtml = 'HTML';
|
||||
$lang->block->dynamic = 'Historique';
|
||||
$lang->block->assignToMe = 'Assigné à moi';
|
||||
$lang->block->done = 'Done';
|
||||
$lang->block->lblFlowchart = 'Organigramme';
|
||||
$lang->block->welcome = 'Bienvenue';
|
||||
$lang->block->lblTesttask = 'Détail Recette';
|
||||
$lang->block->contribute = 'Personal Contribution';
|
||||
|
||||
$lang->block->leftToday = 'Reste à faire';
|
||||
$lang->block->myTask = 'Mes Tâches';
|
||||
@@ -50,8 +52,17 @@ $lang->block->openedStories = 'The Number Of Stories Created';
|
||||
$lang->block->resolvedTasks = 'The Number Of Tasks Resolved';
|
||||
$lang->block->resolvedBugs = 'The Number Of Bugs Resolved';
|
||||
$lang->block->openedTestcases = 'The Number Of Test Case Created';
|
||||
$lang->block->waterfall = 'CMMI 3';
|
||||
$lang->block->waterfall = 'CMMI 3';
|
||||
$lang->block->scrum = 'Scrum+';
|
||||
$lang->block->allProject = 'All ' . $lang->projectCommon;
|
||||
$lang->block->doingProject = 'Doning ' . $lang->projectCommon;
|
||||
$lang->block->finishProject = 'Finish ' . $lang->projectCommon;
|
||||
$lang->block->estimatedHours = 'Estimated Hours';
|
||||
$lang->block->consumedHours = 'Consumed Hours';
|
||||
$lang->block->time = 'No';
|
||||
$lang->block->week = 'Week';
|
||||
$lang->block->month = 'Month';
|
||||
$lang->block->selectProduct = 'Product selection';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Nom';
|
||||
@@ -71,6 +82,91 @@ $lang->block->nbsp = ' ';
|
||||
$lang->block->hidden = 'Masquer';
|
||||
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <em>%s</em> %s <a href='%s' title='%s'>%s</a></span>";
|
||||
|
||||
$lang->block->productName = $lang->productCommon . ' Name';
|
||||
$lang->block->totalStory = 'The Total ' . $lang->storyCommon;
|
||||
$lang->block->totalBug = 'The Total Bug';
|
||||
$lang->block->totalRelease = 'Release The Number';
|
||||
|
||||
$lang->block->totalInvestment = 'Total investment';
|
||||
$lang->block->totalPeople = 'Total number';
|
||||
$lang->block->spent = 'Has Been Spent';
|
||||
$lang->block->budget = 'Budget';
|
||||
$lang->block->left = 'Residuals';
|
||||
|
||||
$lang->block->default['waterfall']['program']['1']['title'] = $lang->projectCommon . 'Weekly';
|
||||
$lang->block->default['waterfall']['program']['1']['block'] = 'Pmmireport';
|
||||
$lang->block->default['waterfall']['program']['1']['source'] = 'Program';
|
||||
$lang->block->default['waterfall']['program']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['2']['title'] = 'Estimate';
|
||||
$lang->block->default['waterfall']['program']['2']['block'] = 'waterfallestimate';
|
||||
$lang->block->default['waterfall']['program']['2']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['2']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['3']['title'] = 'Plan Gantt Chart';
|
||||
$lang->block->default['waterfall']['program']['3']['block'] = 'waterfallgantt';
|
||||
$lang->block->default['waterfall']['program']['3']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['4']['title'] = 'Progress Chart';
|
||||
$lang->block->default['waterfall']['program']['4']['block'] = 'waterfallprogress';
|
||||
$lang->block->default['waterfall']['program']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['title'] = 'Program Issue';
|
||||
$lang->block->default['waterfall']['program']['5']['block'] = 'waterfallissue';
|
||||
$lang->block->default['waterfall']['program']['5']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['5']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['num'] = '15';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['waterfall']['program']['6']['title'] = 'Dynamic';
|
||||
$lang->block->default['waterfall']['program']['6']['block'] = 'dynamic';
|
||||
$lang->block->default['waterfall']['program']['6']['grid'] = 4;
|
||||
$lang->block->default['waterfall']['program']['6']['source'] = '';
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['title'] = $lang->projectCommon . 'Risk';
|
||||
$lang->block->default['waterfall']['program']['7']['block'] = 'waterfallrisk';
|
||||
$lang->block->default['waterfall']['program']['7']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['7']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['num'] = '15';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['1']['title'] = $lang->projectCommon . ' Overall';
|
||||
$lang->block->default['scrum']['program']['1']['block'] = 'scrumoverall';
|
||||
$lang->block->default['scrum']['program']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['2']['title'] = $lang->projectCommon . ' List';
|
||||
$lang->block->default['scrum']['program']['2']['block'] = 'scrumlist';
|
||||
$lang->block->default['scrum']['program']['2']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['3']['title'] = $lang->productCommon . ' Road Map';
|
||||
$lang->block->default['scrum']['program']['3']['block'] = 'scrumroadmap';
|
||||
$lang->block->default['scrum']['program']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['4']['title'] = 'Test Version';
|
||||
$lang->block->default['scrum']['program']['4']['block'] = 'scrumtest';
|
||||
$lang->block->default['scrum']['program']['4']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['4']['params']['type'] = 'all';
|
||||
$lang->block->default['scrum']['program']['4']['params']['num'] = '15';
|
||||
$lang->block->default['scrum']['program']['4']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['5']['title'] = $lang->productCommon . ' Overview';
|
||||
$lang->block->default['scrum']['program']['5']['block'] = 'scrumproduct';
|
||||
$lang->block->default['scrum']['program']['5']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['6']['title'] = $lang->projectCommon . ' Overview';
|
||||
$lang->block->default['scrum']['program']['6']['block'] = 'sprint';
|
||||
$lang->block->default['scrum']['program']['6']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['7']['title'] = 'Dynamic';
|
||||
$lang->block->default['scrum']['program']['7']['block'] = 'scrumdynamic';
|
||||
$lang->block->default['scrum']['program']['7']['grid'] = 4;
|
||||
|
||||
$lang->block->default['product']['1']['title'] = ' Rapport de ' . $lang->productCommon;
|
||||
$lang->block->default['product']['1']['block'] = 'statistic';
|
||||
$lang->block->default['product']['1']['grid'] = 8;
|
||||
@@ -163,10 +259,12 @@ $lang->block->default['full']['my']['1']['title'] = 'Bienvenue';
|
||||
$lang->block->default['full']['my']['1']['block'] = 'welcome';
|
||||
$lang->block->default['full']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['1']['source'] = '';
|
||||
|
||||
$lang->block->default['full']['my']['2']['title'] = 'Historique';
|
||||
$lang->block->default['full']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['full']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['2']['source'] = '';
|
||||
|
||||
$lang->block->default['full']['my']['3']['title'] = 'Organigramme';
|
||||
$lang->block->default['full']['my']['3']['block'] = 'flowchart';
|
||||
$lang->block->default['full']['my']['3']['grid'] = 8;
|
||||
|
||||
@@ -32,9 +32,11 @@ $lang->block->lblNum = 'Số';
|
||||
$lang->block->lblHtml = 'HTML';
|
||||
$lang->block->dynamic = 'Lịch sử';
|
||||
$lang->block->assignToMe = 'Giao cho bạn';
|
||||
$lang->block->done = 'Done';
|
||||
$lang->block->lblFlowchart = 'Biểu đồ';
|
||||
$lang->block->welcome = 'Welcome';
|
||||
$lang->block->lblTesttask = 'Chi tiết yêu cầu Test';
|
||||
$lang->block->contribute = 'Personal Contribution';
|
||||
|
||||
$lang->block->leftToday = 'Việc hôm nay';
|
||||
$lang->block->myTask = 'Nhiệm vụ';
|
||||
@@ -50,8 +52,17 @@ $lang->block->openedStories = 'The Number Of Stories Created';
|
||||
$lang->block->resolvedTasks = 'The Number Of Tasks Resolved';
|
||||
$lang->block->resolvedBugs = 'The Number Of Bugs Resolved';
|
||||
$lang->block->openedTestcases = 'The Number Of Test Case Created';
|
||||
$lang->block->waterfall = 'CMMI 3';
|
||||
$lang->block->waterfall = 'CMMI 3';
|
||||
$lang->block->scrum = 'Scrum+';
|
||||
$lang->block->allProject = 'All ' . $lang->projectCommon;
|
||||
$lang->block->doingProject = 'Doning ' . $lang->projectCommon;
|
||||
$lang->block->finishProject = 'Finish ' . $lang->projectCommon;
|
||||
$lang->block->estimatedHours = 'Estimated Hours';
|
||||
$lang->block->consumedHours = 'Consumed Hours';
|
||||
$lang->block->time = 'No';
|
||||
$lang->block->week = 'Week';
|
||||
$lang->block->month = 'Month';
|
||||
$lang->block->selectProduct = 'Product selection';
|
||||
|
||||
$lang->block->params = new stdclass();
|
||||
$lang->block->params->name = 'Tên';
|
||||
@@ -71,6 +82,91 @@ $lang->block->nbsp = ' ';
|
||||
$lang->block->hidden = 'Ẩn';
|
||||
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <em>%s</em> %s <a href='%s' title='%s'>%s</a></span>";
|
||||
|
||||
$lang->block->productName = $lang->productCommon . ' Name';
|
||||
$lang->block->totalStory = 'The Total ' . $lang->storyCommon;
|
||||
$lang->block->totalBug = 'The Total Bug';
|
||||
$lang->block->totalRelease = 'Release The Number';
|
||||
|
||||
$lang->block->totalInvestment = 'Total investment';
|
||||
$lang->block->totalPeople = 'Total number';
|
||||
$lang->block->spent = 'Has Been Spent';
|
||||
$lang->block->budget = 'Budget';
|
||||
$lang->block->left = 'Residuals';
|
||||
|
||||
$lang->block->default['waterfall']['program']['1']['title'] = $lang->projectCommon . 'Weekly';
|
||||
$lang->block->default['waterfall']['program']['1']['block'] = 'Pmmireport';
|
||||
$lang->block->default['waterfall']['program']['1']['source'] = 'Program';
|
||||
$lang->block->default['waterfall']['program']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['2']['title'] = 'Estimate';
|
||||
$lang->block->default['waterfall']['program']['2']['block'] = 'waterfallestimate';
|
||||
$lang->block->default['waterfall']['program']['2']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['2']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['3']['title'] = 'Plan Gantt Chart';
|
||||
$lang->block->default['waterfall']['program']['3']['block'] = 'waterfallgantt';
|
||||
$lang->block->default['waterfall']['program']['3']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['4']['title'] = 'Progress Chart';
|
||||
$lang->block->default['waterfall']['program']['4']['block'] = 'waterfallprogress';
|
||||
$lang->block->default['waterfall']['program']['4']['grid'] = 4;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['title'] = 'Program Issue';
|
||||
$lang->block->default['waterfall']['program']['5']['block'] = 'waterfallissue';
|
||||
$lang->block->default['waterfall']['program']['5']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['5']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['5']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['num'] = '15';
|
||||
$lang->block->default['waterfall']['program']['5']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['waterfall']['program']['6']['title'] = 'Dynamic';
|
||||
$lang->block->default['waterfall']['program']['6']['block'] = 'dynamic';
|
||||
$lang->block->default['waterfall']['program']['6']['grid'] = 4;
|
||||
$lang->block->default['waterfall']['program']['6']['source'] = '';
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['title'] = $lang->projectCommon . 'Risk';
|
||||
$lang->block->default['waterfall']['program']['7']['block'] = 'waterfallrisk';
|
||||
$lang->block->default['waterfall']['program']['7']['source'] = 'program';
|
||||
$lang->block->default['waterfall']['program']['7']['grid'] = 8;
|
||||
|
||||
$lang->block->default['waterfall']['program']['7']['params']['type'] = 'all';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['num'] = '15';
|
||||
$lang->block->default['waterfall']['program']['7']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['1']['title'] = $lang->projectCommon . ' Overall';
|
||||
$lang->block->default['scrum']['program']['1']['block'] = 'scrumoverall';
|
||||
$lang->block->default['scrum']['program']['1']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['2']['title'] = $lang->projectCommon . ' List';
|
||||
$lang->block->default['scrum']['program']['2']['block'] = 'scrumlist';
|
||||
$lang->block->default['scrum']['program']['2']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['3']['title'] = $lang->productCommon . ' Road Map';
|
||||
$lang->block->default['scrum']['program']['3']['block'] = 'scrumroadmap';
|
||||
$lang->block->default['scrum']['program']['3']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['4']['title'] = 'Test Version';
|
||||
$lang->block->default['scrum']['program']['4']['block'] = 'scrumtest';
|
||||
$lang->block->default['scrum']['program']['4']['grid'] = 8;
|
||||
|
||||
$lang->block->default['scrum']['program']['4']['params']['type'] = 'all';
|
||||
$lang->block->default['scrum']['program']['4']['params']['num'] = '15';
|
||||
$lang->block->default['scrum']['program']['4']['params']['orderBy'] = 'id_desc';
|
||||
|
||||
$lang->block->default['scrum']['program']['5']['title'] = $lang->productCommon . ' Overview';
|
||||
$lang->block->default['scrum']['program']['5']['block'] = 'scrumproduct';
|
||||
$lang->block->default['scrum']['program']['5']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['6']['title'] = $lang->projectCommon . ' Overview';
|
||||
$lang->block->default['scrum']['program']['6']['block'] = 'sprint';
|
||||
$lang->block->default['scrum']['program']['6']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['7']['title'] = 'Dynamic';
|
||||
$lang->block->default['scrum']['program']['7']['block'] = 'scrumdynamic';
|
||||
$lang->block->default['scrum']['program']['7']['grid'] = 4;
|
||||
|
||||
$lang->block->default['product']['1']['title'] = 'Báo cáo '.$lang->productCommon;
|
||||
$lang->block->default['product']['1']['block'] = 'statistic';
|
||||
$lang->block->default['product']['1']['grid'] = 8;
|
||||
@@ -163,10 +259,12 @@ $lang->block->default['full']['my']['1']['title'] = 'Chào mừng';
|
||||
$lang->block->default['full']['my']['1']['block'] = 'welcome';
|
||||
$lang->block->default['full']['my']['1']['grid'] = 8;
|
||||
$lang->block->default['full']['my']['1']['source'] = '';
|
||||
|
||||
$lang->block->default['full']['my']['2']['title'] = 'Lịch sử';
|
||||
$lang->block->default['full']['my']['2']['block'] = 'dynamic';
|
||||
$lang->block->default['full']['my']['2']['grid'] = 4;
|
||||
$lang->block->default['full']['my']['2']['source'] = '';
|
||||
|
||||
$lang->block->default['full']['my']['3']['title'] = 'Quy trình';
|
||||
$lang->block->default['full']['my']['3']['block'] = 'flowchart';
|
||||
$lang->block->default['full']['my']['3']['grid'] = 8;
|
||||
|
||||
+24
-23
@@ -82,16 +82,16 @@ $lang->block->nbsp = '';
|
||||
$lang->block->hidden = '隐藏';
|
||||
$lang->block->dynamicInfo = "<span class='timeline-tag'>%s</span> <span class='timeline-text'>%s <em>%s</em> %s <a href='%s' title='%s'>%s</a></span>";
|
||||
|
||||
$lang->block->productName = $lang->productCommon . '名称';
|
||||
$lang->block->totalStory = '总' . $lang->storyCommon;
|
||||
$lang->block->totalBug = '总Bug';
|
||||
$lang->block->totalRelease = '发布次数';
|
||||
$lang->block->productName = $lang->productCommon . '名称';
|
||||
$lang->block->totalStory = '总' . $lang->storyCommon;
|
||||
$lang->block->totalBug = '总Bug';
|
||||
$lang->block->totalRelease = '发布次数';
|
||||
|
||||
$lang->block->totalInvestment = '总投入';
|
||||
$lang->block->totalPeople = '总人数';
|
||||
$lang->block->spent = '已花费';
|
||||
$lang->block->budget = '预算';
|
||||
$lang->block->left = '剩余';
|
||||
$lang->block->totalInvestment = '总投入';
|
||||
$lang->block->totalPeople = '总人数';
|
||||
$lang->block->spent = '已花费';
|
||||
$lang->block->budget = '预算';
|
||||
$lang->block->left = '剩余';
|
||||
|
||||
$lang->block->default['waterfall']['program']['1']['title'] = '项目周报';
|
||||
$lang->block->default['waterfall']['program']['1']['block'] = 'waterfallreport';
|
||||
@@ -160,7 +160,7 @@ $lang->block->default['scrum']['program']['5']['block'] = 'scrumproduct';
|
||||
$lang->block->default['scrum']['program']['5']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['6']['title'] = $lang->projectCommon . '总览';
|
||||
$lang->block->default['scrum']['program']['6']['block'] = 'scrumproject';
|
||||
$lang->block->default['scrum']['program']['6']['block'] = 'sprint';
|
||||
$lang->block->default['scrum']['program']['6']['grid'] = 4;
|
||||
|
||||
$lang->block->default['scrum']['program']['7']['title'] = '最新动态';
|
||||
@@ -342,7 +342,7 @@ $lang->block->modules['scrum']['index']->availableBlocks = new stdclass();
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumoverall = '项目整体情况';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumlist = $lang->projectCommon . '列表';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumroadmap = $lang->productCommon . '路线图';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumproject = $lang->projectCommon . '总览';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->sprint = $lang->projectCommon . '总览';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumproduct = $lang->productCommon . '总览';
|
||||
$lang->block->modules['scrum']['index']->availableBlocks->scrumtest = '待测版本';
|
||||
|
||||
@@ -479,18 +479,19 @@ $lang->block->typeList->testtask['done'] = '已测版本';
|
||||
$lang->block->typeList->testtask['all'] = '全部';
|
||||
|
||||
$lang->block->modules['program']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['program']->moreLinkList->recentprogram = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->statistic = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->program = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallreport = 'weekly|index|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallestimate = 'workestimation|index|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallissue = 'issue|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->waterfallrisk = 'risk|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumlist = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumtest = 'testtask|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumproduct = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumproject = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumdynamic = 'company|dynamic|';
|
||||
$lang->block->modules['program']->moreLinkList->recentprogram = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->statistic = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->program = 'program|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmireport = 'weekly|index|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmiestimate = 'workestimation|index|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmiissue = 'issue|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->cmmirisk = 'risk|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumlist = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumroadmap = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumtest = 'testtask|browse|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumproduct = 'product|all|';
|
||||
$lang->block->modules['program']->moreLinkList->sprint = 'project|all|';
|
||||
$lang->block->modules['program']->moreLinkList->scrumdynamic = 'company|dynamic|';
|
||||
|
||||
$lang->block->modules['product']->moreLinkList = new stdclass();
|
||||
$lang->block->modules['product']->moreLinkList->list = 'product|all|product=&line=0&status=%s';
|
||||
|
||||
@@ -936,7 +936,7 @@ class blockModel extends model
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getScrumprojectParams($module = '')
|
||||
public function getSprintParams($module = '')
|
||||
{
|
||||
$params->num['name'] = $this->lang->block->num;
|
||||
$params->num['control'] = 'input';
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
.hours-statistics{position: relative; padding: 0px 5px 5px; display: table-cell;text-align: center;}
|
||||
.hours-statistics > small {display: block; color: #A6AAB8;}
|
||||
.hours-statistics > span {display: block; color: #3c4353; font-weight: bold;}
|
||||
.tile-amount{font-size: 20px;}
|
||||
</style>
|
||||
<div class="panel-body conatiner-fluid">
|
||||
<div class="table-row">
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* The project overview block view file of block module of ZenTaoPMS.
|
||||
* The sprint block view file of block 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)
|
||||
@@ -8,8 +8,8 @@
|
||||
.block-waterfallreport .col-right .tile { width: 20%;}
|
||||
.block-waterfallreport .col-right .tile .tile-title{font-weight: 700;}
|
||||
.block-waterfallreport .progress {position: absolute; left: 45px; top: 90px; right: 40px;}
|
||||
.block-waterfallreport .progress-num{font-size: 26px; font-weight: 700}
|
||||
.block-waterfallreport .col-right .tile-amount{font-size: 22px; font-weight: 700}
|
||||
.block-waterfallreport .progress-num{font-size: 20px; font-weight: 700}
|
||||
.block-waterfallreport .col-right .tile-amount{font-size: 20px}
|
||||
</style>
|
||||
|
||||
<div class="panel-move-handler"><span class='stage text-muted'><?php echo $current;?></span></div>
|
||||
|
||||
@@ -614,6 +614,7 @@ class commonModel extends model
|
||||
$subLink = helper::createLink($subModule, $subMethod, $subParams);
|
||||
if($subMenuItem->name == 'program')
|
||||
{
|
||||
/* Print program sub menu.*/
|
||||
global $dbh;
|
||||
$program = $dbh->query("SELECT * FROM " . TABLE_PROJECT . " WHERE `id` = '{$app->session->program}'")->fetch();
|
||||
$subActive .= 'dropdown-submenu';
|
||||
@@ -2116,6 +2117,16 @@ EOD;
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set main menu by nav group.
|
||||
*
|
||||
* @param string $group
|
||||
* @param string $moduleName
|
||||
* @param string $methodName
|
||||
* @static
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public static function setMainMenuByGroup($group, $moduleName, $methodName)
|
||||
{
|
||||
global $lang;
|
||||
@@ -2149,6 +2160,14 @@ EOD;
|
||||
if($group == 'program') $lang->menu = self::getProgramMainMenu($moduleName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace menu vars.
|
||||
*
|
||||
* @param object $menus
|
||||
* @static
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public static function processMenuVars($menus)
|
||||
{
|
||||
global $app, $lang;
|
||||
@@ -2176,6 +2195,14 @@ EOD;
|
||||
return $menus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get program main menu by template.
|
||||
*
|
||||
* @param varchar $moduleName
|
||||
* @static
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public static function getProgramMainMenu($moduleName)
|
||||
{
|
||||
global $app, $lang, $dbh;
|
||||
@@ -2197,6 +2224,14 @@ EOD;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get program module menu by template.
|
||||
*
|
||||
* @param varchar $moduleName
|
||||
* @static
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public static function getProgramModuleMenu($moduleName)
|
||||
{
|
||||
global $app, $lang, $dbh;
|
||||
@@ -2211,6 +2246,17 @@ EOD;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get relations for two object.
|
||||
*
|
||||
* @param varchar $AType
|
||||
* @param int $AID
|
||||
* @param varchar $BType
|
||||
* @param int $BID
|
||||
* @static
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getRelations($AType = '', $AID = 0, $BType = '', $BID = 0)
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_RELATION)
|
||||
|
||||
@@ -19,8 +19,8 @@ include 'chosen.html.php';
|
||||
<div id='mainHeader'>
|
||||
<div class='container'>
|
||||
<div id='heading'>
|
||||
<?php if($isProgram) echo $this->loadModel('program')->getSwapper($this->program->getPairs(), $this->session->program, $app->rawModule, $app->rawMethod);?>
|
||||
<?php if($isSystem) echo $this->loadModel('custom')->getSwapper();?>
|
||||
<?php if($isProgram) echo $this->loadModel('program')->getSwitcher($this->program->getPairs(), $this->session->program, $app->rawModule, $app->rawMethod);?>
|
||||
<?php if($isSystem) echo $this->loadModel('custom')->getModeSwitcher();?>
|
||||
</div>
|
||||
<nav id='navbar'><?php commonModel::printMainmenu($app->rawModule, $app->rawMethod);?></nav>
|
||||
<div id='toolbar'>
|
||||
@@ -52,18 +52,24 @@ include 'chosen.html.php';
|
||||
</header>
|
||||
|
||||
<?php endif;?>
|
||||
|
||||
<?php if(isset($this->config->qcVersion)):?>
|
||||
<script>
|
||||
$("#userMenu").append('<button class="btn btn-mini" type="button" id="showSearchGo" style="padding: 2px 3px;"><i class="icon icon-sm icon-search"></i></button>');
|
||||
$("#searchbox").hide();
|
||||
$("#showSearchGo").on("click", function(){$("#searchbox").show(); $("#showSearchGo").hide();});
|
||||
$("#showSearchGo").on("click", function()
|
||||
{
|
||||
$("#searchbox").show();
|
||||
$("#showSearchGo").hide();
|
||||
});
|
||||
|
||||
$("#searchInput").mouseout(function()
|
||||
{
|
||||
var searchValue = $("#searchInput").val();
|
||||
if(searchValue == ''){$("#searchbox").hide(); $("#showSearchGo").show()};
|
||||
if(searchValue == '')
|
||||
{
|
||||
$("#searchbox").hide();
|
||||
$("#showSearchGo").show();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<?php endif;?>
|
||||
<main id='main' <?php if(!empty($config->sso->redirect)) echo "class='ranzhiFixedTfootAction'";?> >
|
||||
<div class='container'>
|
||||
|
||||
@@ -24,8 +24,8 @@ js::set('confirmDelete', $lang->user->confirmDelete);
|
||||
</div>
|
||||
</div>
|
||||
<div class='btn-toolbar pull-left'>
|
||||
<?php echo html::a($this->createLink('company', 'browse', 'browseType=inside'), '<span class="text">' . $lang->user->inside . '</span>', '', 'class="btn btn-link inside"');?>
|
||||
<?php echo html::a($this->createLink('company', 'browse', 'browseType=outside'), '<span class="text">' . $lang->user->outside . '</span>', '', 'class="btn btn-link outside"');?>
|
||||
<?php echo html::a($this->createLink('company', 'browse', 'browseType=inside'), '<span class="text">' . $lang->user->inside . '</span>', '', 'class="btn btn-link inside hidden"');?>
|
||||
<?php echo html::a($this->createLink('company', 'browse', 'browseType=outside'), '<span class="text">' . $lang->user->outside . '</span>', '', 'class="btn btn-link outside hidden"');?>
|
||||
<a class="btn btn-link querybox-toggle" id='bysearchTab'><i class="icon icon-search muted"></i> <?php echo $lang->user->search;?></a>
|
||||
</div>
|
||||
<div class='btn-toolbar pull-right'>
|
||||
|
||||
+64
-24
@@ -1,24 +1,67 @@
|
||||
<?php
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->index = 'Home';
|
||||
$lang->custom->set = 'Customize';
|
||||
$lang->custom->restore = 'Reset to Default';
|
||||
$lang->custom->key = 'Key';
|
||||
$lang->custom->value = 'Value';
|
||||
$lang->custom->flow = 'Concept';
|
||||
$lang->custom->working = 'WorkStyle';
|
||||
$lang->custom->select = 'Select Concept';
|
||||
$lang->custom->branch = 'Multi Branch';
|
||||
$lang->custom->owner = 'Owner';
|
||||
$lang->custom->module = 'Module';
|
||||
$lang->custom->section = 'Section';
|
||||
$lang->custom->lang = 'Language';
|
||||
$lang->custom->setPublic = 'Set Public';
|
||||
$lang->custom->required = 'Required';
|
||||
$lang->custom->score = 'Score';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Reset Score';
|
||||
$lang->custom->scoreTitle = 'Point Feature';
|
||||
$lang->custom->common = 'Custom';
|
||||
$lang->custom->index = 'Home';
|
||||
$lang->custom->set = 'Customize';
|
||||
$lang->custom->restore = 'Reset to Default';
|
||||
$lang->custom->key = 'Key';
|
||||
$lang->custom->value = 'Value';
|
||||
$lang->custom->flow = 'Concept';
|
||||
$lang->custom->working = 'WorkStyle';
|
||||
$lang->custom->select = 'Select Concept';
|
||||
$lang->custom->branch = 'Multi Branch';
|
||||
$lang->custom->owner = 'Owner';
|
||||
$lang->custom->module = 'Module';
|
||||
$lang->custom->section = 'Section';
|
||||
$lang->custom->lang = 'Language';
|
||||
$lang->custom->setPublic = 'Set Public';
|
||||
$lang->custom->required = 'Required';
|
||||
$lang->custom->score = 'Score';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Reset Score';
|
||||
$lang->custom->scoreTitle = 'Point Feature';
|
||||
$lang->custom->setscrum = 'Interval Hint';
|
||||
$lang->custom->setWaterfall = 'Switch Views';
|
||||
$lang->custom->estimate = 'Estimated configuration';
|
||||
$lang->custom->estimateConfig = 'Estimated configuration';
|
||||
$lang->custom->estimateUnit = 'Estimating Unit';
|
||||
$lang->custom->estimateEfficiency = 'Productivity';
|
||||
$lang->custom->estimateCost = 'Unit Labour Cost';
|
||||
$lang->custom->estimateHours = 'Daily Working Hours';
|
||||
$lang->custom->estimateDays = 'Working Days Per Week';
|
||||
$lang->custom->region = 'Interval';
|
||||
$lang->custom->tips = 'Tips';
|
||||
$lang->custom->setTips = 'Set Tips';
|
||||
$lang->custom->isRange = 'Is Target Control';
|
||||
$lang->custom->plan = 'Plan';
|
||||
$lang->custom->planStatus = 'Enable Plan';
|
||||
$lang->custom->concept = 'Concept';
|
||||
|
||||
$lang->custom->object['program'] = 'Program';
|
||||
$lang->custom->program->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
$lang->custom->unitList['cost'] = 'Yuan/Hour';
|
||||
$lang->custom->unitList['hours'] = 'Hours';
|
||||
$lang->custom->unitList['days'] = 'Days';
|
||||
$lang->custom->unitList['loc'] = 'KLOC';
|
||||
|
||||
$lang->custom->tipProgressList['SPI'] = 'Schedule Performance Index(SPI)';
|
||||
$lang->custom->tipProgressList['SV'] = 'Schedule Variance(SV%)';
|
||||
|
||||
$lang->custom->tipCostList['CPI'] = 'Cost Performed Index(CPI)';
|
||||
$lang->custom->tipCostList['CV'] = 'Cost Variance(CV%)';
|
||||
|
||||
$lang->custom->planStatusList[0] = 'No';
|
||||
$lang->custom->planStatusList[1] = 'Yes';
|
||||
|
||||
$lang->custom->tipRangeList[0] = 'No';
|
||||
$lang->custom->tipRangeList[1] = 'Yes';
|
||||
|
||||
$lang->custom->regionMustNumber = 'The interval must be a number!';
|
||||
$lang->custom->tipNotEmpty = 'The prompt can not be empty!';
|
||||
|
||||
$lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
|
||||
$lang->custom->object['story'] = 'Story';
|
||||
$lang->custom->object['task'] = 'Task';
|
||||
@@ -127,9 +170,6 @@ $lang->custom->weekendList[1] = '1-Day Off';
|
||||
$lang->custom->productProject = new stdclass();
|
||||
$lang->custom->productProject->relation['0_0'] = 'Product - Project';
|
||||
$lang->custom->productProject->relation['0_1'] = 'Product - Iteration';
|
||||
$lang->custom->productProject->relation['1_1'] = 'Project - Iteration';
|
||||
$lang->custom->productProject->relation['0_2'] = 'Product - Sprint';
|
||||
$lang->custom->productProject->relation['1_2'] = 'Project - Sprint';
|
||||
|
||||
$lang->custom->productProject->notice = 'Please select a concept according to your team.';
|
||||
|
||||
@@ -158,6 +198,6 @@ $lang->custom->conceptOptions->story['0'] = 'Requiremenet';
|
||||
$lang->custom->conceptOptions->story['1'] = 'Story';
|
||||
|
||||
$lang->custom->conceptOptions->hourPoint = array();
|
||||
$lang->custom->conceptOptions->hourPoint['0'] = 'Hour';
|
||||
$lang->custom->conceptOptions->hourPoint['1'] = 'Story Point';
|
||||
$lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
|
||||
$lang->custom->conceptOptions->hourPoint['3'] = 'Code Line';
|
||||
|
||||
@@ -198,7 +198,6 @@ $lang->custom->conceptOptions->story['0'] = 'Requiremenet';
|
||||
$lang->custom->conceptOptions->story['1'] = 'Story';
|
||||
|
||||
$lang->custom->conceptOptions->hourPoint = array();
|
||||
$lang->custom->conceptOptions->hourPoint['0'] = 'Hour';
|
||||
$lang->custom->conceptOptions->hourPoint['1'] = 'Story Point';
|
||||
$lang->custom->conceptOptions->hourPoint['2'] = 'Function Ponit';
|
||||
$lang->custom->conceptOptions->hourPoint['3'] = 'Code Line';
|
||||
|
||||
+64
-24
@@ -1,24 +1,67 @@
|
||||
<?php
|
||||
$lang->custom->common = 'Personnalisation';
|
||||
$lang->custom->index = 'Accueil';
|
||||
$lang->custom->set = 'Personnaliser';
|
||||
$lang->custom->restore = 'Réinitialiser';
|
||||
$lang->custom->key = 'Clé';
|
||||
$lang->custom->value = 'Valeur';
|
||||
$lang->custom->flow = 'Concept';
|
||||
$lang->custom->working = 'Mode';
|
||||
$lang->custom->select = 'Choix du Concept';
|
||||
$lang->custom->branch = 'Multi-Branches';
|
||||
$lang->custom->owner = 'Propriétaire';
|
||||
$lang->custom->module = 'Module';
|
||||
$lang->custom->section = 'Section';
|
||||
$lang->custom->lang = 'Langue';
|
||||
$lang->custom->setPublic = 'Set Public';
|
||||
$lang->custom->required = 'Champ Obligatoire';
|
||||
$lang->custom->score = 'Point';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Réinit Points';
|
||||
$lang->custom->scoreTitle = 'Fonctionnalité des Points';
|
||||
$lang->custom->common = 'Personnalisation';
|
||||
$lang->custom->index = 'Accueil';
|
||||
$lang->custom->set = 'Personnaliser';
|
||||
$lang->custom->restore = 'Réinitialiser';
|
||||
$lang->custom->key = 'Clé';
|
||||
$lang->custom->value = 'Valeur';
|
||||
$lang->custom->flow = 'Concept';
|
||||
$lang->custom->working = 'Mode';
|
||||
$lang->custom->select = 'Choix du Concept';
|
||||
$lang->custom->branch = 'Multi-Branches';
|
||||
$lang->custom->owner = 'Propriétaire';
|
||||
$lang->custom->module = 'Module';
|
||||
$lang->custom->section = 'Section';
|
||||
$lang->custom->lang = 'Langue';
|
||||
$lang->custom->setPublic = 'Set Public';
|
||||
$lang->custom->required = 'Champ Obligatoire';
|
||||
$lang->custom->score = 'Point';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Réinit Points';
|
||||
$lang->custom->scoreTitle = 'Fonctionnalité des Points';
|
||||
$lang->custom->setscrum = 'Interval Hint';
|
||||
$lang->custom->setWaterfall = 'Switch Views';
|
||||
$lang->custom->estimate = 'Estimated configuration';
|
||||
$lang->custom->estimateConfig = 'Estimated configuration';
|
||||
$lang->custom->estimateUnit = 'Estimating Unit';
|
||||
$lang->custom->estimateEfficiency = 'Productivity';
|
||||
$lang->custom->estimateCost = 'Unit Labour Cost';
|
||||
$lang->custom->estimateHours = 'Daily Working Hours';
|
||||
$lang->custom->estimateDays = 'Working Days Per Week';
|
||||
$lang->custom->region = 'Interval';
|
||||
$lang->custom->tips = 'Tips';
|
||||
$lang->custom->setTips = 'Set Tips';
|
||||
$lang->custom->isRange = 'Is Target Control';
|
||||
$lang->custom->plan = 'Plan';
|
||||
$lang->custom->planStatus = 'Enable Plan';
|
||||
$lang->custom->concept = 'Concept';
|
||||
|
||||
$lang->custom->object['program'] = 'Program';
|
||||
$lang->custom->program->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
$lang->custom->unitList['cost'] = 'Yuan/Hour';
|
||||
$lang->custom->unitList['hours'] = 'Hours';
|
||||
$lang->custom->unitList['days'] = 'Days';
|
||||
$lang->custom->unitList['loc'] = 'KLOC';
|
||||
|
||||
$lang->custom->tipProgressList['SPI'] = 'Schedule Performance Index(SPI)';
|
||||
$lang->custom->tipProgressList['SV'] = 'Schedule Variance(SV%)';
|
||||
|
||||
$lang->custom->tipCostList['CPI'] = 'Cost Performed Index(CPI)';
|
||||
$lang->custom->tipCostList['CV'] = 'Cost Variance(CV%)';
|
||||
|
||||
$lang->custom->planStatusList[0] = 'No';
|
||||
$lang->custom->planStatusList[1] = 'Yes';
|
||||
|
||||
$lang->custom->tipRangeList[0] = 'No';
|
||||
$lang->custom->tipRangeList[1] = 'Yes';
|
||||
|
||||
$lang->custom->regionMustNumber = 'The interval must be a number!';
|
||||
$lang->custom->tipNotEmpty = 'The prompt can not be empty!';
|
||||
|
||||
$lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
|
||||
$lang->custom->object['story'] = 'Story';
|
||||
$lang->custom->object['task'] = 'Tâche';
|
||||
@@ -127,9 +170,6 @@ $lang->custom->weekendList[1] = '1-Jour';
|
||||
$lang->custom->productProject = new stdclass();
|
||||
$lang->custom->productProject->relation['0_0'] = 'Product - Project';
|
||||
$lang->custom->productProject->relation['0_1'] = 'Product - Iteration';
|
||||
$lang->custom->productProject->relation['1_1'] = 'Project - Iteration';
|
||||
$lang->custom->productProject->relation['0_2'] = 'Product - Sprint';
|
||||
$lang->custom->productProject->relation['1_2'] = 'Project - Sprint';
|
||||
|
||||
$lang->custom->productProject->notice = 'Sélectionnez le concept qui correspond à votre équipe.';
|
||||
|
||||
@@ -158,6 +198,6 @@ $lang->custom->conceptOptions->story['0'] = 'Exigence';
|
||||
$lang->custom->conceptOptions->story['1'] = 'Story';
|
||||
|
||||
$lang->custom->conceptOptions->hourPoint = array();
|
||||
$lang->custom->conceptOptions->hourPoint['0'] = 'Heures';
|
||||
$lang->custom->conceptOptions->hourPoint['1'] = 'Points de Story';
|
||||
$lang->custom->conceptOptions->hourPoint['2'] = 'Points de Fonction';
|
||||
$lang->custom->conceptOptions->hourPoint['3'] = 'Code Line';
|
||||
|
||||
+64
-24
@@ -1,24 +1,67 @@
|
||||
<?php
|
||||
$lang->custom->common = 'Tùy biến';
|
||||
$lang->custom->index = 'Trang chủ';
|
||||
$lang->custom->set = 'Tùy biến';
|
||||
$lang->custom->restore = 'Thiết lập lại';
|
||||
$lang->custom->key = 'Khóa';
|
||||
$lang->custom->value = 'Giá trị';
|
||||
$lang->custom->flow = 'Mô hình';
|
||||
$lang->custom->working = 'Chế độ';
|
||||
$lang->custom->select = 'Chọn mô hình';
|
||||
$lang->custom->branch = 'Multi-Branch';
|
||||
$lang->custom->owner = 'Sở hữu';
|
||||
$lang->custom->module = 'Module';
|
||||
$lang->custom->section = 'Section';
|
||||
$lang->custom->lang = 'Ngôn ngữ';
|
||||
$lang->custom->setPublic = 'Thiết lập Public';
|
||||
$lang->custom->required = 'Trường bắt buộc';
|
||||
$lang->custom->score = 'Điểm';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Thiết lập lại điểm';
|
||||
$lang->custom->scoreTitle = 'Tính năng điểm';
|
||||
$lang->custom->common = 'Tùy biến';
|
||||
$lang->custom->index = 'Trang chủ';
|
||||
$lang->custom->set = 'Tùy biến';
|
||||
$lang->custom->restore = 'Thiết lập lại';
|
||||
$lang->custom->key = 'Khóa';
|
||||
$lang->custom->value = 'Giá trị';
|
||||
$lang->custom->flow = 'Mô hình';
|
||||
$lang->custom->working = 'Chế độ';
|
||||
$lang->custom->select = 'Chọn mô hình';
|
||||
$lang->custom->branch = 'Multi-Branch';
|
||||
$lang->custom->owner = 'Sở hữu';
|
||||
$lang->custom->module = 'Module';
|
||||
$lang->custom->section = 'Section';
|
||||
$lang->custom->lang = 'Ngôn ngữ';
|
||||
$lang->custom->setPublic = 'Thiết lập Public';
|
||||
$lang->custom->required = 'Trường bắt buộc';
|
||||
$lang->custom->score = 'Điểm';
|
||||
$lang->custom->timezone = 'Timezone';
|
||||
$lang->custom->scoreReset = 'Thiết lập lại điểm';
|
||||
$lang->custom->scoreTitle = 'Tính năng điểm';
|
||||
$lang->custom->setscrum = 'Interval Hint';
|
||||
$lang->custom->setWaterfall = 'Switch Views';
|
||||
$lang->custom->estimate = 'Estimated configuration';
|
||||
$lang->custom->estimateConfig = 'Estimated configuration';
|
||||
$lang->custom->estimateUnit = 'Estimating Unit';
|
||||
$lang->custom->estimateEfficiency = 'Productivity';
|
||||
$lang->custom->estimateCost = 'Unit Labour Cost';
|
||||
$lang->custom->estimateHours = 'Daily Working Hours';
|
||||
$lang->custom->estimateDays = 'Working Days Per Week';
|
||||
$lang->custom->region = 'Interval';
|
||||
$lang->custom->tips = 'Tips';
|
||||
$lang->custom->setTips = 'Set Tips';
|
||||
$lang->custom->isRange = 'Is Target Control';
|
||||
$lang->custom->plan = 'Plan';
|
||||
$lang->custom->planStatus = 'Enable Plan';
|
||||
$lang->custom->concept = 'Concept';
|
||||
|
||||
$lang->custom->object['program'] = 'Program';
|
||||
$lang->custom->program->fields['unitList'] = 'Unit List';
|
||||
|
||||
$lang->custom->unitList['efficiency'] = 'Working Hours/';
|
||||
$lang->custom->unitList['manhour'] = 'Man-hour/';
|
||||
$lang->custom->unitList['cost'] = 'Yuan/Hour';
|
||||
$lang->custom->unitList['hours'] = 'Hours';
|
||||
$lang->custom->unitList['days'] = 'Days';
|
||||
$lang->custom->unitList['loc'] = 'KLOC';
|
||||
|
||||
$lang->custom->tipProgressList['SPI'] = 'Schedule Performance Index(SPI)';
|
||||
$lang->custom->tipProgressList['SV'] = 'Schedule Variance(SV%)';
|
||||
|
||||
$lang->custom->tipCostList['CPI'] = 'Cost Performed Index(CPI)';
|
||||
$lang->custom->tipCostList['CV'] = 'Cost Variance(CV%)';
|
||||
|
||||
$lang->custom->planStatusList[0] = 'No';
|
||||
$lang->custom->planStatusList[1] = 'Yes';
|
||||
|
||||
$lang->custom->tipRangeList[0] = 'No';
|
||||
$lang->custom->tipRangeList[1] = 'Yes';
|
||||
|
||||
$lang->custom->regionMustNumber = 'The interval must be a number!';
|
||||
$lang->custom->tipNotEmpty = 'The prompt can not be empty!';
|
||||
|
||||
$lang->custom->numberError = 'The interval must be greater than zero!';
|
||||
|
||||
$lang->custom->object['story'] = 'Câu chuyện';
|
||||
$lang->custom->object['task'] = 'Nhiệm vụ';
|
||||
@@ -127,9 +170,6 @@ $lang->custom->weekendList[1] = '1 ngày nghỉ';
|
||||
$lang->custom->productProject = new stdclass();
|
||||
$lang->custom->productProject->relation['0_0'] = 'Sản phẩm - Dự án';
|
||||
$lang->custom->productProject->relation['0_1'] = 'Sản phẩm - lặp lại';
|
||||
$lang->custom->productProject->relation['1_1'] = 'Dự án - lặp lại';
|
||||
$lang->custom->productProject->relation['0_2'] = 'Sản phẩm - Sprint';
|
||||
$lang->custom->productProject->relation['1_2'] = 'Dự án - Sprint';
|
||||
|
||||
$lang->custom->productProject->notice = 'Chọn một mô hình phù hợp với doanh nghiệp của bạn.';
|
||||
|
||||
@@ -158,6 +198,6 @@ $lang->custom->conceptOptions->story['0'] = 'Điều kiện';
|
||||
$lang->custom->conceptOptions->story['1'] = 'Câu chuyện';
|
||||
|
||||
$lang->custom->conceptOptions->hourPoint = array();
|
||||
$lang->custom->conceptOptions->hourPoint['0'] = 'Giờ';
|
||||
$lang->custom->conceptOptions->hourPoint['1'] = 'Điểm';
|
||||
$lang->custom->conceptOptions->hourPoint['2'] = 'Function Point';
|
||||
$lang->custom->conceptOptions->hourPoint['3'] = 'Code Line';
|
||||
|
||||
@@ -362,13 +362,13 @@ class customModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Get system swapper.
|
||||
* Get system mode switcher.
|
||||
* @param string $module
|
||||
* @param string $method
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getSwapper()
|
||||
public function getModeSwitcher()
|
||||
{
|
||||
$current = (isset($_COOKIE['systemModel']) and $_COOKIE['systemModel'] == 'scrum') ? 'Scrum' : 'CMMI';
|
||||
$link = (isset($_COOKIE['systemModel']) and $_COOKIE['systemModel'] == 'scrum') ? html::a(helper::createLink('custom', 'setwaterfall'), 'CMMI') : html::a(helper::createLink('custom', 'setscrum'), 'Scrum');
|
||||
|
||||
@@ -349,7 +349,10 @@ class deptModel extends model
|
||||
/**
|
||||
* Get users of a deparment.
|
||||
*
|
||||
* @param int $deptID
|
||||
* @param varchar $browseType inside|outside|all
|
||||
* @param int $deptID
|
||||
* @param object $pager
|
||||
* @param varchar $orderBy
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -357,7 +360,7 @@ class deptModel extends model
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_USER)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($browseType == 'inside')->andWhere('type')->eq('')->fi()
|
||||
->beginIF($browseType == 'inside')->andWhere('type')->eq('inside')->fi()
|
||||
->beginIF($browseType == 'outside')->andWhere('type')->eq('outside')->fi()
|
||||
->beginIF($deptID)->andWhere('dept')->in($deptID)->fi()
|
||||
->orderBy($orderBy)
|
||||
|
||||
@@ -21,8 +21,6 @@ $config->design->search['fields']['commit'] = $lang->design->submission;
|
||||
$config->design->search['fields']['createdBy'] = $lang->design->createdBy;
|
||||
$config->design->search['fields']['createdDate'] = $lang->design->createdDate;
|
||||
$config->design->search['fields']['assignedTo'] = $lang->design->assignedTo;
|
||||
$config->design->search['fields']['commitBy'] = $lang->design->commitBy;
|
||||
$config->design->search['fields']['commitDate'] = $lang->design->commitDate;
|
||||
$config->design->search['fields']['story'] = $lang->design->story;
|
||||
|
||||
$config->design->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->design->typeList);
|
||||
@@ -31,6 +29,4 @@ $config->design->search['params']['commit'] = array('operator' => 'include'
|
||||
$config->design->search['params']['createdBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->design->search['params']['createdDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->design->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->design->search['params']['commitBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
|
||||
$config->design->search['params']['commitDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
|
||||
$config->design->search['params']['story'] = array('operator' => '=', 'control' => 'select', 'values' => '');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* The control file of design module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(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 design
|
||||
@@ -220,13 +220,16 @@ class design extends control
|
||||
*/
|
||||
public function linkCommit($designID = 0, $repoID = 0, $begin = '', $end = '', $recTotal = 0, $recPerPage = 50, $pageID = 1)
|
||||
{
|
||||
/* Init pager and get designs. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
|
||||
/* Get program and date. */
|
||||
$program = $this->loadModel('project')->getByID($this->session->program);
|
||||
$begin = $begin ? date('Y-m-d', strtotime($begin)) : $program->begin;
|
||||
$end = $end ? date('Y-m-d', strtotime($end)) : helper::today();
|
||||
|
||||
/* Get the repository information through the repoID. */
|
||||
$repos = $this->loadModel('repo')->getRepoPairs($this->session->program);
|
||||
$repoID = $repoID ? $repoID : key($repos);
|
||||
$repo = $repoID ? $this->loadModel('repo')->getRepoByID($repoID) : '';
|
||||
@@ -243,6 +246,7 @@ class design extends control
|
||||
$this->send($result);
|
||||
}
|
||||
|
||||
/* Linked submission. */
|
||||
$linkedRevisions = array();
|
||||
$relations = $this->loadModel('common')->getRelations('design', $designID, 'commit');
|
||||
foreach($relations as $relation) $linkedRevisions[] = $relation->BID;
|
||||
@@ -265,7 +269,29 @@ class design extends control
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of the code base.
|
||||
* Design unlink commits.
|
||||
*
|
||||
* @param int $designID
|
||||
* @param int $commitID
|
||||
* @param string $confirm
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function unlinkCommit($designID = 0, $commitID = 0, $confirm = 'no')
|
||||
{
|
||||
if($confirm == 'no')
|
||||
{
|
||||
die(js::confirm($this->lang->design->confirmUnlink, inlink('unlinkCommit', "designID=$designID&commitID=$commitID&confirm=yes")));
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->design->unlinkCommit($designID, $commitID);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A version of the repository.
|
||||
*
|
||||
* @param int $repoID
|
||||
* @access public
|
||||
@@ -278,6 +304,31 @@ class design extends control
|
||||
header("location:" . $repoURL);
|
||||
}
|
||||
|
||||
/**
|
||||
* View a design's commit.
|
||||
*
|
||||
* @param int $designID
|
||||
* @param int $recTotal
|
||||
* @param int $recPerPage
|
||||
* @param int $pageID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function viewCommit($designID = 0, $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
||||
{
|
||||
/* Init pager and get designs. */
|
||||
$this->app->loadClass('pager', $static = true);
|
||||
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
||||
|
||||
$this->view->title = $this->lang->design->common . $this->lang->colon . $this->lang->design->submission;
|
||||
$this->view->position[] = $this->lang->design->submission;
|
||||
|
||||
$this->view->design = $this->design->getCommit($designID, $pager);
|
||||
$this->view->pager = $pager;
|
||||
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a design.
|
||||
*
|
||||
|
||||
@@ -17,5 +17,12 @@ $('#begin, #end, #repo').change(function()
|
||||
for(i = 0 ; i < endarray.length ; i++) end = end + endarray[i];
|
||||
}
|
||||
|
||||
if(begin > end)
|
||||
{
|
||||
alert(error);
|
||||
location.href = createLink('design', 'linkCommit', "designID=" + designID + '&repoID=' + repo);
|
||||
die;
|
||||
}
|
||||
|
||||
location.href = createLink('design', 'linkCommit', "designID=" + designID + '&repoID=' + repo + '&begin=' + begin + '&end=' + end);
|
||||
})
|
||||
|
||||
+17
-13
@@ -27,8 +27,8 @@ $lang->design->desc = 'Description';
|
||||
$lang->design->range = 'Impact';
|
||||
$lang->design->product = 'Linked Product';
|
||||
$lang->design->basicInfo = 'Basic Information';
|
||||
$lang->design->commitDate = 'Committed Date';
|
||||
$lang->design->commitBy = 'Commit By';
|
||||
$lang->design->commitDate = 'Committed Date';
|
||||
$lang->design->affectedStory = "{$lang->storyCommon}";
|
||||
$lang->design->affectedTasks = 'Task';
|
||||
$lang->design->reviewObject = 'Review Object';
|
||||
@@ -38,17 +38,19 @@ $lang->design->basicInfo = 'Basic Information';
|
||||
$lang->design->noAssigned = 'Unassigned';
|
||||
|
||||
/* Action list. */
|
||||
$lang->design->common = 'Design';
|
||||
$lang->design->create = 'Create Design';
|
||||
$lang->design->batchCreate = 'Batch Create';
|
||||
$lang->design->edit = 'Edit';
|
||||
$lang->design->delete = 'Delete';
|
||||
$lang->design->view = 'View';
|
||||
$lang->design->browse = 'List';
|
||||
$lang->design->commit = 'Link Commit';
|
||||
$lang->design->submit = 'Submit Review';
|
||||
$lang->design->assignTo = 'Assign';
|
||||
$lang->design->revision = 'Linked Code';
|
||||
$lang->design->common = 'Design';
|
||||
$lang->design->create = 'Create Design';
|
||||
$lang->design->batchCreate = 'Batch Create';
|
||||
$lang->design->edit = 'Edit';
|
||||
$lang->design->delete = 'Delete';
|
||||
$lang->design->view = 'View';
|
||||
$lang->design->browse = 'List';
|
||||
$lang->design->viewCommit = 'View Commit';
|
||||
$lang->design->linkCommit = 'Link Commit';
|
||||
$lang->design->unlinkCommit = 'Unlink Commit';
|
||||
$lang->design->submit = 'Submit Review';
|
||||
$lang->design->assignTo = 'Assign';
|
||||
$lang->design->revision = 'Linked Code';
|
||||
|
||||
/* Field value. */
|
||||
$lang->design->typeList = array();
|
||||
@@ -69,4 +71,6 @@ $lang->design->featureBar += $lang->design->typeList;
|
||||
$lang->design->errorSelection = 'No record selected!';
|
||||
$lang->design->noDesign = 'No record.';
|
||||
$lang->design->noCommit = 'No record commited.';
|
||||
$lang->design->confirmDelete = 'Do you want to delete this design?';
|
||||
$lang->design->confirmDelete = 'Do you want to delete this design?';
|
||||
$lang->design->confirmUnlink = 'Are you sure you want to remove this submission?';
|
||||
$lang->design->errorDate = 'The start date can not be greater than the end date.';
|
||||
|
||||
@@ -38,17 +38,19 @@ $lang->design->basicInfo = '基本信息';
|
||||
$lang->design->noAssigned = '未指派';
|
||||
|
||||
/* 动作列表. */
|
||||
$lang->design->common = '设计';
|
||||
$lang->design->create = '创建设计';
|
||||
$lang->design->batchCreate = '批量创建';
|
||||
$lang->design->edit = '变更';
|
||||
$lang->design->delete = '删除';
|
||||
$lang->design->view = '设计概况';
|
||||
$lang->design->browse = '浏览列表';
|
||||
$lang->design->linkCommit = '关联提交';
|
||||
$lang->design->submit = '提交评审';
|
||||
$lang->design->assignTo = '指派';
|
||||
$lang->design->revision = '查看关联代码';
|
||||
$lang->design->common = '设计';
|
||||
$lang->design->create = '创建设计';
|
||||
$lang->design->batchCreate = '批量创建';
|
||||
$lang->design->edit = '变更';
|
||||
$lang->design->delete = '删除';
|
||||
$lang->design->view = '设计概况';
|
||||
$lang->design->browse = '浏览列表';
|
||||
$lang->design->viewCommit = '查看提交';
|
||||
$lang->design->linkCommit = '关联提交';
|
||||
$lang->design->unlinkCommit = '取消关联';
|
||||
$lang->design->submit = '提交评审';
|
||||
$lang->design->assignTo = '指派';
|
||||
$lang->design->revision = '查看关联代码';
|
||||
|
||||
/* 字段取值. */
|
||||
$lang->design->typeList = array();
|
||||
@@ -70,3 +72,5 @@ $lang->design->errorSelection = '还没有选中记录!';
|
||||
$lang->design->noDesign = '暂时没有记录';
|
||||
$lang->design->noCommit = '暂时没有提交记录';
|
||||
$lang->design->confirmDelete = '您确定要删除这个设计吗?';
|
||||
$lang->design->confirmUnlink = '您确定要移除这个提交吗?';
|
||||
$lang->design->errorDate = '开始日期不能大于结束日期';
|
||||
|
||||
+60
-20
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* The model file of design module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
|
||||
* @copyright Copyright 2009-2020 青岛易软天创网络科技有限公司(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 design
|
||||
@@ -172,8 +172,6 @@ class designModel extends model
|
||||
*/
|
||||
public function linkCommit($designID = 0, $repoID = 0)
|
||||
{
|
||||
$this->dao->delete()->from(TABLE_RELATION)->where('AType')->eq('design')->andWhere('AID')->eq($designID)->andWhere('BType')->eq('commit')->andWhere('relation')->eq('completedin')->exec();
|
||||
$this->dao->delete()->from(TABLE_RELATION)->where('AType')->eq('commit')->andWhere('BID')->eq($designID)->andWhere('BType')->eq('design')->andWhere('relation')->eq('completedfrom')->exec();
|
||||
$revisions = $_POST['revision'];
|
||||
|
||||
foreach($revisions as $revision)
|
||||
@@ -199,28 +197,41 @@ class designModel extends model
|
||||
$this->dao->replace(TABLE_RELATION)->data($data)->autoCheck()->exec();
|
||||
}
|
||||
$design = new stdclass();
|
||||
$design->commit = implode(",", $revisions);
|
||||
$design->commit = $this->dao->select('commit')->from(TABLE_DESIGN)->where('id')->eq($designID)->fetch('commit');
|
||||
|
||||
if($design->commit)
|
||||
{
|
||||
$design->commit = implode(",", $revisions) . "," . $design->commit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$design->commit = implode(",", $revisions);
|
||||
}
|
||||
|
||||
$design->commitDate = helper::now();
|
||||
$design->commitBy = $this->app->user->account;
|
||||
$this->dao->update(TABLE_DESIGN)->data($design)->autoCheck()->where('id')->eq($designID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set product menu.
|
||||
* Unlink commit.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param int $designID
|
||||
* @param int $commitID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setProductMenu($productID = 0)
|
||||
public function unlinkCommit($designID = 0, $commitID = 0)
|
||||
{
|
||||
$programID = $this->session->program;
|
||||
$program = $this->loadModel('project')->getByID($programID);
|
||||
$products = $this->loadModel('product')->getPairs('', $programID);
|
||||
$productID = in_array($productID, array_keys($products)) ? $productID : key($products);
|
||||
/* Delete data in the zt_relation.*/
|
||||
$this->dao->delete()->from(TABLE_RELATION)->where('AType')->eq('design')->andwhere('AID')->eq($designID)->andwhere('BType')->eq('commit')->andwhere('relation')->eq('completedin')->andWhere('BID')->eq($commitID)->exec();
|
||||
$this->dao->delete()->from(TABLE_RELATION)->where('AType')->eq('commit')->andwhere('BID')->eq($designID)->andwhere('BType')->eq('design')->andwhere('relation')->eq('completedfrom')->andWhere('AID')->eq($commitID)->exec();
|
||||
|
||||
$productID = $this->loadModel('product')->saveState($productID, $products);
|
||||
if($program->category == 'multiple') $this->loadModel('product')->setMenu($products, $productID);
|
||||
/* Commit after unlinking. */
|
||||
$commit = $this->dao->select('BID')->from(TABLE_RELATION)->where('AType')->eq('design')->andWhere('AID')->eq($designID)->fetchAll('BID');
|
||||
$commit = implode(",", array_keys($commit));
|
||||
|
||||
$this->dao->update(TABLE_DESIGN)->set('commit')->eq($commit)->where('id')->eq($designID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -240,6 +251,7 @@ class designModel extends model
|
||||
$design->commit = '';
|
||||
$relations = $this->loadModel('common')->getRelations('design', $designID, 'commit');
|
||||
foreach($relations as $relation) $design->commit .= html::a(helper::createLink('design', 'revision', "repoID=$relation->BID"), "#$relation->BID", '_blank');
|
||||
|
||||
return $this->loadModel('file')->replaceImgURL($design, 'desc');
|
||||
}
|
||||
|
||||
@@ -312,16 +324,44 @@ class designModel extends model
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
foreach($designs as $id => $design)
|
||||
{
|
||||
$design->commit = '';
|
||||
$relations = $this->loadModel('common')->getRelations('design', $id, 'commit');
|
||||
foreach($relations as $relation) $design->commit .= html::a(helper::createLink('design', 'revision', "repoID=$relation->BID", '', true), "#$relation->BID", '_blank');
|
||||
}
|
||||
|
||||
return $designs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get commit.
|
||||
*
|
||||
* @param int $designID
|
||||
* @param int $pager
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getCommit($designID = 0, $pager = null)
|
||||
{
|
||||
$design = $this->dao->select('*')->from(TABLE_DESIGN)->where('id')->eq($designID)->fetch();
|
||||
|
||||
$design->commit = $this->dao->select('*')->from(TABLE_REPOHISTORY)->where('id')->in($design->commit)->page($pager)->fetchAll('id');
|
||||
|
||||
return $design;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set product menu.
|
||||
*
|
||||
* @param int $productID
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setProductMenu($productID = 0)
|
||||
{
|
||||
$programID = $this->session->program;
|
||||
$program = $this->loadModel('project')->getByID($programID);
|
||||
$products = $this->loadModel('product')->getPairs('', $programID);
|
||||
$productID = in_array($productID, array_keys($products)) ? $productID : key($products);
|
||||
|
||||
$productID = $this->loadModel('product')->saveState($productID, $products);
|
||||
if($program->category == 'multiple') $this->loadModel('product')->setMenu($products, $productID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get designs by search.
|
||||
*
|
||||
|
||||
@@ -42,10 +42,9 @@
|
||||
<?php $vars = "productID=$productID&type=$type¶m=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-left w-60px"> <?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?></th>
|
||||
<th class="text-left w-60px"> <?php common::printOrderLink('id', $orderBy, $vars, $lang->design->id);?></th>
|
||||
<th class="text-left w-100px"> <?php common::printOrderLink('type', $orderBy, $vars, $lang->design->type);?></th>
|
||||
<th class="text-left"> <?php common::printOrderLink('name', $orderBy, $vars, $lang->design->name);?></th>
|
||||
<th class="text-left w-150px"> <?php common::printOrderLink('commit', $orderBy, $vars, $lang->design->submission);?></th>
|
||||
<th class="text-left w-120px"> <?php common::printOrderLink('createdBy', $orderBy, $vars, $lang->design->createdBy);?></th>
|
||||
<th class="text-left w-150px"> <?php common::printOrderLink('createdDate', $orderBy, $vars, $lang->design->createdDate);?></th>
|
||||
<th class="c-assignedTo w-120px"><?php common::printOrderLink('assignedTo', $orderBy, $vars, $lang->design->assignedTo);?></th>
|
||||
@@ -58,23 +57,22 @@
|
||||
<td calss="c-id"> <?php printf('%03d', $design->id);?></td>
|
||||
<td class="c-type"> <?php echo zget($lang->design->typeList, $design->type);?></td>
|
||||
<td class="c-name" title="<?php echo $design->name;?>"><?php echo html::a($this->createLink('design', 'view', "id={$design->id}"), $design->name);?></td>
|
||||
<td class="c-commit"> <?php echo $design->commit;?></td>
|
||||
<td class="c-createdBy"> <?php echo $design->createdBy;?></td>
|
||||
<td class="c-createdDate"><?php echo substr($design->createdDate, 0, 11);?></td>
|
||||
<td class="c-assignedTo"> <?php echo $this->design->printAssignedHtml($design, $users);?></td>
|
||||
<td class='c-actions text-center'>
|
||||
<?php
|
||||
$vars = "design={$design->id}";
|
||||
common::printIcon('design', 'edit', $vars, $design, 'list', 'fork', '', '', '', '', '', $design->program);
|
||||
common::printIcon('design', 'linkCommit', $vars, $design, 'list', 'link', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('design', 'delete', $vars, $design, 'list', 'trash', 'hiddenwin', '', '', '', '', $design->program);
|
||||
common::printIcon('design', 'edit', $vars, $design, 'list', 'fork', '', '', '', '', '', $design->program);
|
||||
common::printIcon('design', 'viewCommit', $vars, $design, 'list', 'glasses', '', 'iframe showinonlybody', true);
|
||||
common::printIcon('design', 'delete', $vars, $design, 'list', 'trash', 'hiddenwin', '', '', '', '', $design->program);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='table-footer'>
|
||||
<div class='table-footer table-statistic''>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -54,10 +54,11 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($revisions as $log):?>
|
||||
<?php if(in_array($log->id, $linkedRevisions)) continue;?>
|
||||
<tr>
|
||||
<td>
|
||||
<div class='checkbox-primary'>
|
||||
<input type='checkbox' name='revision[]' value="<?php echo $log->id?>" <?php if(in_array($log->revision, $linkedRevisions)) echo 'checked="checked"'?>/>
|
||||
<input type='checkbox' name='revision[]' value="<?php echo $log->id?>"/>
|
||||
<label></label>
|
||||
</div>
|
||||
</td>
|
||||
@@ -84,4 +85,5 @@
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php js::set('designID', $designID);?>
|
||||
<?php js::set('error', $lang->design->errorDate);?>
|
||||
<?php include '../../common/view/footer.lite.html.php';?>
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
/**
|
||||
* The viewCommit view of design 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 design
|
||||
* @version $Id: commit.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $
|
||||
* @link http://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php';?>
|
||||
<div id="mainContent" class="main-table">
|
||||
<div class='main-header'>
|
||||
<h2>
|
||||
<span class='label label-id'><?php echo $design->id;?></span>
|
||||
<span title='<?php echo $design->name?>'><?php echo $design->name?></span>
|
||||
<small><?php echo $lang->arrow . $lang->design->submission;?></small>
|
||||
</h2>
|
||||
</div>
|
||||
<div class='btn-toolbar pull-right'>
|
||||
<?php common::printLink('design', 'linkCommit', "designID=$design->id", "<i class='icon icon-plus'></i>" . $lang->design->linkCommit, '_blank', "class='btn btn-primary'");?>
|
||||
</div>
|
||||
<?php if(empty($design->commit)):?>
|
||||
<div class="table-empty-tip">
|
||||
<p><span class="text-muted"><?php echo $lang->design->noCommit;?></span></p>
|
||||
</div>
|
||||
<?php else:?>
|
||||
<table class='table table-data'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-left"><?php echo $lang->design->submission;?></th>
|
||||
<th class="text-left"><?php echo $lang->design->commitBy;?></th>
|
||||
<th class="text-left"><?php echo $lang->design->commitDate;?></th>
|
||||
<th class="text-center w-50px"> <?php echo $lang->design->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php foreach($design->commit as $commit):?>
|
||||
<tr>
|
||||
<td><?php echo html::a(helper::createLink('design', 'revision', "repoID=$commit->id"), "#$commit->id", '_blank');?></td>
|
||||
<td><?php echo $commit->committer;?></td>
|
||||
<td><?php echo substr($commit->time, 0, 11);?></td>
|
||||
<td class="c-actions">
|
||||
<?php common::printIcon('design', 'unlinkCommit', "designID=$design->id&commitID=$commit->id", $design, 'list', 'unlink', 'hiddenwin', 'iframe showinonlybody', true);?>
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach;?>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='table-footer table-statistic'>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php';?>
|
||||
@@ -302,7 +302,7 @@ class doc extends control
|
||||
if(!$docResult or dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
|
||||
|
||||
$docID = $docResult['id'];
|
||||
$files = isset($docResult['files']) ? $docResult['files'] : '';
|
||||
$files = zget($docResult, 'files', '');
|
||||
$lib = $this->doc->getLibByID($this->post->lib);
|
||||
if($docResult['status'] == 'exists')
|
||||
{
|
||||
|
||||
@@ -105,7 +105,7 @@ var browseType = '<?php echo $browseType;?>';
|
||||
<?php $star = strpos($lib->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<?php $collectTitle = strpos($lib->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'browse', "libID={$lib->id}&browseType=all¶m=0&orderBy=$orderBy&from=$from"), "<i class='icon icon-folder text-yellow'></i> " . $lib->name);?></td>
|
||||
<td class="c-name"><?php echo html::a(inlink('browse', "libID={$lib->id}&browseType=all¶m=0&orderBy=$orderBy&from=$from"), "<i class='icon icon-folder text-yellow'></i> " . $lib->name);?></td>
|
||||
<td class="c-num"></td>
|
||||
<td class="c-user"></td>
|
||||
<td class="c-datetime"></td>
|
||||
@@ -124,9 +124,9 @@ var browseType = '<?php echo $browseType;?>';
|
||||
<?php foreach($attachLibs as $libType => $attachLib):?>
|
||||
<tr>
|
||||
<?php if($libType == 'project'):?>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'allLibs', "type=project&product={$currentLib->product}"), "<i class='icon icon-folder text-yellow'></i> " . $attachLib->name);?></td>
|
||||
<td class="c-name"><?php echo html::a(inlink('allLibs', "type=project&product={$currentLib->product}"), "<i class='icon icon-folder text-yellow'></i> " . $attachLib->name);?></td>
|
||||
<?php elseif($libType == 'files'):?>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'showFiles', "type=$type&objectID={$currentLib->$type}"), "<i class='icon icon-folder text-yellow'></i> " . $attachLib->name);?></td>
|
||||
<td class="c-name"><?php echo html::a(inlink('showFiles', "type=$type&objectID={$currentLib->$type}"), "<i class='icon icon-folder text-yellow'></i> " . $attachLib->name);?></td>
|
||||
<?php endif;?>
|
||||
<td class="c-num"></td>
|
||||
<td class="c-user"></td>
|
||||
@@ -141,7 +141,7 @@ var browseType = '<?php echo $browseType;?>';
|
||||
<?php $star = strpos($module->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<?php $collectTitle = strpos($module->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'browse', "libID=$libID&browseType=bymodule¶m=$module->id&orderBy=$orderBy&from=$from"), "<i class='icon icon-folder text-yellow'></i> " . $module->name);?></td>
|
||||
<td class="c-name"><?php echo html::a(inlink('browse', "libID=$libID&browseType=bymodule¶m=$module->id&orderBy=$orderBy&from=$from"), "<i class='icon icon-folder text-yellow'></i> " . $module->name);?></td>
|
||||
<td class="c-num"></td>
|
||||
<td class="c-user"></td>
|
||||
<td class="c-datetime"></td>
|
||||
@@ -158,7 +158,7 @@ var browseType = '<?php echo $browseType;?>';
|
||||
<?php $star = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? 'icon-star text-yellow' : 'icon-star-empty';?>
|
||||
<?php $collectTitle = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? $lang->doc->cancelCollection : $lang->doc->collect;?>
|
||||
<tr>
|
||||
<td class="c-name"><?php echo html::a($this->createLink('doc', 'view', "docID=$doc->id"), "<i class='icon icon-file-text text-muted'></i> " . $doc->title);?></td>
|
||||
<td class="c-name"><?php echo html::a(inlink('view', "docID=$doc->id"), "<i class='icon icon-file-text text-muted'></i> " . $doc->title);?></td>
|
||||
<td class="c-num"><?php echo $doc->fileSize ? $doc->fileSize : '-';?></td>
|
||||
<td class="c-user"><?php echo zget($users, $doc->addedBy);?></td>
|
||||
<td class="c-datetime"><?php echo formatTime($doc->addedDate, 'y-m-d');?></td>
|
||||
|
||||
@@ -66,19 +66,19 @@ $sideWidth = common::checkNotCN() ? '270' : '238';
|
||||
<?php
|
||||
if($subLibID == 'project')
|
||||
{
|
||||
$subLibLink = $this->createLink('doc', 'allLibs', "type=project&product=$tabMenu->id");
|
||||
$subLibLink = inlink('allLibs', "type=project&product=$tabMenu->id");
|
||||
$activeClass = ($this->methodName == 'alllibs' && $type == 'project' && $$tabValue == $tabMenu->id) ? "class='active'" : '';
|
||||
$icon = 'icon-stack';
|
||||
}
|
||||
elseif($subLibID == 'files')
|
||||
{
|
||||
$subLibLink = $this->createLink('doc', 'showFiles', "type=$tabValue&objectID=$tabMenu->id");
|
||||
$subLibLink = inlink('showFiles', "type=$tabValue&objectID=$tabMenu->id");
|
||||
$activeClass = ($this->methodName == 'showfiles' && $type == $tabValue && $object->id == $tabMenu->id) ? "class='active'" : '';
|
||||
$icon = 'icon-paper-clip';
|
||||
}
|
||||
else
|
||||
{
|
||||
$subLibLink = $this->createLink('doc', 'browse', "libID=$subLibID");
|
||||
$subLibLink = inlink('browse', "libID=$subLibID");
|
||||
$activeClass = ($this->methodName == 'browse' && $browseType != 'bymodule' && $subLibID == $libID) ? "class='active'" : '';
|
||||
$icon = 'icon-folder-outline';
|
||||
}
|
||||
@@ -181,7 +181,7 @@ $sideWidth = common::checkNotCN() ? '270' : '238';
|
||||
<strong><?php echo $lang->doc->customShowLibs;?></strong>
|
||||
</div>
|
||||
<div class='modal-body'>
|
||||
<form action='<?php echo $this->createLink('custom', 'ajaxSetDoc', '');?>' target='hiddenwin' method='post'>
|
||||
<form action='<?php echo $this->createLink('custom', 'ajaxSetDoc');?>' target='hiddenwin' method='post'>
|
||||
<table class='table table-form'>
|
||||
<tr>
|
||||
<td><?php echo html::checkbox('showLibs', $lang->doc->customShowLibsList, $config->doc->custom->showLibs);?></td>
|
||||
|
||||
@@ -21,14 +21,18 @@ $lang->group->managePrivByGroup = 'Rechte';
|
||||
$lang->group->managePrivByModule = 'Modul Rechte';
|
||||
$lang->group->byModuleTips = '<span class="tips">(SHIFT/STRG für Multi-Select)</span>';
|
||||
$lang->group->manageMember = 'Mitglieder';
|
||||
$lang->group->managePgmAdmin = 'Manage Program Admins';
|
||||
$lang->group->confirmDelete = 'Möchten Sie die Gruppe löschen?';
|
||||
$lang->group->successSaved = 'Gespeichert!';
|
||||
$lang->group->errorNotSaved = 'Fehlgeschlagen. Bitte aktion und Gruppe wählen.';
|
||||
$lang->group->program = 'Manage Programs';
|
||||
$lang->group->viewList = 'Anzeige ist zulässig.';
|
||||
$lang->group->programList = 'Access Program';
|
||||
$lang->group->productList = 'Produkte sind zugänglich.';
|
||||
$lang->group->projectList = 'Projekte sind zugänglich.';
|
||||
$lang->group->dynamic = 'Access Dynamics';
|
||||
$lang->group->noticeVisit = 'Leer bedeutet Zugriff verweigert.';
|
||||
$lang->group->noneProgram = "No Program";
|
||||
$lang->group->noneProduct = "No {$lang->productCommon}";
|
||||
$lang->group->noneProject = "No {$lang->projectCommon}";
|
||||
|
||||
@@ -44,6 +48,7 @@ $lang->group->priv = 'Gruppe';
|
||||
$lang->group->option = 'Option';
|
||||
$lang->group->inside = 'Gruppenbenutzer';
|
||||
$lang->group->outside = 'Andere Benutzer';
|
||||
$lang->group->limited = 'Limited Users';
|
||||
$lang->group->other = 'Andere';
|
||||
$lang->group->all = 'Alle';
|
||||
|
||||
|
||||
@@ -21,14 +21,18 @@ $lang->group->managePrivByGroup = 'Gérer Privilèges par Groupe';
|
||||
$lang->group->managePrivByModule = 'Gérer Privilèges par Module';
|
||||
$lang->group->byModuleTips = '<span class="tips">(Shift/Ctrl pour sélection multiple)</span>';
|
||||
$lang->group->manageMember = 'Gérer Membres';
|
||||
$lang->group->managePgmAdmin = 'Manage Program Admins';
|
||||
$lang->group->confirmDelete = "Voulez-vous supprimer ce groupe d'utilisateurs ?";
|
||||
$lang->group->successSaved = 'Sauvé.';
|
||||
$lang->group->errorNotSaved = 'Echec. Veuillez sélectionner actions et groupes.';
|
||||
$lang->group->program = 'Manage Programs';
|
||||
$lang->group->viewList = 'Accès Consultation';
|
||||
$lang->group->programList = 'Access Program';
|
||||
$lang->group->productList = 'Accès ' . $lang->productCommon . 's';
|
||||
$lang->group->projectList = 'Accès ' . $lang->projectCommon . 's';
|
||||
$lang->group->dynamic = 'Accès Historique';
|
||||
$lang->group->noticeVisit = "Blanc signifie « pas de limitation d'accès ».";
|
||||
$lang->group->noneProgram = "No Program";
|
||||
$lang->group->noneProduct = "No {$lang->productCommon}";
|
||||
$lang->group->noneProject = "No {$lang->projectCommon}";
|
||||
|
||||
@@ -44,6 +48,7 @@ $lang->group->priv = 'Groupe de Privilèges';
|
||||
$lang->group->option = 'Option';
|
||||
$lang->group->inside = "Groupe d'utilisateurs";
|
||||
$lang->group->outside = 'Autres utilisateurs';
|
||||
$lang->group->limited = 'Limited Users';
|
||||
$lang->group->other = 'Autres';
|
||||
$lang->group->all = 'Tous les Privilèges';
|
||||
|
||||
|
||||
@@ -21,14 +21,18 @@ $lang->group->managePrivByGroup = 'Quản lý Privileges by Group';
|
||||
$lang->group->managePrivByModule = 'Quản lý Privileges by Module';
|
||||
$lang->group->byModuleTips = '<span class="tips">(Press Shift/Ctrl to Multi-select)</span>';
|
||||
$lang->group->manageMember = 'Quản lý Members';
|
||||
$lang->group->managePgmAdmin = 'Manage Program Admins';
|
||||
$lang->group->confirmDelete = 'Bạn có muốn xóa người dùng này group?';
|
||||
$lang->group->successSaved = 'Đã lưu.';
|
||||
$lang->group->errorNotSaved = 'Thất bại. Vui lòng select actions and groups.';
|
||||
$lang->group->program = 'Manage Programs';
|
||||
$lang->group->viewList = 'Truy cập Sight';
|
||||
$lang->group->programList = 'Access Program';
|
||||
$lang->group->productList = 'Truy cập Product';
|
||||
$lang->group->projectList = 'Truy cập Project';
|
||||
$lang->group->dynamic = 'Truy cập Dynamics';
|
||||
$lang->group->noticeVisit = 'Blank means no access limit.';
|
||||
$lang->group->noneProgram = "No Program";
|
||||
$lang->group->noneProduct = "Không có {$lang->productCommon}";
|
||||
$lang->group->noneProject = "Không có {$lang->projectCommon}";
|
||||
|
||||
@@ -44,6 +48,7 @@ $lang->group->priv = 'Nhóm quyền';
|
||||
$lang->group->option = 'Tùy chọn';
|
||||
$lang->group->inside = 'Nhóm người dùng';
|
||||
$lang->group->outside = 'Other người dùng';
|
||||
$lang->group->limited = 'Limited Users';
|
||||
$lang->group->other = 'Khác';
|
||||
$lang->group->all = 'Tất cả Privileges';
|
||||
|
||||
|
||||
@@ -6,14 +6,21 @@ $lang->holiday->create = 'Create';
|
||||
$lang->holiday->edit = 'Edit';
|
||||
$lang->holiday->delete = 'Delete';
|
||||
|
||||
$lang->holiday->createAction = 'Create Holiday';
|
||||
$lang->holiday->editAction = 'Edit Holiday';
|
||||
$lang->holiday->deleteAction = 'Delete Holiday';
|
||||
|
||||
$lang->holiday->id = 'ID';
|
||||
$lang->holiday->name = 'Name';
|
||||
$lang->holiday->desc = 'Description';
|
||||
$lang->holiday->type = 'Type';
|
||||
$lang->holiday->begin = 'Begin';
|
||||
$lang->holiday->end = 'End';
|
||||
$lang->holiday->all = 'All';
|
||||
|
||||
$lang->holiday->holiday = 'Holiday';
|
||||
|
||||
$lang->holiday->typeList['holiday'] = 'Holiday';
|
||||
$lang->holiday->typeList['working'] = 'Working Day';
|
||||
|
||||
$lang->holiday->emptyTip = 'No Holiday';
|
||||
|
||||
@@ -6,9 +6,9 @@ $lang->holiday->create = 'Create';
|
||||
$lang->holiday->edit = 'Edit';
|
||||
$lang->holiday->delete = 'Delete';
|
||||
|
||||
$lang->holiday->createAction = 'Create Holiday';
|
||||
$lang->holiday->editAction = 'Edit Holiday';
|
||||
$lang->holiday->deleteAction = 'Delete Holiday';
|
||||
$lang->holiday->createAction = 'Create Holiday';
|
||||
$lang->holiday->editAction = 'Edit Holiday';
|
||||
$lang->holiday->deleteAction = 'Delete Holiday';
|
||||
|
||||
$lang->holiday->id = 'ID';
|
||||
$lang->holiday->name = 'Name';
|
||||
|
||||
@@ -6,14 +6,21 @@ $lang->holiday->create = 'Create';
|
||||
$lang->holiday->edit = 'Edit';
|
||||
$lang->holiday->delete = 'Delete';
|
||||
|
||||
$lang->holiday->createAction = 'Create Holiday';
|
||||
$lang->holiday->editAction = 'Edit Holiday';
|
||||
$lang->holiday->deleteAction = 'Delete Holiday';
|
||||
|
||||
$lang->holiday->id = 'ID';
|
||||
$lang->holiday->name = 'Name';
|
||||
$lang->holiday->desc = 'Description';
|
||||
$lang->holiday->type = 'Type';
|
||||
$lang->holiday->begin = 'Begin';
|
||||
$lang->holiday->end = 'End';
|
||||
$lang->holiday->all = 'All';
|
||||
|
||||
$lang->holiday->holiday = 'Holiday';
|
||||
|
||||
$lang->holiday->typeList['holiday'] = 'Holiday';
|
||||
$lang->holiday->typeList['working'] = 'Working Day';
|
||||
|
||||
$lang->holiday->emptyTip = 'No Holiday';
|
||||
|
||||
@@ -6,14 +6,21 @@ $lang->holiday->create = 'Tạo';
|
||||
$lang->holiday->edit = 'Sửa';
|
||||
$lang->holiday->delete = 'Xóa';
|
||||
|
||||
$lang->holiday->createAction = 'Create Holiday';
|
||||
$lang->holiday->editAction = 'Edit Holiday';
|
||||
$lang->holiday->deleteAction = 'Delete Holiday';
|
||||
|
||||
$lang->holiday->id = 'ID';
|
||||
$lang->holiday->name = 'Tên';
|
||||
$lang->holiday->desc = 'Mô tả';
|
||||
$lang->holiday->type = 'Loại';
|
||||
$lang->holiday->begin = 'Bắt đầu';
|
||||
$lang->holiday->end = 'Kết thúc';
|
||||
$lang->holiday->all = 'All';
|
||||
|
||||
$lang->holiday->holiday = 'Ngày lễ';
|
||||
|
||||
$lang->holiday->typeList['holiday'] = 'Ngày lễ';
|
||||
$lang->holiday->typeList['working'] = 'Ngày làm việc';
|
||||
|
||||
$lang->holiday->emptyTip = 'No Holiday';
|
||||
|
||||
@@ -10,6 +10,10 @@ $lang->my->bug = 'Bugs';
|
||||
$lang->my->testTask = 'Builds';
|
||||
$lang->my->testCase = 'Meine Fälle';
|
||||
$lang->my->story = 'Meine Storys';
|
||||
$lang->my->requirement = 'My Requirements';
|
||||
$lang->my->program = 'My Programs';
|
||||
$lang->my->myProgram = "My Programs";
|
||||
$lang->my->createProgram = 'Create Program';
|
||||
$lang->my->myProject = "Meine {$lang->projectCommon}";
|
||||
$lang->my->profile = 'Meine Profil';
|
||||
$lang->my->dynamic = 'Meine Verlauf';
|
||||
|
||||
@@ -10,6 +10,10 @@ $lang->my->bug = 'Mes Bugs';
|
||||
$lang->my->testTask = 'Mes Builds';
|
||||
$lang->my->testCase = 'Mes CasTests';
|
||||
$lang->my->story = 'Mes Stories';
|
||||
$lang->my->requirement = 'My Requirements';
|
||||
$lang->my->program = 'My Programs';
|
||||
$lang->my->myProgram = "My Programs";
|
||||
$lang->my->createProgram = 'Create Program';
|
||||
$lang->my->myProject = "Mes {$lang->projectCommon}s";
|
||||
$lang->my->profile = 'Mon Profil';
|
||||
$lang->my->dynamic = 'Mon Historique';
|
||||
|
||||
@@ -10,6 +10,10 @@ $lang->my->bug = 'Bugs của bạn';
|
||||
$lang->my->testTask = 'Bản dựng của bạn';
|
||||
$lang->my->testCase = 'Tình huống của bạn';
|
||||
$lang->my->story = 'Câu chuyện của bạn';
|
||||
$lang->my->requirement = 'My Requirements';
|
||||
$lang->my->program = 'My Programs';
|
||||
$lang->my->myProgram = "My Programs";
|
||||
$lang->my->createProgram = 'Create Program';
|
||||
$lang->my->myProject = "{$lang->projectCommon} của bạn";
|
||||
$lang->my->profile = 'Hồ sơ của bạn';
|
||||
$lang->my->dynamic = 'Lịch sử của bạn';
|
||||
|
||||
@@ -441,7 +441,7 @@ class programModel extends model
|
||||
* @access private
|
||||
* @return void
|
||||
*/
|
||||
public function getSwapper($programs, $programID, $currentModule, $currentMethod, $extra = '')
|
||||
public function getSwitcher($programs, $programID, $currentModule, $currentMethod, $extra = '')
|
||||
{
|
||||
$this->loadModel('project');
|
||||
$currentProgramName = '';
|
||||
|
||||
+33
-41
@@ -55,11 +55,10 @@ class taskModel extends model
|
||||
->stripTags($this->config->task->editor->create['id'], $this->config->allowedTags)
|
||||
->join('mailto', ',')
|
||||
->remove('after,files,labels,assignedTo,uid,storyEstimate,storyDesc,storyPri,team,teamEstimate,teamMember,multiple,teams,contactListMenu,selectTestStory,testStory,testPri,testEstStarted,testDeadline,testAssignedTo,testEstimate')
|
||||
->add('version', 1)
|
||||
->get();
|
||||
if($task->type != 'test') $this->post->set('selectTestStory', 0);
|
||||
|
||||
/* Record task version. */
|
||||
if(isset($this->config->qcVersion)) $task->version = 1;
|
||||
if($task->type != 'test') $this->post->set('selectTestStory', 0);
|
||||
|
||||
foreach($this->post->assignedTo as $assignedTo)
|
||||
{
|
||||
@@ -121,26 +120,21 @@ class taskModel extends model
|
||||
$taskID = $this->dao->lastInsertID();
|
||||
|
||||
/* Mark design version.*/
|
||||
if(isset($this->config->qcVersion) && $task->design)
|
||||
if(isset($task->design) && !empty($task->design))
|
||||
{
|
||||
$design = $this->loadModel('design')->getByID($task->design);
|
||||
$this->dao->update(TABLE_TASK)->set('designVersion')->eq($design->version)->where('id')->eq($taskID)->exec();
|
||||
}
|
||||
|
||||
if(isset($this->config->qcVersion))
|
||||
{
|
||||
$taskSpec = new stdClass();
|
||||
$taskSpec->task = $taskID;
|
||||
$taskSpec->version = $task->version;
|
||||
$taskSpec->name = $task->name;
|
||||
$taskSpec->estStarted = $task->estStarted;
|
||||
$taskSpec->deadline = $task->deadline;
|
||||
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)
|
||||
->autoCheck()
|
||||
->exec();
|
||||
$taskSpec = new stdClass();
|
||||
$taskSpec->task = $taskID;
|
||||
$taskSpec->version = $task->version;
|
||||
$taskSpec->name = $task->name;
|
||||
$taskSpec->estStarted = $task->estStarted;
|
||||
$taskSpec->deadline = $task->deadline;
|
||||
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)->autoCheck()->exec();
|
||||
if(dao::isError()) return false;
|
||||
|
||||
if($this->post->story) $this->loadModel('story')->setStage($this->post->story);
|
||||
if($this->post->selectTestStory)
|
||||
@@ -371,9 +365,7 @@ class taskModel extends model
|
||||
|
||||
foreach($data as $i => $task)
|
||||
{
|
||||
/* Record task version.*/
|
||||
if(isset($this->config->qcVersion)) $task->version = 1;
|
||||
|
||||
$task->version = 1;
|
||||
$this->dao->insert(TABLE_TASK)->data($task)
|
||||
->autoCheck()
|
||||
->checkIF($task->estimate != '', 'estimate', 'float')
|
||||
@@ -381,22 +373,16 @@ class taskModel extends model
|
||||
|
||||
if(dao::isError()) return false;
|
||||
|
||||
$taskID = $this->dao->lastInsertID();
|
||||
$taskID = $this->dao->lastInsertID();
|
||||
$taskSpec = new stdClass();
|
||||
$taskSpec->task = $taskID;
|
||||
$taskSpec->version = $task->version;
|
||||
$taskSpec->name = $task->name;
|
||||
$taskSpec->estStarted = $task->estStarted;
|
||||
$taskSpec->deadline = $task->deadline;
|
||||
|
||||
if(isset($this->config->qcVersion))
|
||||
{
|
||||
$taskSpec = new stdClass();
|
||||
$taskSpec->task = $taskID;
|
||||
$taskSpec->version = $task->version;
|
||||
$taskSpec->name = $task->name;
|
||||
$taskSpec->estStarted = $task->estStarted;
|
||||
$taskSpec->deadline = $task->deadline;
|
||||
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)
|
||||
->autoCheck()
|
||||
->exec();
|
||||
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
}
|
||||
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)->autoCheck()->exec();
|
||||
if(dao::isError()) return false;
|
||||
|
||||
$childTasks .= $taskID . ',';
|
||||
if($story) $this->story->setStage($task->story);
|
||||
@@ -765,10 +751,11 @@ class taskModel extends model
|
||||
{
|
||||
$oldTask = $this->dao->select('*')->from(TABLE_TASK)->where('id')->eq((int)$taskID)->fetch();
|
||||
if($this->post->estimate < 0 or $this->post->left < 0 or $this->post->consumed < 0)
|
||||
{
|
||||
{
|
||||
dao::$errors[] = $this->lang->task->error->recordMinus;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!empty($_POST['lastEditedDate']) and $oldTask->lastEditedDate != $this->post->lastEditedDate)
|
||||
{
|
||||
dao::$errors[] = $this->lang->error->editedByOther;
|
||||
@@ -869,7 +856,14 @@ class taskModel extends model
|
||||
}
|
||||
}
|
||||
|
||||
/* Record task version.*/
|
||||
/* Mark design version.*/
|
||||
if(isset($task->design) && !empty($task->design))
|
||||
{
|
||||
$design = $this->loadModel('design')->getByID($task->design);
|
||||
$this->dao->update(TABLE_TASK)->set('designVersion')->eq($design->version)->where('id')->eq($taskID)->exec();
|
||||
}
|
||||
|
||||
/* Record task version. */
|
||||
if($oldTask->name != $task->name || $oldTask->estStarted != $task->estStarted || $oldTask->deadline != $task->deadline)
|
||||
{
|
||||
$task->version = $oldTask->version + 1;
|
||||
@@ -879,9 +873,7 @@ class taskModel extends model
|
||||
$taskSpec->name = $task->name;
|
||||
$taskSpec->estStarted = $task->estStarted;
|
||||
$taskSpec->deadline = $task->deadline;
|
||||
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)
|
||||
->autoCheck()
|
||||
->exec();
|
||||
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)->autoCheck()->exec();
|
||||
}
|
||||
|
||||
$projectType = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($task->project)->fetch('type');
|
||||
@@ -1046,7 +1038,7 @@ class taskModel extends model
|
||||
|
||||
if($oldTask->name != $data->name || $oldTask->estStarted != $data->estStarted || $oldTask->deadline != $data->deadline)
|
||||
{
|
||||
$task->version = $oldTask->version + 1;
|
||||
$task->version = $oldTask->version + 1;
|
||||
$taskSpec = new stdClass();
|
||||
$taskSpec->task = $taskID;
|
||||
$taskSpec->version = $task->version;
|
||||
|
||||
@@ -150,6 +150,13 @@ class upgrade extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge program.
|
||||
*
|
||||
* @param string $type
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function mergeProgram($type = 'productline')
|
||||
{
|
||||
if($_POST)
|
||||
|
||||
@@ -3175,7 +3175,7 @@ class upgradeModel extends model
|
||||
$this->saveLogs($this->dao->get());
|
||||
return !dao::isError();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add unique key to team table.
|
||||
*
|
||||
|
||||
+15
-7
@@ -51,20 +51,24 @@ class userModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Get users list of current company.
|
||||
* Get inside users list of current company.
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function getList()
|
||||
{
|
||||
return $this->dao->select('*')->from(TABLE_USER)->where('deleted')->eq(0)->orderBy('account')->fetchAll();
|
||||
return $this->dao->select('*')->from(TABLE_USER)
|
||||
->where('deleted')->eq(0)
|
||||
->andWhere('type')->eq('inside')
|
||||
->orderBy('account')
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the account=>realname pairs.
|
||||
*
|
||||
* @param string $params noletter|noempty|nodeleted|noclosed|withguest|pofirst|devfirst|qafirst|pmfirst|realname, can be sets of theme
|
||||
* @param string $params noletter|noempty|nodeleted|noclosed|withguest|pofirst|devfirst|qafirst|pmfirst|realname|outside|inside|all, can be sets of theme
|
||||
* @param string $usersToAppended account1,account2
|
||||
* @param int $maxCount
|
||||
* @access public
|
||||
@@ -79,7 +83,7 @@ class userModel extends model
|
||||
* thus to make sure users of this role at first.
|
||||
*/
|
||||
$fields = 'account, realname, deleted';
|
||||
$type = (strpos($params, 'outside') !== false) ? 'outside' : '';
|
||||
$type = (strpos($params, 'outside') !== false) ? 'outside' : 'inside';
|
||||
if(strpos($params, 'pofirst') !== false) $fields .= ", INSTR(',pd,po,', role) AS roleOrder";
|
||||
if(strpos($params, 'pdfirst') !== false) $fields .= ", INSTR(',po,pd,', role) AS roleOrder";
|
||||
if(strpos($params, 'qafirst') !== false) $fields .= ", INSTR(',qd,qa,', role) AS roleOrder";
|
||||
@@ -199,8 +203,10 @@ class userModel extends model
|
||||
/**
|
||||
* Get users by sql.
|
||||
*
|
||||
* @param int $query
|
||||
* @param int $pager
|
||||
* @param varchar $browseType inside|outside|all
|
||||
* @param int $query
|
||||
* @param object $pager
|
||||
* @param varchar $orderBy
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
@@ -209,7 +215,7 @@ class userModel extends model
|
||||
return $this->dao->select('*')->from(TABLE_USER)
|
||||
->where('deleted')->eq(0)
|
||||
->beginIF($query)->andWhere($query)->fi()
|
||||
->beginIF($browseType == 'inside')->andWhere('type')->eq('')->fi()
|
||||
->beginIF($browseType == 'inside')->andWhere('type')->eq('inside')->fi()
|
||||
->beginIF($browseType == 'outside')->andWhere('type')->eq('outside')->fi()
|
||||
->orderBy($orderBy)
|
||||
->page($pager)
|
||||
@@ -230,6 +236,7 @@ class userModel extends model
|
||||
|
||||
$user = fixer::input('post')
|
||||
->setDefault('join', '0000-00-00' )
|
||||
->setDefault('type', 'inside' )
|
||||
->setIF($this->post->password1 != false, 'password', substr($this->post->password1, 0, 32))
|
||||
->setIF($this->post->password1 == false, 'password', '')
|
||||
->setIF($this->post->email != false, 'email', trim($this->post->email))
|
||||
@@ -308,6 +315,7 @@ class userModel extends model
|
||||
$data[$i] = new stdclass();
|
||||
$data[$i]->dept = $users->dept[$i] == 'ditto' ? (isset($prev['dept']) ? $prev['dept'] : 0) : $users->dept[$i];
|
||||
$data[$i]->account = $users->account[$i];
|
||||
$data[$i]->type = 'inside';
|
||||
$data[$i]->realname = $users->realname[$i];
|
||||
$data[$i]->role = $role;
|
||||
$data[$i]->group = $users->group[$i] == 'ditto' ? (isset($prev['group']) ? $prev['group'] : '') : $users->group[$i];
|
||||
|
||||
Reference in New Issue
Block a user