diff --git a/module/execution/control.php b/module/execution/control.php index 7912807501..34d806dbc3 100644 --- a/module/execution/control.php +++ b/module/execution/control.php @@ -197,9 +197,7 @@ class execution extends control /* Build the search form. */ $modules = $this->loadModel('tree')->getTaskOptionMenu($executionID, 0, $showModule); $actionURL = $this->createLink('execution', 'task', "executionID=$executionID&status=bySearch¶m=myQueryID&orderBy=$orderBy&recTotal=0&recPerPage=100&pageID=1&from=$from&blockID=$blockID"); - $this->config->execution->search['onMenuBar'] = 'yes'; - if(!$execution->multiple) unset($this->config->execution->search['fields']['execution']); - $this->execution->buildTaskSearchForm($executionID, $this->executions, $queryID, $actionURL); + $this->execution->buildTaskSearchForm($executionID, $productID, $this->executions, $queryID, $actionURL); $this->view->title = $execution->name . $this->lang->hyphen . $this->lang->execution->task; $this->view->tasks = $tasks; diff --git a/module/execution/model.php b/module/execution/model.php index bacef5a9f3..f8d9e2f2d3 100755 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -4169,6 +4169,7 @@ class executionModel extends model * Build task search form. * * @param int $executionID + * @param int $productID * @param array $executions * @param int $queryID * @param string $actionURL @@ -4176,12 +4177,16 @@ class executionModel extends model * @access public * @return void */ - public function buildTaskSearchForm(int $executionID, array $executions, int $queryID, string $actionURL, bool $cacheSearchParams = true) + public function buildTaskSearchForm(int $executionID, int $productID, array $executions, int $queryID, string $actionURL, string $module = 'task', bool $cacheSearchParams = true) { - $module = $this->config->execution->search['module']; if($cacheSearchParams) return $this->cacheSearchParams($module, __METHOD__, func_get_args()); - $showAll = empty($executionID) && empty($executions) ? true : false; + $searchConfig = $this->config->execution->search; + $searchConfig['module'] = $module; + $searchConfig['actionURL'] = $actionURL; + $searchConfig['queryID'] = $queryID; + + $showAll = empty($executionID) && empty($executions); if($showAll) { $executions = $this->getPairs(0, 'all', "nocode,noprefix,multiple"); @@ -4189,27 +4194,49 @@ class executionModel extends model } $execution = $this->getByID($executionID); - $this->config->execution->search['actionURL'] = $actionURL; - $this->config->execution->search['queryID'] = $queryID; - $this->config->execution->search['params']['story']['values'] = $this->loadModel('story')->getExecutionStoryPairs($executionID, 0, 'all', '', 'full', 'unclosed', 'story', false); + $searchConfig['params']['story']['values'] = $this->loadModel('story')->getExecutionStoryPairs($executionID, 0, 'all', '', 'full', 'unclosed', 'story', false); + + if($module == 'task') + { + $searchConfig['onMenuBar'] = 'yes'; + if(!$execution->multiple) unset($searchConfig['fields']['execution']); + } + elseif($module == 'programplanTask') + { + unset($searchConfig['fields']['project']); + $executions = $this->loadModel('programplan')->getPairs($projectID, $productID, 'all'); + } + elseif($module == 'projectTask') + { + unset($searchConfig['fields']['project']); + unset($searchConfig['fields']['module']); + } if(isset($execution->type) && $execution->type == 'project') { - unset($this->config->execution->search['fields']['project']); - $this->config->execution->search['params']['execution']['values'] = array('' => '') + $executions; + unset($searchConfig['fields']['project']); + if(isset($searchConfig['fields']['execution'])) $searchConfig['params']['execution']['values'] = array('' => '') + $executions; } else { - $this->config->execution->search['params']['execution']['values'] = $showAll ? $executions : array(''=>'', $executionID => zget($executions, $executionID, ''), 'all' => $this->lang->execution->allExecutions); + if(isset($searchConfig['fields']['execution'])) $searchConfig['params']['execution']['values'] = $showAll ? $executions : array(''=>'', $executionID => zget($executions, $executionID, ''), 'all' => $this->lang->execution->allExecutions); } - $projects = $this->loadModel('project')->getPairsByProgram(); - $this->config->execution->search['params']['project']['values'] = $projects + array('all' => $this->lang->project->allProjects); + if(isset($searchConfig['fields']['project'])) + { + $projects = $this->loadModel('project')->getPairsByProgram(); + $searchConfig['params']['project']['values'] = $projects + array('all' => $this->lang->project->allProjects); + } - $showAllModule = isset($this->config->execution->task->allModule) ? $this->config->execution->task->allModule : ''; - $this->config->execution->search['params']['module']['values'] = $this->loadModel('tree')->getTaskOptionMenu($executionID, 0, $showAllModule ? 'allModule' : ''); + if(isset($searchConfig['fields']['module'])) + { + $showAllModule = $this->config->execution->task->allModule ?? ''; + $searchConfig['params']['module']['values'] = $this->loadModel('tree')->getTaskOptionMenu($executionID, 0, $showAllModule ? 'allModule' : ''); + } - $this->loadModel('search')->setSearchParams($this->config->execution->search); + $this->loadModel('search')->setSearchParams($searchConfig); + + return $searchConfig; } /** diff --git a/module/programplan/zen.php b/module/programplan/zen.php index 169c9ede7e..4cbcc25434 100644 --- a/module/programplan/zen.php +++ b/module/programplan/zen.php @@ -441,12 +441,8 @@ class programplanZen extends programplan if($hasSearch) { /* Build the search form. */ - $this->config->execution->search['module'] = 'projectTask'; - $actionURL = $this->createLink('programplan', 'browse', "projectID=$projectID&productID=$productID&type=$type&orderBy=$orderBy&baselineID=$baselineID&browseType=bysearch&queryID=myQueryID"); - unset($this->config->execution->search['fields']['project']); - $executions = $this->programplan->getPairs($projectID, $productID, 'all'); - $this->loadModel('execution')->buildTaskSearchForm($projectID, $executions, $queryID, $actionURL); + $this->loadModel('execution')->buildTaskSearchForm($projectID, $productID, $executions, $queryID, $actionURL, 'programplanTask'); } $this->view->title = $this->lang->programplan->browse; diff --git a/module/project/control.php b/module/project/control.php index 90812f98c2..aef9423d06 100755 --- a/module/project/control.php +++ b/module/project/control.php @@ -870,15 +870,10 @@ class project extends control if($this->cookie->showTask) { /* Build the search form. */ - $this->config->execution->search['module'] = 'projectTask'; - - $actionURL = $this->createLink('project', 'execution', "status=bysearch&projectID=$projectID&orderBy=$orderBy&productID=$productID&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID&queryID=myQueryID"); - unset($this->config->execution->search['fields']['project']); - unset($this->config->execution->search['fields']['module']); + $actionURL = $this->createLink('project', 'execution', "status=bysearch&projectID=$projectID&orderBy=$orderBy&productID=$productID&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID&queryID=myQueryID"); $executions = $this->execution->fetchExecutionList($projectID, 'all', $productID); $executions = $this->execution->getPairsByList(array_keys($executions)); - - $this->execution->buildTaskSearchForm($projectID, $executions, $queryID, $actionURL); + $this->execution->buildTaskSearchForm($projectID, $productID, $executions, $queryID, $actionURL, 'projectTask'); } $this->view->title = $this->lang->execution->allExecutions;