diff --git a/module/caselib/config.php b/module/caselib/config.php index a90ffcfd81..67a66b89b2 100644 --- a/module/caselib/config.php +++ b/module/caselib/config.php @@ -34,3 +34,6 @@ $config->caselib->actionList['delete']['className'] = 'ajax-submit'; $config->caselib->actionList['delete']['data-confirm'] = array('message' => $lang->caselib->libraryDelete, 'icon' => 'icon-exclamation-sign', 'iconClass' => 'warning-pale rounded-full icon-2x'); $config->caselib->exportTemplateFields = array('module', 'title', 'precondition', 'stepDesc', 'stepExpect', 'keywords', 'pri', 'type', 'stage'); + +$config->caselib->actions = new stdclass(); +$config->caselib->actions->view['mainActions'] = array('edit', 'delete'); diff --git a/module/caselib/model.php b/module/caselib/model.php index 22cc996607..e6045e2140 100644 --- a/module/caselib/model.php +++ b/module/caselib/model.php @@ -317,4 +317,18 @@ class caselibModel extends model return true; } + + /** + * 判断操作是否可以点击。 + * Judge an action is clickable or not. + * + * @param object $lib + * @param string $action + * @access public + * @return bool + */ + public function isClickable(object $lib, string $action): bool + { + return common::hasPriv('caselib', $action); + } } diff --git a/module/caselib/test/model/isclickable.php b/module/caselib/test/model/isclickable.php new file mode 100644 index 0000000000..37fb884f93 --- /dev/null +++ b/module/caselib/test/model/isclickable.php @@ -0,0 +1,27 @@ +#!/usr/bin/env php +isClickable(); +cid=1 + +- 测试操作为空时,是否可点击 @1 +- 测试操作为编辑时,是否可点击 @1 +- 测试操作为删除时,是否可点击 @1 +- 测试操作为不存在时,是否可点击 @1 + +*/ + +su('admin'); + +$lib = new stdclass(); +$actions = array('', 'edit', 'delete', 'test'); + +global $tester; +$caselibModel = $tester->loadModel('caselib'); +r($caselibModel->isClickable($lib, $actions[0])) && p() && e('1'); // 测试操作为空时,是否可点击 +r($caselibModel->isClickable($lib, $actions[1])) && p() && e('1'); // 测试操作为编辑时,是否可点击 +r($caselibModel->isClickable($lib, $actions[2])) && p() && e('1'); // 测试操作为删除时,是否可点击 +r($caselibModel->isClickable($lib, $actions[3])) && p() && e('1'); // 测试操作为不存在时,是否可点击 diff --git a/module/caselib/ui/view.html.php b/module/caselib/ui/view.html.php index 3c400b21db..da06c56f25 100644 --- a/module/caselib/ui/view.html.php +++ b/module/caselib/ui/view.html.php @@ -19,13 +19,7 @@ detailHeader to::title(entityLabel(set(array('entityID' => $lib->id, 'level' => 1, 'text' => $lib->name)))) ); -$commonActions = array(); -foreach($config->caselib->actionList as $operate => $settings) -{ - if(!common::hasPriv('caselib', $operate)) continue; - - $commonActions[] = $settings; -} +$commonActions = $this->loadModel('common')->buildOperateMenu($lib); detailBody ( sectionList @@ -44,7 +38,7 @@ detailBody ( array(array('icon' => 'back', 'text' => $lang->goback, 'url' => 'javascript:goBack("execution-task", "execution-task")')) ) : '', - set::suffix($commonActions), + set::suffix($commonActions['mainActions']), set::object($lib) ) );