From 094fe6df9d51c99e8185138b27cf439e53f86962 Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Tue, 29 Mar 2022 16:12:48 +0200 Subject: [PATCH] Bug 29173: Fixed pre-filling of the search form from the "Replace record with ZR39.50/SRU" (Authority page detail) Now this action has the same pre-filling behaviour as the "Edit" -> "Edit Record" -> "Replace Record via Z39.50/SRU Search" action. Author Personal - Author Meeting/Conf. - Uniform Title and Subject are filled in if the subfield contains data (like the "Edit->Replace" action). Unimarc and Marc21 specificities are supported. 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 Signed-off-by: David Nind Signed-off-by: Martin Renvoize --- cataloguing/z3950_auth_search.pl | 42 ++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/cataloguing/z3950_auth_search.pl b/cataloguing/z3950_auth_search.pl index da93dac37f2..5b413201fab 100755 --- a/cataloguing/z3950_auth_search.pl +++ b/cataloguing/z3950_auth_search.pl @@ -24,19 +24,51 @@ use C4::Auth qw( get_template_and_user ); use C4::Output qw( output_html_with_http_headers ); use C4::Context; 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 $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.39.1