diff --git a/pkg/api/index.go b/pkg/api/index.go index 7f484ecf555..e1f56ffa1cd 100644 --- a/pkg/api/index.go +++ b/pkg/api/index.go @@ -136,19 +136,7 @@ func (hs *HTTPServer) getNavTree(c *models.ReqContext, hasEditPerm bool) ([]*dto navTree := []*dtos.NavLink{} if hasEditPerm { - children := []*dtos.NavLink{ - {Text: "Dashboard", Icon: "apps", Url: hs.Cfg.AppSubURL + "/dashboard/new"}, - } - if c.OrgRole == models.ROLE_ADMIN || c.OrgRole == models.ROLE_EDITOR { - children = append(children, &dtos.NavLink{ - Text: "Folder", SubTitle: "Create a new folder to organize your dashboards", Id: "folder", - Icon: "folder-plus", Url: hs.Cfg.AppSubURL + "/dashboards/folder/new", - }) - } - children = append(children, &dtos.NavLink{ - Text: "Import", SubTitle: "Import dashboard from file or Grafana.com", Id: "import", Icon: "import", - Url: hs.Cfg.AppSubURL + "/dashboard/import", - }) + children := hs.buildCreateNavLinks(c) navTree = append(navTree, &dtos.NavLink{ Text: "Create", Id: "create", @@ -376,6 +364,30 @@ func (hs *HTTPServer) getNavTree(c *models.ReqContext, hasEditPerm bool) ([]*dto return navTree, nil } +func (hs *HTTPServer) buildCreateNavLinks(c *models.ReqContext) []*dtos.NavLink { + children := []*dtos.NavLink{ + {Text: "Dashboard", Icon: "apps", Url: hs.Cfg.AppSubURL + "/dashboard/new"}, + } + if c.OrgRole == models.ROLE_ADMIN || c.OrgRole == models.ROLE_EDITOR { + children = append(children, &dtos.NavLink{ + Text: "Folder", SubTitle: "Create a new folder to organize your dashboards", Id: "folder", + Icon: "folder-plus", Url: hs.Cfg.AppSubURL + "/dashboards/folder/new", + }) + } + children = append(children, &dtos.NavLink{ + Text: "Import", SubTitle: "Import dashboard from file or Grafana.com", Id: "import", Icon: "import", + Url: hs.Cfg.AppSubURL + "/dashboard/import", + }) + if setting.AlertingEnabled || hs.Cfg.UnifiedAlerting.Enabled { + children = append(children, &dtos.NavLink{ + Text: "Alert rule", SubTitle: "Create an alert rule", Id: "alert", + Icon: "bell", Url: hs.Cfg.AppSubURL + "/alerting/new", + }) + } + + return children +} + func (hs *HTTPServer) buildAdminNavLinks(c *models.ReqContext) []*dtos.NavLink { hasAccess := ac.HasAccess(hs.AccessControl, c) adminNavLinks := []*dtos.NavLink{}