From 1e1616b993047fbaf0ee838a0049de03b16dbde6 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=utf8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi --- C4/Breeding.pm | 10 +++++++--- installer/data/mysql/atomicupdate/bug_28166.pl | 17 +++++++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../modules/admin/preferences/authorities.pref | 5 +++++ .../en/modules/cataloguing/z3950_auth_search.tt | 16 ++++++++++++++++ 5 files changed, 46 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 8a7aec0d27..91989ef7bc 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 eabea67147..484368fffe 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 @@ -91,6 +91,11 @@ Authorities: "8": 8XX "9": 9XX - tab. If the selected tab does not exist, the view will default to the first tab. + - + - 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: - - Use the 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 7b9e0a5258..25a645c5d0 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,6 +1,7 @@ [% USE raw %] [% USE Asset %] [% PROCESS 'i18n.inc' %] +[% USE Koha %] [% SET footerjs = 1 %] [% INCLUDE 'doc-head-open.inc' %] [% FILTER collapse %] @@ -85,6 +86,9 @@ <th>Server</th> <th>Heading</th> <th>Authority type</th> + [% IF Koha.Preference('AdditionalFieldsInZ3950ResultAuthSearch') %] + <th>Additional fields</th> + [% END %] <th class="noExport">Actions</th> </tr></thead> <tbody>[% FOREACH breeding_loo IN breeding_loop %] @@ -93,6 +97,18 @@ <td>[% breeding_loo.server | html %]</td> <td>[% breeding_loo.heading | html %]</td> <td>[% breeding_loo.heading_code | html %]</td> + [% IF Koha.Preference('AdditionalFieldsInZ3950ResultAuthSearch') != '' %] + <td> + <dl> + [% FOREACH addnumberfield IN breeding_loo.row.addnumberfields %] + [% FOREACH string IN breeding_loo.row.$addnumberfield %] + <dt>[% addnumberfield | html %]:</dt> + <dd>[% string | html %]</dd> + [% END %] + [% END %] + </dl> + </td> + [% END %] <td class="actions"> <div class="btn-group dropup"> <a class="btn btn-default btn-xs z3950actions" href="#">MARC</a><button class="btn-xs dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button> -- 2.39.5