From f3f3d6239a30abd1fd2f47bd41107fb196a2ece0 Mon Sep 17 00:00:00 2001 From: ThibaudGLT 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 https://bugs.koha-community.org/show_bug.cgi?id=29173 Signed-off-by: David Nind --- 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