From 605183f48129a6a11edb99d0dca14524734b24c2 Mon Sep 17 00:00:00 2001 From: Janusz Kaczmarek Date: Fri, 22 Nov 2024 23:04:56 +0000 Subject: [PATCH] Bug 38514: Filter out autocomplete list of authorities with ConsiderHeadingUse After adding ConsiderHeadingUse system preference we can limit search results of authority finder plugin to authorities useable in specyfic type of fields (based on 008/14-16 data in authorities record). The autocomplete feature in auth_finder.pl should obey the ConsiderHeadingUse setting. Test plan: ========== 0. Have a standard KTD enviromnent. 1. Apply Bug 38494. 2. Set ConsiderHeadingUse system preference to "Don't", ShowHeadingUse to 'Show'. 3. Go to the Cataloging editor and open the authority finder plugin for the 650 field. 4. Type "Application" in "Search main heading ($a only)" field. 5. Notice two autocomplete values: "Application program interfaces (Computer software)" and "Application software". 6. Click search button. 7. There are two result: "Application program interfaces (Computer software)" (the one with 'v' Subject in Heading Use column) and Application software Development (with 'x' Subject in Heading Use column). 8. Close the authority finder window, cancel the editor. Set ConsiderHeadingUse system preference to "Do". 9. Go to the Cataloging editor and open the authority finder plugin for the 650 field. 10. Type "Application" in "Search main heading ($a only)" field. 11. Notice two autocomplete values: "Application program interfaces (Computer software)" and "Application software". 12. Click search button. 13. There is only one result: "Application program interfaces (Computer software)" (the one with 'v' Subject in Heading Use column). So we get only one result but there were two autocomplete hints. 14. Apply the patch ; restart all ; clear the browser js cache (or go to a private browser window). 15. Repeat p. 9-10. 16. Notice that there is only one autocomplete hint: "Application program interfaces (Computer software)". 17. Click search button. 18. There is only one result: "Application program interfaces (Computer software)" (the one with 'v' Subject in Heading Use column). Signed-off-by: Roman Dolny Signed-off-by: Lisette Scheer --- authorities/ysearch.pl | 20 +++++++++++++++++++ .../prog/js/auth-finder-search.js | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/authorities/ysearch.pl b/authorities/ysearch.pl index d2a4ec2289d..70b3560e499 100755 --- a/authorities/ysearch.pl +++ b/authorities/ysearch.pl @@ -53,12 +53,32 @@ if ( $auth_status ne "ok" ) { my @value = $query->multi_param('term'); my $searchtype = $query->param('querytype'); my @marclist = ($searchtype); +my $index = $query->param('index'); my $authtypecode = $query->param('authtypecode'); my @and_or = $query->multi_param('and_or'); my @excluding = $query->multi_param('excluding'); my @operator = $query->multi_param('operator'); my $orderby = $query->param('orderby'); +if ( C4::Context->preference('ConsiderHeadingUse') ) { + my $marcflavour = C4::Context->preference('marcflavour'); + my $biblio_tag = substr( $index, 4, 3 ); + if ( $marcflavour eq 'MARC21' ) { + my $heading_use_search_field = + $biblio_tag =~ /^[127]/ ? 'Heading-use-main-or-added-entry' + : $biblio_tag =~ /^6/ ? 'Heading-use-subject-added-entry' + : $biblio_tag =~ /^[48]/ ? 'Heading-use-series-added-entry' + : undef; + if ($heading_use_search_field) { + push @marclist, $heading_use_search_field; + push @and_or, 'and'; + push @excluding, ''; + push @operator, 'is'; + push @value, 'a'; + } + } +} + my $resultsperpage = 50; my $startfrom = 0; diff --git a/koha-tmpl/intranet-tmpl/prog/js/auth-finder-search.js b/koha-tmpl/intranet-tmpl/prog/js/auth-finder-search.js index dfd81947c85..029d7258ede 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/auth-finder-search.js +++ b/koha-tmpl/intranet-tmpl/prog/js/auth-finder-search.js @@ -19,6 +19,7 @@ $(document).ready(function () { url: "/cgi-bin/koha/authorities/ysearch.pl", dataType: "json", data: { + index: index, authtypecode: authtypecode, term: request.term, op: "do_search", @@ -52,6 +53,7 @@ $(document).ready(function () { url: "/cgi-bin/koha/authorities/ysearch.pl", dataType: "json", data: { + index: index, authtypecode: authtypecode, term: request.term, op: "do_search", @@ -85,6 +87,7 @@ $(document).ready(function () { url: "/cgi-bin/koha/authorities/ysearch.pl", dataType: "json", data: { + index: index, authtypecode: authtypecode, term: request.term, op: "do_search", @@ -118,6 +121,7 @@ $(document).ready(function () { url: "/cgi-bin/koha/authorities/ysearch.pl", dataType: "json", data: { + index: index, authtypecode: authtypecode, term: request.term, op: "do_search", -- 2.39.5