Bug 30036: Allow XSLT for authority results view in OPAC
This patch adds a syspref to allow customizing the authority results view at OPAC with XSLT Test plan: 1. For testing make sure to have at least one or more authorities defined 2. OPAC: Home > Authority search(Submit) > Authority search results Notice the normal view of results 3. Apply patch 4. INTRA: Home > Administration > System preferences ->find "AuthorityXSLTOpacResultsDisplay" 5. Write the path where your file is. You can use the one for intranet: .../koha/koha-tmpl/intranet-tmpl/prog/en/XSLT/UNIMARCauthResults.xsl 6. Save changes 7. Repeat step 2 and notice the xslt view of results Signed-off-by: David Nind <david@davidnind.com> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
0ec29e5d4e
commit
c593ffd8fb
|
|
@ -0,0 +1,15 @@
|
|||
use Modern::Perl;
|
||||
|
||||
return {
|
||||
bug_number => '30036',
|
||||
description => 'Add syspref AuthorityXSLTOpacResultsDisplay',
|
||||
up => sub {
|
||||
my ($args) = @_;
|
||||
my ($dbh, $out) = @$args{qw(dbh out)};
|
||||
|
||||
$dbh->do(q{
|
||||
INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`)
|
||||
VALUES ('AuthorityXSLTOpacResultsDisplay','','','Enable XSL stylesheet control over authority results page display on opac','Free')
|
||||
});
|
||||
},
|
||||
};
|
||||
|
|
@ -70,6 +70,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `
|
|||
('AuthorityMergeLimit','50',NULL,'Maximum number of biblio records updated immediately when an authority record has been modified.','integer'),
|
||||
('AuthorityMergeMode','loose','loose|strict','Authority merge mode','Choice'),
|
||||
('AuthoritySeparator','--','10','Used to separate a list of authorities in a display. Usually --','free'),
|
||||
('AuthorityXSLTOpacResultsDisplay','','','Enable XSL stylesheet control over authority results page display on opac','Free'),
|
||||
('AuthorityXSLTResultsDisplay','','','Enable XSL stylesheet control over authority results page display on intranet','Free'),
|
||||
('AuthSuccessLog','0',NULL,'If enabled, log successful authentications','YesNo'),
|
||||
('autoBarcode','OFF','incremental|annual|hbyymmincr|EAN13|OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB=Home Branch','Choice'),
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
Staff interface:
|
||||
Appearance:
|
||||
-
|
||||
- 'Display authority results in the opac interface using XSLT stylesheet at: '
|
||||
- pref: AuthorityXSLTOpacResultsDisplay
|
||||
class: file
|
||||
- '<br />Options:<ul><li>Put a path to define a xslt file</li><li>Put an URL for an external specific stylesheet.</li></ul>{langcode} will be replaced with current interface language and {authtypecode} will be replaced by the authority type code'
|
||||
-
|
||||
- 'Display authority results in the staff interface using XSLT stylesheet at: '
|
||||
- pref: AuthorityXSLTResultsDisplay
|
||||
|
|
|
|||
|
|
@ -106,7 +106,13 @@
|
|||
<tbody>
|
||||
[% FOREACH resul IN result %]
|
||||
<tr>
|
||||
<td>[% PROCESS authresult summary=resul.summary %]</td>
|
||||
<td>
|
||||
[% IF resul.html %]
|
||||
[% resul.html | $raw %]
|
||||
[% ELSE %]
|
||||
[% PROCESS authresult summary=resul.summary authid=resul.authid %]
|
||||
[% END %]
|
||||
</td>
|
||||
<td><a href="/cgi-bin/koha/opac-authoritiesdetail.pl?authid=[% resul.authid | uri %]">Details</a>
|
||||
<td>[% resul.authtype | html %]</td>
|
||||
[% UNLESS ( resul.isEDITORS ) %]
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@ use C4::Context;
|
|||
use C4::Output qw( pagination_bar output_html_with_http_headers );
|
||||
use C4::Koha;
|
||||
use C4::Search::History;
|
||||
use C4::Languages;
|
||||
use Koha::XSLT::Base;
|
||||
|
||||
use Koha::Authority::Types;
|
||||
use Koha::SearchEngine::Search;
|
||||
|
|
@ -100,6 +102,27 @@ if ( $op eq "do_search" ) {
|
|||
$to = $startfrom * $resultsperpage;
|
||||
}
|
||||
|
||||
my $AuthorityXSLTOpacResultsDisplay = C4::Context->preference('AuthorityXSLTOpacResultsDisplay');
|
||||
if ($results && $AuthorityXSLTOpacResultsDisplay) {
|
||||
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 = $AuthorityXSLTOpacResultsDisplay;
|
||||
|
||||
$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(
|
||||
|
|
|
|||
Loading…
Reference in New Issue