diff --git a/config/zentaopms.php b/config/zentaopms.php index 77f75c2dfb..01b1764ca2 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -291,6 +291,7 @@ $config->openMethods[] = 'instance.createexternalapp'; $config->openMethods[] = 'instance.editexternalapp'; $config->openMethods[] = 'instance.deleteexternalapp'; $config->openMethods[] = 'search.deletezinquery'; +$config->openMethods[] = 'space.edit'; $config->openModules = array(); $config->openModules[] = 'install'; diff --git a/framework/helper.class.php b/framework/helper.class.php index 90a6a3676f..4ac91fbb80 100644 --- a/framework/helper.class.php +++ b/framework/helper.class.php @@ -612,6 +612,7 @@ function initTableData(array $items, array &$fieldList, object $model = null): a if(count($item->actions) > $maxActionCount) $maxActionCount = count($item->actions); } if(isset($fieldList['actions'])) $fieldList['actions']['minWidth'] = $maxActionCount * 24 + 24; + if($fieldList['actions']['minWidth'] < 48) $fieldList['actions']['minWidth'] = 48; return array_values($items); } @@ -711,7 +712,7 @@ function initItemActions(object &$item, string $actionMenu, array $actionList, o } } - if(!$isClickable && (!$method || !common::hasPriv($module, $method))) return $isClickable; + if(!$method || !common::hasPriv($module, $method)) return $isClickable; $item->actions[] = array('name' => $action, 'disabled' => !$isClickable); diff --git a/module/common/model.php b/module/common/model.php index dbbe6c2ec5..f6cc206a5b 100644 --- a/module/common/model.php +++ b/module/common/model.php @@ -2631,6 +2631,9 @@ EOF; /* Check the parent object is closed. */ if(!empty($method) and strpos('close|batchclose', $method) === false and !commonModel::canBeChanged($module, $object)) return false; + /* Check the method is openMethod. */ + if(in_array("$module.$method", $config->openMethods)) return true; + /* Check is the super admin or not. */ if(!empty($app->user->admin) or strpos($app->company->admins, ",{$app->user->account},") !== false) return true; diff --git a/module/instance/config.php b/module/instance/config.php index 87b5aa9947..e9496926a2 100644 --- a/module/instance/config.php +++ b/module/instance/config.php @@ -21,25 +21,25 @@ $config->instance->enableAutoRestore = in_array('auto-rollback', $features); global $lang, $app; $app->loadLang('space'); -$config->instance->actionList['start']['icon'] = 'play'; -$config->instance->actionList['start']['className'] = 'ajax-submit'; -$config->instance->actionList['start']['hint'] = $lang->instance->start; -$config->instance->actionList['start']['text'] = $lang->instance->start; -$config->instance->actionList['start']['url'] = array('module' => 'instance', 'method' => 'ajaxStart', 'params' => 'id={id}'); +$config->instance->actionList['ajaxStart']['icon'] = 'play'; +$config->instance->actionList['ajaxStart']['className'] = 'ajax-submit'; +$config->instance->actionList['ajaxStart']['hint'] = $lang->instance->start; +$config->instance->actionList['ajaxStart']['text'] = $lang->instance->start; +$config->instance->actionList['ajaxStart']['url'] = array('module' => 'instance', 'method' => 'ajaxStart', 'params' => 'id={id}'); -$config->instance->actionList['stop']['icon'] = 'off'; -$config->instance->actionList['stop']['className'] = 'ajax-submit'; -$config->instance->actionList['stop']['hint'] = $lang->instance->stop; -$config->instance->actionList['stop']['text'] = $lang->instance->stop; -$config->instance->actionList['stop']['data-confirm'] = $lang->instance->notices['confirmStop']; +$config->instance->actionList['ajaxStop']['icon'] = 'off'; +$config->instance->actionList['ajaxStop']['className'] = 'ajax-submit'; +$config->instance->actionList['ajaxStop']['hint'] = $lang->instance->stop; +$config->instance->actionList['ajaxStop']['text'] = $lang->instance->stop; +$config->instance->actionList['ajaxStop']['data-confirm'] = $lang->instance->notices['confirmStop']; $config->instance->actionList['stop']['url'] = array('module' => 'instance', 'method' => 'ajaxStop', 'params' => 'id={id}'); -$config->instance->actionList['uninstall']['icon'] = 'trash'; -$config->instance->actionList['uninstall']['hint'] = $lang->instance->uninstall; -$config->instance->actionList['uninstall']['text'] = $lang->instance->uninstall; -$config->instance->actionList['uninstall']['className'] = 'ajax-submit'; -$config->instance->actionList['uninstall']['data-confirm'] = $lang->instance->notices['confirmUninstall']; -$config->instance->actionList['uninstall']['url'] = array('module' => 'instance', 'method' => 'ajaxUninstall', 'params' => 'id={id}'); +$config->instance->actionList['ajaxUninstall']['icon'] = 'trash'; +$config->instance->actionList['ajaxUninstall']['hint'] = $lang->instance->uninstall; +$config->instance->actionList['ajaxUninstall']['text'] = $lang->instance->uninstall; +$config->instance->actionList['ajaxUninstall']['className'] = 'ajax-submit'; +$config->instance->actionList['ajaxUninstall']['data-confirm'] = $lang->instance->notices['confirmUninstall']; +$config->instance->actionList['ajaxUninstall']['url'] = array('module' => 'instance', 'method' => 'ajaxUninstall', 'params' => 'id={id}'); $config->instance->actionList['visit']['icon'] = 'menu-my'; $config->instance->actionList['visit']['hint'] = $lang->instance->visit; @@ -56,7 +56,7 @@ $config->instance->actionList['upgrade']['url'] = helper::createLink('in $config->instance->actions = new stdclass(); $config->instance->actions->view = array(); -$config->instance->actions->view['mainActions'] = array('visit', 'start', 'stop', 'upgrade'); -$config->instance->actions->view['suffixActions'] = array('uninstall'); +$config->instance->actions->view['mainActions'] = array('visit', 'ajaxStart', 'ajaxStop', 'upgrade'); +$config->instance->actions->view['suffixActions'] = array('ajaxUninstall'); $config->instance->devopsApps = array(89 => 'gitea', 58 => 'gitlab', 59 => 'jenkins', 60 => 'sonarqube', 118 => 'nexus'); diff --git a/module/instance/model.php b/module/instance/model.php index e4ff8c0a0a..b30eb38fa3 100644 --- a/module/instance/model.php +++ b/module/instance/model.php @@ -2049,13 +2049,13 @@ class InstanceModel extends model return false; } - if($action == 'start') return $this->canDo('start', $instance) && commonModel::hasPriv('instance', 'ajaxStart'); - if($action == 'stop') return $this->canDo('stop', $instance) && commonModel::hasPriv('instance', 'ajaxStop'); - if($action == 'ajaxUninstall') return $this->canDo('uninstall', $instance) && commonModel::hasPriv('instance', 'ajaxUninstall'); - if($action == 'visit') return !empty($instance->domain) && $this->canDo('visit', $instance) && commonModel::hasPriv('instance', 'visit'); - if($action == 'upgrade') return !empty($instance->latestVersion) && commonModel::hasPriv('instance', 'upgrade'); - if($action == 'edit') return false; - if($action == 'bindUser') return false; + if($action == 'ajaxStart') return $this->canDo('start', $instance); + if($action == 'ajaxStop') return $this->canDo('stop', $instance); + if($action == 'ajaxUninstall') return $this->canDo('uninstall', $instance); + if($action == 'visit') return !empty($instance->domain) && $this->canDo('visit', $instance); + if($action == 'upgrade') return !empty($instance->latestVersion); + if($action == 'edit') return false; + if($action == 'bindUser') return false; return true; } diff --git a/module/space/config/dtable.php b/module/space/config/dtable.php index 82f1cfef90..1b6ce6c314 100644 --- a/module/space/config/dtable.php +++ b/module/space/config/dtable.php @@ -35,25 +35,25 @@ $config->space->dtable->fieldList['createdAt']['type'] = 'datetime'; $config->space->dtable->fieldList['createdAt']['group'] = 'created'; $config->space->dtable->fieldList['actions']['type'] = 'actions'; -$config->space->dtable->fieldList['actions']['menu'] = array('visit', 'start|stop', 'edit', 'bindUser', 'uninstall', 'upgrade'); +$config->space->dtable->fieldList['actions']['menu'] = array('visit', 'ajaxStart|ajaxStop', 'edit', 'bindUser', 'ajaxUninstall', 'upgrade'); if(!$config->inQuickon) $config->space->dtable->fieldList['actions']['menu'] = array('visit', 'edit', 'bindUser'); -$config->space->dtable->fieldList['actions']['list']['start']['icon'] = 'play'; -$config->space->dtable->fieldList['actions']['list']['start']['className'] = 'ajax-submit'; -$config->space->dtable->fieldList['actions']['list']['start']['hint'] = $lang->instance->start; -$config->space->dtable->fieldList['actions']['list']['start']['url'] = helper::createLink('instance', 'ajaxStart', "id={id}"); +$config->space->dtable->fieldList['actions']['list']['ajaxStart']['icon'] = 'play'; +$config->space->dtable->fieldList['actions']['list']['ajaxStart']['className'] = 'ajax-submit'; +$config->space->dtable->fieldList['actions']['list']['ajaxStart']['hint'] = $lang->instance->start; +$config->space->dtable->fieldList['actions']['list']['ajaxStart']['url'] = array('module' => 'instance', 'method' => 'ajaxStart', 'params' => "id={id}"); -$config->space->dtable->fieldList['actions']['list']['stop']['icon'] = 'off'; -$config->space->dtable->fieldList['actions']['list']['stop']['className'] = 'ajax-submit'; -$config->space->dtable->fieldList['actions']['list']['stop']['hint'] = $lang->instance->stop; -$config->space->dtable->fieldList['actions']['list']['stop']['url'] = helper::createLink('instance', 'ajaxStop', "id={id}"); -$config->space->dtable->fieldList['actions']['list']['stop']['data-confirm'] = $lang->instance->notices['confirmStop']; +$config->space->dtable->fieldList['actions']['list']['ajaxStop']['icon'] = 'off'; +$config->space->dtable->fieldList['actions']['list']['ajaxStop']['className'] = 'ajax-submit'; +$config->space->dtable->fieldList['actions']['list']['ajaxStop']['hint'] = $lang->instance->stop; +$config->space->dtable->fieldList['actions']['list']['ajaxStop']['url'] = array('module' => 'instance', 'method' => 'ajaxStop', 'params' => "id={id}"); +$config->space->dtable->fieldList['actions']['list']['ajaxStop']['data-confirm'] = $lang->instance->notices['confirmStop']; -$config->space->dtable->fieldList['actions']['list']['uninstall']['icon'] = 'trash'; -$config->space->dtable->fieldList['actions']['list']['uninstall']['hint'] = $lang->instance->uninstall; -$config->space->dtable->fieldList['actions']['list']['uninstall']['className'] = 'ajax-submit'; -$config->space->dtable->fieldList['actions']['list']['uninstall']['data-confirm'] = $lang->instance->notices['confirmUninstall']; -$config->space->dtable->fieldList['actions']['list']['uninstall']['url'] = array('module' => 'instance', 'method' => 'ajaxUninstall', 'params' => 'id={orgID}&type={type}'); +$config->space->dtable->fieldList['actions']['list']['ajaxUninstall']['icon'] = 'trash'; +$config->space->dtable->fieldList['actions']['list']['ajaxUninstall']['hint'] = $lang->instance->uninstall; +$config->space->dtable->fieldList['actions']['list']['ajaxUninstall']['className'] = 'ajax-submit'; +$config->space->dtable->fieldList['actions']['list']['ajaxUninstall']['data-confirm'] = $lang->instance->notices['confirmUninstall']; +$config->space->dtable->fieldList['actions']['list']['ajaxUninstall']['url'] = array('module' => 'instance', 'method' => 'ajaxUninstall', 'params' => 'id={orgID}&type={type}'); $config->space->dtable->fieldList['actions']['list']['visit']['icon'] = 'menu-my'; $config->space->dtable->fieldList['actions']['list']['visit']['hint'] = $lang->instance->visit; @@ -64,7 +64,7 @@ $config->space->dtable->fieldList['actions']['list']['upgrade']['icon'] = $config->space->dtable->fieldList['actions']['list']['upgrade']['data-toggle'] = 'modal'; $config->space->dtable->fieldList['actions']['list']['upgrade']['data-size'] = 'sm'; $config->space->dtable->fieldList['actions']['list']['upgrade']['hint'] = $lang->space->upgrade; -$config->space->dtable->fieldList['actions']['list']['upgrade']['url'] = helper::createLink('instance', 'upgrade', "id={id}"); +$config->space->dtable->fieldList['actions']['list']['upgrade']['url'] = array('module' => 'instance', 'method' => 'upgrade', 'params' => "id={id}"); $config->space->dtable->fieldList['actions']['list']['edit']['icon'] = 'edit'; $config->space->dtable->fieldList['actions']['list']['edit']['hint'] = $lang->edit;