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::Auth qw( get_template_and_user );
|
||||
use C4::Context;
|
||||
use C4::Languages;
|
||||
use Koha::SearchEngine::Search;
|
||||
use Koha::SearchEngine::QueryBuilder;
|
||||
|
||||
use Koha::Authority::Types;
|
||||
use Koha::Authorities;
|
||||
use Koha::XSLT::Base;
|
||||
|
||||
my $query = CGI->new;
|
||||
my $op = $query->param('op') || '';
|
||||
|
@ -132,6 +135,29 @@ if ( $op eq "do_search" ) {
|
|||
$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(
|
||||
orderby => $orderby,
|
||||
|
|
|
@ -71,7 +71,13 @@
|
|||
</tr>
|
||||
[% FOREACH resul IN result %]
|
||||
<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>
|
||||
[% IF resul.used > 0 %]
|
||||
|
|
Loading…
Reference in a new issue