Bug 33117: Adding new PatronAutoCompleteSearchMethod system preference
This patch adds a new system preference called "PatronAutoCompleteSearchMethod" which allows staff to choose between "Starts with" or "Contains" when searching for patrons. The "Contains" option should be useful when searching for patrons that have multiple surnames or when searching using a patron's middle name. New Test Plan: 0. Ensure system preference PatronAutoComplete is set to Try 1. Create a patron that has a first name, middle name and two surnames. (i.e. Adela Maria, Hernandez Acosta). 2. In patron or checkout search, enter their first name and first surname without submitting. 3. Confirm that a record is found in the autocomplete results 4. In patron or checkout search, enter their first name and second surname without submitting. 5. Confirm that no record is found. 6. Enter their middle name and first surname. Confirm that no record is found. 7. Enter their middle name and second surname. Confirm that no record is found. 8. Apply the patch, update database 9. Under Administration > Global System Preferences > search for "PatronAutocompleteSearchMethod" 10. Choose "Contains" instead of "Starts with" for the system preference, reload your search page 11. Repeat steps 2-4. The patron record should appear for all search methods. 12. Sign off! Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
b7f89dcca3
commit
7b675997b4
5 changed files with 27 additions and 1 deletions
17
installer/data/mysql/atomicupdate/bug_33117.pl
Normal file
17
installer/data/mysql/atomicupdate/bug_33117.pl
Normal file
|
@ -0,0 +1,17 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => "33117",
|
||||
description => "Patron checkout is not able to find patrons if using a second surname or other name during the search",
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ( $dbh, $out ) = @$args{qw(dbh out)};
|
||||
|
||||
$dbh->do(q{
|
||||
INSERT INTO systempreferences (`variable`,`value`,`explanation`,`options`,`type`)
|
||||
VALUES ('PatronAutoCompleteSearchMethod','starts_with','Allows staff to set a default method when searching for patrons with autocomplete','starts_with|contains','Choice');
|
||||
});
|
||||
|
||||
say $out "Added new system preference 'PatronAutoCompleteSearchMethod'";
|
||||
},
|
||||
};
|
|
@ -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','starts_with','Choose which search method to use by default when searching with PatronAutoComplete','starts_with|choice','Choice'),
|
||||
('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'),
|
||||
|
|
|
@ -71,6 +71,7 @@
|
|||
|
||||
<script>
|
||||
var defaultPatronSearchFields = "[% Koha.Preference('DefaultPatronSearchFields') || 'firstname,middle_name,surname,othernames,cardnumber,userid' | html %]";
|
||||
var patronAutoCompleteSearchMethod = "[% Koha.Preference('PatronAutoCompleteSearchMethod') || 'contains' | html %]";
|
||||
var loggedInLibrary = '[% Branches.GetLoggedInBranchcode | html %]';
|
||||
var singleBranchMode = '[% singleBranchMode | html %]';
|
||||
</script>
|
||||
|
|
|
@ -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:
|
||||
starts_with: "Starts with"
|
||||
contains: "Contains"
|
||||
- Enable this search method to determine whether to use Starts with or Contains for autocomplete patron searches.
|
||||
-
|
||||
- pref: itemBarcodeInputFilter
|
||||
choices:
|
||||
|
|
|
@ -2,6 +2,7 @@ function patron_autocomplete(node, options) {
|
|||
let link_to;
|
||||
let url_params;
|
||||
let on_select_callback;
|
||||
let leading_wildcard = patronAutoCompleteSearchMethod === 'contains' ? '%' : '';
|
||||
if ( options ) {
|
||||
if ( options['link-to'] ) {
|
||||
link_to = options['link-to'];
|
||||
|
@ -22,7 +23,7 @@ function patron_autocomplete(node, options) {
|
|||
let subquery_or = [];
|
||||
defaultPatronSearchFields.split(',').forEach(function(field,i){
|
||||
subquery_or.push(
|
||||
{["me."+field]: {'like': pattern + '%'}}
|
||||
{["me."+field]: {'like': leading_wildcard + pattern + '%'}}
|
||||
);
|
||||
});
|
||||
subquery_and.push(subquery_or);
|
||||
|
|
Loading…
Reference in a new issue