diff --git a/public/app/features/dashboard/dashboard_model.ts b/public/app/features/dashboard/dashboard_model.ts index 034ad7d84e1..8ec13bc7a87 100644 --- a/public/app/features/dashboard/dashboard_model.ts +++ b/public/app/features/dashboard/dashboard_model.ts @@ -117,6 +117,8 @@ export class DashboardModel { meta.canSave = meta.canSave !== false; meta.canStar = meta.canStar !== false; meta.canEdit = meta.canEdit !== false; + meta.showSettings = meta.canEdit; + meta.canMakeEditable = meta.canSave && !this.editable; if (!this.editable) { meta.canEdit = false; diff --git a/public/app/features/dashboard/dashnav/dashnav.html b/public/app/features/dashboard/dashnav/dashnav.html index e2a932fd9ab..d0ebb93e2f3 100644 --- a/public/app/features/dashboard/dashnav/dashnav.html +++ b/public/app/features/dashboard/dashnav/dashnav.html @@ -37,7 +37,7 @@ - diff --git a/public/app/features/dashboard/settings/settings.ts b/public/app/features/dashboard/settings/settings.ts index f8b85c81667..d74a303efd8 100644 --- a/public/app/features/dashboard/settings/settings.ts +++ b/public/app/features/dashboard/settings/settings.ts @@ -35,6 +35,7 @@ export class SettingsCtrl { buildSectionList() { this.sections = []; + if (this.dashboard.meta.canEdit) { this.sections.push({ title: 'General', id: 'settings', icon: 'gicon gicon-preferences' }); this.sections.push({ title: 'Annotations', id: 'annotations', icon: 'gicon gicon-annotation' }); @@ -46,9 +47,8 @@ export class SettingsCtrl { this.sections.push({ title: 'Versions', id: 'versions', icon: 'fa fa-fw fa-history' }); } - if (contextSrv.isEditor && !this.dashboard.editable) { + if (this.dashboard.meta.canMakeEditable) { this.sections.push({ title: 'Make Editable', icon: 'fa fa-fw fa-edit', id: 'make_editable' }); - this.viewId = 'make_editable'; } this.sections.push({ title: 'View JSON', id: 'view_json', icon: 'gicon gicon-json' }); @@ -69,11 +69,14 @@ export class SettingsCtrl { this.json = JSON.stringify(this.dashboard.getSaveModelClone(), null, 2); } + if (this.viewId === 'settings' && this.dashboard.meta.canMakeEditable) { + this.viewId = 'make_editable'; + } + const currentSection = _.find(this.sections, { id: this.viewId }); if (!currentSection) { this.sections.unshift({ title: 'Not found', id: '404', icon: 'fa fa-fw fa-warning' }); this.viewId = '404'; - return; } }