index.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/api/dtos"
  4. "github.com/grafana/grafana/pkg/middleware"
  5. "github.com/grafana/grafana/pkg/plugins"
  6. "github.com/grafana/grafana/pkg/setting"
  7. )
  8. func setIndexViewData(c *middleware.Context) error {
  9. settings, err := getFrontendSettingsMap(c)
  10. if err != nil {
  11. return err
  12. }
  13. currentUser := &dtos.CurrentUser{
  14. Id: c.UserId,
  15. IsSignedIn: c.IsSignedIn,
  16. Login: c.Login,
  17. Email: c.Email,
  18. Name: c.Name,
  19. LightTheme: c.Theme == "light",
  20. OrgId: c.OrgId,
  21. OrgName: c.OrgName,
  22. OrgRole: c.OrgRole,
  23. GravatarUrl: dtos.GetGravatarUrl(c.Email),
  24. IsGrafanaAdmin: c.IsGrafanaAdmin,
  25. }
  26. if setting.DisableGravatar {
  27. currentUser.GravatarUrl = setting.AppSubUrl + "/img/user_profile.png"
  28. }
  29. if len(currentUser.Name) == 0 {
  30. currentUser.Name = currentUser.Login
  31. }
  32. themeUrlParam := c.Query("theme")
  33. if themeUrlParam == "light" {
  34. currentUser.LightTheme = true
  35. }
  36. c.Data["User"] = currentUser
  37. c.Data["Settings"] = settings
  38. c.Data["AppUrl"] = setting.AppUrl
  39. c.Data["AppSubUrl"] = setting.AppSubUrl
  40. if setting.GoogleAnalyticsId != "" {
  41. c.Data["GoogleAnalyticsId"] = setting.GoogleAnalyticsId
  42. }
  43. if setting.GoogleTagManagerId != "" {
  44. c.Data["GoogleTagManagerId"] = setting.GoogleTagManagerId
  45. }
  46. externalPluginJs := make([]string, 0)
  47. externalPluginCss := make([]string, 0)
  48. externalPluginMenu := make([]*plugins.ExternalPluginMenuItem, 0)
  49. for _, plugin := range plugins.ExternalPlugins {
  50. for _, js := range plugin.Settings.Js {
  51. externalPluginJs = append(externalPluginJs, js.Src)
  52. }
  53. for _, css := range plugin.Settings.Css {
  54. externalPluginCss = append(externalPluginCss, css.Href)
  55. }
  56. for _, item := range plugin.Settings.MenuItems {
  57. externalPluginMenu = append(externalPluginMenu, item)
  58. }
  59. }
  60. c.Data["ExternalPluginJs"] = externalPluginJs
  61. c.Data["ExternalPluginCss"] = externalPluginCss
  62. c.Data["ExternalPluginMenu"] = externalPluginMenu
  63. return nil
  64. }
  65. func Index(c *middleware.Context) {
  66. if err := setIndexViewData(c); err != nil {
  67. c.Handle(500, "Failed to get settings", err)
  68. return
  69. }
  70. c.HTML(200, "index")
  71. }
  72. func NotFoundHandler(c *middleware.Context) {
  73. if c.IsApiRequest() {
  74. c.JsonApiErr(404, "Not found", nil)
  75. return
  76. }
  77. if err := setIndexViewData(c); err != nil {
  78. c.Handle(500, "Failed to get settings", err)
  79. return
  80. }
  81. c.HTML(404, "index")
  82. }