From de3fe93b83f984a9c0f1d26ac1a3582bd9c8e7df Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Thu, 7 Jan 2021 09:19:51 +0800 Subject: [PATCH 01/31] * Finish task #8946. --- module/program/js/pgmcreate.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/program/js/pgmcreate.js b/module/program/js/pgmcreate.js index 00bd6061e0..9b1127db05 100644 --- a/module/program/js/pgmcreate.js +++ b/module/program/js/pgmcreate.js @@ -6,7 +6,7 @@ $(function() /** * Set acl list. * - * @param programID $programID + * @param int $programID * @access public * @return void */ @@ -25,6 +25,7 @@ function setAclList(programID) /** * Set parent program. * + * @param int $programID * @access public * @return void */ From af4fe0b6ccbc0dd154001fb7e9971919c8f85b90 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Thu, 7 Jan 2021 09:19:54 +0800 Subject: [PATCH 02/31] * Finish task #8940. --- module/product/view/all.html.php | 113 ++++++++++++++----------------- 1 file changed, 49 insertions(+), 64 deletions(-) diff --git a/module/product/view/all.html.php b/module/product/view/all.html.php index 3fb085e5b2..1b46117d30 100644 --- a/module/product/view/all.html.php +++ b/module/product/view/all.html.php @@ -66,70 +66,55 @@ $trClass = 'is-top-level table-nest-child-hide'; $trAttrs .= " class='$trClass'"; ?> - name):?> - > - - - name?> - - - - - - - - - - - - - - - - - products as $product):?> - stories['active'] + $product->stories['closed'] + $product->stories['draft'] + $product->stories['changed']; - $totalRequirements = $product->requirements['active'] + $product->requirements['closed'] + $product->requirements['draft'] + $product->requirements['changed']; - ?> - programName) - { - $trAttrs = "data-id='$product->id' data-parent='program.$product->program'"; - $trClass .= ' is-nest-child table-nest-hide'; - $trAttrs .= " data-nest-parent='program.$product->program' data-nest-path='program.$product->program,$product->id'"; - } - else - { - $trAttrs = "data-id='$product->id' data-parent='0'"; - $trClass .= ' no-nest'; - } - $trAttrs .= " class='$trClass'"; - ?> - > - createLink('product', 'browse', 'product=' . $product->id), $product->name);?> - - requirements['active'];?> - requirements['closed'];?> - requirements['draft'];?> - requirements['closed'] / $totalRequirements, 3) * 100;?>% - stories['active'];?> - stories['closed'];?> - stories['draft'];?> - stories['closed'] / $totalStories, 3) * 100;?>% - unResolved;?> - closedBugs;?> - releases;?> - plans;?> - - id", $product, 'list', 'edit');?> - - - - - - + name):?> + > + + + name?> + + + + products as $product):?> + stories['active'] + $product->stories['closed'] + $product->stories['draft'] + $product->stories['changed']; + $totalRequirements = $product->requirements['active'] + $product->requirements['closed'] + $product->requirements['draft'] + $product->requirements['changed']; + + $trClass = ''; + if($product->programName) + { + $trAttrs = "data-id='$product->id' data-parent='program.$product->program'"; + $trClass .= ' is-nest-child table-nest-hide'; + $trAttrs .= " data-nest-parent='program.$product->program' data-nest-path='program.$product->program,$product->id'"; + } + else + { + $trAttrs = "data-id='$product->id' data-parent='0'"; + $trClass .= ' no-nest'; + } + $trAttrs .= " class='$trClass'"; + ?> + > + createLink('product', 'browse', 'product=' . $product->id), $product->name);?> + requirements['active'];?> + requirements['closed'];?> + requirements['draft'];?> + requirements['closed'] / $totalRequirements, 3) * 100;?>% + stories['active'];?> + stories['closed'];?> + stories['draft'];?> + stories['closed'] / $totalStories, 3) * 100;?>% + unResolved;?> + closedBugs;?> + releases;?> + plans;?> + + id", $product, 'list', 'edit');?> + + + + + + From def447c084bdbb6e46d17af7797cc1e5625c961f Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Thu, 7 Jan 2021 09:21:38 +0800 Subject: [PATCH 03/31] * Finish task #8945. --- module/product/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/product/model.php b/module/product/model.php index c795873848..3c10bf15e6 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -1541,7 +1541,7 @@ class productModel extends model * * @param int $productID * @access public - * @return object + * @return void */ public function replaceStoryConcept($productID = 0) { From 7d9166bf8e13eb53e4a1d5e4a2e9b10474e18cc3 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Thu, 7 Jan 2021 13:02:44 +0800 Subject: [PATCH 04/31] * Finish task #8942. --- module/product/model.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/module/product/model.php b/module/product/model.php index 3c10bf15e6..3d49cd4d29 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -493,6 +493,12 @@ class productModel extends model return $output; } + /** + * Get product main action. + * + * @access public + * @return string + */ public function getProductMainAction() { return common::hasPriv('product', 'all') ? html::a(helper::createLink('product', 'all'), $this->lang->product->moreProduct, '', "class='btn btn-link'") : ''; From afa22848f706371383e23a7bd647d802cc66b28d Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Thu, 7 Jan 2021 13:11:50 +0800 Subject: [PATCH 05/31] * Finish task #8928. --- module/issue/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/issue/model.php b/module/issue/model.php index 5c975ed2ba..e78d865ba0 100644 --- a/module/issue/model.php +++ b/module/issue/model.php @@ -283,7 +283,7 @@ class issueModel extends model } /** - * Cancel an issue. + * Confirm an issue. * * @param int $issueID * @access public From 006dfcc733aca1e784c347e474f605879c4bccfa Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Thu, 7 Jan 2021 13:15:36 +0800 Subject: [PATCH 06/31] * Fix doc button. --- module/doc/view/browse.html.php | 6 +++--- module/doc/view/objectlibs.html.php | 2 +- module/doc/view/objectlibsbylist.html.php | 2 +- module/index/js/index.js | 10 ++++++---- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/module/doc/view/browse.html.php b/module/doc/view/browse.html.php index ad65207a33..0753a50ee5 100644 --- a/module/doc/view/browse.html.php +++ b/module/doc/view/browse.html.php @@ -57,7 +57,7 @@ var browseType = ''; @@ -75,7 +75,7 @@ var browseType = ''; doc->noDoc;?> - createLink('doc', 'create', "libID={$libID}&moduleID=$moduleID"), " " . $lang->doc->create, '', "class='btn btn-info'");?> + createLink('doc', 'create', "libID={$libID}&moduleID=$moduleID"), " " . $lang->doc->create, '', "class='btn btn-info' data-group=$from");?> doc->noEditedDoc;?> @@ -168,7 +168,7 @@ var browseType = ''; id&objectType=doc");?>" title="" class='btn btn-link ajaxCollect'> - id", "", '', "title='{$lang->edit}' class='btn btn-link'")?> + id", "", '', "title='{$lang->edit}' class='btn btn-link' data-group=$from")?> id", "", 'hiddenwin', "title='{$lang->delete}' class='btn btn-link'")?> diff --git a/module/doc/view/objectlibs.html.php b/module/doc/view/objectlibs.html.php index ab224bd850..540787c152 100644 --- a/module/doc/view/objectlibs.html.php +++ b/module/doc/view/objectlibs.html.php @@ -48,7 +48,7 @@
- + >
collector, $this->app->user->account) !== false ? " " : '') . $lib->name;?>
allCount . $lang->doc->item;?>
diff --git a/module/doc/view/objectlibsbylist.html.php b/module/doc/view/objectlibsbylist.html.php index e47b0ed9f7..a508769d2b 100644 --- a/module/doc/view/objectlibsbylist.html.php +++ b/module/doc/view/objectlibsbylist.html.php @@ -29,7 +29,7 @@ id");?> id");?> - name);?> + name, '', "data-group=$from");?> allCount . $lang->doc->item;?> diff --git a/module/index/js/index.js b/module/index/js/index.js index ad8a34a046..cd9915ffbf 100644 --- a/module/index/js/index.js +++ b/module/index/js/index.js @@ -67,12 +67,14 @@ var methodLowerCase = methodName.toLowerCase(); if(moduleName === 'doc') { - if(link.prj && ['browse', 'create', 'showfiles', 'objectlibs'].includes(methodLowerCase)) + if(link.prj) { - var from = $.cookie('from'); - if(from === 'project') return 'project'; - if(from === 'product') return 'product'; + if(methodLowerCase === 'objectlibs' && (link.params.from || link.params.$3) == 'product') return 'product'; + + return 'project'; } + + if(methodLowerCase === 'browse' && (link.params.from || link.params.$5) == 'product') return 'product'; return 'doc'; } if(moduleName === 'custom' && ['estimate', 'browsestoryconcept', 'configurescrum'].includes(methodLowerCase)) From 098fc50cc0af6ab1cb62c29fc1e45cf7aac5a11f Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Thu, 7 Jan 2021 13:35:27 +0800 Subject: [PATCH 07/31] * Fix program product and project details. --- module/common/lang/de.php | 1 + module/common/lang/en.php | 1 + module/common/lang/fr.php | 1 + module/common/lang/vi.php | 1 + module/common/lang/zh-cn.php | 1 + module/product/control.php | 2 ++ module/product/model.php | 2 +- module/program/control.php | 4 +++- module/program/model.php | 4 ++-- www/theme/default/style.css | 2 +- 10 files changed, 14 insertions(+), 5 deletions(-) diff --git a/module/common/lang/de.php b/module/common/lang/de.php index 33488b21a9..1c6fdecce8 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -53,6 +53,7 @@ $lang->preview = 'Ansehen'; $lang->goback = 'Zurück'; $lang->goPC = 'PC'; $lang->more = 'Mehr'; +$lang->moreLink = 'MORE'; $lang->day = 'Tag'; $lang->customConfig = 'Custom Config'; $lang->public = 'Öffentlich'; diff --git a/module/common/lang/en.php b/module/common/lang/en.php index e87e0ea2d2..52ca9a94ba 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -53,6 +53,7 @@ $lang->preview = 'View'; $lang->goback = 'Back'; $lang->goPC = 'PC'; $lang->more = 'More'; +$lang->moreLink = 'MORE'; $lang->day = ' Day'; $lang->customConfig = 'Custom Config'; $lang->public = 'Public'; diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php index 30d886c0c6..ccbabae896 100644 --- a/module/common/lang/fr.php +++ b/module/common/lang/fr.php @@ -53,6 +53,7 @@ $lang->preview = 'Consulter'; $lang->goback = 'Retour'; $lang->goPC = 'PC'; $lang->more = 'Plus'; +$lang->moreLink = 'MORE'; $lang->day = 'Jour'; $lang->customConfig = 'Personnalisation'; $lang->public = 'Public'; diff --git a/module/common/lang/vi.php b/module/common/lang/vi.php index 9fc1cd17cb..66d830d45c 100644 --- a/module/common/lang/vi.php +++ b/module/common/lang/vi.php @@ -53,6 +53,7 @@ $lang->preview = 'Xem'; $lang->goback = 'Trở lại'; $lang->goPC = 'PC'; $lang->more = 'Thêm'; +$lang->moreLink = 'MORE'; $lang->day = ' Day'; $lang->customConfig = 'Tùy biến cấu hình'; $lang->public = 'Công khai'; diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 893c0f70c7..9d880d5f08 100755 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -53,6 +53,7 @@ $lang->preview = '查看'; $lang->goback = '返回'; $lang->goPC = 'PC版'; $lang->more = '更多'; +$lang->moreLink = 'MORE'; $lang->day = '天'; $lang->customConfig = '自定义'; $lang->public = '公共'; diff --git a/module/product/control.php b/module/product/control.php index d6e97721f4..4cbaea377c 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -832,6 +832,8 @@ class product extends control */ public function all($browseType = 'noclosed', $orderBy = 'order_desc') { + $this->lang->product->mainMenuAction = html::a('javascript:history.go(-1);', ' ' . $this->lang->goback, '', "class='btn btn-link'"); + /* Load module and set session. */ $this->loadModel('program'); $this->session->set('productList', $this->app->getURI(true)); diff --git a/module/product/model.php b/module/product/model.php index 3d49cd4d29..3f118b81df 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -501,7 +501,7 @@ class productModel extends model */ public function getProductMainAction() { - return common::hasPriv('product', 'all') ? html::a(helper::createLink('product', 'all'), $this->lang->product->moreProduct, '', "class='btn btn-link'") : ''; + return common::hasPriv('product', 'all') ? html::a(helper::createLink('product', 'all'), $this->lang->moreLink, '', "class='btn btn-link'") : ''; } /** diff --git a/module/program/control.php b/module/program/control.php index 5a0453f7e8..eb7062b696 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -60,7 +60,8 @@ class program extends control */ public function PGMBrowse($status = 'all', $orderBy = 'order_asc') { - $this->lang->navGroup->program = 'program'; + $this->lang->navGroup->program = 'program'; + $this->lang->program->mainMenuAction = html::a('javascript:history.go(-1);', ' ' . $this->lang->goback, '', "class='btn btn-link'"); if(common::hasPriv('program', 'pgmcreate')) $this->lang->pageActions = html::a($this->createLink('program', 'pgmcreate'), " " . $this->lang->program->PGMCreate, '', "class='btn btn-secondary'"); @@ -760,6 +761,7 @@ class program extends control */ public function PRJBrowse($programID = 0, $browseType = 'doing', $param = 0, $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1) { + $this->lang->program->mainMenuAction = html::a('javascript:history.go(-1);', ' ' . $this->lang->goback, '', "class='btn btn-link'"); $this->app->session->set('PRJBrowse', $this->app->getURI(true)); $this->loadModel('datatable'); diff --git a/module/program/model.php b/module/program/model.php index 66873146e1..25de03559a 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -31,7 +31,7 @@ class programModel extends model */ public function getPGMMainAction() { - return common::hasPriv('program', 'pgmbrowse') ? html::a(helper::createLink('program', 'pgmbrowse'), $this->lang->program->morePGM, '', "class='btn btn-link'") : ''; + return common::hasPriv('program', 'pgmbrowse') ? html::a(helper::createLink('program', 'pgmbrowse'), $this->lang->moreLink, '', "class='btn btn-link'") : ''; } /** @@ -813,7 +813,7 @@ class programModel extends model public function getPRJMainAction($module, $method) { if($module == 'program' and $method != 'index') return ''; - return common::hasPriv('program', 'prjbrowse') ? html::a(helper::createLink('program', 'prjbrowse'), $this->lang->program->morePRJ, '', "class='btn btn-link'") : ''; + return common::hasPriv('program', 'prjbrowse') ? html::a(helper::createLink('program', 'prjbrowse'), $this->lang->moreLink, '', "class='btn btn-link'") : ''; } /** diff --git a/www/theme/default/style.css b/www/theme/default/style.css index fd89894e67..6edb02a78f 100644 --- a/www/theme/default/style.css +++ b/www/theme/default/style.css @@ -54,7 +54,7 @@ a.showMoreImage:hover {opacity: 1;} .table-actions .btn{border: 1px solid #1183fb; color: #1183fb} .table-actions .btn:hover{background: #b3d4fc} -#header #toolbar a{color: #fff; font-size: 14px; line-height: 15px;} +#header #toolbar a{color: #84a2e2; font-size: 14px; line-height: 15px; border: #84a2e2 1px solid} #navbar .nav>li.divider {margin: 15px 8px 15px 8px;} #navbar .nav>li>a { padding: 10px 10px;} From 55902954b833d3e4fde61951630c950b3ee5977d Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 8 Jan 2021 08:25:41 +0800 Subject: [PATCH 08/31] * Finish task #8931. --- module/my/view/project.html.php | 4 ++++ module/program/config.php | 8 +++++++- module/program/model.php | 2 +- module/program/view/pgmproject.html.php | 6 ++---- module/program/view/prjbrowse.html.php | 1 + 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/module/my/view/project.html.php b/module/my/view/project.html.php index 60e1a3c770..07af421538 100644 --- a/module/my/view/project.html.php +++ b/module/my/view/project.html.php @@ -38,7 +38,9 @@ idAB;?> program->PRJName;?> + program->PRJStatus;?> + program->begin;?> program->end;?> program->PRJBudget;?> @@ -53,7 +55,9 @@ createLink('program', 'index', "projectID=$project->id", '', '', $project->id), $project->name, '', "data-group='project'");?> + project->statusList, $project->status, '');?> + begin;?> end == '0000-00-00' ? '' : $project->end;?> budget . ' ' . zget($lang->program->unitList, $project->budgetUnit);?> diff --git a/module/program/config.php b/module/program/config.php index 12dba189cd..282df28d06 100644 --- a/module/program/config.php +++ b/module/program/config.php @@ -39,7 +39,7 @@ $config->program->sortFields->PRJBudget = 'budget'; global $lang; $config->program->datatable = new stdclass(); -$config->program->datatable->defaultField = array('idAB', 'PRJName', 'PRJPGM', 'PM', 'begin', 'end', 'PRJBudget', 'teamCount','PRJEstimate','PRJConsume', 'PRJProgress', 'actions'); +$config->program->datatable->defaultField = array('idAB', 'PRJName', 'PRJPGM', 'PM', 'PRJStatus', 'begin', 'end', 'PRJBudget', 'teamCount','PRJEstimate','PRJConsume', 'PRJProgress', 'actions'); $config->program->datatable->fieldList['idAB']['title'] = 'idAB'; $config->program->datatable->fieldList['idAB']['fixed'] = 'left'; @@ -64,6 +64,12 @@ $config->program->datatable->fieldList['PM']['width'] = '80'; $config->program->datatable->fieldList['PM']['required'] = 'yes'; $config->program->datatable->fieldList['PM']['sort'] = 'no'; +$config->program->datatable->fieldList['PRJStatus']['title'] = 'PRJStatus'; +$config->program->datatable->fieldList['PRJStatus']['fixed'] = 'left'; +$config->program->datatable->fieldList['PRJStatus']['width'] = '80'; +$config->program->datatable->fieldList['PRJStatus']['required'] = 'no'; +$config->program->datatable->fieldList['PRJStatus']['sort'] = 'yes'; + $config->program->datatable->fieldList['begin']['title'] = 'begin'; $config->program->datatable->fieldList['begin']['fixed'] = 'no'; $config->program->datatable->fieldList['begin']['width'] = '100'; diff --git a/module/program/model.php b/module/program/model.php index 25de03559a..362eb5966f 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -1656,7 +1656,7 @@ class programModel extends model echo $project->end == LONG_TIME ? $this->lang->program->PRJLongTime : $project->end; break; case 'PRJStatus': - echo zget($this->lang->program->statusList, $project->status); + echo " " . zget($this->lang->program->statusList, $project->status) . ""; break; case 'PRJBudget': echo $project->budget != 0 ? $project->budget . zget($this->lang->program->unitList, $project->budgetUnit) : $this->lang->program->future; diff --git a/module/program/view/pgmproject.html.php b/module/program/view/pgmproject.html.php index bffd331d42..545c99e12b 100644 --- a/module/program/view/pgmproject.html.php +++ b/module/program/view/pgmproject.html.php @@ -50,10 +50,8 @@ js::set('browseType', $browseType); show) - { - $this->datatable->printHead($value, $orderBy, $vars); - } + if($value->id == 'PRJStatus' and $browseType !== 'all') $value->show = false; + if($value->show) $this->datatable->printHead($value, $orderBy, $vars); } ?> diff --git a/module/program/view/prjbrowse.html.php b/module/program/view/prjbrowse.html.php index a2b774b70a..7be536d01e 100644 --- a/module/program/view/prjbrowse.html.php +++ b/module/program/view/prjbrowse.html.php @@ -69,6 +69,7 @@ js::set('browseType', $browseType); id == 'PRJStatus' and $browseType !== 'all') $value->show = false; if($value->show) $this->datatable->printHead($value, $orderBy, $vars); } ?> From 0e93f81de6c3453d40e52fa4702b75f16bd5fb88 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 8 Jan 2021 08:58:04 +0800 Subject: [PATCH 09/31] * Finish task#8951. --- module/program/control.php | 1 + module/program/js/common.js | 28 ++++++++++++++++++++++++++ module/program/view/pgmcreate.html.php | 8 ++++++-- 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/module/program/control.php b/module/program/control.php index eb7062b696..42e18f7fb6 100644 --- a/module/program/control.php +++ b/module/program/control.php @@ -167,6 +167,7 @@ class program extends control $this->view->users = $this->user->getPairs('noclosed|nodeleted'); $this->view->parentProgram = $parentProgramID ? $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($parentProgramID)->fetch() : 0; $this->view->parents = $this->program->getParentPairs(); + $this->view->PGMList = $this->program->getPGMList(); $this->display(); } diff --git a/module/program/js/common.js b/module/program/js/common.js index 8ac3b58b7f..7fd8dac776 100644 --- a/module/program/js/common.js +++ b/module/program/js/common.js @@ -281,3 +281,31 @@ $(function() } }); }) + +/** + * Set budget tips and acl list. + * + * @param int $parentProgramID + * @access public + * @return void + */ +function setBudgetTipsAndAclList(parentProgramID) +{ + if(parentProgramID != 0) + { + $('.budgetSpan').removeClass('hidden'); + + parentProgram = PGMList[parentProgramID]; + programBudget = parentProgram.budget; + PGMBudgetUnit = budgetUnitList[parentProgram.budgetUnit]; + + budgetNotes = programBudget != 0 ? (programBudget + PGMBudgetUnit) : future; + $('.budgetSpan').html(PGMParentBudget + budgetNotes); + $('.aclBox').html($('#subPGMAcl').html()); + } + else + { + $('.budgetSpan').addClass('hidden'); + $('.aclBox').html($('#PGMAcl').html()); + } +} diff --git a/module/program/view/pgmcreate.html.php b/module/program/view/pgmcreate.html.php index f44eea15aa..c9c7cdf6c7 100644 --- a/module/program/view/pgmcreate.html.php +++ b/module/program/view/pgmcreate.html.php @@ -35,6 +35,10 @@ project->placeholder);?> project->errorSameProducts);?> program->PRJLongTime);?> +program->unitList);?> +program->PGMParentBudget);?> +program->future);?> + program->PGMCreate->requiredFields;?>
@@ -45,7 +49,7 @@ - @@ -71,7 +75,7 @@ - program->PGMParentBudget . ($parentProgram->budget != 0 ? $parentProgram->budget . zget($lang->program->unitList, $parentProgram->budgetUnit, '') : $lang->program->future);?> + program->PGMParentBudget . ($parentProgram->budget != 0 ? $parentProgram->budget . zget($lang->program->unitList, $parentProgram->budgetUnit, '') : $lang->program->future);?> From 3a7fdb72344afe78306e85dabe8c5108b7946b2b Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 8 Jan 2021 09:04:01 +0800 Subject: [PATCH 10/31] * Finish task#8951. Delete useless files. --- module/program/js/pgmcreate.js | 35 ---------------------------------- module/program/js/pgmedit.js | 27 -------------------------- 2 files changed, 62 deletions(-) delete mode 100644 module/program/js/pgmcreate.js delete mode 100644 module/program/js/pgmedit.js diff --git a/module/program/js/pgmcreate.js b/module/program/js/pgmcreate.js deleted file mode 100644 index 9b1127db05..0000000000 --- a/module/program/js/pgmcreate.js +++ /dev/null @@ -1,35 +0,0 @@ -$(function() -{ - setAclList($("#parent").val()); -}); - -/** - * Set acl list. - * - * @param int $programID - * @access public - * @return void - */ -function setAclList(programID) -{ - if(programID != 0) - { - $('.aclBox').html($('#subPGMAcl').html()); - } - else - { - $('.aclBox').html($('#PGMAcl').html()); - } -} - -/** - * Set parent program. - * - * @param int $programID - * @access public - * @return void - */ -function setParentProgram(programID) -{ - location.href = createLink('program', 'PGMCreate', 'programID=' + programID); -} diff --git a/module/program/js/pgmedit.js b/module/program/js/pgmedit.js deleted file mode 100644 index fe8f52ef49..0000000000 --- a/module/program/js/pgmedit.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Set budget tips and acl list. - * - * @param int $parentProgramID - * @access public - * @return void - */ -function setBudgetTipsAndAclList(parentProgramID) -{ - if(parentProgramID != 0) - { - $('.budgetSpan').removeClass('hidden'); - - parentProgram = PGMList[parentProgramID]; - programBudget = parentProgram.budget; - PGMBudgetUnit = budgetUnitList[parentProgram.budgetUnit]; - - budgetNotes = programBudget != 0 ? (programBudget + PGMBudgetUnit) : future; - $('.budgetSpan').html(PGMParentBudget + budgetNotes); - $('.aclBox').html($('#subPGMAcl').html()); - } - else - { - $('.budgetSpan').addClass('hidden'); - $('.aclBox').html($('#PGMAcl').html()); - } -} From f05ae3a3761615e1dbda2516aa6affd6a6d61e41 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Fri, 8 Jan 2021 09:09:39 +0800 Subject: [PATCH 11/31] * Finish task #8925. --- module/common/model.php | 4 ++-- module/index/css/index.css | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/module/common/model.php b/module/common/model.php index 861f39bf81..407372d9a5 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -295,7 +295,7 @@ class commonModel extends model echo "
  • "; } - echo "'; - echo "
    - + From e144b3f18bcc3c344ab18a64464d5115eab1d66c Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 8 Jan 2021 09:47:18 +0800 Subject: [PATCH 15/31] * Fix bug: Create budget has error. --- module/budget/lang/de.php | 2 +- module/budget/lang/en.php | 2 +- module/budget/lang/fr.php | 2 +- module/budget/lang/vi.php | 2 +- module/budget/lang/zh-cn.php | 2 +- module/budget/lang/zh-tw.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/module/budget/lang/de.php b/module/budget/lang/de.php index 79eb5f9b41..9a8717996d 100644 --- a/module/budget/lang/de.php +++ b/module/budget/lang/de.php @@ -15,7 +15,7 @@ $lang->budget->subject = 'Category'; $lang->budget->name = 'Item'; $lang->budget->amount = 'Estimated'; $lang->budget->desc = 'Description'; -$lang->budget->yuan = 'Yuan'; +$lang->budget->wanyuan = 'Wanyuan'; $lang->budget->dollar = 'Dollars'; $lang->budget->createdBy = 'CreatedBy'; $lang->budget->createdDate = 'CreatedDate'; diff --git a/module/budget/lang/en.php b/module/budget/lang/en.php index 79eb5f9b41..9a8717996d 100644 --- a/module/budget/lang/en.php +++ b/module/budget/lang/en.php @@ -15,7 +15,7 @@ $lang->budget->subject = 'Category'; $lang->budget->name = 'Item'; $lang->budget->amount = 'Estimated'; $lang->budget->desc = 'Description'; -$lang->budget->yuan = 'Yuan'; +$lang->budget->wanyuan = 'Wanyuan'; $lang->budget->dollar = 'Dollars'; $lang->budget->createdBy = 'CreatedBy'; $lang->budget->createdDate = 'CreatedDate'; diff --git a/module/budget/lang/fr.php b/module/budget/lang/fr.php index 79eb5f9b41..9a8717996d 100644 --- a/module/budget/lang/fr.php +++ b/module/budget/lang/fr.php @@ -15,7 +15,7 @@ $lang->budget->subject = 'Category'; $lang->budget->name = 'Item'; $lang->budget->amount = 'Estimated'; $lang->budget->desc = 'Description'; -$lang->budget->yuan = 'Yuan'; +$lang->budget->wanyuan = 'Wanyuan'; $lang->budget->dollar = 'Dollars'; $lang->budget->createdBy = 'CreatedBy'; $lang->budget->createdDate = 'CreatedDate'; diff --git a/module/budget/lang/vi.php b/module/budget/lang/vi.php index 79eb5f9b41..9a8717996d 100644 --- a/module/budget/lang/vi.php +++ b/module/budget/lang/vi.php @@ -15,7 +15,7 @@ $lang->budget->subject = 'Category'; $lang->budget->name = 'Item'; $lang->budget->amount = 'Estimated'; $lang->budget->desc = 'Description'; -$lang->budget->yuan = 'Yuan'; +$lang->budget->wanyuan = 'Wanyuan'; $lang->budget->dollar = 'Dollars'; $lang->budget->createdBy = 'CreatedBy'; $lang->budget->createdDate = 'CreatedDate'; diff --git a/module/budget/lang/zh-cn.php b/module/budget/lang/zh-cn.php index 6fda6b7841..5bb02d4076 100644 --- a/module/budget/lang/zh-cn.php +++ b/module/budget/lang/zh-cn.php @@ -15,7 +15,7 @@ $lang->budget->subject = '科目'; $lang->budget->name = '费用名称'; $lang->budget->amount = '预计金额'; $lang->budget->desc = '说明'; -$lang->budget->yuan = '元'; +$lang->budget->wanyuan = '万元'; $lang->budget->dollar = 'Dollars'; $lang->budget->createdBy = '由谁创建'; $lang->budget->createdDate = '创建时间'; diff --git a/module/budget/lang/zh-tw.php b/module/budget/lang/zh-tw.php index 639265369f..8fbe5ccb14 100644 --- a/module/budget/lang/zh-tw.php +++ b/module/budget/lang/zh-tw.php @@ -15,7 +15,7 @@ $lang->budget->subject = '科目'; $lang->budget->name = '費用名稱'; $lang->budget->amount = '預計金額'; $lang->budget->desc = '說明'; -$lang->budget->yuan = '元'; +$lang->budget->wanyuan = '萬元'; $lang->budget->dollar = 'Dollars'; $lang->budget->createdBy = '由誰創建'; $lang->budget->createdDate = '創建時間'; From 2341034e4d1e84c5095b969aa83a5e3ccc1e8218 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Fri, 8 Jan 2021 09:53:47 +0800 Subject: [PATCH 16/31] * Finish task #8935. --- module/personnel/lang/de.php | 4 ++-- module/personnel/lang/en.php | 4 ++-- module/personnel/lang/fr.php | 4 ++-- module/personnel/lang/vi.php | 4 ++-- module/personnel/lang/zh-cn.php | 4 ++-- module/personnel/lang/zh-tw.php | 4 ++-- module/personnel/view/putinto.html.php | 10 +++++----- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/module/personnel/lang/de.php b/module/personnel/lang/de.php index ae844bd2a0..37e5aa2514 100644 --- a/module/personnel/lang/de.php +++ b/module/personnel/lang/de.php @@ -22,10 +22,10 @@ $lang->personnel->createStories = 'Story'; $lang->personnel->risk = 'Risk'; $lang->personnel->issue = 'Issue'; $lang->personnel->putInto = 'Input'; -$lang->personnel->surplus = 'Remained'; +$lang->personnel->left = 'Remained'; $lang->personnel->created = 'Created'; $lang->personnel->finished = 'Finished'; -$lang->personnel->pending = 'Pending'; +$lang->personnel->wait = 'Pending'; $lang->personnel->resolved = 'Resolved'; $lang->personnel->UR = 'UR'; $lang->personnel->SR = 'SR'; diff --git a/module/personnel/lang/en.php b/module/personnel/lang/en.php index ae844bd2a0..37e5aa2514 100644 --- a/module/personnel/lang/en.php +++ b/module/personnel/lang/en.php @@ -22,10 +22,10 @@ $lang->personnel->createStories = 'Story'; $lang->personnel->risk = 'Risk'; $lang->personnel->issue = 'Issue'; $lang->personnel->putInto = 'Input'; -$lang->personnel->surplus = 'Remained'; +$lang->personnel->left = 'Remained'; $lang->personnel->created = 'Created'; $lang->personnel->finished = 'Finished'; -$lang->personnel->pending = 'Pending'; +$lang->personnel->wait = 'Pending'; $lang->personnel->resolved = 'Resolved'; $lang->personnel->UR = 'UR'; $lang->personnel->SR = 'SR'; diff --git a/module/personnel/lang/fr.php b/module/personnel/lang/fr.php index ae844bd2a0..37e5aa2514 100644 --- a/module/personnel/lang/fr.php +++ b/module/personnel/lang/fr.php @@ -22,10 +22,10 @@ $lang->personnel->createStories = 'Story'; $lang->personnel->risk = 'Risk'; $lang->personnel->issue = 'Issue'; $lang->personnel->putInto = 'Input'; -$lang->personnel->surplus = 'Remained'; +$lang->personnel->left = 'Remained'; $lang->personnel->created = 'Created'; $lang->personnel->finished = 'Finished'; -$lang->personnel->pending = 'Pending'; +$lang->personnel->wait = 'Pending'; $lang->personnel->resolved = 'Resolved'; $lang->personnel->UR = 'UR'; $lang->personnel->SR = 'SR'; diff --git a/module/personnel/lang/vi.php b/module/personnel/lang/vi.php index ae844bd2a0..37e5aa2514 100644 --- a/module/personnel/lang/vi.php +++ b/module/personnel/lang/vi.php @@ -22,10 +22,10 @@ $lang->personnel->createStories = 'Story'; $lang->personnel->risk = 'Risk'; $lang->personnel->issue = 'Issue'; $lang->personnel->putInto = 'Input'; -$lang->personnel->surplus = 'Remained'; +$lang->personnel->left = 'Remained'; $lang->personnel->created = 'Created'; $lang->personnel->finished = 'Finished'; -$lang->personnel->pending = 'Pending'; +$lang->personnel->wait = 'Pending'; $lang->personnel->resolved = 'Resolved'; $lang->personnel->UR = 'UR'; $lang->personnel->SR = 'SR'; diff --git a/module/personnel/lang/zh-cn.php b/module/personnel/lang/zh-cn.php index a2e7ef0727..48ebe0644c 100644 --- a/module/personnel/lang/zh-cn.php +++ b/module/personnel/lang/zh-cn.php @@ -22,10 +22,10 @@ $lang->personnel->createStories = '创建需求数'; $lang->personnel->risk = '风险'; $lang->personnel->issue = '问题'; $lang->personnel->putInto = '已投入'; -$lang->personnel->surplus = '剩余'; +$lang->personnel->left = '剩余'; $lang->personnel->created = '创建'; $lang->personnel->finished = '完成'; -$lang->personnel->pending = '待处理'; +$lang->personnel->wait = '待处理'; $lang->personnel->resolved = '解决'; $lang->personnel->UR = '用需'; $lang->personnel->SR = '软需'; diff --git a/module/personnel/lang/zh-tw.php b/module/personnel/lang/zh-tw.php index 858b4d797a..1c4a30ad8d 100644 --- a/module/personnel/lang/zh-tw.php +++ b/module/personnel/lang/zh-tw.php @@ -22,10 +22,10 @@ $lang->personnel->createStories = '創建需求數'; $lang->personnel->risk = '風險'; $lang->personnel->issue = '問題'; $lang->personnel->putInto = '已投入'; -$lang->personnel->surplus = '剩餘'; +$lang->personnel->left = '剩餘'; $lang->personnel->created = '創建'; $lang->personnel->finished = '完成'; -$lang->personnel->pending = '待處理'; +$lang->personnel->wait = '待處理'; $lang->personnel->resolved = '解決'; $lang->personnel->UR = '用需'; $lang->personnel->SR = '軟需'; diff --git a/module/personnel/view/putinto.html.php b/module/personnel/view/putinto.html.php index 0c816fcf93..e3a12ef3af 100644 --- a/module/personnel/view/putinto.html.php +++ b/module/personnel/view/putinto.html.php @@ -33,21 +33,21 @@ - + - + - + - + - + From 1bf682414841579f69c092dffcaf7275a80445ff Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 8 Jan 2021 10:29:41 +0800 Subject: [PATCH 17/31] * Acl list display error when create child program. --- module/program/view/pgmcreate.html.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/program/view/pgmcreate.html.php b/module/program/view/pgmcreate.html.php index c9c7cdf6c7..454ba75f44 100644 --- a/module/program/view/pgmcreate.html.php +++ b/module/program/view/pgmcreate.html.php @@ -39,6 +39,7 @@ program->PGMParentBudget);?> program->future);?> +program->subPGMAclList : $lang->program->PGMAclList;?> program->PGMCreate->requiredFields;?>
    @@ -105,7 +106,7 @@
    - + From a3be778fe164cd47fafde938256513435b798da3 Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 8 Jan 2021 10:36:10 +0800 Subject: [PATCH 18/31] * Restore code. --- module/program/view/pgmedit.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/program/view/pgmedit.html.php b/module/program/view/pgmedit.html.php index a99a9d0308..5a03948e13 100644 --- a/module/program/view/pgmedit.html.php +++ b/module/program/view/pgmedit.html.php @@ -105,7 +105,7 @@ - + From 6dacf9797797b0135f4471974a8ee1bae136689a Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Fri, 8 Jan 2021 11:06:16 +0800 Subject: [PATCH 20/31] * Finish task #8949. --- module/program/view/ajaxgetpgmdropmenu.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/program/view/ajaxgetpgmdropmenu.html.php b/module/program/view/ajaxgetpgmdropmenu.html.php index 086261220a..2e39bd3053 100644 --- a/module/program/view/ajaxgetpgmdropmenu.html.php +++ b/module/program/view/ajaxgetpgmdropmenu.html.php @@ -58,7 +58,7 @@ $programsPinYin = common::convert2Pinyin($programNames); $('#programTree').tree(); $(function() { - $('#showClosed1').click(function() + $('input[name^="showClosed"]').click(function() { var showClosed = $(this).is(':checked') ? 1 : 0; $.cookie('showClosed', showClosed, {expires:config.cookieLife, path:config.webRoot}); From 6239b084e7929dff6c25df84071cd978b9455314 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 8 Jan 2021 13:09:00 +0800 Subject: [PATCH 21/31] * Finish task #8929. --- module/issue/model.php | 71 ++++++++++++++++++++++++++---------------- 1 file changed, 45 insertions(+), 26 deletions(-) diff --git a/module/issue/model.php b/module/issue/model.php index e78d865ba0..1a5303a70f 100644 --- a/module/issue/model.php +++ b/module/issue/model.php @@ -17,12 +17,12 @@ class issueModel extends model * Create an issue. * * @access public - * @return bool + * @return int */ public function create() { - $now = helper::now(); - $data = fixer::input('post') + $now = helper::now(); + $issue = fixer::input('post') ->add('createdBy', $this->app->user->account) ->add('createdDate', $now) ->add('status', 'unconfirmed') @@ -33,7 +33,7 @@ class issueModel extends model ->stripTags($this->config->issue->editor->create['id'], $this->config->allowedTags) ->get(); - $this->dao->insert(TABLE_ISSUE)->data($data)->batchCheck($this->config->issue->create->requiredFields, 'notempty')->exec(); + $this->dao->insert(TABLE_ISSUE)->data($issue)->batchCheck($this->config->issue->create->requiredFields, 'notempty')->exec(); $issueID = $this->dao->lastInsertID(); $this->loadModel('file')->saveUpload('issue', $issueID); @@ -215,14 +215,14 @@ class issueModel extends model * * @param int $issueID * @access public - * @return bool + * @return array */ public function update($issueID) { $oldIssue = $this->getByID($issueID); - $now = helper::now(); - $data = fixer::input('post') + $now = helper::now(); + $issue = fixer::input('post') ->add('editedBy', $this->app->user->account) ->add('editedDate', $now) ->remove('labels,files') @@ -231,14 +231,14 @@ class issueModel extends model ->stripTags($this->config->issue->editor->edit['id'], $this->config->allowedTags) ->get(); - $this->dao->update(TABLE_ISSUE)->data($data) + $this->dao->update(TABLE_ISSUE)->data($issue) ->where('id')->eq($issueID) ->batchCheck($this->config->issue->edit->requiredFields, 'notempty') ->exec(); $this->loadModel('file')->saveUpload('issue', $issueID); - return common::createChanges($oldIssue, $data); + return common::createChanges($oldIssue, $issue); } /** @@ -251,14 +251,18 @@ class issueModel extends model public function assignTo($issueID) { $oldIssue = $this->getByID($issueID); - $data = fixer::input('post') + + $now = helper::now(); + $issue = fixer::input('post') ->add('assignedBy', $this->app->user->account) - ->add('assignedDate', helper::now()) + ->add('assignedDate', $now) + ->add('editedBy', $this->app->user->account) + ->add('editedDate', $now) ->get(); - $this->dao->update(TABLE_ISSUE)->data($data)->where('id')->eq($issueID)->exec(); + $this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec(); - return common::createChanges($oldIssue, $data); + return common::createChanges($oldIssue, $issue); } /** @@ -271,15 +275,17 @@ class issueModel extends model public function close($issueID) { $oldIssue = $this->getByID($issueID); - $data = fixer::input('post') + $issue = fixer::input('post') ->add('closedBy', $this->app->user->account) ->add('status', 'closed') ->add('assignedTo', 'closed') + ->add('editedBy', $this->app->user->account) + ->add('editedDate', helper::now()) ->get(); - $this->dao->update(TABLE_ISSUE)->data($data)->where('id')->eq($issueID)->exec(); + $this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec(); - return common::createChanges($oldIssue, $data); + return common::createChanges($oldIssue, $issue); } /** @@ -292,10 +298,15 @@ class issueModel extends model public function confirm($issueID) { $oldIssue = $this->getByID($issueID); - $data = fixer::input('post')->add('status', 'confirmed')->get(); - $this->dao->update(TABLE_ISSUE)->data($data)->where('id')->eq($issueID)->exec(); + $issue = fixer::input('post') + ->add('status', 'confirmed') + ->add('editedBy', $this->app->user->account) + ->add('editedDate', helper::now()) + ->get(); - return common::createChanges($oldIssue, $data); + $this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec(); + + return common::createChanges($oldIssue, $issue); } /** @@ -308,10 +319,14 @@ class issueModel extends model public function cancel($issueID) { $oldIssue = $this->getByID($issueID); - $data = fixer::input('post')->add('status', 'canceled')->get(); - $this->dao->update(TABLE_ISSUE)->data($data)->where('id')->eq($issueID)->exec(); + $issue = fixer::input('post') + ->add('status', 'canceled') + ->add('editedBy', $this->app->user->account) + ->add('editedDate', helper::now()) + ->get(); + $this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec(); - return common::createChanges($oldIssue, $data); + return common::createChanges($oldIssue, $issue); } /** @@ -324,13 +339,15 @@ class issueModel extends model public function activate($issueID) { $oldIssue = $this->getByID($issueID); - $data = fixer::input('post') + $issue = fixer::input('post') ->add('status', 'active') + ->add('editedBy', $this->app->user->account) + ->add('editedDate', helper::now()) ->get(); - $this->dao->update(TABLE_ISSUE)->data($data)->where('id')->eq($issueID)->exec(); + $this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec(); - return common::createChanges($oldIssue, $data); + return common::createChanges($oldIssue, $issue); } /** @@ -383,7 +400,7 @@ class issueModel extends model * @param int $issueID * @param object $data * @access public - * @return object + * @return void */ public function resolve($issueID, $data) { @@ -393,6 +410,8 @@ class issueModel extends model $issue->resolvedBy = $data->resolvedBy; $issue->resolvedDate = $data->resolvedDate; $issue->status = 'resolved'; + $issue->editedBy = $this->app->user->account; + $issue->editedDate = helper::now(); $this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec(); } From 6b098e42b9e24f56b06f109ce64965a419848e5f Mon Sep 17 00:00:00 2001 From: qiyu-xie Date: Fri, 8 Jan 2021 13:28:16 +0800 Subject: [PATCH 22/31] * Finish task#8948. --- module/product/view/project.html.php | 2 +- module/program/config.php | 12 ++++++------ module/program/lang/de.php | 1 - module/program/lang/en.php | 1 - module/program/lang/fr.php | 1 - module/program/lang/vi.php | 1 - module/program/lang/zh-cn.php | 1 - module/program/lang/zh-tw.php | 1 - module/program/model.php | 26 +++++++++++++------------- 9 files changed, 20 insertions(+), 26 deletions(-) diff --git a/module/product/view/project.html.php b/module/product/view/project.html.php index b778b7d0ba..cc7aacdc81 100644 --- a/module/product/view/project.html.php +++ b/module/product/view/project.html.php @@ -33,7 +33,7 @@ - + diff --git a/module/program/config.php b/module/program/config.php index 282df28d06..f870092a81 100644 --- a/module/program/config.php +++ b/module/program/config.php @@ -39,7 +39,7 @@ $config->program->sortFields->PRJBudget = 'budget'; global $lang; $config->program->datatable = new stdclass(); -$config->program->datatable->defaultField = array('idAB', 'PRJName', 'PRJPGM', 'PM', 'PRJStatus', 'begin', 'end', 'PRJBudget', 'teamCount','PRJEstimate','PRJConsume', 'PRJProgress', 'actions'); +$config->program->datatable->defaultField = array('idAB', 'PRJName', 'PRJProgram', 'PM', 'PRJStatus', 'begin', 'end', 'PRJBudget', 'teamCount','PRJEstimate','PRJConsume', 'PRJProgress', 'actions'); $config->program->datatable->fieldList['idAB']['title'] = 'idAB'; $config->program->datatable->fieldList['idAB']['fixed'] = 'left'; @@ -52,11 +52,11 @@ $config->program->datatable->fieldList['PRJName']['width'] = 'auto'; $config->program->datatable->fieldList['PRJName']['required'] = 'yes'; $config->program->datatable->fieldList['PRJName']['sort'] = 'no'; -$config->program->datatable->fieldList['PRJPGM']['title'] = 'PRJPGM'; -$config->program->datatable->fieldList['PRJPGM']['fixed'] = 'left'; -$config->program->datatable->fieldList['PRJPGM']['width'] = '140'; -$config->program->datatable->fieldList['PRJPGM']['required'] = 'no'; -$config->program->datatable->fieldList['PRJPGM']['sort'] = 'no'; +$config->program->datatable->fieldList['PRJProgram']['title'] = 'common'; +$config->program->datatable->fieldList['PRJProgram']['fixed'] = 'left'; +$config->program->datatable->fieldList['PRJProgram']['width'] = '140'; +$config->program->datatable->fieldList['PRJProgram']['required'] = 'no'; +$config->program->datatable->fieldList['PRJProgram']['sort'] = 'no'; $config->program->datatable->fieldList['PM']['title'] = 'PM'; $config->program->datatable->fieldList['PM']['fixed'] = 'no'; diff --git a/module/program/lang/de.php b/module/program/lang/de.php index 6142ada5e4..fb53e1c206 100644 --- a/module/program/lang/de.php +++ b/module/program/lang/de.php @@ -46,7 +46,6 @@ $lang->program->project = 'Project'; $lang->program->stage = 'Stage'; $lang->program->PM = 'Manager'; $lang->program->PRJName = 'Name'; -$lang->program->PRJPGM = 'Program'; $lang->program->PRJCategory = 'Category'; $lang->program->PRJDesc = 'Description'; $lang->program->PRJCode = 'Code'; diff --git a/module/program/lang/en.php b/module/program/lang/en.php index 5bdb2dd9dc..7ca91bba3e 100644 --- a/module/program/lang/en.php +++ b/module/program/lang/en.php @@ -46,7 +46,6 @@ $lang->program->project = 'Project'; $lang->program->stage = 'Stage'; $lang->program->PM = 'Manager'; $lang->program->PRJName = 'Name'; -$lang->program->PRJPGM = 'Program'; $lang->program->PRJCategory = 'Category'; $lang->program->PRJDesc = 'Description'; $lang->program->PRJCode = 'Code'; diff --git a/module/program/lang/fr.php b/module/program/lang/fr.php index 22f81a011c..d13a09d2f2 100644 --- a/module/program/lang/fr.php +++ b/module/program/lang/fr.php @@ -46,7 +46,6 @@ $lang->program->project = 'Project'; $lang->program->stage = 'Stage'; $lang->program->PM = 'Manager'; $lang->program->PRJName = 'Name'; -$lang->program->PRJPGM = 'Program'; $lang->program->PRJCategory = 'Category'; $lang->program->PRJDesc = 'Description'; $lang->program->PRJCode = 'Code'; diff --git a/module/program/lang/vi.php b/module/program/lang/vi.php index 22f81a011c..d13a09d2f2 100644 --- a/module/program/lang/vi.php +++ b/module/program/lang/vi.php @@ -46,7 +46,6 @@ $lang->program->project = 'Project'; $lang->program->stage = 'Stage'; $lang->program->PM = 'Manager'; $lang->program->PRJName = 'Name'; -$lang->program->PRJPGM = 'Program'; $lang->program->PRJCategory = 'Category'; $lang->program->PRJDesc = 'Description'; $lang->program->PRJCode = 'Code'; diff --git a/module/program/lang/zh-cn.php b/module/program/lang/zh-cn.php index 82936b7e12..4812831458 100644 --- a/module/program/lang/zh-cn.php +++ b/module/program/lang/zh-cn.php @@ -46,7 +46,6 @@ $lang->program->project = '项目'; $lang->program->stage = '阶段'; $lang->program->PM = '负责人'; $lang->program->PRJName = '项目名称'; -$lang->program->PRJPGM = '所属项目集'; $lang->program->PRJCategory = '项目类型'; $lang->program->PRJDesc = '项目描述'; $lang->program->PRJCode = '项目代号'; diff --git a/module/program/lang/zh-tw.php b/module/program/lang/zh-tw.php index b848d1d446..d19b79f098 100644 --- a/module/program/lang/zh-tw.php +++ b/module/program/lang/zh-tw.php @@ -46,7 +46,6 @@ $lang->program->project = '項目'; $lang->program->stage = '階段'; $lang->program->PM = '負責人'; $lang->program->PRJName = '項目名稱'; -$lang->program->PRJPGM = '所屬項目集'; $lang->program->PRJCategory = '項目類型'; $lang->program->PRJDesc = '項目描述'; $lang->program->PRJCode = '項目代號'; diff --git a/module/program/model.php b/module/program/model.php index 362eb5966f..365f0d8bd9 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -1606,9 +1606,8 @@ class programModel extends model if($col->show) { - $class = "c-$id"; - $title = ''; - $PRJPGM = ''; + $class = "c-$id"; + $title = ''; if($id == 'idAB') $class .= ' cell-id'; @@ -1618,17 +1617,18 @@ class programModel extends model $title = "title='{$project->name}'"; } - if($id == 'PRJPGM') + $PRJProgram = ''; + if($id == 'PRJProgram') { - $programList = $this->getPGMPairs(); - $PGMIndex = strpos($project->path, $programID); - $PRJIndex = strpos($project->path, $project->id); - $PGMPath = explode(',' , substr($project->path, $PGMIndex, $PRJIndex - $PGMIndex)); - foreach($PGMPath as $program) + $programList = $this->getPGMPairs(); + $programIndex = strpos($project->path, $programID); + $projectIndex = strpos($project->path, $project->id); + $programPath = explode(',' , substr($project->path, $programIndex, $projectIndex - $programIndex)); + foreach($programPath as $program) { - if($program) $PRJPGM .= '/' . zget($programList, $program); + if($program) $PRJProgram .= '/' . zget($programList, $program); } - $title = "title='{$PRJPGM}'"; + $title = "title='{$PRJProgram}'"; } echo "
    program->PGMParent;?>id) ? $parentProgram->id : 0, "class='form-control chosen' onchange=setParentProgram(this.value)");?> + id) ? $parentProgram->id : 0, "class='form-control chosen' onchange=setBudgetTipsAndAclList(this.value)");?>
    personnel->workingHours;?> personnel->task;?> personnel->bug;?>personnel->createStory;?>personnel->createStories;?> personnel->issue;?> personnel->risk;?>
    personnel->putInto;?>personnel->surplus;?>personnel->left;?> personnel->created;?> personnel->finished;?>personnel->pending;?>personnel->wait;?> personnel->created;?> personnel->resolved;?>personnel->pending;?>personnel->wait;?> personnel->UR;?> personnel->SR;?> personnel->created;?> personnel->resolved;?>personnel->pending;?>personnel->wait;?> personnel->created;?> personnel->resolved;?>personnel->pending;?>personnel->wait;?>
    project->acl;?>program->PGMAclList, 'private', "onclick='setWhite(this.value);'", 'block'));?>
    whitelist;?>
    idAB;?> program->PRJName;?>program->PRJPGM;?>program->common;?> program->PM;?> program->begin;?> program->end;?>"; @@ -1643,8 +1643,8 @@ class programModel extends model if($project->model === 'waterfall') echo "{$this->lang->program->waterfall}"; if($project->model === 'scrum') echo "{$this->lang->program->scrum}"; break; - case 'PRJPGM': - echo $PRJPGM; + case 'PRJProgram': + echo $PRJProgram; break; case 'PM': echo zget($users, $project->PM); From aeee54b1f36bc529b6be4cec63fc5197b16aea2f Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 8 Jan 2021 13:30:50 +0800 Subject: [PATCH 23/31] * Add upgrade repo logic. --- module/product/model.php | 2 +- module/repo/control.php | 6 +-- module/upgrade/control.php | 31 +++++++++++- module/upgrade/css/mergerepo.css | 17 +++++++ module/upgrade/lang/zh-cn.php | 15 +++--- module/upgrade/model.php | 32 +++++++++++++ module/upgrade/view/mergerepo.html.php | 65 ++++++++++++++++++++++++++ 7 files changed, 156 insertions(+), 12 deletions(-) create mode 100644 module/upgrade/css/mergerepo.css create mode 100644 module/upgrade/view/mergerepo.html.php diff --git a/module/product/model.php b/module/product/model.php index 3f118b81df..a5fbd58b9f 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -334,7 +334,7 @@ class productModel extends model ->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi() ->beginIF(strpos($status, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi() ->orderBy('t2.order desc') - ->fetchAll('id'); + ->printsql('id'); } /** diff --git a/module/repo/control.php b/module/repo/control.php index c201f38263..f71c135bd7 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -73,7 +73,7 @@ class repo extends control $this->view->repoID = $repoID; $this->view->orderBy = $orderBy; $this->view->pager = $pager; - $this->view->products = $this->loadModel('product')->getProductPairsByProject($this->projectID); + $this->view->products = $this->projectID ? $this->loadModel('product')->getProductPairsByProject($this->projectID) : $this->loadModel('product')->getPairs(); $this->display(); } @@ -101,7 +101,7 @@ class repo extends control $this->view->groups = $this->loadModel('group')->getPairs(); $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted'); - $this->view->products = $this->loadModel('product')->getProductPairsByProject($this->projectID); + $this->view->products = $this->projectID ? $this->loadModel('product')->getProductPairsByProject($this->projectID) : $this->loadModel('product')->getPairs(); $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->create; $this->view->position[] = $this->lang->repo->create; @@ -140,7 +140,7 @@ class repo extends control $this->view->repoID = $repoID; $this->view->groups = $this->loadModel('group')->getPairs(); $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted'); - $this->view->products = $this->loadModel('product')->getProductPairsByProject($this->projectID); + $this->view->products = $this->projectID ? $this->loadModel('product')->getProductPairsByProject($this->projectID) : $this->loadModel('product')->getPairs(); $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->edit; $this->view->position[] = html::a(inlink('maintain'), $this->lang->repo->common); diff --git a/module/upgrade/control.php b/module/upgrade/control.php index 9782c5d3fe..e66a2a5341 100644 --- a/module/upgrade/control.php +++ b/module/upgrade/control.php @@ -286,9 +286,8 @@ class upgrade extends control { $this->upgrade->initUserView(); $this->upgrade->setDefaultPriv(); - $this->loadModel('setting')->deleteItems('owner=system&module=common§ion=global&key=upgradeStep'); $this->dao->update(TABLE_CONFIG)->set('value')->eq('0_0')->where('`key`')->eq('productProject')->exec(); - die(js::locate($this->createLink('upgrade', 'afterExec', "fromVersion=&processed=no"))); + die(js::locate($this->createLink('upgrade', 'mergeRepo'))); } $this->view->noMergedProductCount = $noMergedProductCount; @@ -435,6 +434,34 @@ class upgrade extends control $this->display(); } + /** + * Merge Repos. + * + * @access public + * @return void + */ + public function mergeRepo() + { + if($_POST) + { + $this->upgrade->mergeRepo(); + die(js::locate($this->createLink('upgrade', 'mergeRepo'), 'parent')); + } + + $repos = $this->dao->select('id, name')->from(TABLE_REPO)->where('deleted')->eq(0)->andWhere('product')->eq('')->fetchPairs(); + + if(empty($repos)) + { + $this->loadModel('setting')->deleteItems('owner=system&module=common§ion=global&key=upgradeStep'); + die(js::locate($this->createLink('upgrade', 'afterExec', "fromVersion=&processed=no"))); + } + + $this->view->repos = $repos; + $this->view->products = $this->dao->select('id, name')->from(TABLE_PRODUCT)->where('deleted')->eq(0)->fetchPairs(); + $this->view->programs = $this->dao->select('id, name')->from(TABLE_PROGRAM)->where('deleted')->eq(0)->andWhere('type')->eq('program')->fetchPairs(); + $this->display(); + } + /** * Get the project of the program it belongs to. * diff --git a/module/upgrade/css/mergerepo.css b/module/upgrade/css/mergerepo.css new file mode 100644 index 0000000000..1ec7a57597 --- /dev/null +++ b/module/upgrade/css/mergerepo.css @@ -0,0 +1,17 @@ +.container {margin: 0 auto;} + +.modal-dialog{width:100%;} +.checkbox-primary{overflow:hidden;} +.pgmWidth{width:48% !important;} +#whitelistBox .checkbox-inline {display: inline-block !important; padding-left: 0px !important;} +#whitelistBox .checkbox-inline:first-child {margin-left: 10px !important;} +#budget {border-right:0px;} +.divider{background:#f1f1f1 !important; width:20px !important; padding:1px !important;} +.gray{background:#f1f1f1 !important} + +.side-col{padding-right: 0px} +div.divider{vertical-align: middle;} + +.main-row{margin-top: 20px; padding: 20px; background: #f1f1f1} +.main-row .side-col .nav li.active a{background: #006af1;color: #fff; border-radius: 4px} +#source .lineGroup-body{padding: 10px} diff --git a/module/upgrade/lang/zh-cn.php b/module/upgrade/lang/zh-cn.php index 4f77fe9489..5b38df0902 100644 --- a/module/upgrade/lang/zh-cn.php +++ b/module/upgrade/lang/zh-cn.php @@ -77,12 +77,14 @@ $lang->upgrade->mergeProgramDesc = <<可以选择这些迭代归属于某个新项目下。

    EOD; -$lang->upgrade->line = '产品线'; -$lang->upgrade->program = '目标项目集和项目'; -$lang->upgrade->existPGM = '已有项目集'; -$lang->upgrade->existPRJ = '已有项目'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = '迭代'; +$lang->upgrade->line = '产品线'; +$lang->upgrade->program = '目标项目集和项目'; +$lang->upgrade->existPGM = '已有项目集'; +$lang->upgrade->existPRJ = '已有项目'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = '迭代'; +$lang->upgrade->repo = '版本库'; +$lang->upgrade->mergeRepo = '归并版本库'; $lang->upgrade->newProgram = '新建'; $lang->upgrade->mergeSummary = "尊敬的用户,您的系统中共有%s个产品,%s个迭代等待迁移。"; @@ -90,5 +92,6 @@ $lang->upgrade->mergeByProductLine = "以产品线组织的产品和迭代:将 $lang->upgrade->mergeByProduct = "以产品组织的迭代:可以选择多个产品及其下面的迭代归并到一个项目集和项目中,也可以选择某一个产品将其下面所属的迭代归并到项目集和项目中。"; $lang->upgrade->mergeByProject = "独立的迭代:可以选择若干迭代归并到一个项目中,也可以独立归并。"; $lang->upgrade->mergeByMoreLink = "关联多个产品的迭代:选择这个迭代归属于哪一个产品。"; +$lang->upgrade->mergeRepoTips = "将选中的版本库归并到所选产品下。"; include dirname(__FILE__) . '/version.php'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 11b1d5d3ba..1c50886efa 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -4246,6 +4246,38 @@ class upgradeModel extends model } } + public function mergeRepo() + { + $data = fixer::input('post') + ->join('products', ',') + ->get(); + + foreach($data->repos as $repoID) + { + /* If have no products, add it. */ + if(isset($data->name)) + { + $product = new stdclass(); + $product->program = $data->program; + $product->name = $data->name; + $product->acl = 'open'; + $product->PO = isset($this->app->user->account) ? $this->app->user->account : ''; + $product->createdBy = isset($this->app->user->account) ? $this->app->user->account : ''; + $product->createdDate = helper::now(); + $product->status = 'normal'; + + $this->dao->insert(TABLE_PRODUCT)->data($product)->exec(); + $productID = $this->dao->lastInsertID(); + + $this->dao->update(TABLE_REPO)->set('product')->eq($productID)->where('id')->eq($repoID)->exec(); + } + else + { + $this->dao->update(TABLE_REPO)->set('product')->eq($data->products)->where('id')->eq($repoID)->exec(); + } + } + } + /** * Set program default priv. * diff --git a/module/upgrade/view/mergerepo.html.php b/module/upgrade/view/mergerepo.html.php new file mode 100644 index 0000000000..a3d7a79e1b --- /dev/null +++ b/module/upgrade/view/mergerepo.html.php @@ -0,0 +1,65 @@ + + * @package upgrade + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
    +
    + +
    +
    + From 68709d8d055914821c598bec8317748d5a671f73 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 8 Jan 2021 13:33:59 +0800 Subject: [PATCH 24/31] * Add lang file. --- module/upgrade/lang/de.php | 15 +++++++++------ module/upgrade/lang/en.php | 15 +++++++++------ module/upgrade/lang/fr.php | 15 +++++++++------ module/upgrade/lang/vi.php | 15 +++++++++------ 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/module/upgrade/lang/de.php b/module/upgrade/lang/de.php index fc30f77136..928e500119 100644 --- a/module/upgrade/lang/de.php +++ b/module/upgrade/lang/de.php @@ -77,12 +77,14 @@ $lang->upgrade->mergeProgramDesc = <<These iterations can be selected to fall under a new project.

    EOD; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existPGM = 'Existing programs'; -$lang->upgrade->existPRJ = 'Existing projects'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existPGM = 'Existing programs'; +$lang->upgrade->existPRJ = 'Existing projects'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:"; @@ -90,5 +92,6 @@ $lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate $lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project"; $lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently"; $lang->upgrade->mergeByMoreLink = "Iteration that relates multiple products: select which product the iteration belongs to."; +$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product."; include dirname(__FILE__) . '/version.php'; diff --git a/module/upgrade/lang/en.php b/module/upgrade/lang/en.php index 6e6c0c9bb8..d3516d3d13 100644 --- a/module/upgrade/lang/en.php +++ b/module/upgrade/lang/en.php @@ -77,12 +77,14 @@ $lang->upgrade->mergeProgramDesc = <<These iterations can be selected to fall under a new project.

    EOD; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existPGM = 'Existing programs'; -$lang->upgrade->existPRJ = 'Existing projects'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existPGM = 'Existing programs'; +$lang->upgrade->existPRJ = 'Existing projects'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:"; @@ -90,5 +92,6 @@ $lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate $lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project"; $lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently"; $lang->upgrade->mergeByMoreLink = "Iteration that relates multiple products: select which product the iteration belongs to."; +$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product."; include dirname(__FILE__) . '/version.php'; diff --git a/module/upgrade/lang/fr.php b/module/upgrade/lang/fr.php index 6e5c0237a7..3064591784 100644 --- a/module/upgrade/lang/fr.php +++ b/module/upgrade/lang/fr.php @@ -77,12 +77,14 @@ $lang->upgrade->mergeProgramDesc = <<These iterations can be selected to fall under a new project.

    EOD; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existPGM = 'Existing programs'; -$lang->upgrade->existPRJ = 'Existing projects'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existPGM = 'Existing programs'; +$lang->upgrade->existPRJ = 'Existing projects'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:"; @@ -90,5 +92,6 @@ $lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate $lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project"; $lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently"; $lang->upgrade->mergeByMoreLink = "Iteration that relates multiple products: select which product the iteration belongs to."; +$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product."; include dirname(__FILE__) . '/version.php'; diff --git a/module/upgrade/lang/vi.php b/module/upgrade/lang/vi.php index 41ff64938d..7ae2c42fe0 100644 --- a/module/upgrade/lang/vi.php +++ b/module/upgrade/lang/vi.php @@ -77,12 +77,14 @@ $lang->upgrade->mergeProgramDesc = <<These iterations can be selected to fall under a new project.

    EOD; -$lang->upgrade->line = 'Product Line'; -$lang->upgrade->program = 'Merge Project'; -$lang->upgrade->existPGM = 'Existing programs'; -$lang->upgrade->existPRJ = 'Existing projects'; -$lang->upgrade->product = $lang->productCommon; -$lang->upgrade->project = 'Iteration'; +$lang->upgrade->line = 'Product Line'; +$lang->upgrade->program = 'Merge Project'; +$lang->upgrade->existPGM = 'Existing programs'; +$lang->upgrade->existPRJ = 'Existing projects'; +$lang->upgrade->product = $lang->productCommon; +$lang->upgrade->project = 'Iteration'; +$lang->upgrade->repo = 'Repo'; +$lang->upgrade->mergeRepo = 'Merge Repo'; $lang->upgrade->newProgram = 'Create'; $lang->upgrade->mergeSummary = "Dear users, there are %s products and %s iterations in your system waiting for Migration. By System Calculation, we recommend your migration plan as follows, you can also adjust according to your own situation:"; @@ -90,5 +92,6 @@ $lang->upgrade->mergeByProductLine = "PRODUCTLINE-BASED iterations: Consolidate $lang->upgrade->mergeByProduct = "PRODUCT-BASED iterations: You can select multiple products and their lower iterations to merge into a large project, or you can select a product to merge its lower iterations into a larger project"; $lang->upgrade->mergeByProject = "Independent iterations: You can select several iterations and merge them into one large project, or merge them independently"; $lang->upgrade->mergeByMoreLink = "Iteration that relates multiple products: select which product the iteration belongs to."; +$lang->upgrade->mergeRepoTips = "Merge the selected version library under the selected product."; include dirname(__FILE__) . '/version.php'; From 79beb03ce6384a498b1209b6ac70a6d860482668 Mon Sep 17 00:00:00 2001 From: holan20180123 <56391770@qq.com> Date: Fri, 8 Jan 2021 13:40:11 +0800 Subject: [PATCH 25/31] * Finish task #8938. --- module/personnel/model.php | 89 ++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 52 deletions(-) diff --git a/module/personnel/model.php b/module/personnel/model.php index e9c65c3e0d..6d0fc457f0 100644 --- a/module/personnel/model.php +++ b/module/personnel/model.php @@ -94,25 +94,10 @@ class personnelModel extends model $personnelList[$account]['projects'] = $projects; $personnelList[$account]['executions'] = zget($executionPairs, $account, 0); - $personnelList[$account]['createdTask'] = $taskInput[$account]['created']; - $personnelList[$account]['finishedTask'] = $taskInput[$account]['finished']; - $personnelList[$account]['pendingTask'] = $taskInput[$account]['pending']; - $personnelList[$account]['consumedTask'] = $taskInput[$account]['consumed']; - $personnelList[$account]['leftTask'] = $taskInput[$account]['left']; - - $personnelList[$account]['createdBug'] = $bugAndStoryInput[$account]['created']; - $personnelList[$account]['resolvedBug'] = $bugAndStoryInput[$account]['resolved']; - $personnelList[$account]['pendingBug'] = $bugAndStoryInput[$account]['pending']; - $personnelList[$account]['UR'] = $bugAndStoryInput[$account]['UR']; - $personnelList[$account]['SR'] = $bugAndStoryInput[$account]['SR']; - - $personnelList[$account]['createdIssue'] = $issueInput[$account]['created']; - $personnelList[$account]['resolvedIssue'] = $issueInput[$account]['resolved']; - $personnelList[$account]['pendingIssue'] = $issueInput[$account]['pending']; - - $personnelList[$account]['createdRisk'] = $riskInput[$account]['created']; - $personnelList[$account]['resolvedRisk'] = $riskInput[$account]['resolved']; - $personnelList[$account]['pendingRisk'] = $riskInput[$account]['pending']; + $personnelList[$account] += $taskInput[$account]; + $personnelList[$account] += $bugAndStoryInput[$account]; + $personnelList[$account] += $issueInput[$account]; + $personnelList[$account] += $riskInput[$account]; } return $personnelList; @@ -137,16 +122,16 @@ class personnelModel extends model $putInto = array(); foreach($accounts as $account => $project) { - $putInto[$account]['created'] = 0; - $putInto[$account]['resolved'] = 0; - $putInto[$account]['pending'] = 0; + $putInto[$account]['createdRisk'] = 0; + $putInto[$account]['resolvedRisk'] = 0; + $putInto[$account]['pendingRisk'] = 0; } foreach($risks as $risk) { - if($risk->createdBy && isset($putInto[$risk->createdBy])) $putInto[$risk->createdBy]['created'] += 1; - if($risk->resolvedBy && isset($putInto[$risk->resolvedBy])) $putInto[$risk->resolvedBy]['resolved'] += 1; - if($risk->assignedTo && $risk->status == 'active' && isset($putInto[$risk->assignedTo])) $putInto[$risk->assignedTo]['pending'] += 1; + if($risk->createdBy && isset($putInto[$risk->createdBy])) $putInto[$risk->createdBy]['createdRisk'] += 1; + if($risk->resolvedBy && isset($putInto[$risk->resolvedBy])) $putInto[$risk->resolvedBy]['resolvedRisk'] += 1; + if($risk->assignedTo && $risk->status == 'active' && isset($putInto[$risk->assignedTo])) $putInto[$risk->assignedTo]['pendingRisk'] += 1; } return $putInto; @@ -171,16 +156,16 @@ class personnelModel extends model $putInto = array(); foreach($accounts as $account => $project) { - $putInto[$account]['created'] = 0; - $putInto[$account]['resolved'] = 0; - $putInto[$account]['pending'] = 0; + $putInto[$account]['createdIssue'] = 0; + $putInto[$account]['resolvedIssue'] = 0; + $putInto[$account]['pendingIssue'] = 0; } foreach($issues as $issue) { - if($issue->createdBy && isset($putInto[$issue->createdBy])) $putInto[$issue->createdBy]['created'] += 1; - if($issue->resolvedBy && isset($putInto[$issue->resolvedBy])) $putInto[$issue->resolvedBy]['resolved'] += 1; - if($issue->assignedTo && in_array($issue->status, array('unconfirmed', 'confirmed', 'active')) && isset($putInto[$issue->assignedTo])) $putInto[$issue->assignedTo]['pending'] += 1; + if($issue->createdBy && isset($putInto[$issue->createdBy])) $putInto[$issue->createdBy]['createdIssue'] += 1; + if($issue->resolvedBy && isset($putInto[$issue->resolvedBy])) $putInto[$issue->resolvedBy]['resolvedIssue'] += 1; + if($issue->assignedTo && in_array($issue->status, array('unconfirmed', 'confirmed', 'active')) && isset($putInto[$issue->assignedTo])) $putInto[$issue->assignedTo]['pendingIssue'] += 1; } return $putInto; @@ -224,11 +209,11 @@ class personnelModel extends model $putInto = array(); foreach($accounts as $account => $project) { - $putInto[$account]['created'] = 0; - $putInto[$account]['resolved'] = 0; - $putInto[$account]['pending'] = 0; - $putInto[$account]['UR'] = 0; - $putInto[$account]['SR'] = 0; + $putInto[$account]['createdBug'] = 0; + $putInto[$account]['resolvedBug'] = 0; + $putInto[$account]['pendingBug'] = 0; + $putInto[$account]['UR'] = 0; + $putInto[$account]['SR'] = 0; } foreach($requirement as $account => $number) $putInto[$account]['UR'] = $number; @@ -236,9 +221,9 @@ class personnelModel extends model foreach($bugs as $bug) { - if($bug->openedBy && isset($putInto[$bug->openedBy])) $putInto[$bug->openedBy]['created'] += 1; - if($bug->resolvedBy && isset($putInto[$bug->resolvedBy])) $putInto[$bug->resolvedBy]['resolved'] += 1; - if($bug->assignedTo && $bug->status == 'active' && isset($putInto[$bug->assignedTo])) $putInto[$bug->assignedTo]['pending'] += 1; + if($bug->openedBy && isset($putInto[$bug->openedBy])) $putInto[$bug->openedBy]['createdBug'] += 1; + if($bug->resolvedBy && isset($putInto[$bug->resolvedBy])) $putInto[$bug->resolvedBy]['resolvedBug'] += 1; + if($bug->assignedTo && $bug->status == 'active' && isset($putInto[$bug->assignedTo])) $putInto[$bug->assignedTo]['pendingBug'] += 1; } return $putInto; } @@ -300,11 +285,11 @@ class personnelModel extends model $putInto = array(); foreach($accounts as $account => $project) { - $putInto[$account]['created'] = 0; - $putInto[$account]['finished'] = 0; - $putInto[$account]['pending'] = 0; - $putInto[$account]['consumed'] = 0; - $putInto[$account]['left'] = 0; + $putInto[$account]['createdTask'] = 0; + $putInto[$account]['finishedTask'] = 0; + $putInto[$account]['pendingTask'] = 0; + $putInto[$account]['consumedTask'] = 0; + $putInto[$account]['leftTask'] = 0; } /* Number of tasks per person. */ @@ -313,20 +298,20 @@ class personnelModel extends model { if($task->openedBy && isset($putInto[$task->openedBy])) { - $putInto[$task->openedBy]['created'] += 1; - $userTasks[$task->openedBy][$task->id] = $task->id; + $putInto[$task->openedBy]['createdTask'] += 1; + $userTasks[$task->openedBy][$task->id] = $task->id; } if($task->finishedBy && isset($putInto[$task->finishedBy])) { - $putInto[$task->finishedBy]['finished'] += 1; - $userTasks[$task->finishedBy][$task->id] = $task->id; + $putInto[$task->finishedBy]['finishedTask'] += 1; + $userTasks[$task->finishedBy][$task->id] = $task->id; } if($task->assignedTo && $task->status == 'wait' && isset($putInto[$task->assignedTo])) { - $putInto[$task->assignedTo]['pending'] += 1; - $userTasks[$task->assignedTo][$task->id] = $task->id; + $putInto[$task->assignedTo]['pendingTask'] += 1; + $userTasks[$task->assignedTo][$task->id] = $task->id; } } @@ -343,8 +328,8 @@ class personnelModel extends model foreach($userHours as $account => $hours) { - $putInto[$account]['left'] = $hours->left; - $putInto[$account]['consumed'] = $hours->consumed; + $putInto[$account]['leftTask'] = $hours->left; + $putInto[$account]['consumedTask'] = $hours->consumed; } return $putInto; From 3173a7b53a91d593b65741d2ec22d11da9d4be43 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 8 Jan 2021 13:40:34 +0800 Subject: [PATCH 26/31] * Fix details. --- module/product/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/product/model.php b/module/product/model.php index a5fbd58b9f..3f118b81df 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -334,7 +334,7 @@ class productModel extends model ->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi() ->beginIF(strpos($status, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi() ->orderBy('t2.order desc') - ->printsql('id'); + ->fetchAll('id'); } /** From da82d34d9fd8934a5fb9e4e5c2aa0dfc497195bd Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 8 Jan 2021 13:47:03 +0800 Subject: [PATCH 27/31] * Fix common lang. --- module/common/lang/zh-cn.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 9d880d5f08..03d52274f6 100755 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -53,7 +53,7 @@ $lang->preview = '查看'; $lang->goback = '返回'; $lang->goPC = 'PC版'; $lang->more = '更多'; -$lang->moreLink = 'MORE'; +$lang->moreLink = 'More'; $lang->day = '天'; $lang->customConfig = '自定义'; $lang->public = '公共'; From 726c0e5336cadd8d178219597fa0cc5246e2aa06 Mon Sep 17 00:00:00 2001 From: tianshujie98 Date: Fri, 8 Jan 2021 13:49:44 +0800 Subject: [PATCH 28/31] * Adjustment field. --- module/issue/model.php | 8 +++++++- module/issue/view/activate.html.php | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/module/issue/model.php b/module/issue/model.php index 1a5303a70f..f8786102f2 100644 --- a/module/issue/model.php +++ b/module/issue/model.php @@ -339,10 +339,16 @@ class issueModel extends model public function activate($issueID) { $oldIssue = $this->getByID($issueID); + + $now = helper::now(); $issue = fixer::input('post') ->add('status', 'active') + ->add('activateBy', $this->app->user->account) ->add('editedBy', $this->app->user->account) - ->add('editedDate', helper::now()) + ->add('editedDate', $now) + ->add('assignedBy', $this->app->user->account) + ->add('assignedDate', $now) + ->addIF($this->post->assignedTo == '', 'assignedTo', $this->app->user->account) ->get(); $this->dao->update(TABLE_ISSUE)->data($issue)->where('id')->eq($issueID)->exec(); diff --git a/module/issue/view/activate.html.php b/module/issue/view/activate.html.php index 70c9d980d0..529ee9ee98 100644 --- a/module/issue/view/activate.html.php +++ b/module/issue/view/activate.html.php @@ -23,8 +23,8 @@
    - - + + From d5164338e6205c2bd20c7e106e249409a08ec105 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 8 Jan 2021 13:53:28 +0800 Subject: [PATCH 29/31] * Add upgrade logic. --- module/misc/lang/zh-cn.php | 2 ++ module/upgrade/lang/version.php | 1 + module/upgrade/model.php | 7 ++++--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/module/misc/lang/zh-cn.php b/module/misc/lang/zh-cn.php index 24d3df9738..87513e8af7 100644 --- a/module/misc/lang/zh-cn.php +++ b/module/misc/lang/zh-cn.php @@ -86,6 +86,7 @@ $lang->misc->feature = new stdclass(); $lang->misc->feature->lastest = '最新版本'; $lang->misc->feature->detailed = '详情'; +$lang->misc->releaseDate['20.0.beta3'] = '2020-01-08'; $lang->misc->releaseDate['20.0.beta2'] = '2020-12-18'; $lang->misc->releaseDate['20.0.beta1'] = '2020-11-30'; $lang->misc->releaseDate['12.5.1'] = '2020-11-30'; @@ -140,6 +141,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22'; $lang->misc->releaseDate['7.1.stable'] = '2015-03-07'; $lang->misc->releaseDate['6.3.stable'] = '2014-11-07'; +$lang->misc->feature->all['20.0.beta3'][] = array('title'=>'优化导航交互,增强用户体验', 'desc' => ''); $lang->misc->feature->all['20.0.beta2'][] = array('title'=>'重构组织导航,修复bug,完善细节', 'desc' => ''); $lang->misc->feature->all['20.0.beta1'][] = array('title'=>'禅道20beta版本,修复bug,完善细节', 'desc' => ''); $lang->misc->feature->all['20.0.alpha1'][] = array('title'=>'禅道20版本大更新,重构导航,增加瀑布模型', 'desc' => '

    增加项目集和项目概念

    将原项目概念变为迭代或阶段概念

    增加瀑布开发模板

    '); diff --git a/module/upgrade/lang/version.php b/module/upgrade/lang/version.php index 4cefe7c97d..eb9082d973 100644 --- a/module/upgrade/lang/version.php +++ b/module/upgrade/lang/version.php @@ -133,3 +133,4 @@ $lang->upgrade->fromVersions['12_5'] = '12.5'; $lang->upgrade->fromVersions['12_5_1'] = '12.5.1'; $lang->upgrade->fromVersions['20_0_alpha1'] = '20.0.alpha1'; $lang->upgrade->fromVersions['20_0_beta1'] = '20.0.beta1'; +$lang->upgrade->fromVersions['20_0_beta2'] = '20.0.beta2'; diff --git a/module/upgrade/model.php b/module/upgrade/model.php index 1c50886efa..041cdab3bc 100644 --- a/module/upgrade/model.php +++ b/module/upgrade/model.php @@ -655,10 +655,10 @@ class upgradeModel extends model $this->processBuildTable(); $this->processSprintConcept(); $this->appendExec('20_0_beta1'); - case '20_0_beta3': - $this->saveLogs('Execute 20_0_beta3'); + case '20_0_beta2': + $this->saveLogs('Execute 20_0_beta2'); $this->adjustBudget(); - $this->appendExec('20_0_beta3'); + $this->appendExec('20_0_beta2'); } $this->deletePatch(); @@ -844,6 +844,7 @@ class upgradeModel extends model case '20_0_alpha' : $confirmContent .= file_get_contents($this->getUpgradeFile('20.0.alpha')); case '20_0_alpha1': $confirmContent .= file_get_contents($this->getUpgradeFile('20.0.alpha1')); case '20_0_beta1' : $confirmContent .= file_get_contents($this->getUpgradeFile('20.0.beta1')); + case '20_0_beta2' : $confirmContent .= file_get_contents($this->getUpgradeFile('20.0.beta2')); } return str_replace('zt_', $this->config->db->prefix, $confirmContent); } From 65870829edb0d8aaf3b39f4a74a3ba9cd3643dbc Mon Sep 17 00:00:00 2001 From: leiyong <1549684884@qq.com> Date: Fri, 8 Jan 2021 14:07:16 +0800 Subject: [PATCH 30/31] * Adjust code, --- module/bug/view/view.html.php | 2 +- module/risk/control.php | 4 +- module/risk/view/assignto.html.php | 50 +++++++++---------- module/risk/view/view.html.php | 2 +- module/testtask/control.php | 4 +- module/todo/model.php | 77 +++++++++++++++++++++--------- 6 files changed, 87 insertions(+), 52 deletions(-) diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index ca8417bce0..fb57fd0b1e 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -26,7 +26,7 @@ deleted):?> bug->deleted;?> - +
    diff --git a/module/risk/control.php b/module/risk/control.php index f2dcb37ee1..fbe36e9828 100644 --- a/module/risk/control.php +++ b/module/risk/control.php @@ -229,8 +229,8 @@ class risk extends control $this->action->logHistory($actionID, $changes); } - $response['locate'] = inlink('browse'); - $this->send($response); + if(isonlybody()) die(js::closeModal('parent.parent', 'this')); + $this->send(array('locate' => inlink('browse'))); } $this->view->title = $this->lang->risk->common . $this->lang->colon . $this->lang->risk->track; diff --git a/module/risk/view/assignto.html.php b/module/risk/view/assignto.html.php index fba3ad27f6..37cd511150 100644 --- a/module/risk/view/assignto.html.php +++ b/module/risk/view/assignto.html.php @@ -13,29 +13,31 @@
    -
    -

    - id;?> - name'>" . $risk->name . '';?> -

    -
    - -
    issue->activateBy;?>issue->assignedTo;?>
    issue->activateDate;?>
    - - - - - - - - - - - - - -
    risk->assignedTo;?>assignedTo, "class='form-control chosen'");?>
    comment;?>
    -
    +
    +
    +

    + id;?> + name'>" . $risk->name . '';?> +

    +
    +
    + + + + + + + + + + + + + + + +
    risk->assignedTo;?>assignedTo, "class='form-control chosen'");?>
    comment;?>
    +
    +
    - diff --git a/module/risk/view/view.html.php b/module/risk/view/view.html.php index cb4cb6608c..0d9741c37b 100644 --- a/module/risk/view/view.html.php +++ b/module/risk/view/view.html.php @@ -6,7 +6,7 @@ * @license ZPL (http://zpl.pub/page/zplv12.html) * @author Yuchun Li * @package view - * @version $Id: track.html.php 4903 2020-09-04 09:32:59Z lyc $ + * @version $Id * @link http://www.zentao.net */ ?> diff --git a/module/testtask/control.php b/module/testtask/control.php index d0eeb42dbb..9d0cfa42fc 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -1193,7 +1193,7 @@ class testtask extends control $testTasks = $this->testtask->getUserTestTaskPairs($account, 0, $status); - if($id) die(html::select("testTasks[$id]", $testTasks, '', 'class="form-control"')); - die(html::select('testTask', $testTasks, '', 'class=form-control')); + if($id) die(html::select("testtasks[$id]", $testTasks, '', 'class="form-control"')); + die(html::select('testtask', $testTasks, '', 'class=form-control')); } } diff --git a/module/todo/model.php b/module/todo/model.php index a9b4f0deb5..d753cb10bc 100644 --- a/module/todo/model.php +++ b/module/todo/model.php @@ -9,8 +9,6 @@ * @version $Id: model.php 5035 2013-07-06 05:21:58Z wyd621@gmail.com $ * @link http://www.zentao.net */ -?> -post->type; + $hasObject = in_array($objectType, array('bug', 'task', 'story', 'issue', 'risk', 'review', 'testtask', 'feedback')); + $todo = fixer::input('post') ->add('account', $this->app->user->account) ->setDefault('idvalue', 0) ->cleanInt('pri, begin, end, private') - ->setIF($this->post->type == 'bug' and $this->post->bug, 'idvalue', $this->post->bug) - ->setIF($this->post->type == 'task' and $this->post->task, 'idvalue', $this->post->task) - ->setIF($this->post->type == 'story' and $this->post->story, 'idvalue', $this->post->story) - ->setIF($this->post->type == 'issue' and $this->post->issue, 'idvalue', $this->post->issue) - ->setIF($this->post->type == 'feedback' and $this->post->feedback, 'idvalue', $this->post->feedback) + ->setIF($hasObject && $objectType, 'idvalue', $this->post->$objectType) ->setIF($this->post->date == false, 'date', '2030-01-01') ->setIF($this->post->begin == false, 'begin', '2400') ->setIF($this->post->begin == false or $this->post->end == false, 'end', '2400') ->stripTags($this->config->todo->editor->create['id'], $this->config->allowedTags) - ->remove('bug, task, story, issue, uid, feedback') + ->remove('bug, task, story, issue, risk, review, testtask, uid, feedback') ->get(); if($todo->end < $todo->begin) @@ -76,12 +73,8 @@ class todoModel extends model $todo = $this->loadModel('file')->processImgURL($todo, $this->config->todo->editor->create['id'], $this->post->uid); $this->dao->insert(TABLE_TODO)->data($todo) ->autoCheck() - ->checkIF(!in_array($todo->type, array('bug', 'task', 'story')), $this->config->todo->create->requiredFields, 'notempty') - ->checkIF($todo->type == 'bug' and $todo->idvalue == 0, 'idvalue', 'notempty') - ->checkIF($todo->type == 'task' and $todo->idvalue == 0, 'idvalue', 'notempty') - ->checkIF($todo->type == 'story' and $todo->idvalue == 0, 'idvalue', 'notempty') - ->checkIF($todo->type == 'issue' and $todo->idvalue == 0, 'idvalue', 'notempty') - ->checkIF($todo->type == 'feedback' and $todo->idvalue == 0, 'idvalue', 'notempty') + ->checkIF(!$hasObject, $this->config->todo->create->requiredFields, 'notempty') + ->checkIF($hasObject && $todo->idvalue == 0, 'idvalue', 'notempty') ->exec(); if(!dao::isError()) @@ -107,7 +100,7 @@ class todoModel extends model $validTodos = array(); for($i = 0; $i < $this->config->todo->batchCreate; $i++) { - if($todos->names[$i] != '' || isset($todos->bugs[$i + 1]) || isset($todos->tasks[$i + 1]) || isset($todos->stories[$i + 1])) + if($todos->names[$i] != '' || isset($todos->bugs[$i + 1]) || isset($todos->tasks[$i + 1]) || isset($todos->stories[$i + 1]) || isset($todos->issues[$i + 1]) || isset($todos->risks[$i + 1]) || isset($todos->reviews[$i + 1]) || isset($todos->testtask[$i + 1])) { $todo = new stdclass(); $todo->account = $this->app->user->account; @@ -119,6 +112,7 @@ class todoModel extends model { $todo->date = $this->post->date; } + $todo->type = $todos->types[$i]; $todo->pri = $todos->pris[$i]; $todo->name = isset($todos->names[$i]) ? $todos->names[$i] : ''; @@ -128,9 +122,14 @@ class todoModel extends model $todo->status = "wait"; $todo->private = 0; $todo->idvalue = 0; - if($todo->type == 'bug') $todo->idvalue = isset($todos->bugs[$i + 1]) ? $todos->bugs[$i + 1] : 0; - if($todo->type == 'task') $todo->idvalue = isset($todos->tasks[$i + 1]) ? $todos->tasks[$i + 1] : 0; - if($todo->type == 'story') $todo->idvalue = isset($todos->stories[$i + 1]) ? $todos->stories[$i + 1] : 0; + + if($todo->type == 'bug') $todo->idvalue = isset($todos->bugs[$i + 1]) ? $todos->bugs[$i + 1] : 0; + if($todo->type == 'task') $todo->idvalue = isset($todos->tasks[$i + 1]) ? $todos->tasks[$i + 1] : 0; + if($todo->type == 'story') $todo->idvalue = isset($todos->stories[$i + 1]) ? $todos->stories[$i + 1] : 0; + if($todo->type == 'issue') $todo->idvalue = isset($todos->issues[$i + 1]) ? $todos->issues[$i + 1] : 0; + if($todo->type == 'risk') $todo->idvalue = isset($todos->risks[$i + 1]) ? $todos->risks[$i + 1] : 0; + if($todo->type == 'review') $todo->idvalue = isset($todos->reviews[$i + 1]) ? $todos->reviews[$i + 1] : 0; + if($todo->type == 'testtask') $todo->idvalue = isset($todos->testtasks[$i + 1]) ? $todos->testtasks[$i + 1] : 0; if($todo->end < $todo->begin) die(js::alert(sprintf($this->lang->error->gt, $this->lang->todo->end, $this->lang->todo->begin))); @@ -458,6 +457,7 @@ class todoModel extends model ->beginIF($limit > 0)->limit($limit)->fi() ->page($pager) ->query(); + /* Set session. */ $sql = explode('WHERE', $this->dao->get()); $sql = explode('ORDER', $sql[1]); @@ -465,9 +465,13 @@ class todoModel extends model while($todo = $stmt->fetch()) { - if($todo->type == 'story') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_STORY)->fetch('title'); - if($todo->type == 'task') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_TASK)->fetch('name'); - if($todo->type == 'bug') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_BUG)->fetch('title'); + if($todo->type == 'story') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_STORY)->fetch('title'); + if($todo->type == 'task') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_TASK)->fetch('name'); + if($todo->type == 'bug') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_BUG)->fetch('title'); + if($todo->type == 'issue') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_ISSUE)->fetch('title'); + if($todo->type == 'risk') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_RISK)->fetch('name'); + if($todo->type == 'review') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_REVIEW)->fetch('title'); + if($todo->type == 'testtask') $todo->name = $this->dao->findById($todo->idvalue)->from(TABLE_TESTTASK)->fetch('name'); $todo->begin = date::formatTime($todo->begin); $todo->end = date::formatTime($todo->end); @@ -725,4 +729,33 @@ class todoModel extends model ->markRight(1) ->fetch('count'); } + + /** + * Gets the project ID of the to-do object. + * + * @param array $todoList + * @access public + * @return array + */ + public function getTodoProjects($todoList = array()) + { + $projectIdList = array(); + foreach($todoList as $type => $todos) + { + $todoIdList = array_keys($todos); + if(empty($todoIdList)) + { + $projectIdList[$type] = array(); + continue; + } + if($type == 'task') $projectIdList[$type] = $this->dao->select('id,PRJ')->from(TABLE_TASK)->where('id')->in($todoIdList)->fetchPairs('id', 'PRJ'); + if($type == 'bug') $projectIdList[$type] = $this->dao->select('id,PRJ')->from(TABLE_BUG)->where('id')->in($todoIdList)->fetchPairs('id', 'PRJ'); + if($type == 'issue') $projectIdList[$type] = $this->dao->select('id,PRJ')->from(TABLE_ISSUE)->where('id')->in($todoIdList)->fetchPairs('id', 'PRJ'); + if($type == 'risk') $projectIdList[$type] = $this->dao->select('id,PRJ')->from(TABLE_RISK)->where('id')->in($todoIdList)->fetchPairs('id', 'PRJ'); + if($type == 'review') $projectIdList[$type] = $this->dao->select('id,PRJ')->from(TABLE_REVIEW)->where('id')->in($todoIdList)->fetchPairs('id', 'PRJ'); + if($type == 'testtask') $projectIdList[$type] = $this->dao->select('id,PRJ')->from(TABLE_TESTTASK)->where('id')->in($todoIdList)->fetchPairs('id', 'PRJ'); + } + + return $projectIdList; + } } From 6141eb8ca0911dc4a6e1d6b72fd0ed1a4cc77dee Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 8 Jan 2021 14:27:14 +0800 Subject: [PATCH 31/31] * Add version. --- VERSION | 2 +- config/config.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index ab67491a00..c9dc140c4d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -20.0.beta2 +20.0.beta3 diff --git a/config/config.php b/config/config.php index e2a554fa4c..c864cf0875 100644 --- a/config/config.php +++ b/config/config.php @@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}} if(!function_exists('getWebRoot')){function getWebRoot(){}} /* 基本设置。Basic settings. */ -$config->version = '20.0.beta2'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '20.0.beta3'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. $config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP. $config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time. $config->timezone = 'Asia/Shanghai'; // 时区设置。 The time zone setting, for more see http://www.php.net/manual/en/timezones.php.