From 492e1121ba2472c9e366f9fb5c316febf3b6f27e Mon Sep 17 00:00:00 2001 From: Thibaud Guillot Date: Thu, 9 Dec 2021 10:54:37 +0000 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) First go to "Edit"-> "Edit record" -> "Replace record via..." 4) See that form is prefilled with form data 5) Go back and now click on "Replace Record.." directly 6) See that form is also prefilled with data now --- cataloguing/z3950_auth_search.pl | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/cataloguing/z3950_auth_search.pl b/cataloguing/z3950_auth_search.pl index da93dac37f..c17d60d696 100755 --- a/cataloguing/z3950_auth_search.pl +++ b/cataloguing/z3950_auth_search.pl @@ -24,11 +24,23 @@ 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 C4::AuthoritiesMarc qw( GetAuthority); +use MARC::Record; +use Koha::Authorities; +use Koha::Authority::Types; my $input = CGI->new; my $dbh = C4::Context->dbh; +my $marcflavour = C4::Context->preference("marcflavour"); my $error = $input->param('error'); my $authid = $input->param('authid') || 0; + +my $record = GetAuthority($authid); +my $authobj = Koha::Authorities->find($authid); +my $authtypecode = $authobj ? $authobj->authtypecode : ''; +my $authority_type = Koha::Authority::Types->find($authtypecode); +my $authtag = $authority_type->auth_tag_to_report; +my $authfields = $authtag ? $record->field($authtag) : ''; my $nameany = $input->param('nameany'); my $authorany = $input->param('authorany'); my $authorcorp = $input->param('authorcorp'); @@ -45,6 +57,36 @@ my $index =$input->param('index'); $page = $input->param('goto_page') if $input->param('changepage_goto'); my $controlnumber = $input->param('controlnumber'); +if (! $authorpersonal) { + if ($marcflavour eq 'MARC21' && $authtag == 100) { + $authorpersonal = $authfields->subfield('a'); + } elsif ($marcflavour eq 'UNIMARC' && $authtag == 200) { + $authorpersonal = $authfields->subfield('a'); + } +} + +if (! $authormeetingcon) { + if ($marcflavour eq 'MARC21' && $authtag == 110) { + $authormeetingcon = $authfields->subfield('a'); + } elsif ($marcflavour eq 'UNIMARC' && $authtag == 210) { + $authormeetingcon = $authfields->subfield('a'); + } +} + +if (! $uniformtitle) { + if ($marcflavour eq 'MARC21' && $authtag == 130) { + $uniformtitle = $authfields->subfield('a'); + } elsif ($marcflavour eq 'UNIMARC' && $authtag == 230) { + $uniformtitle = $authfields->subfield('a'); + } +} + +if (! $subject) { + if ($marcflavour eq 'UNIMARC' && $authtag == 250) { + $subject = $authfields->subfield('a'); + } +} + my ( $template, $loggedinuser, $cookie ) = get_template_and_user({ template_name => "cataloguing/z3950_auth_search.tt", query => $input, -- 2.20.1