From d41bce36f3511b74bef059c11b1d88000eb29f6f Mon Sep 17 00:00:00 2001 From: Matt Blenkinsop 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 Signed-off-by: Jan Kissig Signed-off-by: Martin Renvoize --- .../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