From d4ed89e64a30b0c2f6c6deff7a7bc9e89d9aa063 Mon Sep 17 00:00:00 2001 From: wangyuting2 <851424971@qq.com> Date: Wed, 11 May 2022 15:05:13 +0800 Subject: [PATCH] * Finish task #53548. --- framework/control.class.php | 5 +- module/build/model.php | 24 +++- module/build/view/view.html.php | 10 +- module/execution/model.php | 32 +++++ module/execution/view/view.html.php | 23 +--- module/program/view/browsebylist.html.php | 6 +- module/project/model.php | 161 +++++++++++++++------- module/project/view/view.html.php | 22 +-- module/task/model.php | 97 +++++++++++-- module/task/view/view.html.php | 24 +--- module/testcase/model.php | 7 +- 11 files changed, 268 insertions(+), 143 deletions(-) diff --git a/framework/control.class.php b/framework/control.class.php index 326c9f9c20..c153bb29f0 100644 --- a/framework/control.class.php +++ b/framework/control.class.php @@ -326,10 +326,7 @@ class control extends baseControl if(!isset($this->config->bizVersion)) return false; $moduleName = $this->moduleName; - if(strpos(',bug,feedback,caselib,testsuite,testtask,testcase,product,productplan,', ",{$moduleName},") !== false) return $this->$moduleName->buildOperateMenu($object, $type); - - $flow = $this->loadModel('workflow')->getByModule($moduleName); - return $this->loadModel('flow')->buildOperateMenu($flow, $object, $type); + return $this->$moduleName->buildOperateMenu($object, $type); } /** diff --git a/module/build/model.php b/module/build/model.php index b72d747ec6..06a61c1dc0 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -505,7 +505,6 @@ class buildModel extends model */ public function batchUnlinkBug($buildID) { - $bugList = $this->post->unlinkBugs; if(empty($bugList)) return true; @@ -518,4 +517,27 @@ class buildModel extends model $this->loadModel('action'); foreach($this->post->unlinkBugs as $unlinkBugID) $this->action->create('bug', $unlinkBugID, 'unlinkedfrombuild', '', $buildID); } + + /** + * Build action menu. + * + * @param object $build + * @param string $type + * @access public + * @return string + */ + public function buildOperateMenu($build, $type = 'view') + { + $canBeChanged = common::canBeChanged('build', $build); + if($build->deleted || !$canBeChanged) return ''; + + $menu = ''; + $params = "buildID=$build->id"; + + $menu .= $this->buildFlowMenu('build', $build, 'view', 'direct'); + $menu .= $this->buildMenu('build', 'edit', $params, $build, $type); + $menu .= $this->buildMenu('build', 'delete', $params, $build, $type, 'trash', 'hiddenwin'); + + return $menu; + } } diff --git a/module/build/view/view.html.php b/module/build/view/view.html.php index 101bd6b0fb..3adcc8d6f1 100644 --- a/module/build/view/view.html.php +++ b/module/build/view/view.html.php @@ -48,15 +48,7 @@ tbody tr td:first-child input {display: none;}
- deleted and $canBeChanged) - { - echo $this->buildOperateMenu($build, 'view'); - - if(common::hasPriv('build', 'edit')) echo html::a($this->createLink('build', 'edit', "buildID=$build->id"), " " . $this->lang->edit, '', "class='btn btn-link' title='{$this->lang->edit}' data-app='{$app->tab}'"); - if(common::hasPriv('build', 'delete')) echo html::a($this->createLink('build', 'delete', "buildID=$build->id"), " " . $this->lang->delete, '', "class='btn btn-link' title='{$this->lang->delete}' target='hiddenwin' data-app='{$app->tab}'"); - } - ?> + buildOperateMenu($build, 'view');?>
diff --git a/module/execution/model.php b/module/execution/model.php index 266c19d257..e50d9ec569 100644 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -4033,4 +4033,36 @@ class executionModel extends model } $this->dao->update(TABLE_PROJECT)->set('path')->eq($path['path'])->set('grade')->eq($path['grade'])->where('id')->eq($execution->id)->exec(); } + + /** + * Build execution action menu. + * + * @param object $execution + * @param string $type + * @access public + * @return string + */ + public function buildOperateMenu($execution, $type = 'view') + { + if($execution->deleted) return ''; + + $menu = ''; + $params = "executionID=$execution->id"; + + $menu .= "
"; + $menu .= $this->buildMenu('execution', 'start', $params, $execution, $type, '', '', 'iframe', true); + $menu .= $this->buildMenu('execution', 'activate', $params, $execution, $type, '', '', 'iframe', true); + $menu .= $this->buildMenu('execution', 'putoff', $params, $execution, $type, '', '', 'iframe', true); + $menu .= $this->buildMenu('execution', 'suspend', $params, $execution, $type, '', '', 'iframe', true); + $menu .= $this->buildMenu('execution', 'close', $params, $execution, $type, '', '', 'iframe', true); + + $menu .= "
"; + $menu .= $this->buildFlowMenu('execution', $execution, 'view', 'direct'); + $menu .= "
"; + + $menu .= $this->buildMenu('execution', 'edit', "execution=$execution->id", $execution); + $menu .= $this->buildMenu('execution', 'delete', "execution=$execution->id", $execution, 'button', 'trash', 'hiddenwin'); + + return $menu; + } } diff --git a/module/execution/view/view.html.php b/module/execution/view/view.html.php index fabcf9761c..2bc2913fd1 100644 --- a/module/execution/view/view.html.php +++ b/module/execution/view/view.html.php @@ -146,26 +146,9 @@
- id"; - $browseLink = $this->session->executionList ? $this->session->executionList : inlink('browse', "executionID=$execution->id"); - common::printBack($browseLink); - if(!$execution->deleted) - { - echo "
"; - common::printIcon('execution', 'start', "executionID=$execution->id", $execution, 'button', '', '', 'iframe', true); - common::printIcon('execution', 'activate', "executionID=$execution->id", $execution, 'button', '', '', 'iframe', true); - common::printIcon('execution', 'putoff', "executionID=$execution->id", $execution, 'button', '', '', 'iframe', true); - common::printIcon('execution', 'suspend', "executionID=$execution->id", $execution, 'button', '', '', 'iframe', true); - common::printIcon('execution', 'close', "executionID=$execution->id", $execution, 'button', '', '', 'iframe', true); - - echo $this->buildOperateMenu($execution, 'view'); - - echo "
"; - common::printIcon('execution', 'edit', $params, $execution); - common::printIcon('execution', 'delete', $params, $execution, 'button', 'trash', 'hiddenwin'); - } - ?> + session->executionList ? $this->session->executionList : inlink('browse', "executionID=$execution->id");?> + + buildOperateMenu($execution, 'view');?>
diff --git a/module/program/view/browsebylist.html.php b/module/program/view/browsebylist.html.php index 3271346cda..e200be6085 100644 --- a/module/program/view/browsebylist.html.php +++ b/module/program/view/browsebylist.html.php @@ -119,9 +119,9 @@ model == 'kanban' ? 'disabled' : '';?> - id", $program, 'list', 'edit', '', 'iframe', true);?> - id", $program, 'list', 'group', '', "$class", '', 'data-app="project"');?> - id", $program, 'list', 'lock', '', "$class", '', 'data-app="project"');?> + id", $program, 'list', 'edit', '', 'iframe', true);?> + id", $program, 'list', 'group', '', "$class", '', 'data-app="project"');?> + id", $program, 'list', 'lock', '', "$class", '', 'data-app="project"');?>
diff --git a/module/project/model.php b/module/project/model.php index 04a76c89f2..bafa678048 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -1763,54 +1763,8 @@ class projectModel extends model echo html::ring($project->hours->progress); break; case 'actions': - $moduleName = $this->config->systemMode == 'classic' ? "execution" : "project"; - if($project->status == 'wait' || $project->status == 'suspended') common::printIcon($moduleName, 'start', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true); - if($project->status == 'doing') common::printIcon($moduleName, 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true); - if($project->status == 'closed') common::printIcon($moduleName, 'activate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true); - - if(common::hasPriv($moduleName, 'suspend') || (common::hasPriv($moduleName, 'close') && $project->status != 'doing') || (common::hasPriv($moduleName, 'activate') && $project->status != 'closed')) - { - echo "
"; - echo ""; - echo ""; - echo "
"; - } - - $from = $project->from == 'project' ? 'project' : 'pgmproject'; - $iframe = ($this->app->tab == 'program' or $project->model == 'kanban') ? 'iframe' : ''; - $onlyBody = ($this->app->tab == 'program' or $project->model == 'kanban') ? true : ''; - $dataApp = $this->config->systemMode == 'classic' ? "data-app=execution" : "data-app=project"; - $attr = $project->model == 'kanban' ? " disabled='disabled'" : ''; - - common::printIcon($moduleName, 'edit', "projectID=$project->id", $project, 'list', 'edit', '', $iframe, $onlyBody, $dataApp); - - if($this->config->vision != 'lite') - { - common::printIcon($moduleName, 'team', "projectID=$project->id", $project, 'list', 'group', '', '', '', $dataApp . $attr, $this->lang->execution->team); - if($this->config->systemMode == 'new') common::printIcon('project', 'group', "projectID=$project->id&programID=$programID", $project, 'list', 'lock', '', '', '', $dataApp . $attr); - - if(common::hasPriv($moduleName, 'manageProducts') || common::hasPriv($moduleName, 'whitelist') || common::hasPriv($moduleName, 'delete')) - { - echo "
"; - echo ""; - echo ""; - echo "
"; - } - } - else - { - common::printIcon($moduleName, 'team', "projectID=$project->id", $project, 'list', 'group', '', '', '', $dataApp, $this->lang->execution->team); - if($this->config->systemMode == 'new') common::printIcon('project', 'whitelist', "projectID=$project->id&module=project&from=$from", $project, 'list', 'shield-check', '', 'btn-action', '', $dataApp); - if(common::hasPriv($moduleName, 'delete')) echo html::a(helper::createLink($moduleName, "delete", "projectID=$project->id"), "", 'hiddenwin', "class='btn btn-action' title='{$this->lang->project->delete}'"); - } + $project->programID = $programID; + echo $this->buildOperateMenu($project, 'browse'); break; } echo ''; @@ -2357,4 +2311,115 @@ class projectModel extends model ->fetch(); return $result; } + + /** + * Build project action menu. + * + * @param object $project + * @param string $type + * @access public + * @return string + */ + public function buildOperateMenu($project, $type = 'view') + { + $function = 'buildOperate' . ucfirst($type) . 'Menu'; + return $this->$function($project); + } + + /** + * Build project view action menu. + * + * @param object $project + * @access public + * @return string + */ + public function buildOperateViewMenu($project) + { + if($project->deleted) return ''; + + $menu = ''; + $params = "projectID=$project->id"; + + $menu .= "
"; + $menu .= $this->buildMenu('project', 'start', $params, $project, 'view', 'play', '', 'iframe', true, '', $this->lang->project->start); + $menu .= $this->buildMenu('project', 'activate', $params, $project, 'view', 'magic', '', 'iframe', true, '', $this->lang->project->activate); + $menu .= $this->buildMenu('project', 'suspend', $params, $project, 'view', 'pause', '', 'iframe', true, '', $this->lang->project->suspend); + $menu .= $this->buildMenu('project', 'close', $params, $project, 'view', 'off', '', 'iframe', true, '', $this->lang->close); + + $menu .= "
"; + $menu .= $this->buildFlowMenu('project', $project, 'view', 'direct'); + $menu .= "
"; + + $menu .= $this->buildMenu('project', 'edit', "project=$project->id&from=view", $project, 'button', 'edit', '', '', '', '', $this->lang->edit); + $menu .= $this->buildMenu('project', 'delete', "project=$project->id", $project, 'button', 'trash', 'hiddenwin', '', '', '', $this->lang->delete); + + return $menu; + } + + /** + * Build project browse action menu. + * + * @param object $project + * @access public + * @return string + */ + public function buildOperateBrowseMenu($project) + { + $menu = ''; + $params = "projectID=$project->id"; + + $moduleName = $this->config->systemMode == 'classic' ? "execution" : "project"; + if($project->status == 'wait' || $project->status == 'suspended') + { + $menu .= $this->buildMenu($moduleName, 'start', $params, $project, 'browse', 'play', '', 'iframe', true); + } + if($project->status == 'doing') $menu .= $this->buildMenu($moduleName, 'close', $params, $project, 'browse', 'off', '', 'iframe', true); + if($project->status == 'closed') $menu .= $this->buildMenu($moduleName, 'activate', $params, $project, 'browse', 'magic', '', 'iframe', true); + + if(common::hasPriv($moduleName, 'suspend') || (common::hasPriv($moduleName, 'close') && $project->status != 'doing') || (common::hasPriv($moduleName, 'activate') && $project->status != 'closed')) + { + $menu .= "
"; + $menu .= ""; + $menu .= ""; + $menu .= "
"; + } + + $from = $project->from == 'project' ? 'project' : 'pgmproject'; + $iframe = ($this->app->tab == 'program' || $project->model == 'kanban') ? 'iframe' : ''; + $onlyBody = ($this->app->tab == 'program' || $project->model == 'kanban') ? true : ''; + $dataApp = $this->config->systemMode == 'classic' ? "data-app=execution" : "data-app=project"; + $attr = $project->model == 'kanban' ? " disabled='disabled'" : ''; + + $menu .= $this->buildMenu($moduleName, 'edit', $params, $project, 'browse', 'edit', '', $iframe, $onlyBody, $dataApp); + + if($this->config->vision != 'lite') + { + $menu .= $this->buildMenu($moduleName, 'team', $params, $project, 'browse', 'group', '', '', '', $dataApp . $attr, $this->lang->execution->team); + if($this->config->systemMode == 'new') $menu .= $this->buildMenu('project', 'group', "$params&programID={$project->programID}", $project, 'browse', 'lock', '', '', '', $dataApp . $attr); + + if(common::hasPriv($moduleName, 'manageProducts') || common::hasPriv($moduleName, 'whitelist') || common::hasPriv($moduleName, 'delete')) + { + $menu .= "
"; + $menu .= ""; + $menu .= ""; + $menu .= "
"; + } + } + else + { + $menu .= $this->buildMenu($moduleName, 'team', $params, $project, 'browse', 'group', '', '', '', $dataApp, $this->lang->execution->team); + if($this->config->systemMode == 'new') $menu .= $this->buildMenu('project', 'whitelist', "$params&module=project&from=$from", $project, 'browse', 'shield-check', '', 'btn-action', '', $dataApp); + $menu .= $this->buildMenu($moduleName, "delete", $params, $project, 'browse', 'trash', 'hiddenwin', 'btn-action'); + } + + return $menu; + } } diff --git a/module/project/view/view.html.php b/module/project/view/view.html.php index 562956096c..8986fb8d76 100644 --- a/module/project/view/view.html.php +++ b/module/project/view/view.html.php @@ -96,25 +96,9 @@
- id"; - $browseLink = $this->session->projectList ? $this->session->projectList : inlink('browse'); - common::printBack($browseLink); - if(!$project->deleted) - { - echo "
"; - common::printIcon('project', 'start', "projectID=$project->id", $project, 'button', 'play', '', 'iframe', true, '', $lang->project->start); - common::printIcon('project', 'activate', "projectID=$project->id", $project, 'button', 'magic', '', 'iframe', true, '', $lang->project->activate); - common::printIcon('project', 'suspend', "projectID=$project->id", $project, 'button', 'pause', '', 'iframe', true, '', $lang->project->suspend); - common::printIcon('project', 'close', "projectID=$project->id", $project, 'button', 'off', '', 'iframe', true, '', $lang->close); - - echo $this->buildOperateMenu($project, 'view'); - - echo "
"; - common::printIcon('project', 'edit', $params . '&from=view', $project, 'button', 'edit', '', '', '', '', $lang->edit); - common::printIcon('project', 'delete', $params, $project, 'button', 'trash', 'hiddenwin', '', '', '', $lang->delete); - } - ?> + session->projectList ? $this->session->projectList : inlink('browse');?> + + buildOperateMenu($project, 'view');?>
diff --git a/module/task/model.php b/module/task/model.php index fca1b01bf0..7048674465 100644 --- a/module/task/model.php +++ b/module/task/model.php @@ -3399,20 +3399,7 @@ class taskModel extends model echo helper::isZeroDate($task->activatedDate) ? '' : substr($task->activatedDate, 5, 11); break; case 'actions': - if($storyChanged) - { - common::printIcon('task', 'confirmStoryChange', "taskid=$task->id", $task, 'list', '', 'hiddenwin'); - break; - } - - if($task->status != 'pause') common::printIcon('task', 'start', "taskID=$task->id", $task, 'list', '', '', 'iframe', true); - if($task->status == 'pause') common::printIcon('task', 'restart', "taskID=$task->id", $task, 'list', '', '', 'iframe', true); - common::printIcon('task', 'close', "taskID=$task->id", $task, 'list', '', '', 'iframe', true); - common::printIcon('task', 'finish', "taskID=$task->id", $task, 'list', '', '', 'iframe', true); - - common::printIcon('task', 'recordEstimate', "taskID=$task->id", $task, 'list', 'time', '', 'iframe', true); - common::printIcon('task', 'edit', "taskID=$task->id", $task, 'list'); - if($this->config->vision == 'rnd') common::printIcon('task', 'batchCreate', "execution=$task->execution&storyID=$task->story&moduleID=$task->module&taskID=$task->id&ifame=0", $task, 'list', 'split', '', '', '', '', $this->lang->task->children); + echo $this->buildOperateMenu($task, 'browse'); break; } echo ''; @@ -3535,4 +3522,86 @@ class taskModel extends model } return $members; } + + /** + * Build task menu. + * + * @param object $task + * @param string $type + * @access public + * @return string + */ + public function buildOperateMenu($task, $type = 'view') + { + $function = 'buildOperate' . ucfirst($type) . 'Menu'; + return $this->$function($task); + } + + /** + * Build task view menu. + * + * @param object $task + * @access public + * @return string + */ + public function buildOperateViewMenu($task) + { + if($task->deleted) return ''; + + $menu = ''; + $params = "taskID=$task->id"; + if((empty($task->team) || empty($task->children)) && $task->executionList->type != 'kanban') + { + $menu .= $this->buildMenu('task', 'batchCreate', "execution=$task->execution&storyID=$task->story&moduleID=$task->module&taskID=$task->id", $task, 'view', 'split', '', '', '', "title='{$this->lang->task->children}'", $this->lang->task->children); + } + $menu .= $this->buildMenu('task', 'assignTo', "executionID=$task->execution&taskID=$task->id", $task, 'button', '', '', 'iframe', true, '', empty($task->team) ? $this->lang->task->assignTo : $this->lang->task->transfer); + $menu .= $this->buildMenu('task', 'start', $params, $task, 'view', '', '', 'iframe showinonlybody', true); + $menu .= $this->buildMenu('task', 'restart', $params, $task, 'view', '', '', 'iframe showinonlybody', true); + $menu .= $this->buildMenu('task', 'recordEstimate', $params, $task, 'view', '', '', 'iframe showinonlybody', true); + $menu .= $this->buildMenu('task', 'pause', $params, $task, 'view', '', '', 'iframe showinonlybody', true); + $menu .= $this->buildMenu('task', 'finish', $params, $task, 'view', '', '', 'iframe showinonlybody text-success', true); + $menu .= $this->buildMenu('task', 'activate', $params, $task, 'view', '', '', 'iframe showinonlybody text-success', true); + $menu .= $this->buildMenu('task', 'close', $params, $task, 'view', '', '', 'iframe showinonlybody', true); + $menu .= $this->buildMenu('task', 'cancel', $params, $task, 'view', '', '', 'iframe showinonlybody', true); + + $menu .= "
"; + $menu .= $this->buildFlowMenu('task', $task, 'view', 'direct'); + $menu .= "
"; + + $menu .= $this->buildMenu('task', 'edit', $params, $task, 'view', '', '', 'showinonlybody'); + $menu .= $this->buildMenu('task', 'create', "projctID={$task->execution}&storyID=0&moduleID=0&taskID=$task->id", $task, 'view', 'copy'); + $menu .= $this->buildMenu('task', 'delete', "executionID=$task->execution&taskID=$task->id", $task, 'view', 'trash', 'hiddenwin', 'showinonlybody', true); + if($task->parent > 0) $menu .= $this->buildMenu('task', 'view', "taskID=$task->parent", $task, 'view', 'chevron-double-up', '', '', '', '', $this->lang->task->parent); + + return $menu; + } + + /** + * Build task browse action menu. + * + * @param object $task + * @access public + * @return string + */ + public function buildOperateBrowseMenu($task) + { + $menu = ''; + $params = "taskID=$task->id"; + + $storyChanged = !empty($task->storyStatus) && $task->storyStatus == 'active' && $task->latestStoryVersion > $task->storyVersion && !in_array($task->status, array('cancel', 'closed')); + if($storyChanged) return $this->buildMenu('task', 'confirmStoryChange', $params, $task, 'browse', '', 'hiddenwin'); + + if($task->status != 'pause') $menu .= $this->buildMenu('task', 'start', $params, $task, 'browse', '', '', 'iframe', true); + if($task->status == 'pause') $menu .= $this->buildMenu('task', 'restart', $params, $task, 'browse', '', '', 'iframe', true); + $menu .= $this->buildMenu('task', 'close', $params, $task, 'browse', '', '', 'iframe', true); + $menu .= $this->buildMenu('task', 'finish', $params, $task, 'browse', '', '', 'iframe', true); + $menu .= $this->buildMenu('task', 'recordEstimate', $params, $task, 'browse', 'time', '', 'iframe', true); + $menu .= $this->buildMenu('task', 'edit', $params, $task, 'browse'); + if($this->config->vision == 'rnd') + { + $menu .= $this->buildMenu('task', 'batchCreate', "execution=$task->execution&storyID=$task->story&moduleID=$task->module&taskID=$task->id&ifame=0", $task, 'browse', 'split', '', '', '', '', $this->lang->task->children); + } + + return $menu; + } } diff --git a/module/task/view/view.html.php b/module/task/view/view.html.php index b3b99dd751..8cab2c2c8e 100644 --- a/module/task/view/view.html.php +++ b/module/task/view/view.html.php @@ -169,28 +169,8 @@
";?> - deleted):?> - team) or empty($task->children)) and $execution->type != 'kanban') common::printIcon('task', 'batchCreate', "execution=$task->execution&storyID=$task->story&moduleID=$task->module&taskID=$task->id", $task, 'button', 'split', '', '', '', "title='{$lang->task->children}'", $lang->task->children); - common::printIcon('task', 'assignTo', "executionID=$task->execution&taskID=$task->id", $task, 'button', '', '', 'iframe', true, '', empty($task->team) ? $lang->task->assignTo : $lang->task->transfer); - common::printIcon('task', 'start', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody', true); - common::printIcon('task', 'restart', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody', true); - common::printIcon('task', 'recordEstimate', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody', true); - common::printIcon('task', 'pause', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody', true); - common::printIcon('task', 'finish', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody text-success', true); - common::printIcon('task', 'activate', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody text-success', true); - common::printIcon('task', 'close', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody', true); - common::printIcon('task', 'cancel', "taskID=$task->id", $task, 'button', '', '', 'iframe showinonlybody', true); - - echo $this->buildOperateMenu($task, 'view'); - - if(!isonlybody()) echo "
"; - common::printIcon('task', 'edit', "taskID=$task->id", $task, 'button', '', '', 'showinonlybody'); - common::printIcon('task', 'create', "projctID={$task->execution}&storyID=0&moduleID=0&taskID=$task->id", $task, 'button', 'copy'); - common::printIcon('task', 'delete', "executionID=$task->execution&taskID=$task->id", $task, 'button', 'trash', 'hiddenwin', 'showinonlybody', true); - if($task->parent > 0) echo html::a(helper::createLink('task', 'view', "taskID=$task->parent"), "", '', "class='btn btn-link' title='{$lang->task->parent}'"); - ?> - + executionList = $execution;?> + buildOperateMenu($task, 'view');?> diff --git a/module/testcase/model.php b/module/testcase/model.php index c77e6dd6ca..dfc14e2135 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -1169,15 +1169,16 @@ class testcaseModel extends model * * @param object $case * @param string $action + * @param string $module * @access public * @return void */ - public static function isClickable($case, $action) + public static function isClickable($case, $action, $module = 'testcase') { $action = strtolower($action); - if($action == 'createbug') return $case->caseFails > 0; - if($action == 'review') return isset($case->caseStatus) ? $case->caseStatus == 'wait' : $case->status == 'wait'; + if($module == 'testcase' && $action == 'createbug') return $case->caseFails > 0; + if($module == 'testcase' && $action == 'review') return isset($case->caseStatus) ? $case->caseStatus == 'wait' : $case->status == 'wait'; return true; }