diff --git a/module/product/model.php b/module/product/model.php index 2ac55fe379..1b80f2521c 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -359,8 +359,12 @@ class productModel extends model { $this->loadModel('story'); + /* Set modules and browse type. */ + $modules = $moduleID ? $this->loadModel('tree')->getAllChildID($moduleID) : '0'; + $browseType = (($browseType == 'bymodule') and ($this->session->storyBrowseType) and ($this->session->storyBrowseType != 'bysearch')) ? $this->session->storyBrowseType : $browseType; + /* Get stories by browseType. */ - $modules = $moduleID ? $this->loadModel('tree')->getAllChildID($moduleID) : '0'; + $stories = array(); if($browseType == 'unclosed') { $unclosedStatus = $this->lang->story->statusList; @@ -380,9 +384,7 @@ class productModel extends model if($browseType == 'willclose') $stories = $this->story->get2BeClosed($productID, $branch, $modules, $sort, $pager); if($browseType == 'closedstory') $stories = $this->story->getByStatus($productID, $branch, $modules, 'closed', $sort, $pager); - if($stories) return $stories; - - return array(); + return $stories; } /** diff --git a/module/project/control.php b/module/project/control.php index 9e26c82b49..d4d4236ca5 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -129,14 +129,19 @@ class project extends control $this->loadModel('task'); $this->loadModel('datatable'); - /* Set browseType, productID, moduleID and queryID. */ + /* Set browse type. */ $browseType = strtolower($status); - $queryID = ($browseType == 'bysearch') ? (int)$param : 0; - $moduleID = ($browseType == 'bymodule') ? (int)$param : 0; - $productID = ($browseType == 'byproduct') ? (int)$param : 0; - $project = $this->commonAction($projectID, $status); - $projectID = $project->id; - $products = $this->loadModel('product')->getProductsByProject($projectID); + + if($browseType == 'bymodule') setcookie('taskModule', (int)$param, $this->config->cookieLife, $this->config->webRoot); + if($browseType != 'bymodule') $this->session->set('taskBrowseType', $browseType); + + /* Set productID, moduleID and queryID. */ + $queryID = ($browseType == 'bysearch') ? (int)$param : 0; + $moduleID = ($browseType == 'bymodule') ? (int)$param : ($browseType == 'bysearch' ? 0 : ($this->cookie->taskModule ? $this->cookie->taskModule : 0)); + $productID = ($browseType == 'byproduct') ? (int)$param : 0; + $project = $this->commonAction($projectID, $status); + $projectID = $project->id; + $products = $this->loadModel('product')->getProductsByProject($projectID); /* Save to session. */ $uri = $this->app->getURI(true); @@ -190,6 +195,7 @@ class project extends control $this->view->modules = $this->tree->getTaskOptionMenu($projectID); $this->view->moduleID = $moduleID; $this->view->moduleTree = $this->tree->getTaskTreeMenu($projectID, $productID = 0, $startModuleID = 0, array('treeModel', 'createTaskLink')); + $this->view->moduleName = $moduleID ? $this->tree->getById($moduleID)->name : $this->lang->tree->all; $this->view->projectTree = $this->project->tree(); $this->view->memberPairs = $memberPairs; $this->view->branchGroups = $this->loadModel('branch')->getByProducts(array_keys($products), 'noempty'); @@ -220,7 +226,7 @@ class project extends control $this->view->position[] = $this->lang->project->task; /* Get tasks and group them. */ - $tasks = $this->loadModel('task')->getProjectTasks($projectID, $status = 'all', $groupBy ? $groupBy : 'story'); + $tasks = $this->loadModel('task')->getProjectTasks($projectID, $status = 'all', $modules = 0, $groupBy ? $groupBy : 'story'); $groupBy = strtolower(str_replace('`', '', $groupBy)); $taskLang = $this->lang->task; $groupByList = array(); diff --git a/module/project/model.php b/module/project/model.php index b1c068d34c..6062eb0a5e 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -753,26 +753,31 @@ class projectModel extends model { $this->loadModel('task'); + /* Set modules and $browseType. */ + $modules = $moduleID ? $this->loadModel('tree')->getAllChildID($moduleID) : '0'; + $browseType = (($browseType == 'bymodule') and ($this->session->taskBrowseType) and ($this->session->taskBrowseType != 'bysearch')) ? $this->session->taskBrowseType : $browseType; + /* Get tasks. */ + $tasks = array(); if($status == 'byProduct') { $modules = $this->loadModel('tree')->getProjectModule($projectID, $productID); $tasks = $this->task->getTasksByModule($projectID, $modules, $sort, $pager); } - elseif($status == 'byModule') + elseif($browseType == 'bymodule') { - $tasks = $this->task->getTasksByModule($projectID, $this->loadModel('tree')->getAllChildID($moduleID), $sort, $pager); + $tasks = $this->task->getTasksByModule($projectID, $modules, $sort, $pager); } elseif($browseType != "bysearch") { - $qureyStatus = $status == 'byProject' ? 'all' : $status; - if($qureyStatus == 'unclosed') + $queryStatus = $browseType == 'byproject' ? 'all' : $browseType; + if($queryStatus == 'unclosed') { - $qureyStatus = $this->lang->task->statusList; - unset($qureyStatus['closed']); - $qureyStatus = array_keys($qureyStatus); + $queryStatus = $this->lang->task->statusList; + unset($queryStatus['closed']); + $queryStatus = array_keys($queryStatus); } - $tasks = $this->task->getProjectTasks($projectID, $qureyStatus, $sort, $pager); + $tasks = $this->task->getProjectTasks($projectID, $queryStatus, $modules, $sort, $pager); } else { @@ -807,9 +812,7 @@ class projectModel extends model $tasks = $this->getSearchTasks($taskQuery, $pager, $sort); } - if($tasks) return $tasks; - - return array(); + return $tasks; } /** diff --git a/module/project/view/task.html.php b/module/project/view/task.html.php index 11347ed787..6d52c00bad 100644 --- a/module/project/view/task.html.php +++ b/module/project/view/task.html.php @@ -123,8 +123,8 @@ js::set('browseType', $browseType); diff --git a/module/project/view/taskheader.html.php b/module/project/view/taskheader.html.php index 62d758d9b3..9e0cf75f49 100644 --- a/module/project/view/taskheader.html.php +++ b/module/project/view/taskheader.html.php @@ -1,6 +1,22 @@