diff --git a/pkg/api/index.go b/pkg/api/index.go index 4668e58a805..a800635e161 100644 --- a/pkg/api/index.go +++ b/pkg/api/index.go @@ -2,6 +2,7 @@ package api import ( "fmt" + "path" "sort" "strings" @@ -80,7 +81,7 @@ func (hs *HTTPServer) getAppLinks(c *models.ReqContext) ([]*dtos.NavLink, error) appLink := &dtos.NavLink{ Text: plugin.Name, Id: "plugin-page-" + plugin.ID, - Url: plugin.DefaultNavURL, + Url: path.Join(hs.Cfg.AppSubURL, plugin.DefaultNavURL), Img: plugin.Info.Logos.Small, SortWeight: dtos.WeightPlugin, } diff --git a/pkg/api/plugins.go b/pkg/api/plugins.go index f0293470579..0a427d9135e 100644 --- a/pkg/api/plugins.go +++ b/pkg/api/plugins.go @@ -10,6 +10,7 @@ import ( "net/http" "net/url" "os" + "path" "path/filepath" "sort" "strings" @@ -73,7 +74,7 @@ func (hs *HTTPServer) GetPluginList(c *models.ReqContext) response.Response { Category: pluginDef.Category, Info: pluginDef.Info, Dependencies: pluginDef.Dependencies, - DefaultNavUrl: pluginDef.DefaultNavURL, + DefaultNavUrl: path.Join(hs.Cfg.AppSubURL, pluginDef.DefaultNavURL), State: pluginDef.State, Signature: pluginDef.Signature, SignatureType: pluginDef.SignatureType, @@ -129,7 +130,7 @@ func (hs *HTTPServer) GetPluginSettingByID(c *models.ReqContext) response.Respon Includes: plugin.Includes, BaseUrl: plugin.BaseURL, Module: plugin.Module, - DefaultNavUrl: plugin.DefaultNavURL, + DefaultNavUrl: path.Join(hs.Cfg.AppSubURL, plugin.DefaultNavURL), State: plugin.State, Signature: plugin.Signature, SignatureType: plugin.SignatureType, diff --git a/pkg/plugins/config.go b/pkg/plugins/config.go index e25f18066e2..73f7c76c675 100644 --- a/pkg/plugins/config.go +++ b/pkg/plugins/config.go @@ -24,7 +24,6 @@ type Cfg struct { CheckForUpdates bool BuildVersion string // TODO Remove - AppSubURL string // TODO Remove } func NewCfg() *Cfg { @@ -51,7 +50,6 @@ func FromGrafanaCfg(grafanaCfg *setting.Cfg) *Cfg { cfg.CheckForUpdates = grafanaCfg.CheckForUpdates cfg.BuildVersion = grafanaCfg.BuildVersion - cfg.AppSubURL = grafanaCfg.AppSubURL return cfg } diff --git a/pkg/plugins/manager/loader/loader.go b/pkg/plugins/manager/loader/loader.go index db4e36e674f..f906a9572f2 100644 --- a/pkg/plugins/manager/loader/loader.go +++ b/pkg/plugins/manager/loader/loader.go @@ -161,7 +161,7 @@ func (l *Loader) loadPlugins(ctx context.Context, class plugins.Class, pluginJSO } if plugin.IsApp() { - setDefaultNavURL(plugin, l.cfg.AppSubURL) + setDefaultNavURL(plugin) } if plugin.Parent != nil && plugin.Parent.IsApp() { @@ -255,17 +255,22 @@ func setImages(p *plugins.Plugin) { } } -func setDefaultNavURL(p *plugins.Plugin, appSubURL string) { +func setDefaultNavURL(p *plugins.Plugin) { // slugify pages for _, include := range p.Includes { if include.Slug == "" { include.Slug = slug.Make(include.Name) } - if include.Type == "page" && include.DefaultNav { - p.DefaultNavURL = appSubURL + "/plugins/" + p.ID + "/page/" + include.Slug + + if !include.DefaultNav { + continue } - if include.Type == "dashboard" && include.DefaultNav { - p.DefaultNavURL = appSubURL + "/dashboard/db/" + include.Slug + + if include.Type == "page" { + p.DefaultNavURL = path.Join("/plugins/", p.ID, "/page/", include.Slug) + } + if include.Type == "dashboard" { + p.DefaultNavURL = path.Join("/dashboard/db/", include.Slug) } } } diff --git a/pkg/plugins/plugins.go b/pkg/plugins/plugins.go index b87ab09865f..2a1f3042009 100644 --- a/pkg/plugins/plugins.go +++ b/pkg/plugins/plugins.go @@ -72,7 +72,7 @@ func (p PluginDTO) SupportsStreaming() bool { } func (p PluginDTO) IsApp() bool { - return p.Type == "app" + return p.Type == App } func (p PluginDTO) IsCorePlugin() bool {