From 7548d6f6d1485b8cbb552a080d5410045dc6ef75 Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Mon, 28 May 2018 20:37:39 +0200 Subject: [PATCH] Show create dashboard link if at least editor in one folder --- pkg/api/index.go | 25 +++++++++++-------- .../manage_dashboards/manage_dashboards.html | 2 +- .../manage_dashboards/manage_dashboards.ts | 6 +++++ public/app/core/components/search/search.html | 6 ++--- public/app/core/components/search/search.ts | 2 ++ 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/pkg/api/index.go b/pkg/api/index.go index 2a905b474ce..f082f03b5f6 100644 --- a/pkg/api/index.go +++ b/pkg/api/index.go @@ -92,17 +92,22 @@ func setIndexViewData(c *m.ReqContext) (*dtos.IndexViewData, error) { data.Theme = "light" } - if c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR { + if hasEditPermissionInFoldersQuery.Result { + children := []*dtos.NavLink{ + {Text: "Dashboard", Icon: "gicon gicon-dashboard-new", Url: setting.AppSubUrl + "/dashboard/new"}, + } + + if c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR { + children = append(children, &dtos.NavLink{Text: "Folder", SubTitle: "Create a new folder to organize your dashboards", Id: "folder", Icon: "gicon gicon-folder-new", Url: setting.AppSubUrl + "/dashboards/folder/new"}) + children = append(children, &dtos.NavLink{Text: "Import", SubTitle: "Import dashboard from file or Grafana.com", Id: "import", Icon: "gicon gicon-dashboard-import", Url: setting.AppSubUrl + "/dashboard/import"}) + } + data.NavTree = append(data.NavTree, &dtos.NavLink{ - Text: "Create", - Id: "create", - Icon: "fa fa-fw fa-plus", - Url: setting.AppSubUrl + "/dashboard/new", - Children: []*dtos.NavLink{ - {Text: "Dashboard", Icon: "gicon gicon-dashboard-new", Url: setting.AppSubUrl + "/dashboard/new"}, - {Text: "Folder", SubTitle: "Create a new folder to organize your dashboards", Id: "folder", Icon: "gicon gicon-folder-new", Url: setting.AppSubUrl + "/dashboards/folder/new"}, - {Text: "Import", SubTitle: "Import dashboard from file or Grafana.com", Id: "import", Icon: "gicon gicon-dashboard-import", Url: setting.AppSubUrl + "/dashboard/import"}, - }, + Text: "Create", + Id: "create", + Icon: "fa fa-fw fa-plus", + Url: setting.AppSubUrl + "/dashboard/new", + Children: children, }) } diff --git a/public/app/core/components/manage_dashboards/manage_dashboards.html b/public/app/core/components/manage_dashboards/manage_dashboards.html index 2dfb9c96d1b..aac30d2ce02 100644 --- a/public/app/core/components/manage_dashboards/manage_dashboards.html +++ b/public/app/core/components/manage_dashboards/manage_dashboards.html @@ -5,7 +5,7 @@
- + Dashboard diff --git a/public/app/core/components/manage_dashboards/manage_dashboards.ts b/public/app/core/components/manage_dashboards/manage_dashboards.ts index 545119a80d7..db73d84fd58 100644 --- a/public/app/core/components/manage_dashboards/manage_dashboards.ts +++ b/public/app/core/components/manage_dashboards/manage_dashboards.ts @@ -42,9 +42,12 @@ export class ManageDashboardsCtrl { // if user has editor role or higher isEditor: boolean; + hasEditPermissionInFolders: boolean; + /** @ngInject */ constructor(private backendSrv, navModelSrv, private searchSrv: SearchSrv, private contextSrv) { this.isEditor = this.contextSrv.isEditor; + this.hasEditPermissionInFolders = this.contextSrv.hasEditPermissionInFolders; this.query = { query: '', @@ -80,6 +83,9 @@ export class ManageDashboardsCtrl { return this.backendSrv.getFolderByUid(this.folderUid).then(folder => { this.canSave = folder.canSave; + if (!this.canSave) { + this.hasEditPermissionInFolders = false; + } }); }); } diff --git a/public/app/core/components/search/search.html b/public/app/core/components/search/search.html index afb9e723cad..561c752208e 100644 --- a/public/app/core/components/search/search.html +++ b/public/app/core/components/search/search.html @@ -45,14 +45,14 @@ -
+