From f953033ba7e1ea2ee7c370ae0546c63da0d445b6 Mon Sep 17 00:00:00 2001 From: woodsaj Date: Tue, 9 Feb 2016 22:36:42 +0800 Subject: [PATCH] add support for screenshots in plugins. Allow plugin creators to include screenshots of their plugin in action. Primarily for use in Grafana.net info pages. --- pkg/plugins/frontend_plugin.go | 3 +++ pkg/plugins/models.go | 18 ++++++++++++------ pkg/plugins/plugins_test.go | 1 + tests/app-plugin-json/plugin.json | 4 ++++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/pkg/plugins/frontend_plugin.go b/pkg/plugins/frontend_plugin.go index 3dd26a78ea5..d65da9a6e96 100644 --- a/pkg/plugins/frontend_plugin.go +++ b/pkg/plugins/frontend_plugin.go @@ -24,6 +24,9 @@ func (fp *FrontendPluginBase) initFrontendPlugin() { fp.Info.Logos.Small = evalRelativePluginUrlPath(fp.Info.Logos.Small, fp.Id) fp.Info.Logos.Large = evalRelativePluginUrlPath(fp.Info.Logos.Large, fp.Id) + for i := -0; i < len(fp.Info.Screenshots); i++ { + fp.Info.Screenshots[i].Path = evalRelativePluginUrlPath(fp.Info.Screenshots[i].Path, fp.Id) + } fp.handleModuleDefaults() } diff --git a/pkg/plugins/models.go b/pkg/plugins/models.go index 55ba8f97767..f45b3718a67 100644 --- a/pkg/plugins/models.go +++ b/pkg/plugins/models.go @@ -19,12 +19,13 @@ type PluginBase struct { } type PluginInfo struct { - Author PluginInfoLink `json:"author"` - Description string `json:"description"` - Links []PluginInfoLink `json:"links"` - Logos PluginLogos `json:"logos"` - Version string `json:"version"` - Updated string `json:"updated"` + Author PluginInfoLink `json:"author"` + Description string `json:"description"` + Links []PluginInfoLink `json:"links"` + Logos PluginLogos `json:"logos"` + Screenshots []PluginScreenshots `json:"screenshots"` + Version string `json:"version"` + Updated string `json:"updated"` } type PluginInfoLink struct { @@ -37,6 +38,11 @@ type PluginLogos struct { Large string `json:"large"` } +type PluginScreenshots struct { + Path string `json:"path"` + Name string `json:"name"` +} + type PluginStaticRoute struct { Directory string PluginId string diff --git a/pkg/plugins/plugins_test.go b/pkg/plugins/plugins_test.go index 1808f72ec0d..08ff3cbdfdd 100644 --- a/pkg/plugins/plugins_test.go +++ b/pkg/plugins/plugins_test.go @@ -34,6 +34,7 @@ func TestPluginScans(t *testing.T) { So(err, ShouldBeNil) So(len(Apps), ShouldBeGreaterThan, 0) So(Apps["app-example"].Info.Logos.Large, ShouldEqual, "public/plugins/app-example/img/logo_large.png") + So(Apps["app-example"].Info.Screenshots[1].Path, ShouldEqual, "public/plugins/app-example/img/screenshot2.png") }) } diff --git a/tests/app-plugin-json/plugin.json b/tests/app-plugin-json/plugin.json index 986f28c7e99..daae71ca6e3 100644 --- a/tests/app-plugin-json/plugin.json +++ b/tests/app-plugin-json/plugin.json @@ -26,6 +26,10 @@ "small": "img/logo_small.png", "large": "img/logo_large.png" }, + "screenshots": [ + {"name": "img1", "path": "img/screenshot1.png"}, + {"name": "img2", "path": "img/screenshot2.png"} + ], "links": [ {"name": "Project site", "url": "http://project.com"}, {"name": "License & Terms", "url": "http://license.com"}