This commit is contained in:
Yagami
2020-09-01 04:03:10 +00:00
25 changed files with 649 additions and 180 deletions

View File

@@ -298,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);

View File

@@ -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;

View File

@@ -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';
@@ -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->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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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';
@@ -487,6 +487,7 @@ $lang->block->modules['program']->moreLinkList->cmmiestimate = 'workestimation|
$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|';

View File

@@ -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'>

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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' => '');

View File

@@ -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,7 @@ class design extends control
}
/**
* Unlink commit.
* Design unlink commits.
*
* @param int $designID
* @param int $commitID
@@ -287,7 +291,7 @@ class design extends control
}
/**
* A version of the code base.
* A version of the repository.
*
* @param int $repoID
* @access public
@@ -304,15 +308,23 @@ class design extends control
* 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)
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);
$this->view->design = $this->design->getCommit($designID, $pager);
$this->view->pager = $pager;
$this->display();
}

View File

@@ -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);
})

View File

@@ -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';
@@ -73,3 +73,4 @@ $lang->design->noDesign = 'No record.';
$lang->design->noCommit = 'No record commited.';
$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.';

View File

@@ -73,3 +73,4 @@ $lang->design->noDesign = '暂时没有记录';
$lang->design->noCommit = '暂时没有提交记录';
$lang->design->confirmDelete = '您确定要删除这个设计吗?';
$lang->design->confirmUnlink = '您确定要移除这个提交吗?';
$lang->design->errorDate = '开始日期不能大于结束日期';

View File

@@ -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
@@ -223,32 +223,17 @@ class designModel extends model
*/
public function unlinkCommit($designID = 0, $commitID = 0)
{
/* 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();
/* 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();
}
/**
* 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 a design by id.
*
@@ -266,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');
}
@@ -345,18 +331,37 @@ class designModel extends model
* Get commit.
*
* @param int $designID
* @param int $pager
* @access public
* @return void
* @return object
*/
public function getCommit($designID = 0)
public function getCommit($designID = 0, $pager = null)
{
$design = $this->dao->select('*')->from(TABLE_DESIGN)->where('id')->eq($designID)->fetch();
$design->commit = $design->commit ? explode(",", $design->commit) : '';
$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.
*

View File

@@ -48,7 +48,7 @@
<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>
<th class="text-center w-130px"> <?php echo $lang->design->actions;?></th>
<th class="text-center w-100px"> <?php echo $lang->design->actions;?></th>
</tr>
</thead>
<tbody>
@@ -72,7 +72,7 @@
<?php endforeach;?>
</tbody>
</table>
<div class='table-footer'>
<div class='table-footer table-statistic''>
<?php $pager->show('right', 'pagerjs');?>
</div>
</form>

View File

@@ -85,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';?>

View File

@@ -19,14 +19,14 @@
<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:?>
<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>
<table class='table table-data'>
<thead>
<tr>
@@ -39,16 +39,19 @@
<tbody>
<?php foreach($design->commit as $commit):?>
<tr>
<td><?php echo html::a(helper::createLink('design', 'revision', "repoID=$commit"), "#$commit", '_blank');?></td>
<td><?php echo $design->commitBy;?></td>
<td><?php echo substr($design->commitDate, 0, 11);?></td>
<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", $design, 'list', 'unlink', 'hiddenwin', 'iframe showinonlybody', true);?>
<?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';?>

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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';

View File

@@ -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;