From 8183e3bec615a01f230419791244ae2df60346f8 Mon Sep 17 00:00:00 2001 From: Yagami <976204163@qq.com> Date: Fri, 2 Apr 2021 10:25:18 +0800 Subject: [PATCH] * Fix doc order. --- module/doc/control.php | 4 +-- module/doc/model.php | 70 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/module/doc/control.php b/module/doc/control.php index e3813db046..d1deb4854e 100644 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -877,9 +877,9 @@ class doc extends control // setcookie('from', $from, $this->config->cookieLife, $this->config->webRoot, '', false, true); $this->session->set('docList', $this->app->getURI(true), 'doc'); + $objects = $this->doc->getOrderedObjects($type); if($type == 'product') { - $objects = $this->loadModel('product')->getPairs('nocode'); $objectID = $this->product->saveState($objectID, $objects); $table = TABLE_PRODUCT; @@ -890,7 +890,6 @@ class doc extends control } else { - $objects = $this->loadModel('project')->getPairsByProgram(); $objectID = $this->project->saveState($objectID, $objects); $table = TABLE_PROJECT; @@ -900,6 +899,7 @@ class doc extends control $this->app->rawMethod = 'project'; } + if(!$libID) $libID = key($libs); $object = $this->dao->select('id,name,status')->from($table)->where('id')->eq($objectID)->fetch(); if(empty($object)) $this->locate($this->createLink($type, 'create', '', '', '', $this->session->project)); diff --git a/module/doc/model.php b/module/doc/model.php index abfa561900..9be74f367b 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -1152,6 +1152,76 @@ class docModel extends model return $libs; } + /** + * Get ordered objects for dic. + * + * @param string $objectType + * @access public + * @return array + */ + public function getOrderedObjects($objectType = 'product') + { + $myObjects = $normalObjects = $closedObjects = array(); + if($objectType == 'product') + { + $products = $this->loadModel('product')->getList(); + foreach($products as $id => $product) + { + if($product->status == 'normal' and $product->PO == $this->app->user->account) + { + $myObjects[$id] = $product->name; + } + elseif($product->status == 'normal' and !($product->PO == $this->app->user->account)) + { + $normalObjects[$id] = $product->name; + } + elseif($product->status == 'closed') + { + $closedObjects[$id] = $product->name; + } + } + } + elseif($objectType == 'project') + { + $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('deleted')->eq(0) + ->andWhere('type')->eq('project') + ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi() + ->orderBy('order_asc') + ->fetchAll('id'); + + $orderedProjects = array(); + foreach($programs as $programID => $programName) + { + foreach($projects as $id => $project) + { + if($project->parent and $project->parent != $programID) continue; + $orderedProjects[$id] = $project; + unset($projects[$project->id]); + } + } + + foreach($orderedProjects as $id => $project) + { + if($project->status != 'done' and $project->status != 'closed' and $project->PM == $this->app->user->account) + { + $myObjects[$id] = $project->name; + } + else if($project->status != 'done' and $project->status != 'closed' and !($project->PM == $this->app->user->account)) + { + $normalObjects[$id] = $project->name; + } + else if($project->status == 'done' or $project->status == 'closed') + { + $closedObjects[$id] = $project->name; + } + } + } + + return $myObjects + $normalObjects + $closedObjects; + } + /** * Stat module and document counts of lib. *