diff --git a/module/block/control.php b/module/block/control.php index 781192e20e..732c8f5f62 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -847,7 +847,7 @@ class block extends control if($project->model == 'scrum') { $project->progress = $project->allStories == 0 ? 0 : round($project->doneStories / $project->allStories, 3) * 100; - $project->executions = $this->project->getExecutionStats($projectID, 'all', 0, 0, 1, 'id_desc', null); + $project->executions = $this->project->getExecutionStats($projectID, 'all', 0, 0, 30, 'path_asc,id_asc'); } elseif($project->model == 'waterfall') { @@ -1298,7 +1298,7 @@ class block extends control $count = isset($this->params->count) ? (int)$this->params->count : 15; $type = isset($this->params->type) ? $this->params->type : 'all'; $pager = pager::init(0, $count, 1); - $this->view->executionStats = $this->loadModel('project')->getExecutionStats($this->session->PRJ, $type, $productID = 0, $branch = 0, $itemCounts = 30, $orderBy = 'order_desc', $this->viewType != 'json' ? $pager : ''); + $this->view->executionStats = $this->loadModel('project')->getExecutionStats($this->session->PRJ, $type, 0, 0, 30, 'path_asc,id_asc', $pager); } /** diff --git a/module/doc/model.php b/module/doc/model.php index 2c9a06235d..93bc897394 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -152,15 +152,16 @@ class docModel extends model { $idList = array(); if($type == 'product') $idList = $this->loadModel('product')->getProductIDByProject($projectID, false); - if($type == 'project') $idList = $this->loadModel('project')->getExecutionPairs($projectID, 'all', 'noclosed'); + if($type == 'project') + { + $status = strpos($this->config->doc->custom->showLibs, 'unclosed') !== false ? 'undone' : 'all'; + $idList = $this->loadModel('project')->getExecutionIdList($projectID, $status); + } $table = $type == 'product' ? TABLE_PRODUCT : TABLE_PROJECT; - $stmt = $this->dao->select('t1.*')->from(TABLE_DOCLIB)->alias('t1') - ->leftJoin($table)->alias('t2')->on("t1.$type=t2.id") - ->andWhere('t2.id')->in($idList) - ->beginIF($type == 'project' and strpos($this->config->doc->custom->showLibs, 'unclosed') !== false)->andWhere('t2.status')->notin('done,closed')->fi() - ->andWhere('t1.deleted')->eq(0) - ->orderBy("t2.order desc, t1.order, t1.id") + $stmt = $this->dao->select('*')->from(TABLE_DOCLIB) + ->where($type)->in($idList) + ->andWhere('deleted')->eq('0') ->query(); } elseif($type == 'all') diff --git a/module/product/model.php b/module/product/model.php index 45fe6f956d..371cb0f5ef 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -758,10 +758,11 @@ class productModel extends model * * @param int $productID * @param int $branch + * @param string $orderBy * @access public * @return array */ - public function getExecutionPairsByProduct($productID, $branch = 0) + public function getExecutionPairsByProduct($productID, $branch = 0, $orderBy = 'path_asc,id_asc') { if(!$this->session->PRJ || !$productID) return array(); @@ -772,7 +773,7 @@ class productModel extends model ->beginIF($branch)->andWhere('t1.branch')->in($branch)->fi() ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi() ->andWhere('t2.deleted')->eq('0') - ->orderBy('t2.path_asc') + ->orderBy($orderBy) ->fetchAll('id'); /* The waterfall project needs to show the hierarchy and remove the parent stage. */ diff --git a/module/program/model.php b/module/program/model.php index 5c91e9b4b9..22cf6dd8cb 100644 --- a/module/program/model.php +++ b/module/program/model.php @@ -840,13 +840,12 @@ class programModel extends model foreach($projects as $projectID => $project) { - $orderBy = $project->model == 'waterfall' ? 'id_asc' : 'id_desc'; + $orderBy = $project->model == 'waterfall' ? 'path_asc,id_asc' : 'id_desc'; $project->executions = $this->project->getExecutionStats($projectID, $status, 0, 0, $itemCounts, $orderBy); $project->teamCount = isset($teams[$projectID]) ? $teams[$projectID]->count : 0; $project->estimate = isset($estimates[$projectID]) ? $estimates[$projectID]->estimate : 0; $project->parentName = $this->getPRJParentName($project->parent); } - return $projects; } diff --git a/module/programplan/model.php b/module/programplan/model.php index 3e71a05299..936815b8de 100644 --- a/module/programplan/model.php +++ b/module/programplan/model.php @@ -805,13 +805,14 @@ class programplanModel extends model case 'actions': common::printIcon('project', 'start', "projectID={$plan->id}", $plan, 'list', '', '', 'iframe', true); common::printIcon('task', 'create', "projectID={$plan->id}", $plan, 'list'); - if($this->isCreateTask($plan->id)) + + if($plan->grade == 1 && $this->isCreateTask($plan->id)) { common::printIcon('programplan', 'create', "program={$plan->parent}&productID=$plan->product&planID=$plan->id", $plan, 'list', 'treemap', '', '', '', '', $this->lang->programplan->createSubPlan); } else { - $disabled = ($plan->parent == 0) ? ' disabled' : ''; + $disabled = ($plan->grade == 2) ? ' disabled' : ''; echo html::a('javascript:alert("' . $this->lang->programplan->error->createdTask . '");', '', '', 'class="btn ' . $disabled . '"'); } diff --git a/module/project/control.php b/module/project/control.php index 7ccf4b4cf1..7864a50243 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -2469,7 +2469,7 @@ class project extends control * @access public * @return void */ - public function all($status = 'undone', $projectID = 0, $orderBy = 'order_desc', $productID = 0, $recTotal = 0, $recPerPage = 10, $pageID = 1) + public function all($status = 'undone', $projectID = 0, $orderBy = 'path_asc,id_asc', $productID = 0, $recTotal = 0, $recPerPage = 10, $pageID = 1) { $this->app->loadLang('my'); $this->app->loadLang('programplan'); @@ -2484,17 +2484,17 @@ class project extends control $this->app->loadClass('pager', $static = true); $pager = new pager($recTotal, $recPerPage, $pageID); - $this->view->title = $this->lang->project->allProject; - $this->view->position[] = $this->lang->project->allProject; + $this->view->title = $this->lang->project->allProject; + $this->view->position[] = $this->lang->project->allProject; - $this->view->projectStats = $this->project->getExecutionStats($this->session->PRJ, $status == 'byproduct' ? 'all' : $status, $productID, 0, 30, $orderBy, $pager); - $this->view->products = array(0 => $this->lang->product->select) + $this->loadModel('product')->getProductPairsByProject($this->session->PRJ); - $this->view->productID = $productID; - $this->view->projectID = $projectID; - $this->view->pager = $pager; - $this->view->orderBy = $orderBy; - $this->view->users = $this->loadModel('user')->getPairs('noletter'); - $this->view->status = $status; + $this->view->executionStats = $this->project->getExecutionStats($this->session->PRJ, $status, $productID, 0, 30, $orderBy, $pager); + $this->view->products = array(0 => $this->lang->product->select) + $this->loadModel('product')->getProductPairsByProject($this->session->PRJ); + $this->view->productID = $productID; + $this->view->projectID = $projectID; + $this->view->pager = $pager; + $this->view->orderBy = $orderBy; + $this->view->users = $this->loadModel('user')->getPairs('noletter'); + $this->view->status = $status; $this->display(); } diff --git a/module/project/model.php b/module/project/model.php index 8e738f84dd..bed6d7b3aa 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -999,7 +999,7 @@ class projectModel extends model * @access public * @return void */ - public function getExecutionStats($projectID = 0, $status = 'undone', $productID = 0, $branch = 0, $itemCounts = 30, $orderBy = 'order_desc', $pager = null) + public function getExecutionStats($projectID = 0, $status = 'undone', $productID = 0, $branch = 0, $itemCounts = 30, $orderBy = 'path_asc,id_asc', $pager = null) { if(empty($productID)) { @@ -1007,7 +1007,7 @@ class projectModel extends model ->where('project')->eq($projectID) ->andWhere('type')->eq('stage') ->andWhere('deleted')->eq('0') - ->orderBy('path_desc,id_asc') + ->orderBy($orderBy) ->page($pager) ->fetchAll('id'); } @@ -1019,7 +1019,7 @@ class projectModel extends model ->andWhere('t2.project')->eq($projectID) ->andWhere('t2.type')->eq('stage') ->andWhere('t2.deleted')->eq('0') - ->orderBy('t2.parent_desc,t2.id_asc') + ->orderBy($orderBy) ->page($pager) ->fetchAll('id'); } diff --git a/module/project/view/all.html.php b/module/project/view/all.html.php index 98868b2c0f..57c02880ab 100644 --- a/module/project/view/all.html.php +++ b/module/project/view/all.html.php @@ -69,54 +69,54 @@ - - + +
- +
- id);?> + id);?> - ' title='name?>'> + ' title='name?>'> delay)) echo "{$lang->project->delayed} "; - echo html::a($this->createLink('project', 'view', 'project=' . $project->id), $project->name); + if(isset($execution->delay)) echo "{$lang->project->delayed} "; + echo html::a($this->createLink('project', 'view', 'project=' . $execution->id), $execution->name); ?> - children)):?> - + children)):?> + - code;?> - PM);?> - end;?> - processStatus('project', $project);?> + code;?> + PM);?> + end;?> + processStatus('project', $execution);?> - + - hours->totalEstimate;?> - hours->totalConsumed;?> - hours->totalLeft;?> + hours->totalEstimate;?> + hours->totalConsumed;?> + hours->totalLeft;?>
-
- hours->progress;?>% +
+ hours->progress;?>%
- burns);?>'> + burns);?>'> - children)):?> + children)):?> - children as $key => $child):?> + children as $key => $child):?> - children)) ? ' table-child-bottom' : '';?> - + children)) ? ' table-child-bottom' : '';?> +
@@ -161,7 +161,7 @@ - +