فهرست منبع

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.
woodsaj 10 سال پیش
والد
کامیت
f953033ba7
4فایلهای تغییر یافته به همراه20 افزوده شده و 6 حذف شده
  1. 3 0
      pkg/plugins/frontend_plugin.go
  2. 12 6
      pkg/plugins/models.go
  3. 1 0
      pkg/plugins/plugins_test.go
  4. 4 0
      tests/app-plugin-json/plugin.json

+ 3 - 0
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()
 }
 

+ 12 - 6
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

+ 1 - 0
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")
 	})
 
 }

+ 4 - 0
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"}