From 7c5aa44739165d8929e8020de254328fbf530280 Mon Sep 17 00:00:00 2001 From: Mark Hofstetter Date: Mon, 27 Mar 2023 12:09:32 +0200 Subject: [PATCH] Bug 28166: Optionally add MARC fields to authority search MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=utf-8 adds the same feature to Authority Search as in the "normal" Z39.50 search, to display arbitrary marc fields in the search results 1. apply patch 2. go to System preferences->Authorities preferences 3. the new option "AdditionalFieldsInZ3950ResultAuthSearch" shows up 4. enter the additional field numbers you want to see eg '001' 5. make an "Authority" search via Z39.50 6. the new new column "Additional fields" will display 7. sign off ;-) Sponsored-by: Steiermärkische Landesbibliothek Signed-off-by: Laura Escamilla Signed-off-by: Clemens Tubach Bug 28166: Removed comments and _add_rowdata Bug 28166: (follow-up) Restore custom fields for biblios To test: 1 - Add "245$a" to AdditionalFieldsInZ3950ResultSearch preference 2 - Cataloging -> new from z3950 3 - Search and see results have 'additional fields' including the title 4 - Apply other patches 5 - Restart all 6 - Repeat Z39 Additional fields are now blank 7 - Apply thi patch, restart all 8 - Repeat Z39 search. Additional fields are restored Bug 28166: (QA follow-up) Fix rebase issue --- C4/Breeding.pm | 10 +++++++--- installer/data/mysql/atomicupdate/bug_28166.pl | 17 +++++++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../modules/admin/preferences/authorities.pref | 4 ++++ .../en/modules/cataloguing/z3950_auth_search.tt | 16 ++++++++++++++++ 5 files changed, 45 insertions(+), 3 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_28166.pl diff --git a/C4/Breeding.pm b/C4/Breeding.pm index 8bfa513bca..b441e4d6fb 100644 --- a/C4/Breeding.pm +++ b/C4/Breeding.pm @@ -314,7 +314,8 @@ sub _handle_one_result { $row->{server} = $servhref->{servername}; $row->{breedingid} = $breedingid; $row->{isbn}=_isbn_replace($row->{isbn}); - $row = _add_custom_field_rowdata($row, $marcrecord); + my $pref_newtags = C4::Context->preference('AdditionalFieldsInZ3950ResultSearch'); + $row = _add_custom_field_rowdata($row, $marcrecord, $pref_newtags); } return ( $row, $error ); } @@ -345,8 +346,7 @@ sub _do_xslt_proc { sub _add_custom_field_rowdata { - my ( $row, $record ) = @_; - my $pref_newtags = C4::Context->preference('AdditionalFieldsInZ3950ResultSearch'); + my ( $row, $record, $pref_newtags ) = @_; my $pref_flavour = C4::Context->preference('MarcFlavour'); $pref_newtags =~ s/^\s+|\s+$//g; @@ -602,6 +602,10 @@ sub Z3950SearchAuth { $row_data{heading} = $heading; $row_data{authid} = $authid; $row_data{heading_code} = $heading_authtype_code; + $row_data{row} = _add_custom_field_rowdata( + { %row_data }, $marcrecord, + C4::Context->preference('AdditionalFieldsInZ3950ResultAuthSearch') + ) if C4::Context->preference('AdditionalFieldsInZ3950ResultAuthSearch'); push( @breeding_loop, \%row_data ); } else { diff --git a/installer/data/mysql/atomicupdate/bug_28166.pl b/installer/data/mysql/atomicupdate/bug_28166.pl new file mode 100755 index 0000000000..1939efcd5f --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_28166.pl @@ -0,0 +1,17 @@ +use Modern::Perl; + +return { + bug_number => "28166", + description => "Add system preference for additional columns for Z39.50 authority search results", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + # Do you stuffs here + $dbh->do(q{INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES +('AdditionalFieldsInZ3950ResultAuthSearch', '', NULL, 'Determines which MARC field/subfields are displayed in -Additional field- column in the result of an authority Z39.50 search', 'Free') +}); + # Print useful stuff here + # sysprefs + say $out "Added new system preference 'AdditionalFieldsInZ3950ResultAuthSearch'"; + }, +}; diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 38a756f817..87c0736479 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -11,6 +11,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('AcqWarnOnDuplicateInvoice','0','','Warn librarians when they try to create a duplicate invoice','YesNo'), ('ActionLogsTraceDepth', '0', '', 'Sets the maximum depth of the action logs stack trace', 'Integer'), ('AdditionalContentsEditor','tinymce','tinymce|codemirror','Choose tool for editing News.', 'Choice'), +('AdditionalFieldsInZ3950ResultAuthSearch', '', NULL, 'Determines which MARC field/subfields are displayed in -Additional field- column in the result of an authority Z39.50 search', 'Free'), ('AdditionalFieldsInZ3950ResultSearch', '', NULL, 'Determines which MARC field/subfields are displayed in -Additional field- column in the result of a search Z3950', 'Free'), ('AddressForFailedOverdueNotices', '', NULL, 'Destination email for failed overdue notices. If left empty then it will fallback to the first defined address in the following list: Library ReplyTo, Library Email, ReplytoDefault and KohaAdminEmailAddress', 'free'), ('AddressFormat','us','us|de|fr','Choose format to display postal addresses', 'Choice'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/authorities.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/authorities.pref index 787906e1cc..161d7bfdb8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/authorities.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/authorities.pref @@ -75,6 +75,10 @@ Authorities: default: "Work cat." type: textarea class: code + - + - Display the MARC field/subfields + - pref: AdditionalFieldsInZ3950ResultAuthSearch + - " in the 'Additional fields' column of Z39.50 search results (use comma as delimiter e.g.: \"001, 035$a\")" Linker: - diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt index 487e09553a..a0cb49d701 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/z3950_auth_search.tt @@ -1,5 +1,6 @@ [% USE raw %] [% USE Asset %] +[% USE Koha %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] [% IF ( opsearch ) %] @@ -81,6 +82,9 @@ Server Heading Authority type + [% IF Koha.Preference('AdditionalFieldsInZ3950ResultAuthSearch') %] + Additional fields + [% END %] Actions [% FOREACH breeding_loo IN breeding_loop %] @@ -89,6 +93,18 @@ [% breeding_loo.server | html %] [% breeding_loo.heading | html %] [% breeding_loo.heading_code | html %] + [% IF Koha.Preference('AdditionalFieldsInZ3950ResultAuthSearch') != '' %] + +
+ [% FOREACH addnumberfield IN breeding_loo.row.addnumberfields %] + [% FOREACH string IN breeding_loo.row.$addnumberfield %] +
[% addnumberfield | html %]:
+
[% string | html %]
+ [% END %] + [% END %] +
+ + [% END %]
MARC -- 2.30.2