From e3d7577bd21ad5c566a591e5d8cecc1021f11b14 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Fri, 12 Mar 2021 18:01:28 -0300 Subject: [PATCH] Bug 27864: Visual feedback on overridden pickup locations when placing hold This patch makes the form for placing a hold, use the API to retrieve the valid pickup locations for a biblio. To test: 1. Try placing a hold on a biblio with several items. => SUCCESS: You get a list of valid pickup locations => FAIL: There's no sign they are overrides to rules 2. Apply this patch 3. Repeat 1 => SUCCESS: Same behavior as before, but there's a sign +tooltip for overridden ones. 4. Sign off :-D Note: styling follow-up coming --- .../prog/en/modules/reserve/request.tt | 50 ++++++++++++++++--- reserve/request.pl | 2 +- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt index 957f0bec6fe..cdf8b396d35 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -415,12 +415,13 @@
  • - + + [% ELSE %] +
  • @@ -1208,6 +1209,43 @@ templateResult: display_pickup_location }); }); + $("#pickup").each( function () { + var this_dropdown = $(this); + var patron_id = $(this).data('patron-id'); + var biblio_id = $(this).data('biblio-id'); + + this_dropdown.select2({ + allowClear: false, + ajax: { + url: '/api/v1/biblios/' + encodeURIComponent(biblio_id) + '/pickup_locations', + delay: 300, // wait 300 milliseconds before triggering the request + dataType: 'json', + data: function (params) { + var search_term = (params.term === undefined) ? '' : params.term; + var query = { + "q": JSON.stringify({"name":{"-like":search_term+'%'}}), + "_order_by": "name", + "patron_id": patron_id + }; + return query; + }, + processResults: function (data) { + var results = []; + data.forEach( function ( pickup_location ) { + results.push( + { + "id": pickup_location.library_id.escapeHtml(), + "text": pickup_location.name.escapeHtml(), + "needs_override": pickup_location.needs_override + } + ); + }); + return { "results": results }; + } + }, + templateResult: display_pickup_location + }); + }); }); function check() { diff --git a/reserve/request.pl b/reserve/request.pl index 1751a0aa921..b7b09f77acf 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -67,7 +67,7 @@ my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( ); my $showallitems = $input->param('showallitems'); -my $pickup = $input->param('pickup'); +my $pickup = $input->param('pickup') || C4::Context->userenv->{'branch'}; my $itemtypes = { map { $_->{itemtype} => $_ } @{ Koha::ItemTypes->search_with_localization->unblessed } }; -- 2.30.2