AppPlugins: Options to disable showing config page in nav (#31354)

* AppPlugins: Options to disable showing config page in nav

* rename

* Added autoEnabled

* updated

* Things are working sort of

* Simplify
This commit is contained in:
Torkel Ödegaard 2021-02-25 10:00:21 +01:00 committed by GitHub
parent df3d84f161
commit 584886fa46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 19 additions and 13 deletions

View File

@ -122,6 +122,10 @@
"hiddenQueries": {
"type": "boolean"
},
"autoEnabled": {
"type": "boolean",
"description": "Set to true for app plugins that should be enabled by default in all orgs"
},
"dependencies": {
"type": "object",
"description": "Dependencies needed by the plugin.",

View File

@ -128,6 +128,7 @@ func (hs *HTTPServer) getFrontendSettingsMap(c *models.ReqContext) (map[string]i
if err != nil {
return nil, err
}
pluginsToPreload := []string{}
for _, app := range enabledPlugins.Apps {
if app.Preload {

View File

@ -117,13 +117,6 @@ func getAppLinks(c *models.ReqContext) ([]*dtos.NavLink, error) {
}
}
if len(appLink.Children) > 0 && c.OrgRole == models.ROLE_ADMIN {
appLink.Children = append(appLink.Children, &dtos.NavLink{Divider: true})
appLink.Children = append(appLink.Children, &dtos.NavLink{
Text: "Plugin Config", Icon: "cog", Url: setting.AppSubUrl + "/plugins/" + plugin.Id + "/",
})
}
if len(appLink.Children) > 0 {
appLinks = append(appLinks, appLink)
}

View File

@ -169,6 +169,11 @@ func GetPluginSettingByID(c *models.ReqContext) response.Response {
SignatureOrg: def.SignatureOrg,
}
if app, ok := plugins.Apps[def.Id]; ok {
dto.Enabled = app.AutoEnabled
dto.Pinned = app.AutoEnabled
}
query := models.GetPluginSettingByIdQuery{PluginId: pluginID, OrgId: c.OrgId}
if err := bus.Dispatch(&query); err != nil {
if !errors.Is(err, models.ErrPluginSettingNotFound) {

View File

@ -15,7 +15,8 @@ import (
type AppPlugin struct {
FrontendPluginBase
Routes []*AppPluginRoute `json:"routes"`
Routes []*AppPluginRoute `json:"routes"`
AutoEnabled bool `json:"autoEnabled"`
FoundChildPlugins []*PluginInclude `json:"-"`
Pinned bool `json:"-"`

View File

@ -30,9 +30,10 @@ func GetPluginSettings(orgId int64) (map[string]*models.PluginSettingInfoDTO, er
Enabled: true,
}
// apps are disabled by default
if pluginDef.Type == PluginTypeApp {
opt.Enabled = false
// apps are disabled by default unless autoEnabled: true
if app, exists := Apps[pluginDef.Id]; exists {
opt.Enabled = app.AutoEnabled
opt.Pinned = app.AutoEnabled
}
// if it's included in app check app settings

View File

@ -400,7 +400,7 @@ function getPluginTabsNav(
if (plugin.angularConfigCtrl) {
pages.push({
text: 'Config',
icon: 'gicon gicon-cog',
icon: 'cog',
url: `${appSubUrl}${path}?page=${PAGE_ID_CONFIG_CTRL}`,
id: PAGE_ID_CONFIG_CTRL,
});
@ -426,7 +426,7 @@ function getPluginTabsNav(
if (find(meta.includes, { type: PluginIncludeType.dashboard })) {
pages.push({
text: 'Dashboards',
icon: 'gicon gicon-dashboard',
icon: 'apps',
url: `${appSubUrl}${path}?page=${PAGE_ID_DASHBOARDS}`,
id: PAGE_ID_DASHBOARDS,
});

View File

@ -38,6 +38,7 @@ export class AppPageCtrl {
this.navModel = this.navModelSrv.getNotFoundNav();
return;
}
if (app.type !== 'app' || !app.enabled) {
this.$rootScope.appEvent(AppEvents.alertError, ['Application Not Enabled']);
this.navModel = this.navModelSrv.getNotFoundNav();