frontend_plugin.go 1002 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package plugins
  2. import (
  3. "net/url"
  4. "path"
  5. )
  6. type FrontendPluginBase struct {
  7. PluginBase
  8. Module string `json:"module"`
  9. StaticRoot string `json:"staticRoot"`
  10. }
  11. func (fp *FrontendPluginBase) initFrontendPlugin() {
  12. if fp.StaticRoot != "" {
  13. StaticRoutes = append(StaticRoutes, &PluginStaticRoute{
  14. Directory: fp.StaticRoot,
  15. PluginId: fp.Id,
  16. })
  17. }
  18. fp.Info.Logos.Small = evalRelativePluginUrlPath(fp.Info.Logos.Small, fp.Id)
  19. fp.Info.Logos.Large = evalRelativePluginUrlPath(fp.Info.Logos.Large, fp.Id)
  20. fp.handleModuleDefaults()
  21. }
  22. func (fp *FrontendPluginBase) handleModuleDefaults() {
  23. if fp.Module != "" {
  24. return
  25. }
  26. if fp.StaticRoot != "" {
  27. fp.Module = path.Join("plugins", fp.Type, fp.Id, "module")
  28. return
  29. }
  30. fp.Module = path.Join("app/plugins", fp.Type, fp.Id, "module")
  31. }
  32. func evalRelativePluginUrlPath(pathStr string, pluginId string) string {
  33. u, _ := url.Parse(pathStr)
  34. if u.IsAbs() {
  35. return pathStr
  36. }
  37. return path.Join("public/plugins", pluginId, pathStr)
  38. }