Bugzilla – Attachment 149133 Details for
Bug 33408
Fetch sysprefs from svc/config/systempreferences
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33408: Fetch sysprefs from svc/config/systempreferences
Bug-33408-Fetch-sysprefs-from-svcconfigsystemprefe.patch (text/plain), 8.70 KB, created by
Jonathan Druart
on 2023-04-04 15:07:26 UTC
(
hide
)
Description:
Bug 33408: Fetch sysprefs from svc/config/systempreferences
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2023-04-04 15:07:26 UTC
Size:
8.70 KB
patch
obsolete
>From 8b0ac66b183c2749a4ae8d51fddc5eb73a138f17 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Tue, 4 Apr 2023 15:51:51 +0200 >Subject: [PATCH] Bug 33408: Fetch sysprefs from svc/config/systempreferences > >It will be easier to mock/set them from cypress tests. > >Sponsored-by: BULAC - http://www.bulac.fr/ >--- > .../prog/js/vue/components/ERM/Main.vue | 138 +++++++++++------- > .../fetch/system-preferences-api-client.js | 4 + > svc/config/systempreferences | 30 ++++ > 3 files changed, 122 insertions(+), 50 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue >index ae4b5b56a58..c461e3f2fd1 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue >@@ -1,5 +1,5 @@ > <template> >- <div v-if="ERMModule"> >+ <div v-if="initialized"> > <div id="sub-header"> > <Breadcrumb /> > <Help /> >@@ -140,8 +140,6 @@ export default { > vendorStore, > AVStore, > setError, >- erm_providers, >- ERMModule, > loading, > loaded, > } >@@ -149,62 +147,102 @@ export default { > data() { > return { > component: "agreement", >+ initialized: false, >+ ERMModule: null, >+ erm_providers: [], > } > }, > beforeCreate() { >- if (!this.ERMModule) { >- return this.setError( >- this.$__( >- 'The e-resource management module is disabled, turn on <a href="/cgi-bin/koha/admin/preferences.pl?tab=&op=search&searchfield=ERMModule">ERMModule</a> to use it' >- ), >- false >- ) >- } > this.loading() > >- const acq_client = APIClient.acquisition >- acq_client.vendors.getAll().then( >- vendors => { >- this.vendorStore.vendors = vendors >- this.initialized = true >- }, >- error => {} >- ) >- >- const av_client = APIClient.authorised_values >- const authorised_values = { >- av_agreement_statuses: "ERM_AGREEMENT_STATUS", >- av_agreement_closure_reasons: "ERM_AGREEMENT_CLOSURE_REASON", >- av_agreement_renewal_priorities: "ERM_AGREEMENT_RENEWAL_PRIORITY", >- av_user_roles: "ERM_USER_ROLES", >- av_license_types: "ERM_LICENSE_TYPE", >- av_license_statuses: "ERM_LICENSE_STATUS", >- av_agreement_license_statuses: "ERM_AGREEMENT_LICENSE_STATUS", >- av_agreement_license_location: "ERM_AGREEMENT_LICENSE_LOCATION", >- av_package_types: "ERM_PACKAGE_TYPE", >- av_package_content_types: "ERM_PACKAGE_CONTENT_TYPE", >- av_title_publication_types: "ERM_TITLE_PUBLICATION_TYPE", >- } >+ const fetch_config = () => { >+ let promises = [] >+ >+ const acq_client = APIClient.acquisition >+ promises.push( >+ acq_client.vendors.getAll().then( >+ vendors => { >+ this.vendorStore.vendors = vendors >+ }, >+ error => {} >+ ) >+ ) >+ >+ const av_client = APIClient.authorised_values >+ const authorised_values = { >+ av_agreement_statuses: "ERM_AGREEMENT_STATUS", >+ av_agreement_closure_reasons: "ERM_AGREEMENT_CLOSURE_REASON", >+ av_agreement_renewal_priorities: >+ "ERM_AGREEMENT_RENEWAL_PRIORITY", >+ av_user_roles: "ERM_USER_ROLES", >+ av_license_types: "ERM_LICENSE_TYPE", >+ av_license_statuses: "ERM_LICENSE_STATUS", >+ av_agreement_license_statuses: "ERM_AGREEMENT_LICENSE_STATUS", >+ av_agreement_license_location: "ERM_AGREEMENT_LICENSE_LOCATION", >+ av_package_types: "ERM_PACKAGE_TYPE", >+ av_package_content_types: "ERM_PACKAGE_CONTENT_TYPE", >+ av_title_publication_types: "ERM_TITLE_PUBLICATION_TYPE", >+ } >+ >+ let av_cat_array = Object.keys(authorised_values).map(function ( >+ av_cat >+ ) { >+ return '"' + authorised_values[av_cat] + '"' >+ }) > >- let av_cat_array = Object.keys(authorised_values).map(function ( >- av_cat >- ) { >- return '"' + authorised_values[av_cat] + '"' >- }) >- >- av_client.values >- .getCategoriesWithValues(av_cat_array) >- .then(av_categories => { >- Object.entries(authorised_values).forEach( >- ([av_var, av_cat]) => { >- const av_match = av_categories.find( >- element => element.category_name == av_cat >+ promises.push( >+ av_client.values >+ .getCategoriesWithValues(av_cat_array) >+ .then(av_categories => { >+ Object.entries(authorised_values).forEach( >+ ([av_var, av_cat]) => { >+ const av_match = av_categories.find( >+ element => element.category_name == av_cat >+ ) >+ this.AVStore[av_var] = >+ av_match.authorised_values >+ } > ) >- this.AVStore[av_var] = av_match.authorised_values >- } >+ }) >+ ) >+ >+ promises.push( >+ sysprefs_client.sysprefs.get("ERMProviders").then( >+ providers => { >+ this.erm_providers = providers.value.split(",") >+ }, >+ error => {} > ) >+ ) >+ Promise.all(promises).then(() => { >+ this.loaded() >+ this.initialized = true >+ }) >+ } >+ >+ const sysprefs_client = APIClient.sysprefs >+ sysprefs_client.sysprefs >+ .get("ERMModule") >+ .then(value => { >+ this.ERMModule = value >+ if (!this.ERMModule) { >+ this.loaded() >+ return this.setError( >+ this.$__( >+ 'The e-resource management module is disabled, turn on <a href="/cgi-bin/koha/admin/preferences.pl?tab=&op=search&searchfield=ERMModule">ERMModule</a> to use it' >+ ), >+ false >+ ) >+ } >+ }) >+ .then(() => { >+ if (this.ERMModule) { >+ fetch_config() >+ } else { >+ this.loaded() >+ this.initialized = true >+ } > }) >- .then(() => this.loaded()) > }, > components: { > Breadcrumb, >diff --git a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/system-preferences-api-client.js b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/system-preferences-api-client.js >index 1e4cd3f7a70..f11906630fc 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/system-preferences-api-client.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/vue/fetch/system-preferences-api-client.js >@@ -9,6 +9,10 @@ export class SysprefAPIClient extends HttpClient { > > get sysprefs() { > return { >+ get: (variable) => >+ this.get({ >+ endpoint: `/?pref=${variable}`, >+ }), > update: (variable, value) => > this.post({ > endpoint: "", >diff --git a/svc/config/systempreferences b/svc/config/systempreferences >index acaf3e485f9..367f220b44f 100755 >--- a/svc/config/systempreferences >+++ b/svc/config/systempreferences >@@ -70,6 +70,35 @@ sub set_preference { > C4::Service->return_success( $response ); > } > >+=head2 get_preference >+ >+=over 4 >+ >+=item url path >+ >+GET /svc/config/systempreferences/$preference >+ >+=item url query >+ >+preference=$pref_name >+ >+=back >+ >+Used to get a single system preference. >+ >+=cut >+ >+sub get_preference { >+ my $preference = scalar $query->param('pref'); >+ >+ my $value = C4::Context->preference( $preference ); >+ $response->param( value => $value ); >+ >+ C4::Service->return_success( $response ); >+} >+ >+ >+ > =head2 set_preferences > > =over 4 >@@ -109,4 +138,5 @@ sub set_preferences { > C4::Service->dispatch( > [ 'POST /([A-Za-z0-9_-]+)', [ 'value' ], \&set_preference ], > [ 'POST /', [], \&set_preferences ], >+ [ 'GET /', [ 'pref' ], \&get_preference], > ); >-- >2.25.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 33408
:
149131
|
149132
|
149133
|
149134
|
149184
|
149185
|
149186
|
149196
|
149197
|
149198
|
149200
|
149204
|
149205
|
149206
|
149207
|
149208
|
149209
|
149254
|
149438
|
149516
|
149517
|
149518
|
149535
|
149536
|
149537
|
149538
|
149539
|
149540
|
149541
|
149542
|
149543
|
149570