From 6bed5cf5960b974376a1ea52fcc426e92b24f245 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 Signed-off-by: Martin Renvoize --- .../prog/en/modules/reserve/request.tt | 50 ++++++++++++++++--- 1 file changed, 44 insertions(+), 6 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 b3bf8df72e8..6b021298f6e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -441,12 +441,13 @@
  • - + + [% ELSE %] +
  • @@ -1237,6 +1238,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() { -- 2.31.1