From d40fe232932a237fecfc2b5e693917421bf57237 Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Wed, 28 Dec 2022 17:08:04 +0100 Subject: [PATCH] Bug 29173: Fixed pre-filling of the search form from the "Replace record with ZR39.50/SRU" (Authority page detail) Test Plan : 1) You must have a Z39.50/SRU server for authorities 2) Go to an authority detail page (Author - Uniform title - Subject) 3)After go to "Edit"-> "Edit record" -> "Replace record via..." or choose "Replace Record.." directly 4) See that form is also prefilled with data now --- cataloguing/z3950_auth_search.pl | 44 ++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/cataloguing/z3950_auth_search.pl b/cataloguing/z3950_auth_search.pl index ae6a6083b2..5b413201fa 100755 --- a/cataloguing/z3950_auth_search.pl +++ b/cataloguing/z3950_auth_search.pl @@ -27,26 +27,48 @@ use C4::Breeding qw( Z3950Search Z3950SearchAuth ); use MARC::Record; use Koha::Authorities; use Koha::Authority::Types; +use C4::AuthoritiesMarc qw( GetAuthority ); my $input = CGI->new; my $dbh = C4::Context->dbh; my $error = $input->param('error'); my $authid = $input->param('authid') || 0; -my $authority = Koha::Authorities->find($authid); -my $record = $authority->record; -my $authtypecode = $authority ? $authority->authtypecode : ''; -my $authority_type = Koha::Authority::Types->find($authtypecode); -my $authtag = $authority_type->auth_tag_to_report; -my $authfields = $authtag ? $record->field($authtag) : ''; +my $record = GetAuthority($authid); +my $marc_flavour = C4::Context->preference('marcflavour'); +my $authfields_mapping = { + 'authorpersonal' => $marc_flavour eq 'MARC21' ? '100' : '200', + 'authorcorp' => $marc_flavour eq 'MARC21' ? '110' : '210', + 'authormeetingcon' => $marc_flavour eq 'MARC21' ? '111' : '210', + 'uniformtitle' => $marc_flavour eq 'MARC21' ? '130' : '230', + 'subject' => $marc_flavour eq 'MARC21' ? '150' : '250', +}; + my $nameany = $input->param('nameany'); my $authorany = $input->param('authorany'); -my $authorcorp = $input->param('authorcorp'); -my $authorpersonal = $input->param('authorpersonal'); -my $authormeetingcon = $input->param('authormeetingcon'); +my $authorcorp = + $record + ? $record->subfield( $authfields_mapping->{'authorcorp'}, 'a' ) + : $input->param('authorcorp'); +my $authorpersonal = + $record + ? $record->subfield( $authfields_mapping->{'authorpersonal'}, 'a' ) + : $input->param('authorpersonal'); +my $authormeetingcon = + $record + ? $record->subfield( $authfields_mapping->{'authormeetingcon'}, 'a' ) + : $input->param('authormeetingcon'); + my $title = $input->param('title'); -my $uniformtitle = $input->param('uniformtitle'); -my $subject = $input->param('subject'); +my $uniformtitle = + $record + ? $record->subfield( $authfields_mapping->{'uniformtitle'}, 'a' ) + : $input->param('uniformtitle'); +my $subject = + $record + ? $record->subfield( $authfields_mapping->{'subject'}, 'a' ) + : $input->param('subject'); + my $subjectsubdiv = $input->param('subjectsubdiv'); my $srchany = $input->param('srchany'); my $op = $input->param('op')||''; -- 2.25.1