From 2e4090a30324cdc780b2ddef5c6bc548d4bf8e74 Mon Sep 17 00:00:00 2001 From: ThibaudGLT Date: Thu, 9 Dec 2021 10:54:37 +0000 Subject: [PATCH] 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 https://bugs.koha-community.org/show_bug.cgi?id=29173 --- cataloguing/z3950_auth_search.pl | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/cataloguing/z3950_auth_search.pl b/cataloguing/z3950_auth_search.pl index da93dac37f..d6eab4bf96 100755 --- a/cataloguing/z3950_auth_search.pl +++ b/cataloguing/z3950_auth_search.pl @@ -24,11 +24,22 @@ 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 $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 +56,36 @@ my $index =$input->param('index'); $page = $input->param('goto_page') if $input->param('changepage_goto'); my $controlnumber = $input->param('controlnumber'); +if (! $authorpersonal) { + if ($authtag == 100) { + $authorpersonal = $authfields->subfield('a'); + } elsif ($authtag == 200) { + $authorpersonal = $authfields->subfield('a'); + } +} + +if (! $authormeetingcon) { + if ($authtag == 110) { + $authormeetingcon = $authfields->subfield('a'); + } elsif ($authtag == 210) { + $authormeetingcon = $authfields->subfield('a'); + } +} + +if (! $uniformtitle) { + if ($authtag == 130) { + $uniformtitle = $authfields->subfield('a'); + } elsif ($authtag == 230) { + $uniformtitle = $authfields->subfield('a'); + } +} + +if (! $subject) { + if ($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