From 40c83e3e2224bf24311e4fd688bfa50fc4c6e97c Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Wed, 31 Jan 2018 18:24:47 +0100 Subject: [PATCH] dashboards: update dashboard/folder url if browser url is not the same as from backend --- .../app/features/dashboard/folder_dashboards_ctrl.ts | 8 ++++++-- .../features/dashboard/folder_permissions_ctrl.ts | 8 ++++++-- .../app/features/dashboard/folder_settings_ctrl.ts | 12 ++++++++---- public/app/routes/dashboard_loaders.ts | 4 ++++ 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/public/app/features/dashboard/folder_dashboards_ctrl.ts b/public/app/features/dashboard/folder_dashboards_ctrl.ts index 5eb79c82f7e..dd0bf7772d8 100644 --- a/public/app/features/dashboard/folder_dashboards_ctrl.ts +++ b/public/app/features/dashboard/folder_dashboards_ctrl.ts @@ -6,13 +6,17 @@ export class FolderDashboardsCtrl { uid: string; /** @ngInject */ - constructor(private backendSrv, navModelSrv, private $routeParams) { + constructor(private backendSrv, navModelSrv, private $routeParams, $location) { if (this.$routeParams.uid) { this.uid = $routeParams.uid; const loader = new FolderPageLoader(this.backendSrv); - loader.load(this, this.uid, 'manage-folder-dashboards'); + loader.load(this, this.uid, 'manage-folder-dashboards').then(folder => { + if ($location.path() !== folder.meta.url) { + $location.path(folder.meta.url).replace(); + } + }); } } } diff --git a/public/app/features/dashboard/folder_permissions_ctrl.ts b/public/app/features/dashboard/folder_permissions_ctrl.ts index 7a5e4c6af7d..fa1d71ef371 100644 --- a/public/app/features/dashboard/folder_permissions_ctrl.ts +++ b/public/app/features/dashboard/folder_permissions_ctrl.ts @@ -6,11 +6,15 @@ export class FolderPermissionsCtrl { uid: string; /** @ngInject */ - constructor(private backendSrv, navModelSrv, private $routeParams) { + constructor(private backendSrv, navModelSrv, private $routeParams, $location) { if (this.$routeParams.uid) { this.uid = $routeParams.uid; - new FolderPageLoader(this.backendSrv).load(this, this.uid, 'manage-folder-permissions'); + new FolderPageLoader(this.backendSrv).load(this, this.uid, 'manage-folder-permissions').then(folder => { + if ($location.path() !== folder.meta.url) { + $location.path(`${folder.meta.url}/permissions`).replace(); + } + }); } } } diff --git a/public/app/features/dashboard/folder_settings_ctrl.ts b/public/app/features/dashboard/folder_settings_ctrl.ts index ddc35166cad..004ba2efa9f 100644 --- a/public/app/features/dashboard/folder_settings_ctrl.ts +++ b/public/app/features/dashboard/folder_settings_ctrl.ts @@ -18,10 +18,14 @@ export class FolderSettingsCtrl { this.uid = $routeParams.uid; this.folderPageLoader = new FolderPageLoader(this.backendSrv); - this.folderPageLoader.load(this, this.uid, 'manage-folder-settings').then(result => { - this.dashboard = result.dashboard; - this.meta = result.meta; - this.canSave = result.meta.canSave; + this.folderPageLoader.load(this, this.uid, 'manage-folder-settings').then(folder => { + if ($location.path() !== folder.meta.url) { + $location.path(`${folder.meta.url}/settings`).replace(); + } + + this.dashboard = folder.dashboard; + this.meta = folder.meta; + this.canSave = folder.meta.canSave; this.title = this.dashboard.title; }); } diff --git a/public/app/routes/dashboard_loaders.ts b/public/app/routes/dashboard_loaders.ts index 4ad77512ad1..80e74819069 100644 --- a/public/app/routes/dashboard_loaders.ts +++ b/public/app/routes/dashboard_loaders.ts @@ -29,6 +29,10 @@ export class LoadDashboardCtrl { } dashboardLoaderSrv.loadDashboard($routeParams.type, $routeParams.slug, $routeParams.uid).then(function(result) { + if ($location.path() !== result.meta.url) { + $location.path(result.meta.url).replace(); + } + if ($routeParams.keepRows) { result.meta.keepRows = true; }