* Fix doc order.

This commit is contained in:
Yagami
2021-04-02 10:25:24 +08:00
parent 894968c11c
commit 8183e3bec6
2 changed files with 72 additions and 2 deletions
+2 -2
View File
@@ -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));
+70
View File
@@ -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.
*