From 7d3b990e917200ba7f53847cbc38423b22b6acd0 Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Mon, 5 Feb 2018 11:09:05 +0100 Subject: [PATCH] permissions: fix link to folder from permissions list Also, closing Add Permissions CTA when DashboardPermissions and FolderPermissions unmounts. Fixes #10749" --- pkg/api/dashboard.go | 2 +- pkg/api/dtos/dashboard.go | 2 +- .../ManageDashboards/FolderPermissions.tsx | 5 +++++ public/app/core/angular_wrappers.ts | 8 +------- .../components/Permissions/DashboardPermissions.tsx | 13 ++++++++----- .../app/core/components/Permissions/FolderInfo.ts | 4 ++-- .../components/Permissions/PermissionsListItem.tsx | 2 +- .../app/features/dashboard/settings/settings.html | 4 +--- public/app/features/dashboard/settings/settings.ts | 8 ++++++++ 9 files changed, 28 insertions(+), 20 deletions(-) diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 0267e2097eb..439f04f0799 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -99,7 +99,7 @@ func GetDashboard(c *middleware.Context) Response { return ApiError(500, "Dashboard folder could not be read", err) } meta.FolderTitle = query.Result.Title - meta.FolderSlug = query.Result.Slug + meta.FolderUrl = query.Result.GetUrl() } // make sure db version is in sync with json model version diff --git a/pkg/api/dtos/dashboard.go b/pkg/api/dtos/dashboard.go index 44fc68e4659..e4c66aebbda 100644 --- a/pkg/api/dtos/dashboard.go +++ b/pkg/api/dtos/dashboard.go @@ -27,7 +27,7 @@ type DashboardMeta struct { IsFolder bool `json:"isFolder"` FolderId int64 `json:"folderId"` FolderTitle string `json:"folderTitle"` - FolderSlug string `json:"folderSlug"` + FolderUrl string `json:"folderUrl"` } type DashboardFullWithMeta struct { diff --git a/public/app/containers/ManageDashboards/FolderPermissions.tsx b/public/app/containers/ManageDashboards/FolderPermissions.tsx index 93b9520739e..a62165d7194 100644 --- a/public/app/containers/ManageDashboards/FolderPermissions.tsx +++ b/public/app/containers/ManageDashboards/FolderPermissions.tsx @@ -17,6 +17,11 @@ export class FolderPermissions extends Component { this.loadStore(); } + componentWillUnmount() { + const { permissions } = this.props; + permissions.hideAddPermissions(); + } + loadStore() { const { nav, folder, view } = this.props; return folder.load(view.routeParams.get('uid') as string).then(res => { diff --git a/public/app/core/angular_wrappers.ts b/public/app/core/angular_wrappers.ts index bc3fb08d822..ace0eb00b07 100644 --- a/public/app/core/angular_wrappers.ts +++ b/public/app/core/angular_wrappers.ts @@ -20,11 +20,5 @@ export function registerAngularDirectives() { ['tagOptions', { watchDepth: 'reference' }], ]); react2AngularDirective('selectUserPicker', UserPicker, ['backendSrv', 'handlePicked']); - react2AngularDirective('dashboardPermissions', DashboardPermissions, [ - 'backendSrv', - 'dashboardId', - 'folderTitle', - 'folderSlug', - 'folderId', - ]); + react2AngularDirective('dashboardPermissions', DashboardPermissions, ['backendSrv', 'dashboardId', 'folder']); } diff --git a/public/app/core/components/Permissions/DashboardPermissions.tsx b/public/app/core/components/Permissions/DashboardPermissions.tsx index a1b86e121bf..d6b293da4bb 100644 --- a/public/app/core/components/Permissions/DashboardPermissions.tsx +++ b/public/app/core/components/Permissions/DashboardPermissions.tsx @@ -6,12 +6,11 @@ import Tooltip from 'app/core/components/Tooltip/Tooltip'; import PermissionsInfo from 'app/core/components/Permissions/PermissionsInfo'; import AddPermissions from 'app/core/components/Permissions/AddPermissions'; import SlideDown from 'app/core/components/Animations/SlideDown'; +import { FolderInfo } from './FolderInfo'; export interface IProps { dashboardId: number; - folderId: number; - folderTitle: string; - folderSlug: string; + folder?: FolderInfo; backendSrv: any; } @observer @@ -28,8 +27,12 @@ class DashboardPermissions extends Component { this.permissions.toggleAddPermissions(); } + componentWillUnmount() { + this.permissions.hideAddPermissions(); + } + render() { - const { dashboardId, folderTitle, folderSlug, folderId, backendSrv } = this.props; + const { dashboardId, folder, backendSrv } = this.props; return (
@@ -56,7 +59,7 @@ class DashboardPermissions extends Component { permissions={this.permissions} isFolder={false} dashboardId={dashboardId} - folderInfo={{ title: folderTitle, slug: folderSlug, id: folderId }} + folderInfo={folder} backendSrv={backendSrv} />
diff --git a/public/app/core/components/Permissions/FolderInfo.ts b/public/app/core/components/Permissions/FolderInfo.ts index 67ebb753df0..d4a6020bb71 100644 --- a/public/app/core/components/Permissions/FolderInfo.ts +++ b/public/app/core/components/Permissions/FolderInfo.ts @@ -1,5 +1,5 @@ export interface FolderInfo { - title: string; id: number; - slug: string; + title: string; + url: string; } diff --git a/public/app/core/components/Permissions/PermissionsListItem.tsx b/public/app/core/components/Permissions/PermissionsListItem.tsx index 291ee20e157..3140b8fcc0c 100644 --- a/public/app/core/components/Permissions/PermissionsListItem.tsx +++ b/public/app/core/components/Permissions/PermissionsListItem.tsx @@ -30,7 +30,7 @@ export default observer(({ item, removeItem, permissionChanged, itemIndex, folde folderInfo && ( Inherited from folder{' '} - + {folderInfo.title} {' '} diff --git a/public/app/features/dashboard/settings/settings.html b/public/app/features/dashboard/settings/settings.html index 47c3bae2ef6..af9358aecf7 100644 --- a/public/app/features/dashboard/settings/settings.html +++ b/public/app/features/dashboard/settings/settings.html @@ -99,9 +99,7 @@ diff --git a/public/app/features/dashboard/settings/settings.ts b/public/app/features/dashboard/settings/settings.ts index c538f171fa0..09aa96e42ae 100755 --- a/public/app/features/dashboard/settings/settings.ts +++ b/public/app/features/dashboard/settings/settings.ts @@ -197,6 +197,14 @@ export class SettingsCtrl { this.dashboard.meta.folderTitle = folder.title; this.dashboard.meta.folderSlug = folder.slug; } + + getFolder() { + return { + id: this.dashboard.meta.folderId, + title: this.dashboard.meta.folderTitle, + url: this.dashboard.meta.folderUrl, + }; + } } export function dashboardSettings() {