Bug 30554: Use XSLT (if enabled) in authority search cataloguing plugin
Test plan:
1. Set AuthorityXSLTResultsDisplay to a valid XSL file (see bug 30554
attachments, there is an example XSL file)
2. Go to the bibliographic record editor (edit an existing one or create
a new one)
3. Find a field linked to authorities and open the plugin
4. Start a search and verify that the results are displayed using the
XSLT output (if using the example file it should be a link saying
"Authority #<authid>")
Sponsored-by: Écoles nationales supérieure d'architecture (ENSA)
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 01e2a6d983
)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
This commit is contained in:
parent
35c3ff27b7
commit
b63d96612b
2 changed files with 33 additions and 1 deletions
|
@ -23,10 +23,13 @@ use CGI qw ( -utf8 );
|
||||||
use C4::Output qw( output_html_with_http_headers );
|
use C4::Output qw( output_html_with_http_headers );
|
||||||
use C4::Auth qw( get_template_and_user );
|
use C4::Auth qw( get_template_and_user );
|
||||||
use C4::Context;
|
use C4::Context;
|
||||||
|
use C4::Languages;
|
||||||
use Koha::SearchEngine::Search;
|
use Koha::SearchEngine::Search;
|
||||||
use Koha::SearchEngine::QueryBuilder;
|
use Koha::SearchEngine::QueryBuilder;
|
||||||
|
|
||||||
use Koha::Authority::Types;
|
use Koha::Authority::Types;
|
||||||
|
use Koha::Authorities;
|
||||||
|
use Koha::XSLT::Base;
|
||||||
|
|
||||||
my $query = CGI->new;
|
my $query = CGI->new;
|
||||||
my $op = $query->param('op') || '';
|
my $op = $query->param('op') || '';
|
||||||
|
@ -132,6 +135,29 @@ if ( $op eq "do_search" ) {
|
||||||
$to = ( ( $startfrom + 1 ) * $resultsperpage );
|
$to = ( ( $startfrom + 1 ) * $resultsperpage );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $AuthorityXSLTResultsDisplay = C4::Context->preference('AuthorityXSLTResultsDisplay');
|
||||||
|
if ( $results && $AuthorityXSLTResultsDisplay ) {
|
||||||
|
my $lang = C4::Languages::getlanguage();
|
||||||
|
foreach my $result (@$results) {
|
||||||
|
my $authority = Koha::Authorities->find( $result->{authid} );
|
||||||
|
next unless $authority;
|
||||||
|
|
||||||
|
my $authtypecode = $authority->authtypecode;
|
||||||
|
my $xsl = $AuthorityXSLTResultsDisplay;
|
||||||
|
$xsl =~ s/\{langcode\}/$lang/g;
|
||||||
|
$xsl =~ s/\{authtypecode\}/$authtypecode/g;
|
||||||
|
|
||||||
|
my $xslt_engine = Koha::XSLT::Base->new;
|
||||||
|
my $output = $xslt_engine->transform( { xml => $authority->marcxml, file => $xsl } );
|
||||||
|
if ( $xslt_engine->err ) {
|
||||||
|
warn "XSL transformation failed ($xsl): " . $xslt_engine->err;
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result->{html} = $output;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$template->param( result => $results ) if $results;
|
$template->param( result => $results ) if $results;
|
||||||
$template->param(
|
$template->param(
|
||||||
orderby => $orderby,
|
orderby => $orderby,
|
||||||
|
|
|
@ -71,7 +71,13 @@
|
||||||
</tr>
|
</tr>
|
||||||
[% FOREACH resul IN result %]
|
[% FOREACH resul IN result %]
|
||||||
<tr>
|
<tr>
|
||||||
<td>[% PROCESS authresult summary=resul.summary authid=resul.authid auth_preview=1 %]</td>
|
<td>
|
||||||
|
[% IF resul.html %]
|
||||||
|
[% resul.html | $raw %]
|
||||||
|
[% ELSE %]
|
||||||
|
[% PROCESS authresult summary=resul.summary authid=resul.authid auth_preview=1 %]
|
||||||
|
[% END %]
|
||||||
|
</td>
|
||||||
<td>[% resul.summary.label | html %]</td>
|
<td>[% resul.summary.label | html %]</td>
|
||||||
<td>
|
<td>
|
||||||
[% IF resul.used > 0 %]
|
[% IF resul.used > 0 %]
|
||||||
|
|
Loading…
Reference in a new issue