Fix page builder save on close route to route back to the view page
This commit is contained in:
@@ -179,5 +179,11 @@ export default (options = {}) => {
|
||||
...options,
|
||||
}
|
||||
|
||||
options.router.beforeEach((to, from, next) => {
|
||||
store.dispatch('ui/setPreviousPage', from)
|
||||
|
||||
next()
|
||||
})
|
||||
|
||||
return new Vue(options)
|
||||
}
|
||||
|
||||
@@ -12,12 +12,11 @@
|
||||
class="wrap-with-vertical-gutters align-items-center"
|
||||
>
|
||||
<b-button
|
||||
v-if="backLink"
|
||||
data-test-id="button-back-without-save"
|
||||
variant="link"
|
||||
:to="backLink"
|
||||
:disabled="processing"
|
||||
class="text-dark back mr-auto"
|
||||
@click="$emit('back')"
|
||||
>
|
||||
<font-awesome-icon
|
||||
:icon="['fas', 'chevron-left']"
|
||||
|
||||
@@ -11,6 +11,8 @@ const types = {
|
||||
setPreviousPages: 'setPreviousPages',
|
||||
pushPreviousPages: 'pushPreviousPages',
|
||||
popPreviousPages: 'popPreviousPages',
|
||||
previousPage: 'previousPage',
|
||||
setPreviousPage: 'setPreviousPage',
|
||||
}
|
||||
|
||||
export default function (ComposeAPI) {
|
||||
@@ -24,6 +26,7 @@ export default function (ComposeAPI) {
|
||||
recordPaginationUsable: false,
|
||||
|
||||
previousPages: [],
|
||||
previousPage: null,
|
||||
},
|
||||
|
||||
getters: {
|
||||
@@ -35,6 +38,8 @@ export default function (ComposeAPI) {
|
||||
|
||||
previousPages: (state) => state.previousPages,
|
||||
|
||||
previousPage: (state) => state.previousPage,
|
||||
|
||||
getNextAndPrevRecord: ({ recordPaginationIDs }) => (recordID) => {
|
||||
const recordIndex = recordPaginationIDs.indexOf(recordID)
|
||||
const prev = recordIndex >= 0 ? recordPaginationIDs[recordIndex - 1] : undefined
|
||||
@@ -86,6 +91,16 @@ export default function (ComposeAPI) {
|
||||
commit(types.popPreviousPages)
|
||||
return new Promise((resolve) => resolve(previousPage))
|
||||
},
|
||||
|
||||
setPreviousPage ({ commit }, value) {
|
||||
const shouldNotSavePage = value.name !== 'admin.pages.builder' &&
|
||||
!value.query.layoutID && value.name !== 'admin.modules.create' &&
|
||||
value.name !== 'admin.charts.create'
|
||||
|
||||
if (value && value.name && shouldNotSavePage) {
|
||||
commit(types.setPreviousPage, value)
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
mutations: {
|
||||
@@ -128,6 +143,10 @@ export default function (ComposeAPI) {
|
||||
[types.popPreviousPages] (state) {
|
||||
return state.previousPages.pop()
|
||||
},
|
||||
|
||||
[types.setPreviousPage] (state, value) {
|
||||
state.previousPage = value
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,7 +298,6 @@
|
||||
<portal to="admin-toolbar">
|
||||
<editor-toolbar
|
||||
:processing="processing"
|
||||
:back-link="{ name: 'admin.charts' }"
|
||||
:hide-delete="hideDelete"
|
||||
:hide-save="hideSave"
|
||||
hide-clone
|
||||
@@ -306,6 +305,7 @@
|
||||
@delete="handleDelete()"
|
||||
@save="handleSave()"
|
||||
@saveAndClose="handleSave({ closeOnSuccess: true })"
|
||||
@back="$router.push(previousPage || { name: 'admin.charts' })"
|
||||
/>
|
||||
</portal>
|
||||
</div>
|
||||
@@ -386,6 +386,7 @@ export default {
|
||||
...mapGetters({
|
||||
modules: 'module/set',
|
||||
modByID: 'module/getByID',
|
||||
previousPage: 'ui/previousPage',
|
||||
}),
|
||||
|
||||
colorSchemes () {
|
||||
@@ -651,7 +652,7 @@ export default {
|
||||
},
|
||||
|
||||
redirect () {
|
||||
this.$router.push({ name: 'admin.charts' })
|
||||
this.$router.push(this.previousPage || { name: 'admin.charts' })
|
||||
},
|
||||
|
||||
onEditReport (i) {
|
||||
|
||||
@@ -439,7 +439,6 @@
|
||||
<portal to="admin-toolbar">
|
||||
<editor-toolbar
|
||||
:processing="processing"
|
||||
:back-link="{ name: 'admin.modules' }"
|
||||
:hide-delete="hideDelete"
|
||||
hide-clone
|
||||
:hide-save="hideSave"
|
||||
@@ -447,6 +446,7 @@
|
||||
@delete="handleDelete"
|
||||
@save="handleSave()"
|
||||
@saveAndClose="handleSave({ closeOnSuccess: true })"
|
||||
@back="$router.push(previousPage || { name: 'admin.modules' })"
|
||||
/>
|
||||
</portal>
|
||||
</div>
|
||||
@@ -537,6 +537,7 @@ export default {
|
||||
computed: {
|
||||
...mapGetters({
|
||||
pages: 'page/set',
|
||||
previousPage: 'ui/previousPage',
|
||||
}),
|
||||
|
||||
title () {
|
||||
@@ -799,7 +800,7 @@ export default {
|
||||
|
||||
this.toastSuccess(this.$t('notification:module.created'))
|
||||
if (closeOnSuccess) {
|
||||
this.$router.push({ name: 'admin.modules' })
|
||||
this.$router.push(this.previousPage || { name: 'admin.modules' })
|
||||
} else {
|
||||
this.$router.push({ name: 'admin.modules.edit', params: { moduleID: this.module.moduleID } })
|
||||
}
|
||||
|
||||
@@ -254,13 +254,13 @@
|
||||
|
||||
<portal to="admin-toolbar">
|
||||
<editor-toolbar
|
||||
:back-link="{name: 'admin.pages'}"
|
||||
:hide-save="!page.canUpdatePage"
|
||||
:processing="processing"
|
||||
@save="handleSaveLayout()"
|
||||
@delete="handleDeleteLayout()"
|
||||
@saveAndClose="handleSaveLayout({ closeOnSuccess: true })"
|
||||
@clone="handleCloneLayout()"
|
||||
@back="$router.push(previousPage || { name: 'admin.pages' })"
|
||||
>
|
||||
<b-button
|
||||
v-if="page.canUpdatePage"
|
||||
@@ -355,6 +355,7 @@ export default {
|
||||
...mapGetters({
|
||||
pages: 'page/set',
|
||||
getModuleByID: 'module/getByID',
|
||||
previousPage: 'ui/previousPage',
|
||||
}),
|
||||
|
||||
trPage: {
|
||||
@@ -795,7 +796,7 @@ export default {
|
||||
this.toastSuccess(this.$t('notification:page.page-layout.save.success'))
|
||||
|
||||
if (closeOnSuccess) {
|
||||
this.$router.push({ name: 'admin.pages' })
|
||||
this.$router.push(this.previousPage || { name: 'admin.pages' })
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -790,7 +790,6 @@
|
||||
|
||||
<portal to="admin-toolbar">
|
||||
<editor-toolbar
|
||||
:back-link="{ name: 'admin.pages' }"
|
||||
:hide-delete="hideDelete"
|
||||
:hide-clone="hideClone"
|
||||
:hide-save="hideSave"
|
||||
@@ -800,6 +799,7 @@
|
||||
@delete="handleDeletePage()"
|
||||
@save="handleSave()"
|
||||
@saveAndClose="handleSave({ closeOnSuccess: true })"
|
||||
@back="$router.push(previousPage || { name: 'admin.pages' })"
|
||||
>
|
||||
<template #delete>
|
||||
<b-dropdown
|
||||
@@ -911,6 +911,7 @@ export default {
|
||||
computed: {
|
||||
...mapGetters({
|
||||
pages: 'page/set',
|
||||
previousPage: 'ui/previousPage',
|
||||
}),
|
||||
|
||||
titleState () {
|
||||
@@ -1178,7 +1179,7 @@ export default {
|
||||
|
||||
this.toastSuccess(this.$t('notification:page.saved'))
|
||||
if (closeOnSuccess) {
|
||||
this.$router.push({ name: 'admin.pages' })
|
||||
this.$router.push(this.previousPage || { name: 'admin.pages' })
|
||||
}
|
||||
}).finally(() => {
|
||||
this.processing = false
|
||||
|
||||
@@ -275,11 +275,11 @@
|
||||
|
||||
<editor-toolbar
|
||||
:processing="processing"
|
||||
:back-link="{ name: 'namespace.manage' }"
|
||||
:hide-delete="hideDelete"
|
||||
:hide-clone="!isEdit"
|
||||
:hide-save="hideSave"
|
||||
:disable-save="disableSave"
|
||||
@back="$router.go(-1)"
|
||||
@delete="handleDelete"
|
||||
@save="handleSave()"
|
||||
@clone="$router.push({ name: 'namespace.clone', params: { namespaceID: namespace.namespaceID }})"
|
||||
@@ -617,7 +617,7 @@ export default {
|
||||
this.processing = false
|
||||
|
||||
if (closeOnSuccess) {
|
||||
this.$router.push({ name: 'namespace.manage' })
|
||||
this.$router.go(-1)
|
||||
} else if (!this.isEdit || this.isClone) {
|
||||
this.$router.push({ name: 'namespace.edit', params: { namespaceID: this.namespace.namespaceID } })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user