Bugzilla – Attachment 188769 Details for
Bug 40191
Design pattern: Redirect user to a view of the record after saving instead of list
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 40191: Apply configurable post-save navigation to all resource forms
Bug-40191-Apply-configurable-post-save-navigation-.patch (text/plain), 12.58 KB, created by
Martin Renvoize (ashimema)
on 2025-10-31 08:59:29 UTC
(
hide
)
Description:
Bug 40191: Apply configurable post-save navigation to all resource forms
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2025-10-31 08:59:29 UTC
Size:
12.58 KB
patch
obsolete
>From d41bce36f3511b74bef059c11b1d88000eb29f6f Mon Sep 17 00:00:00 2001 >From: Matt Blenkinsop <matt.blenkinsop@openfifth.co.uk> >Date: Fri, 17 Oct 2025 11:35:24 +0100 >Subject: [PATCH] Bug 40191: Apply configurable post-save navigation to all > resource forms > >Extends the navigation behavior system to all Vue resource components: >- EHoldings packages and titles (ERM) >- Licenses (ERM) >- Record sources (Admin) >- Preservation trains >- Vendors >- SkeletonResource template > >Each resource can now define its preferred post-save behavior via the >on_save_navigation prop. > >Signed-off-by: Michaela <michaela.sieber@kit.edu> >Signed-off-by: Jan Kissig <bibliothek@th-wildau.de> >Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk> >--- > .../RecordSources/RecordSourcesResource.vue | 15 +++++------- > .../ERM/EHoldingsLocalPackageResource.vue | 16 +++++-------- > .../ERM/EHoldingsLocalTitleResource.vue | 16 +++++-------- > .../js/vue/components/ERM/LicenseResource.vue | 12 +++++----- > .../components/Preservation/TrainResource.vue | 12 +++++----- > .../js/vue/components/SkeletonResource.vue | 24 ++++++++++--------- > .../vue/components/Vendors/VendorResource.vue | 12 +++++----- > 7 files changed, 49 insertions(+), 58 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Admin/RecordSources/RecordSourcesResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Admin/RecordSources/RecordSourcesResource.vue >index eeb0e560f7d..9967023aa48 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Admin/RecordSources/RecordSourcesResource.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Admin/RecordSources/RecordSourcesResource.vue >@@ -87,7 +87,6 @@ export default { > > const onFormSave = (e, recordSourceToSave) => { > e.preventDefault(); >- let response; > const recordSource = JSON.parse(JSON.stringify(recordSourceToSave)); // copy > const recordSourceId = recordSource.record_source_id; > >@@ -95,24 +94,22 @@ export default { > > if (recordSourceId) { > // update >- response = baseResource.apiClient >+ return baseResource.apiClient > .update(recordSource, recordSourceId) > .then( >- success => { >+ recordResource => { > baseResource.setMessage( > $__("Record source updated!") > ); >- baseResource.router.push({ >- name: "RecordSourcesList", >- }); >+ return recordResource > }, > error => {} > ); > } else { >- response = baseResource.apiClient.create(recordSource).then( >- success => { >+ return baseResource.apiClient.create(recordSource).then( >+ recordResource => { > baseResource.setMessage($__("Record source created!")); >- baseResource.router.push({ name: "RecordSourcesList" }); >+ return recordResource > }, > error => {} > ); >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue >index c146d1d8bce..08711452b0c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalPackageResource.vue >@@ -248,22 +248,18 @@ export default { > ); > > if (package_id) { >- baseResource.apiClient.update(erm_package, package_id).then( >- success => { >+ return baseResource.apiClient.update(erm_package, package_id).then( >+ erm_package => { > baseResource.setMessage($__("Package updated")); >- baseResource.router.push({ >- name: "EHoldingsLocalPackagesList", >- }); >+ return erm_package > }, > error => {} > ); > } else { >- baseResource.apiClient.create(erm_package).then( >- success => { >+ return baseResource.apiClient.create(erm_package).then( >+ erm_package => { > baseResource.setMessage($__("Package created")); >- baseResource.router.push({ >- name: "EHoldingsLocalPackagesList", >- }); >+ return erm_package > }, > error => {} > ); >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue >index 11b0caa0452..c81a0fb31d4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/EHoldingsLocalTitleResource.vue >@@ -496,22 +496,18 @@ export default { > }); > > if (title_id) { >- baseResource.apiClient.update(title, title_id).then( >- success => { >+ return baseResource.apiClient.update(title, title_id).then( >+ title => { > baseResource.setMessage($__("Title updated")); >- baseResource.router.push({ >- name: "EHoldingsLocalTitlesList", >- }); >+ return title; > }, > error => {} > ); > } else { >- baseResource.apiClient.create(title).then( >- success => { >+ return baseResource.apiClient.create(title).then( >+ title => { > baseResource.setMessage($__("Title created")); >- baseResource.router.push({ >- name: "EHoldingsLocalTitlesList", >- }); >+ return title; > }, > error => {} > ); >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue >index f21b4523aec..faf9913688a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/LicenseResource.vue >@@ -364,18 +364,18 @@ export default { > ); > > if (license_id) { >- baseResource.apiClient.update(license, license_id).then( >- success => { >+ return baseResource.apiClient.update(license, license_id).then( >+ license => { > baseResource.setMessage($__("License updated")); >- baseResource.router.push({ name: "LicensesList" }); >+ return license > }, > error => {} > ); > } else { >- baseResource.apiClient.create(license).then( >- success => { >+ return baseResource.apiClient.create(license).then( >+ license => { > baseResource.setMessage($__("License created")); >- baseResource.router.push({ name: "LicensesList" }); >+ return license > }, > error => {} > ); >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Preservation/TrainResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Preservation/TrainResource.vue >index 9ff3ff316e9..b14c68b15e0 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Preservation/TrainResource.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Preservation/TrainResource.vue >@@ -276,18 +276,18 @@ export default { > > const client = APIClient.preservation; > if (train_id) { >- client.trains.update(train, train_id).then( >- success => { >+ return client.trains.update(train, train_id).then( >+ train => { > baseResource.setMessage($__("Train updated")); >- baseResource.router.push({ name: "TrainsList" }); >+ return train; > }, > error => {} > ); > } else { >- client.trains.create(train).then( >- success => { >+ return client.trains.create(train).then( >+ train => { > baseResource.setMessage($__("Train created")); >- baseResource.router.push({ name: "TrainsList" }); >+ return train; > }, > error => {} > ); >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/SkeletonResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/SkeletonResource.vue >index 5aece6dedff..bbb139a2ed2 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/SkeletonResource.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/SkeletonResource.vue >@@ -109,7 +109,7 @@ export default { > additionalToolbarButtons, > defaultToolbarButtons, > // The default behaviour for the below is the "show" component so is not necessary if this is the desired behaviour >- navigationOnFormSave: "SkeletonsList" >+ navigationOnFormSave: "SkeletonsList", > }); > > /* >@@ -156,18 +156,20 @@ export default { > delete skeleton.skeleton_id; > > if (skeleton_id) { >- baseResource.apiClient.update(skeleton, skeleton_id).then( >- success => { >- baseResource.setMessage($__("Skeleton updated")); >- baseResource.router.push({ name: "SkeletonsList" }); >- }, >- error => {} >- ); >+ return baseResource.apiClient >+ .update(skeleton, skeleton_id) >+ .then( >+ skeleton => { >+ baseResource.setMessage($__("Skeleton updated")); >+ return skeleton; >+ }, >+ error => {} >+ ); > } else { >- baseResource.apiClient.create(skeleton).then( >- success => { >+ return baseResource.apiClient.create(skeleton).then( >+ skeleton => { > baseResource.setMessage($__("Skeleton created")); >- baseResource.router.push({ name: "SkeletonsList" }); >+ return skeleton; > }, > error => {} > ); >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue >index a87ce3a1b7d..ed51a63fd22 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/Vendors/VendorResource.vue >@@ -795,18 +795,18 @@ export default { > if (errors.length) return false; > > if (vendorId) { >- baseResource.apiClient.update(vendor, vendorId).then( >- success => { >+ return baseResource.apiClient.update(vendor, vendorId).then( >+ vendor => { > baseResource.setMessage($__("Vendor updated")); >- baseResource.router.push({ name: "VendorList" }); >+ return vendor > }, > error => {} > ); > } else { >- baseResource.apiClient.create(vendor).then( >- success => { >+ return baseResource.apiClient.create(vendor).then( >+ vendor => { > baseResource.setMessage($__("Vendor created")); >- baseResource.router.push({ name: "VendorList" }); >+ return vendor > }, > error => {} > ); >-- >2.51.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 40191
:
188107
|
188108
|
188109
|
188137
|
188138
|
188139
|
188164
|
188165
|
188167
|
188193
|
188194
|
188195
|
188196
|
188197
|
188198
|
188201
|
188202
|
188203
|
188768
| 188769 |
188770
|
188771
|
188772
|
188773
|
188774
|
188775
|
188776