Fix page builder save on close route to route back to the view page

This commit is contained in:
Kelani Tolulope
2023-09-07 08:33:57 +01:00
parent 5d434fd8a3
commit 04278e4b91
8 changed files with 40 additions and 12 deletions
+6
View File
@@ -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']"
+19
View File
@@ -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 } })
}