Bugzilla – Attachment 151064 Details for
Bug 29822
Use table column selection modal for DefaultPatronSearchFields preference
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 29822: Escape backslash on split
Bug-29822-Escape-backslash-on-split.patch (text/plain), 6.41 KB, created by
Jonathan Druart
on 2023-05-11 09:41:38 UTC
(
hide
)
Description:
Bug 29822: Escape backslash on split
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2023-05-11 09:41:38 UTC
Size:
6.41 KB
patch
obsolete
>From b9668481e8d9356a5a39b5f859b398094d5e27ba Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Thu, 11 May 2023 11:31:09 +0200 >Subject: [PATCH] Bug 29822: Escape backslash on split > >+ effectively replace 'standard', don't display it. >+ avoid mixing | and , >--- > .../intranet-tmpl/prog/en/includes/patron-search.inc | 3 ++- > koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc | 2 +- > koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js | 2 +- > t/db_dependent/selenium/patrons_search.t | 8 ++++---- > 4 files changed, 8 insertions(+), 7 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc >index ca82654efb7..87efada5fa4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc >@@ -307,12 +307,13 @@ > let search_fields = $("#searchfieldstype_filter").val(); > if ( !search_fields ) { > search_fields = "[% Koha.Preference('DefaultPatronSearchFields') || 'firstname|middle_name|surname|othernames|cardnumber|userid' | html %]"; >+ search_fields.replaceAll('\|', ','); > } > > let subquery_and = []; > patterns.forEach(function(pattern,i){ > let sub_or = []; >- search_fields.split('|').forEach(function(attr,ii){ >+ search_fields.split(',').forEach(function(attr,ii){ > sub_or.push({["me."+attr]:{"like":(search_type == "contain" ? "%" : "" ) + pattern + "%"}}); > if ( attr == 'dateofbirth' ) { > try { >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc >index b4c50478635..9ec62c2d10e 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/patronfields.inc >@@ -87,7 +87,7 @@ > <select name="searchfieldstype" id="searchfieldstype_filter"> > [% END %] > [% SET standard = Koha.Preference('DefaultPatronSearchFields') || 'firstname|middle_name|surname|othernames|cardnumber|userid' %] >- [% standard.replace('|', ',') %] >+ [% standard = standard.replace('\|', ',') %] > [% SET full_address = 'streetnumber,streettype,address,address2,city,state,zipcode,country' %] > [% SET all_emails = 'email,emailpro,B_email' %] > [% SET all_phones = 'phone,phonepro,B_phone,altcontactphone,mobile' %] >diff --git a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js b/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js >index d273f394576..4f4a1ebcb59 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/patron-autocomplete.js >@@ -20,7 +20,7 @@ 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){ > subquery_or.push( > {["me."+field]: {'like': pattern + '%'}} > ); >diff --git a/t/db_dependent/selenium/patrons_search.t b/t/db_dependent/selenium/patrons_search.t >index e01eb568213..3e9fd390beb 100755 >--- a/t/db_dependent/selenium/patrons_search.t >+++ b/t/db_dependent/selenium/patrons_search.t >@@ -161,18 +161,18 @@ subtest 'Search patrons' => sub { > $driver->get( $base_url . "/members/members-home.pl" ); > my @adv_options = $driver->find_elements('//select[@id="searchfieldstype"]/option'); > is( scalar @adv_options, $nb_standard_fields + 1, 'All standard fields are searchable if DefaultPatronSearchFields not set. middle_name is there.'); >- is( $adv_options[0]->get_value(), 'firstname|middle_name|surname|othernames|cardnumber|userid', 'Standard search uses hard coded list when DefaultPatronSearchFields not set'); >+ is( $adv_options[0]->get_value(), 'firstname,middle_name,surname,othernames,cardnumber,userid', 'Standard search uses hard coded list when DefaultPatronSearchFields not set'); > my @filter_options = $driver->find_elements('//select[@id="searchfieldstype_filter"]/option'); > is( scalar @filter_options, $nb_standard_fields + 1, 'All standard fields + middle_name are searchable by filter if DefaultPatronSearchFields not set'); >- is( $filter_options[0]->get_value(), 'firstname|middle_name|surname|othernames|cardnumber|userid', 'Standard filter uses hard coded list when DefaultPatronSearchFields not set'); >+ is( $filter_options[0]->get_value(), 'firstname,middle_name,surname,othernames,cardnumber,userid', 'Standard filter uses hard coded list when DefaultPatronSearchFields not set'); > C4::Context->set_preference('DefaultPatronSearchFields',"firstname|initials"); > $driver->get( $base_url . "/members/members-home.pl" ); > @adv_options = $driver->find_elements('//select[@id="searchfieldstype"]/option'); > is( scalar @adv_options, $nb_standard_fields, 'New option added when DefaultPatronSearchFields is populated with a field. Note that middle_name disappears, we do not want it if not part of DefaultPatronSearchFields'); >- is( $adv_options[0]->get_value(), 'firstname|initials', 'Standard search uses DefaultPatronSearchFields when populated'); >+ is( $adv_options[0]->get_value(), 'firstname,initials', 'Standard search uses DefaultPatronSearchFields when populated'); > @filter_options = $driver->find_elements('//select[@id="searchfieldstype_filter"]/option'); > is( scalar @filter_options, $nb_standard_fields, 'New filter option added when DefaultPatronSearchFields is populated with a field'); >- is( $filter_options[0]->get_value(), 'firstname|initials', 'Standard filter uses DefaultPatronSearchFields when populated'); >+ is( $filter_options[0]->get_value(), 'firstname,initials', 'Standard filter uses DefaultPatronSearchFields when populated'); > C4::Context->set_preference('DefaultPatronSearchFields',"firstname|initials|horses"); > $driver->get( $base_url . "/members/members-home.pl" ); > @adv_options = $driver->find_elements('//select[@id="searchfieldstype"]/option'); >-- >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 29822
:
144814
|
144831
|
146430
|
146445
|
146488
|
146489
|
146490
|
146491
|
146492
|
147433
|
147434
|
147435
|
147436
|
147437
|
149890
|
149891
|
149892
|
149893
|
149894
|
151058
|
151059
|
151060
|
151061
|
151062
|
151064
|
151233
|
151234
|
151235
|
151236
|
151237
|
151238
|
153373
|
153374
|
153375
|
153376
|
153377
|
153378
|
153379
|
153380
|
153381
|
153382
|
153383
|
153384
|
153442
|
153443
|
153444
|
153445
|
153446
|
153447
|
154361
|
154362
|
154363
|
154364
|
154365
|
154366