@@ -, +, @@ --- C4/Installer.pm | 4 ++-- installer/data/mysql/atomicupdate/bug_33117.pl | 16 ++++++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../prog/en/includes/js_includes.inc | 4 ++-- .../prog/en/modules/acqui/duplicate_orders.tt | 2 +- .../prog/en/modules/acqui/histsearch.tt | 3 ++- .../modules/admin/preferences/circulation.pref | 6 ++++++ .../prog/en/modules/circ/curbside_pickups.tt | 2 +- .../prog/en/modules/course_reserves/course.tt | 3 ++- .../prog/en/modules/patron_lists/list.tt | 3 ++- .../prog/en/modules/reserve/request.tt | 2 +- .../prog/en/modules/virtualshelves/shelves.tt | 2 +- .../intranet-tmpl/prog/js/pages/tags-review.js | 2 +- .../intranet-tmpl/prog/js/patron-autocomplete.js | 12 +++++++----- koha-tmpl/intranet-tmpl/prog/js/viewlog.js | 2 +- 15 files changed, 46 insertions(+), 18 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_33117.pl --- a/C4/Installer.pm +++ a/C4/Installer.pm @@ -734,9 +734,9 @@ sub run_db_rev { my $schema = Koha::Database->new->schema; $schema->txn_do( sub { - $db_rev->{up}->( { dbh => $schema->storage->dbh, out => $outfh } ); + $db_rev->{up}->( { dbh => $schema->storage->dbh, out => $outfh }, ); } - ); + ); } catch { $error = $_; --- a/installer/data/mysql/atomicupdate/bug_33117.pl +++ a/installer/data/mysql/atomicupdate/bug_33117.pl @@ -0,0 +1,16 @@ +use Modern::Perl; + +return { + bug_number => "33117", + description => "Patron checkout search not working if searching with second surname", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + + $dbh->do(q{INSERT INTO systempreferences (`variable`, `value`, `explanation`, `options`, `type`) VALUES + ('PatronAutoCompleteSearchMethod','1','Allows staff to search for patrons using the method','Starts with|Contains','YesNo'), + }); + # sysprefs + say $out "Added new system preference 'PatronAutocompleteSearchMethod'"; + }, +}; --- a/installer/data/mysql/mandatory/sysprefs.sql +++ a/installer/data/mysql/mandatory/sysprefs.sql @@ -552,6 +552,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('PassItemMarcToXSLT','0',NULL,'If enabled, item fields in the MARC record will be made avaiable to XSLT sheets. Otherwise they will be removed.','YesNo'), ('PatronAnonymizeDelay','',NULL,'Delay for anonymizing patrons', 'Integer'), ('PatronAutoComplete','1','Try|Don\'t try','to guess the patron being entered while typing a patron search for circulation or patron search. Only returns the first 10 results at a time.','YesNo'), +('PatronAutocompleteSearchMethod','1','Allows staff to search for patrons using the method 'Starts with|Contains','YesNo'), ('PatronDuplicateMatchingAddFields','surname|firstname|dateofbirth', NULL,'A list of fields separated by "|" to deduplicate patrons when created','Free'), ('patronimages','0',NULL,'Enable patron images for the staff interface','YesNo'), ('PatronRemovalDelay','',NULL,'Delay for removing anonymized patrons', 'Integer'), --- a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc +++ a/koha-tmpl/intranet-tmpl/prog/en/includes/js_includes.inc @@ -78,11 +78,11 @@ $(document).ready(function(){ [% IF ( CAN_user_circulate_circulate_remaining_permissions ) %] if ( $("#findborrower").length ) { - patron_autocomplete($("#findborrower"), { 'link-to': 'circ' }); + patron_autocomplete($("#findborrower"), { 'link-to': 'circ' },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); } [% END %] if ( $("#searchmember").length ) { - patron_autocomplete($("#searchmember"), { 'link-to': 'patron' }); + patron_autocomplete($("#searchmember"), { 'link-to': 'patron' },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); } }); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/duplicate_orders.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/duplicate_orders.tt @@ -347,7 +347,7 @@ Acquisitions › Koha $("#find_patron").val('').focus(); return false; } - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); $("body").on("click",".removePatron",function(e){ e.preventDefault(); var divid = $(this).parent().attr("id"); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/histsearch.tt @@ -1,6 +1,7 @@ [% USE raw %] [% USE Asset %] [% USE KohaDates %] +[% USE Koha %] [% USE TablesSettings %] [% USE Branches %] [% SET footerjs = 1 %] @@ -187,7 +188,7 @@ $("#find_patron").val('').focus(); return false; } - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); $("body").on("click",".removePatron",function(e){ e.preventDefault(); var divid = $(this).parent().attr("id"); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -26,6 +26,12 @@ Circulation: 0: "Don't try" - to guess the patron being entered while typing a patron search for circulation or patron search. - Only returns the first 10 results at a time. + - + - pref: PatronAutocompleteSearchMethod + choices: + 1: "Starts with" + 0: "Contains" + - allows staff to choose between "Starts with" or "Contains" when searching for patrons. - - pref: itemBarcodeInputFilter choices: --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/curbside_pickups.tt @@ -655,7 +655,7 @@ window.location.href = "/cgi-bin/koha/circ/curbside_pickups.pl?op=find-patron&borrowernumber=" + ui.item.patron_id; return false; } - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); } $("#pickup-tabs a[data-toggle='tab']").on("shown.bs.tab", function (e) { --- a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course.tt @@ -1,4 +1,5 @@ [% PROCESS 'i18n.inc' %] +[% USE Koha %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] [% IF course_name %] Edit [% course_name | html %] [% ELSE %] New course [% END %] › Course reserves › Koha @@ -181,7 +182,7 @@ AddInstructor( ui.item.surname + ", " + ui.item.firstname, ui.item.patron_id ); return false; } - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); if ( ! $('#instructors').html() ) { $('#course_instructors').hide(); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/list.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/patron_lists/list.tt @@ -1,5 +1,6 @@ [% USE raw %] [% USE Asset %] +[% USE Koha %] [% USE KohaDates %] [% USE TablesSettings %] [% SET footerjs = 1 %] @@ -267,7 +268,7 @@ $("#find_patron").val('').focus(); return false; } - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); $("body").on("click",".removePatron",function(e){ e.preventDefault(); var divid = $(this).parent().attr("id"); --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -1680,7 +1680,7 @@ Sticky.hcSticky({ stickTo: "#existing_holds", stickyClass: "floating" - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); [% IF Koha.Preference('EnableItemGroupHolds') %] $(':radio[name="item_group_id"]').change(function(){ --- a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/shelves.tt @@ -961,7 +961,7 @@ $('#new_owner').val( ui.item.patron_id ); $('#find_patron').val('').focus(); return false; - }}); + }},'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); $('#transferform').submit(function() { if( $('#new_owner').val() == '' ) { --- a/koha-tmpl/intranet-tmpl/prog/js/pages/tags-review.js +++ a/koha-tmpl/intranet-tmpl/prog/js/pages/tags-review.js @@ -163,5 +163,5 @@ $(document).ready(function() { $("#approver").val( ui.item.patron_id ); return false; } - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); }); --- a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js +++ a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js @@ -1,4 +1,4 @@ -function patron_autocomplete(node, options) { +function patron_autocomplete(node, options, search_type) { let link_to; let url_params; let on_select_callback; @@ -20,10 +20,11 @@ function patron_autocomplete(node, options) { .filter(function(s){ return s.length }) .forEach(function(pattern,i){ let subquery_or = []; - defaultPatronSearchFields.split(',').forEach(function(field,i){ + defaultPatronSearchFields.split(',').forEach(function(field,i,search_type){ subquery_or.push( {["me."+field]: {'like': pattern + '%'}} - ); + {["me."+field]: {'like': pattern}} + ); }); subquery_and.push(subquery_or); }); @@ -47,7 +48,7 @@ function patron_autocomplete(node, options) { error: function(e) { if ( e.state() != 'rejected' ) { alert( __("An error occurred. Check the logs") ); - } + e return response(); } }); @@ -97,6 +98,7 @@ function patron_autocomplete(node, options) { + ( item.firstname ? item.firstname.escapeHtml() : "" ) + cardnumber.escapeHtml() + " " + + ( item.date_of_birth ? $date(item.date_of_birth) + " (" @@ -120,4 +122,4 @@ function patron_autocomplete(node, options) { + "" ) .appendTo( ul ); }; -} + } --- a/koha-tmpl/intranet-tmpl/prog/js/viewlog.js +++ a/koha-tmpl/intranet-tmpl/prog/js/viewlog.js @@ -148,5 +148,5 @@ $(document).ready(function(){ $("#user").val( ui.item.patron_id ); return false; } - }); + },'[%Koha.Preference('PatronAutocompleteSearchMethod') | html %]'); }); --