diff --git a/module/project/control.php b/module/project/control.php index 0fe1b95d17..6d2a47186e 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -121,13 +121,22 @@ class project extends control /* Set browse type. */ $browseType = strtolower($status); - if($browseType == 'bymodule') setcookie('taskModule', (int)$param, $this->config->cookieLife, $this->config->webRoot); - if($browseType != 'bymodule') $this->session->set('taskBrowseType', $browseType); + if($browseType == 'bymodule' or $browseType == 'byproduct') + { + setcookie('taskBrowseType', $browseType, $this->config->cookieLife, $this->config->webRoot); + setcookie('browseParam', (int)$param, $this->config->cookieLife, $this->config->webRoot); + } + else + { + $this->session->set('taskBrowseType', $browseType); + } - /* Set productID, moduleID and queryID. */ + /* Set queryID, moduleID and productID. */ $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; + $moduleID = ($browseType == 'bymodule') ? (int)$param : (($browseType == 'bysearch' or $browseType == 'byproduct') ? 0 : ($this->cookie->taskBrowseType == 'bymodule' ? $this->cookie->browseParam : 0)); + $productID = ($browseType == 'byproduct') ? (int)$param : (($browseType == 'bysearch' or $browseType == 'bymodule') ? 0 : ($this->cookie->taskBrowseType == 'byproduct' ? $this->cookie->browseParam : 0)); + + /* Get products by project. */ $project = $this->commonAction($projectID, $status); $projectID = $project->id; $products = $this->loadModel('product')->getProductsByProject($projectID); @@ -156,7 +165,7 @@ class project extends control $pager = new pager($recTotal, $recPerPage, $pageID); /* Get tasks. */ - $tasks = $this->project->getTasks($productID, $projectID, $this->projects, $status, $browseType, $queryID, $moduleID, $sort, $pager); + $tasks = $this->project->getTasks($productID, $projectID, $this->projects, $browseType, $queryID, $moduleID, $sort, $pager); /* Build the search form. */ $actionURL = $this->createLink('project', 'task', "projectID=$projectID&status=bySearch¶m=myQueryID"); @@ -187,7 +196,6 @@ 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'); diff --git a/module/project/model.php b/module/project/model.php index 1bb446d317..889b3f1aa4 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -752,7 +752,6 @@ class projectModel extends model * @param int $productID * @param int $projectID * @param array $projects - * @param string $status * @param string $browseType * @param int $queryID * @param int $moduleID @@ -761,20 +760,24 @@ class projectModel extends model * @access public * @return array */ - public function getTasks($productID, $projectID, $projects, $status, $browseType, $queryID, $moduleID, $sort, $pager) + public function getTasks($productID, $projectID, $projects, $browseType, $queryID, $moduleID, $sort, $pager) { $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; + $modules = 0; + if($productID) $modules = $this->loadModel('tree')->getProjectModule($projectID, $productID); + if($moduleID) $modules = $this->loadModel('tree')->getAllChildID($moduleID); + if($browseType == 'bymodule' or $browseType == 'byproduct') + { + if(($this->session->taskBrowseType) and ($this->session->taskBrowseType != 'bysearch')) $browseType = $this->session->taskBrowseType; + } /* Get tasks. */ $tasks = array(); - if($status == 'byProduct') + if($browseType == 'byproduct') { - $modules = $this->loadModel('tree')->getProjectModule($projectID, $productID); - $tasks = $this->task->getTasksByModule($projectID, $modules, $sort, $pager); + $tasks = $this->task->getTasksByModule($projectID, $modules, $sort, $pager); } elseif($browseType == 'bymodule') { diff --git a/module/project/view/taskheader.html.php b/module/project/view/taskheader.html.php index 83a8b8132b..1ae3223605 100644 --- a/module/project/view/taskheader.html.php +++ b/module/project/view/taskheader.html.php @@ -1,20 +1,30 @@