From f3fb178efa95ef227fff7b5d6d2a4e5aaa37b9e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Fri, 2 Aug 2019 14:02:59 +0200 Subject: [PATCH] Navigation: Fixed double settings menus (#18349) --- pkg/api/index.go | 161 +++++++++++++++++------------------------------ 1 file changed, 58 insertions(+), 103 deletions(-) diff --git a/pkg/api/index.go b/pkg/api/index.go index 7a597ba90ae..3f5018f14e7 100644 --- a/pkg/api/index.go +++ b/pkg/api/index.go @@ -242,93 +242,69 @@ func (hs *HTTPServer) setIndexViewData(c *m.ReqContext) (*dtos.IndexViewData, er } } - if c.IsGrafanaAdmin || c.OrgRole == m.ROLE_ADMIN { - cfgNode := &dtos.NavLink{ - Id: "cfg", - Text: "Configuration", - SubTitle: "Organization: " + c.OrgName, - Icon: "gicon gicon-cog", - Url: setting.AppSubUrl + "/datasources", - Children: []*dtos.NavLink{ - { - Text: "Data Sources", - Icon: "gicon gicon-datasources", - Description: "Add and configure data sources", - Id: "datasources", - Url: setting.AppSubUrl + "/datasources", - }, - { - Text: "Users", - Id: "users", - Description: "Manage org members", - Icon: "gicon gicon-user", - Url: setting.AppSubUrl + "/org/users", - }, - { - Text: "Teams", - Id: "teams", - Description: "Manage org groups", - Icon: "gicon gicon-team", - Url: setting.AppSubUrl + "/org/teams", - }, - { - Text: "Plugins", - Id: "plugins", - Description: "View and configure plugins", - Icon: "gicon gicon-plugins", - Url: setting.AppSubUrl + "/plugins", - }, - { - Text: "Preferences", - Id: "org-settings", - Description: "Organization preferences", - Icon: "gicon gicon-preferences", - Url: setting.AppSubUrl + "/org", - }, - - { - Text: "API Keys", - Id: "apikeys", - Description: "Create & manage API keys", - Icon: "gicon gicon-apikeys", - Url: setting.AppSubUrl + "/org/apikeys", - }, - }, - } + configNodes := []*dtos.NavLink{} + + if c.OrgRole == m.ROLE_ADMIN { + configNodes = append(configNodes, &dtos.NavLink{ + Text: "Data Sources", + Icon: "gicon gicon-datasources", + Description: "Add and configure data sources", + Id: "datasources", + Url: setting.AppSubUrl + "/datasources", + }) + configNodes = append(configNodes, &dtos.NavLink{ + Text: "Users", + Id: "users", + Description: "Manage org members", + Icon: "gicon gicon-user", + Url: setting.AppSubUrl + "/org/users", + }) + } - if c.OrgRole != m.ROLE_ADMIN { - cfgNode = &dtos.NavLink{ - Id: "cfg", - Text: "Configuration", - SubTitle: "Organization: " + c.OrgName, - Icon: "gicon gicon-cog", - Url: setting.AppSubUrl + "/admin/users", - Children: make([]*dtos.NavLink, 0), - } - } + if c.OrgRole == m.ROLE_ADMIN || hs.Cfg.EditorsCanAdmin { + configNodes = append(configNodes, &dtos.NavLink{ + Text: "Teams", + Id: "teams", + Description: "Manage org groups", + Icon: "gicon gicon-team", + Url: setting.AppSubUrl + "/org/teams", + }) + } - data.NavTree = append(data.NavTree, cfgNode) - } else { - cfgNode := &dtos.NavLink{ - Id: "cfg", - Text: "Configuration", - SubTitle: "Organization: " + c.OrgName, - Icon: "gicon gicon-cog", - Url: setting.AppSubUrl + "/plugins", - Children: []*dtos.NavLink{ - { - Text: "Plugins", - Id: "plugins", - Description: "View and configure plugins", - Icon: "gicon gicon-plugins", - Url: setting.AppSubUrl + "/plugins", - }, - }, - } + configNodes = append(configNodes, &dtos.NavLink{ + Text: "Plugins", + Id: "plugins", + Description: "View and configure plugins", + Icon: "gicon gicon-plugins", + Url: setting.AppSubUrl + "/plugins", + }) - data.NavTree = append(data.NavTree, cfgNode) + if c.OrgRole == m.ROLE_ADMIN { + configNodes = append(configNodes, &dtos.NavLink{ + Text: "Preferences", + Id: "org-settings", + Description: "Organization preferences", + Icon: "gicon gicon-preferences", + Url: setting.AppSubUrl + "/org", + }) + configNodes = append(configNodes, &dtos.NavLink{ + Text: "API Keys", + Id: "apikeys", + Description: "Create & manage API keys", + Icon: "gicon gicon-apikeys", + Url: setting.AppSubUrl + "/org/apikeys", + }) } + data.NavTree = append(data.NavTree, &dtos.NavLink{ + Id: "cfg", + Text: "Configuration", + SubTitle: "Organization: " + c.OrgName, + Icon: "gicon gicon-cog", + Url: configNodes[0].Url, + Children: configNodes, + }) + if c.IsGrafanaAdmin { data.NavTree = append(data.NavTree, &dtos.NavLink{ Text: "Server Admin", @@ -346,27 +322,6 @@ func (hs *HTTPServer) setIndexViewData(c *m.ReqContext) (*dtos.IndexViewData, er }) } - if (c.OrgRole == m.ROLE_EDITOR || c.OrgRole == m.ROLE_VIEWER) && hs.Cfg.EditorsCanAdmin { - cfgNode := &dtos.NavLink{ - Id: "cfg", - Text: "Configuration", - SubTitle: "Organization: " + c.OrgName, - Icon: "gicon gicon-cog", - Url: setting.AppSubUrl + "/org/teams", - Children: []*dtos.NavLink{ - { - Text: "Teams", - Id: "teams", - Description: "Manage org groups", - Icon: "gicon gicon-team", - Url: setting.AppSubUrl + "/org/teams", - }, - }, - } - - data.NavTree = append(data.NavTree, cfgNode) - } - data.NavTree = append(data.NavTree, &dtos.NavLink{ Text: "Help", SubTitle: fmt.Sprintf(`%s v%s (%s)`, setting.ApplicationName, setting.BuildVersion, setting.BuildCommit),