From 10eebbd1365a834a3d406f8c2475cae79fc5bac2 Mon Sep 17 00:00:00 2001 From: lanzongjun Date: Tue, 17 May 2022 17:13:17 +0800 Subject: [PATCH] * fix bug #22570 --- framework/model.class.php | 5 ++++- module/caselib/model.php | 23 ++++++++++++----------- module/release/model.php | 3 ++- module/testtask/model.php | 23 ++++++++++++----------- 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/framework/model.class.php b/framework/model.class.php index c62d23a153..4ad058725c 100644 --- a/framework/model.class.php +++ b/framework/model.class.php @@ -65,11 +65,12 @@ class model extends baseModel * @param string $target * @param string $misc * @param bool $onlyBody + * @param bool $returnHtml * @access public * @return string */ - public function buildMenu($moduleName, $methodName, $params, $data, $type = 'view', $icon = '', $target = '', $class = '', $onlyBody = false, $misc = '' , $title = '') + public function buildMenu($moduleName, $methodName, $params, $data, $type = 'view', $icon = '', $target = '', $class = '', $onlyBody = false, $misc = '' , $title = '', $returnHtml = true) { if(strpos($moduleName, '.') !== false) list($appName, $moduleName) = explode('.', $moduleName); @@ -115,6 +116,8 @@ class model extends baseModel if(method_exists($this, 'isClickable')) $enabled = $this->isClickable($data, $method, $module); } + if(!$returnHtml) return $enabled; + $html = ''; $type = $type == 'browse' ? 'list' : 'button'; $html = common::buildIconButton($module, $method, $params, $data, $type, $icon, $target, $class, $onlyBody, $misc, $title, '', $enabled); diff --git a/module/caselib/model.php b/module/caselib/model.php index bbdd5e2ee2..bbcec964b7 100644 --- a/module/caselib/model.php +++ b/module/caselib/model.php @@ -597,10 +597,10 @@ class caselibModel extends model } /** - * Build case lib menu. - * - * @param object $object - * @param string $type + * Build case lib menu. + * + * @param object $object + * @param string $type * @access public * @return string */ @@ -611,9 +611,9 @@ class caselibModel extends model } /** - * Build case lib view menu. - * - * @param object $lib + * Build case lib view menu. + * + * @param object $lib * @access public * @return string */ @@ -632,9 +632,9 @@ class caselibModel extends model } /** - * Build case lib browse menu. - * - * @param object $case + * Build case lib browse menu. + * + * @param object $case * @access public * @return string */ @@ -648,7 +648,8 @@ class caselibModel extends model $menu .= $this->buildMenu('testcase', 'review', $params, $case, 'browse', 'glasses', '', 'iframe'); } $menu .= $this->buildMenu('testcase', 'edit', $params, $case, 'browse'); - if(common::hasPriv('testcase', 'delete')) + $deleteIconEnabled = $this->buildMenu('testcase', 'delete', $params, $case, 'browse', '', '', '', '', '', '', false); + if(common::hasPriv('testcase', 'delete') && $deleteIconEnabled) { $deleteURL = helper::createLink('testcase', 'delete', "$params&confirm=yes"); $menu .= html::a("javascript:ajaxDelete(\"$deleteURL\", \"caseList\", confirmDelete)", '', '', "title='{$this->lang->testcase->delete}' class='btn'"); diff --git a/module/release/model.php b/module/release/model.php index 1253044b8d..dec9366568 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -737,8 +737,9 @@ class releaseModel extends model $menu .= $this->buildMenu('release', 'changeStatus', "$params&status=$changedStatus", $release, 'browse', $release->status == 'normal' ? 'pause' : 'play', 'hiddenwin', '', '', '',$this->lang->release->changeStatusList[$changedStatus]); $menu .= $this->buildMenu('release', 'edit', "release=$release->id", $release, 'browse'); $menu .= $this->buildMenu('release', 'notify', "release=$release->id", $release, 'browse', 'bullhorn', '', 'iframe', true); + $deleteIconEnabled = $this->buildMenu('release', 'delete', "release=$release->id", $release, 'browse', '', '', '', '', '', '', false); - if(common::hasPriv('release', 'delete', $release)) + if(common::hasPriv('release', 'delete', $release) && $deleteIconEnabled) { $deleteURL = helper::createLink('release', 'delete', "releaseID=$release->id&confirm=yes"); $menu .= html::a("javascript:ajaxDelete(\"$deleteURL\", \"releaseList\", confirmDelete)", '', '', "class='btn' title='{$this->lang->release->delete}'"); diff --git a/module/testtask/model.php b/module/testtask/model.php index a216209699..bb54839c55 100644 --- a/module/testtask/model.php +++ b/module/testtask/model.php @@ -2168,10 +2168,10 @@ class testtaskModel extends model } /** - * Build test task menu. - * - * @param object $task - * @param string $type + * Build test task menu. + * + * @param object $task + * @param string $type * @access public * @return string */ @@ -2182,9 +2182,9 @@ class testtaskModel extends model } /** - * Build test task view menu. - * - * @param object $task + * Build test task view menu. + * + * @param object $task * @access public * @return string */ @@ -2208,14 +2208,14 @@ class testtaskModel extends model $menu .= $this->buildMenu('testtask', 'edit', $params, $task, 'view'); $menu .= $this->buildMenu('testtask', 'delete', $params, $task, 'view', 'trash', 'hiddenwin'); - + return $menu; } /** * Build test task browse menu. - * - * @param object $task + * + * @param object $task * @access public * @return string */ @@ -2231,7 +2231,8 @@ class testtaskModel extends model $menu .= ''; $menu .= $this->buildMenu('testtask', 'view', $params, $task, 'browse', 'list-alt', '', 'iframe', true, "data-width='90%'"); $menu .= $this->buildMenu('testtask', 'edit', $params, $task, 'browse'); - if(common::hasPriv('testtask', 'delete', $task)) + $deleteIconEnabled = $this->buildMenu('testtask', 'delete', $params, $task, 'browse', '', '', '', '', '', '', false); + if(common::hasPriv('testtask', 'delete', $task) && $deleteIconEnabled) { $deleteURL = helper::createLink('testtask', 'delete', "taskID=$task->id&confirm=yes"); $menu .= html::a("javascript:ajaxDelete(\"$deleteURL\",\"taskList\",confirmDelete)", '', '', "title='{$this->lang->testtask->delete}' class='btn'");