From cb82b46f52967479b7f9d3e727bdd9c2204e68c0 Mon Sep 17 00:00:00 2001 From: lichengjun Date: Mon, 19 Jul 2021 10:37:45 +0800 Subject: [PATCH 1/5] * Fix GitLab Module code. --- module/repo/control.php | 31 +++++++++++++----------------- module/repo/lang/zh-cn.php | 1 - module/repo/model.php | 27 +++++++------------------- module/repo/view/maintain.html.php | 2 +- 4 files changed, 21 insertions(+), 40 deletions(-) diff --git a/module/repo/control.php b/module/repo/control.php index 9d2bc104ea..bb89deffc9 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -129,12 +129,11 @@ class repo extends control $this->app->loadLang('action'); - $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->create; - $this->view->position[] = $this->lang->repo->create; - $this->view->groups = $this->loadModel('group')->getPairs(); - $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted'); - $this->view->products = $this->loadModel('product')->getProductPairsByProject($objectID); - $this->view->gitlabHosts = $this->loadModel('gitlab')->getPairs(); + $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->create; + $this->view->position[] = $this->lang->repo->create; + $this->view->groups = $this->loadModel('group')->getPairs(); + $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted'); + $this->view->products = $this->loadModel('product')->getProductPairsByProject($objectID); $this->display(); } @@ -177,16 +176,15 @@ class repo extends control $this->view->projects = $options; } - $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->edit; - $repo->repoType = $repo->id . '-' . $repo->SCM; - $this->view->repo = $repo; - $this->view->repoID = $repoID; - $this->view->objectID = $objectID; - $this->view->groups = $this->loadModel('group')->getPairs(); - $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted'); - $this->view->products = $objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs(); - $this->view->gitlabHosts = $this->loadModel('gitlab')->getPairs(); + $repo->repoType = $repo->id . '-' . $repo->SCM; + $this->view->repo = $repo; + $this->view->repoID = $repoID; + $this->view->objectID = $objectID; + $this->view->groups = $this->loadModel('group')->getPairs(); + $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted'); + $this->view->products = $objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $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); $this->view->position[] = $this->lang->repo->edit; @@ -209,9 +207,6 @@ class repo extends control die(js::confirm($this->lang->repo->notice->delete, $this->repo->createLink('delete', "repoID=$repoID&objectID=$objectID&confirm=yes"))); } - /* Delete project relation for gitlab type. */ - $this->loadModel('gitlab')->deleteProjectRelation($repoID); - $relationID = $this->dao->select('id')->from(TABLE_RELATION)->where('extra')->eq($repoID)->fetch(); if($relationID) { diff --git a/module/repo/lang/zh-cn.php b/module/repo/lang/zh-cn.php index 59c08b8361..69b1b0ded1 100644 --- a/module/repo/lang/zh-cn.php +++ b/module/repo/lang/zh-cn.php @@ -126,7 +126,6 @@ $lang->repo->encodingList['gbk'] = 'GBK'; $lang->repo->scmList['Git'] = '本地 Git'; $lang->repo->scmList['Gitlab'] = 'Gitlab'; $lang->repo->scmList['Subversion'] = 'Subversion'; -$lang->repo->scmList['Gitlab'] = 'Gitlab'; $lang->repo->gitlabHost = 'GitLab Server'; $lang->repo->gitlabToken = 'GitLab Token'; diff --git a/module/repo/model.php b/module/repo/model.php index f4957003c4..01035eee2b 100644 --- a/module/repo/model.php +++ b/module/repo/model.php @@ -153,8 +153,6 @@ class repoModel extends model if(!$hasPriv) unset($repos[$i]); } } - - if($repo->SCM == 'Gitlab') $repo = $this->processGitlab($repo); } return $repos; @@ -198,16 +196,15 @@ class repoModel extends model if(!$this->checkConnection()) return false; $data = fixer::input('post') - ->setIf($this->post->SCM == 'Gitlab', 'password', '') - ->setIf($this->post->SCM == 'Gitlab', 'path', $this->post->gitlabProject) + ->setIf($this->post->SCM == 'Gitlab', 'password', $this->post->gitlabToken) ->setIf($this->post->SCM == 'Gitlab', 'client', $this->post->gitlabHost) + ->setIf($this->post->SCM == 'Gitlab', 'extra', $this->post->gitlabProject) ->skipSpecial('path,client,account,password') ->setDefault('product', '') ->join('product', ',') ->get(); - /* see this file in 1783G: processGitlab::$repo->path */ - if($this->post->SCM == 'Gitlab') $data->path = $this->post->gitlabProject; + if($this->post->SCM == 'Gitlab') $data->path = sprintf($this->config->repo->gitlab->apiPath, $data->gitlabHost, $this->post->gitlabProject); $data->acl = empty($data->acl) ? '' : json_encode($data->acl); @@ -229,14 +226,8 @@ class repoModel extends model ->exec(); if(!dao::isError()) $this->rmClientVersionFile(); - $repoID = $this->dao->lastInsertID(); - $this->loadModel('gitlab'); - if($this->post->SCM == 'Gitlab') - { - $this->gitlab->saveProjectRelation($this->post->product, $this->post->gitlabHost, $this->post->gitlabProject); - } - return $repoID; + return $this->dao->lastInsertID(); } /** @@ -251,9 +242,9 @@ class repoModel extends model $repo = $this->getRepoByID($id); $data = fixer::input('post') - ->setIf($this->post->SCM == 'Gitlab', 'password', '') - ->setIf($this->post->SCM == 'Gitlab', 'path', $this->post->gitlabProject) + ->setIf($this->post->SCM == 'Gitlab', 'password', $this->post->gitlabToken) ->setIf($this->post->SCM == 'Gitlab', 'client', $this->post->gitlabHost) + ->setIf($this->post->SCM == 'Gitlab', 'extra', $this->post->gitlabProject) ->setDefault('client', 'svn') ->setDefault('prefix', $repo->prefix) ->setDefault('product', '') @@ -261,6 +252,7 @@ class repoModel extends model ->join('product', ',') ->get(); + if($this->post->SCM == 'Gitlab') $data->path = sprintf($this->config->repo->gitlab->apiPath, $data->gitlabHost, $this->post->gitlabProject); if($data->path != $repo->path) $data->synced = 0; $data->acl = empty($data->acl) ? '' : json_encode($data->acl); @@ -281,7 +273,6 @@ class repoModel extends model if($data->client != $repo->client and !$this->checkClient()) return false; if(!$this->checkConnection()) return false; - if($data->encrypt == 'base64') $data->password = base64_encode($data->password); $this->dao->update(TABLE_REPO)->data($data, $skip = 'gitlabHost,gitlabToken,gitlabProject') ->batchCheck($this->config->repo->edit->requiredFields, 'notempty') @@ -292,15 +283,12 @@ class repoModel extends model $this->rmClientVersionFile(); - $this->loadModel('gitlab'); - if($repo->SCM == 'Gitlab') $this->gitlab->saveProjectRelation($this->post->product, $this->post->gitlabHost, $this->post->gitlabProject); if($repo->path != $data->path) { $this->dao->delete()->from(TABLE_REPOHISTORY)->where('repo')->eq($id)->exec(); $this->dao->delete()->from(TABLE_REPOFILES)->where('repo')->eq($id)->exec(); return false; } - return true; } @@ -384,7 +372,6 @@ class repoModel extends model if(!$repo) return false; if($repo->encrypt == 'base64') $repo->password = base64_decode($repo->password); - if($repo->SCM == 'Gitlab') $reps = $this->processGitlab($repo); $repo->acl = json_decode($repo->acl); return $repo; } diff --git a/module/repo/view/maintain.html.php b/module/repo/view/maintain.html.php index 78de7a5120..416c8891bc 100644 --- a/module/repo/view/maintain.html.php +++ b/module/repo/view/maintain.html.php @@ -45,7 +45,7 @@ } ?> - path; ?> + path; ?> id&objectID=$objectID", '', 'list', 'edit'); From fae99a59bafee3b5153965b2a7beebc6831b97dc Mon Sep 17 00:00:00 2001 From: holan20180123 Date: Mon, 19 Jul 2021 10:40:01 +0800 Subject: [PATCH 2/5] * Adjust edit project. --- module/project/control.php | 18 ++++++++++++++---- module/project/model.php | 2 +- module/project/view/batchedit.html.php | 6 +++++- module/project/view/edit.html.php | 11 ++++++++++- 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index 9aa49fa019..4e88286e9a 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -471,6 +471,7 @@ class project extends control $this->view->users = $this->user->getPairs('noclosed|nodeleted'); $this->view->project = $project; $this->view->programList = $this->program->getParentPairs(); + $this->view->program = $this->program->getByID($project->parent); $this->view->projectID = $projectID; $this->view->allProducts = array('0' => '') + $allProducts; $this->view->productPlans = $productPlans; @@ -519,14 +520,23 @@ class project extends control $projectIdList = $this->post->projectIdList ? $this->post->projectIdList : die(js::locate($this->session->projectList, 'parent')); $projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($projectIdList)->fetchAll('id'); - foreach($projects as $project) $appendPMUsers[$project->PM] = $project->PM; + /* Get program list. */ + $programs = $this->loadModel('program')->getParentPairs(); + $unauthorizedIDList = array(); + foreach($projects as $project) + { + if(!isset($programs[$project->parent]) and !in_array($project->parent, $unauthorizedIDList)) $unauthorizedIDList[] = $project->parent; + $appendPMUsers[$project->PM] = $project->PM; + } + $unauthorizedPrograms = $this->program->getPairsByList($unauthorizedIDList); $this->view->title = $this->lang->project->batchEdit; $this->view->position[] = $this->lang->project->batchEdit; - $this->view->projects = $projects; - $this->view->programList = $this->loadModel('program')->getParentPairs(); - $this->view->PMUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $appendPMUsers); + $this->view->projects = $projects; + $this->view->programs = $programs; + $this->view->unauthorizedPrograms = $unauthorizedPrograms; + $this->view->PMUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $appendPMUsers); $this->display(); } diff --git a/module/project/model.php b/module/project/model.php index 3c2f0fcbe3..c6cb2abaa5 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -976,8 +976,8 @@ class projectModel extends model $projectName = $data->names[$projectID]; $projects[$projectID] = new stdClass(); + if(isset($data->parents[$projectID])) $projects[$projectID]->parent = $data->parents[$projectID]; $projects[$projectID]->name = $projectName; - $projects[$projectID]->parent = $data->parents[$projectID]; $projects[$projectID]->PM = $data->PMs[$projectID]; $projects[$projectID]->begin = $data->begins[$projectID]; $projects[$projectID]->end = isset($data->ends[$projectID]) ? $data->ends[$projectID] : LONG_TIME; diff --git a/module/project/view/batchedit.html.php b/module/project/view/batchedit.html.php index 26b4903ab9..5ba083d44b 100644 --- a/module/project/view/batchedit.html.php +++ b/module/project/view/batchedit.html.php @@ -37,7 +37,11 @@ parent ? $lang->program->subAcls : $lang->project->acls;?> - parent, "class='form-control chosen' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}'");?> + parent])):?> + parent, "class='form-control chosen' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}' disabled");?> + + parent, "class='form-control chosen' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}'");?> + name, "class='form-control'");?> PM, "class='form-control chosen'");?> diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 8c52ae4ae2..bae7c19025 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -32,7 +32,16 @@ - + parent])) + { + echo html::hidden('parent', $project->parent); + $attr = 'disabled'; + $programList = array($project->parent => $program->name); + } + ?> + From eb41a29bac7fb1d2198edbf3d75ac0fc04e37fb9 Mon Sep 17 00:00:00 2001 From: holan20180123 Date: Mon, 19 Jul 2021 10:50:24 +0800 Subject: [PATCH 3/5] * Fix bug #13680. --- module/project/control.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/project/control.php b/module/project/control.php index 4e88286e9a..604e4994a2 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -416,7 +416,6 @@ class project extends control ->where('t1.project')->eq($projectID) ->andWhere('t2.plan')->in(array_keys($oldPlans)) ->fetchAll('story'); - $diffResult = array_diff($oldPlans, $_POST['plans']); $changes = $this->project->update($projectID); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); @@ -428,6 +427,7 @@ class project extends control } /* Link the plan stories. */ + $diffResult = array_diff($oldPlans, $_POST['plans']); if(!empty($_POST['plans']) and !empty($diffResult)) { $this->loadModel('productplan')->linkProject($projectID, $_POST['plans'], $oldPlanStories); From 2d11dcd6cdd16ddef369e3e3e69d75aa4c2fc8f1 Mon Sep 17 00:00:00 2001 From: zenggang Date: Mon, 19 Jul 2021 11:02:35 +0800 Subject: [PATCH 4/5] * Finish task #40108 --- module/task/model.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/task/model.php b/module/task/model.php index 08927d7543..780f3a6a55 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -935,7 +935,7 @@ class taskModel extends model foreach($teams as $member) $this->dao->insert(TABLE_TEAM)->data($member)->autoCheck()->exec(); /* Assign the left hours to zero who will be skipped. */ - $skipMembers = $this->loadModel('execution')->getTeamSkip($oldTask->team, $oldTask->assignedTo, $task->assignedTo); + $skipMembers = $this->loadModel('execution')->getTeamSkip($oldTask->team, $oldTask->assignedTo, isset($task->assignedTo) ? $task->assignedTo : $oldTask->assignedTo); foreach($skipMembers as $account => $team) $this->dao->update(TABLE_TEAM)->set('left')->eq(0)->where('root')->eq($taskID)->andWhere('type')->eq('task')->andWhere('account')->eq($account)->exec(); $task = $this->computeHours4Multiple($oldTask, $task, array(), $autoStatus = false); From 89d109179ef0e00ba07f396cefe63623916c84e1 Mon Sep 17 00:00:00 2001 From: holan20180123 Date: Mon, 19 Jul 2021 11:23:18 +0800 Subject: [PATCH 5/5] * Finish task #40320. --- module/product/js/all.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/module/product/js/all.js b/module/product/js/all.js index 0b38c9a5e4..37084dd008 100644 --- a/module/product/js/all.js +++ b/module/product/js/all.js @@ -39,14 +39,11 @@ $(function() { setTimeout(function() { - var checkedProduct = true; - $("[id^='productIDList']").each(function() - { - if(!$(this).prop('checked')) checkedProduct = false; - }) + var allCount = $("[id^='productIDList']").length; + var checkedCount = $("[id^='productIDList']:checked").length; - if(checkedProduct) $('.check-all').addClass('checked'); - if(!checkedProduct) $('.check-all').removeClass('checked'); + if(allCount == checkedCount) $('.check-all').addClass('checked'); + if(allCount != checkedCount) $('.check-all').removeClass('checked'); }, 100) }); });
program->parent;?>parent, "class='form-control chosen'");?>parent, "class='form-control chosen' $attr");?>