From 18ea33f62e2e0e327753e56b6875050cb481eac5 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Thu, 11 Mar 2021 09:11:05 +0800 Subject: [PATCH] * Finish task #36488. --- module/project/control.php | 30 +++++++++++++++----- module/project/model.php | 7 +++-- module/project/view/ajaxgetdropmenu.html.php | 2 +- module/project/view/edit.html.php | 2 +- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index dfdd8422ae..dee710b3e6 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -115,13 +115,29 @@ class project extends control */ public function ajaxGetDropMenu($projectID = 0, $module, $method) { - $projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($this->app->user->view->projects)->andWhere('deleted')->eq(0)->orderBy('parent desc')->fetchAll(); + $programs = $this->dao->select('id, name')->from(TABLE_PROGRAM)->where('type')->eq('program')->andWhere('deleted')->eq(0)->orderBy('order_asc')->fetchPairs(); + $projects = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($this->app->user->view->projects)->andWhere('deleted')->eq(0)->orderBy('openedDate_desc')->fetchAll('id'); + + /* Sort project by program. */ + $orderedProjects = array(); + foreach($programs as $programID => $programName) + { + foreach($projects as $project) + { + if($project->parent == $programID) + { + $orderedProjects[] = $project; + unset($projects[$project->id]); + } + } + } + if(!empty($projects)) $orderedProjects += $projects; $this->view->projectID = $projectID; - $this->view->projects = $projects; + $this->view->projects = $orderedProjects; $this->view->module = $module; $this->view->method = $method; - $this->view->programs = $this->loadModel('program')->getPairs(true); + $this->view->programs = $programs; $this->display(); } @@ -355,10 +371,10 @@ class project extends control $this->loadModel('action'); $project = $this->project->getByID($projectID); - $projectID = $project->parent; + $programID = $project->parent; - /* Navigation stay in project when enter from project list. */ - $this->adjustNavigation($from, $projectID); + /* Navigation stay in program when enter from program list. */ + $this->adjustNavigation($from, $programID); if($_POST) { @@ -409,7 +425,7 @@ class project extends control $this->view->PMUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $project->PM); $this->view->users = $this->user->getPairs('noclosed|nodeleted'); $this->view->project = $project; - $this->view->projectList = $this->program->getParentPairs(); + $this->view->programList = $this->program->getParentPairs(); $this->view->projectID = $projectID; $this->view->allProducts = array('0' => '') + $allProducts; $this->view->productPlans = $productPlans; diff --git a/module/project/model.php b/module/project/model.php index b026b0c13e..727c9ae130 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -852,7 +852,7 @@ class projectModel extends model ->setIF($this->post->future, 'budget', 0) ->setIF($this->post->budget != 0, 'budget', round($this->post->budget, 2)) ->join('whitelist', ',') - ->stripTags($this->config->project->editor->prjedit['id'], $this->config->allowedTags) + ->stripTags($this->config->project->editor->edit['id'], $this->config->allowedTags) ->remove('products,branch,plans,delta,future') ->get(); @@ -892,7 +892,7 @@ class projectModel extends model return false; } - $project = $this->loadModel('file')->processImgURL($project, $this->config->project->editor->prjedit['id'], $this->post->uid); + $project = $this->loadModel('file')->processImgURL($project, $this->config->project->editor->edit['id'], $this->post->uid); $requiredFields = $this->config->project->edit->requiredFields; if($this->post->delta == 999) $requiredFields = trim(str_replace(',end,', ',', ",{$requiredFields},"), ','); @@ -909,7 +909,7 @@ class projectModel extends model ->checkIF($project->begin != '', 'begin', 'date') ->checkIF($project->end != '', 'end', 'date') ->checkIF($project->end != '', 'end', 'gt', $project->begin) - ->check('name', 'unique', "id!=$projectID and deleted='0'") + ->check('name', 'unique', "id != $projectID and deleted='0'") ->where('id')->eq($projectID) ->exec(); @@ -1192,6 +1192,7 @@ class projectModel extends model public function updateProductProgram($oldProgram, $newProgram, $products) { $this->loadModel('action'); + $this->loadModel('program'); /* Product belonging project set processing. */ $oldTopProgram = $this->program->getTopByID($oldProgram); $newTopProgram = $this->program->getTopByID($newProgram); diff --git a/module/project/view/ajaxgetdropmenu.html.php b/module/project/view/ajaxgetdropmenu.html.php index 867bcd8bd7..602746a989 100644 --- a/module/project/view/ajaxgetdropmenu.html.php +++ b/module/project/view/ajaxgetdropmenu.html.php @@ -21,7 +21,7 @@ $projectsPinYin = common::convert2Pinyin($projectNames); foreach($projects as $project) { $link = helper::createLink('project', 'index', "projectID=%s", '', '', $project->id); - $projectName = $project->parent ? zget($programs, $project->parent, '') . '/' . $project->name : $project->name; + $projectName = zget($programs, $project->parent, '') ? zget($programs, $project->parent) . '/' . $project->name : $project->name; if($project->status != 'done' and $project->status != 'closed' and $project->PM == $this->app->user->account) { $myProjectsHtml .= html::a(sprintf($link, $project->id), $projectName, '', "class='text-important' title='{$projectName}' data-key='" . zget($projectsPinYin, $projectName, '') . "'"); diff --git a/module/project/view/edit.html.php b/module/project/view/edit.html.php index 3a219deaa9..75879560f7 100644 --- a/module/project/view/edit.html.php +++ b/module/project/view/edit.html.php @@ -33,7 +33,7 @@
| program->parent;?> | -parent, "class='form-control chosen'");?> | +parent, "class='form-control chosen'");?> |
|---|