BEGIN {
require Exporter;
- $VERSION = 0.03;
+ $VERSION = 3.07.00.049;
@ISA = qw(Exporter);
@EXPORT = qw(
&XSLTParse4Display
my $stylesheet;
+sub _get_best_default_xslt_filename {
+ my ($htdocs, $theme, $lang, $base_xslfile) = @_;
+
+ my @candidates = (
+ "$htdocs/$theme/$lang/xslt/${base_xslfile}", # exact match
+ "$htdocs/$theme/en/xslt/${base_xslfile}", # if not, preferred theme in English
+ "$htdocs/prog/$lang/xslt/${base_xslfile}", # if not, 'prog' theme in preferred language
+ "$htdocs/prog/en/xslt/${base_xslfile}", # otherwise, prog theme in English; should always
+ # exist
+ );
+ my $xslfilename;
+ foreach my $filename (@candidates) {
+ $xslfilename = $filename;
+ if (-f $filename) {
+ last; # we have a winner!
+ }
+ }
+ return $xslfilename;
+}
+
sub XSLTParse4Display {
my ( $biblionumber, $orig_record, $xslsyspref, $fixamps, $hidden_items ) = @_;
my $xslfilename = C4::Context->preference($xslsyspref);
if ( $xslfilename =~ /^\s*"?default"?\s*$/i ) {
+ my $htdocs;
+ my $theme;
+ my $lang = C4::Templates::_current_language();
+ my $xslfile;
if ($xslsyspref eq "XSLTDetailsDisplay") {
- $xslfilename = C4::Context->config('intrahtdocs') .
- '/' . C4::Context->preference("template") .
- '/' . C4::Templates::_current_language() .
- '/xslt/' .
- C4::Context->preference('marcflavour') .
- "slim2intranetDetail.xsl";
+ $htdocs = C4::Context->config('intrahtdocs');
+ $theme = C4::Context->preference("template");
+ $xslfile = C4::Context->preference('marcflavour') .
+ "slim2intranetDetail.xsl";
} elsif ($xslsyspref eq "XSLTResultsDisplay") {
- $xslfilename = C4::Context->config('intrahtdocs') .
- '/' . C4::Context->preference("template") .
- '/' . C4::Templates::_current_language() .
- '/xslt/' .
- C4::Context->preference('marcflavour') .
+ $htdocs = C4::Context->config('intrahtdocs');
+ $theme = C4::Context->preference("template");
+ $xslfile = C4::Context->preference('marcflavour') .
"slim2intranetResults.xsl";
} elsif ($xslsyspref eq "OPACXSLTDetailsDisplay") {
- $xslfilename = C4::Context->config('opachtdocs') .
- '/' . C4::Context->preference("opacthemes") .
- '/' . C4::Templates::_current_language() .
- '/xslt/' .
- C4::Context->preference('marcflavour') .
- "slim2OPACDetail.xsl";
+ $htdocs = C4::Context->config('opachtdocs');
+ $theme = C4::Context->preference("opacthemes");
+ $xslfile = C4::Context->preference('marcflavour') .
+ "slim2OPACDetail.xsl";
} elsif ($xslsyspref eq "OPACXSLTResultsDisplay") {
- $xslfilename = C4::Context->config('opachtdocs') .
- '/' . C4::Context->preference("opacthemes") .
- '/' . C4::Templates::_current_language() .
- '/xslt/' .
- C4::Context->preference('marcflavour') .
- "slim2OPACResults.xsl";
+ $htdocs = C4::Context->config('opachtdocs');
+ $theme = C4::Context->preference("opacthemes");
+ $xslfile = C4::Context->preference('marcflavour') .
+ "slim2OPACResults.xsl";
}
+ $xslfilename = _get_best_default_xslt_filename($htdocs, $theme, $lang, $xslfile);
}
- if ( $xslfilename =~ m/{langcode}/ ) {
- my $lang = C4::Templates::_current_language;
- $xslfilename =~ s/{langcode}/$lang/;
+ if ( $xslfilename =~ m/\{langcode\}/ ) {
+ my $lang = C4::Templates::_current_language();
+ $xslfilename =~ s/\{langcode\}/$lang/;
}
# grab the XML, run it through our stylesheet, push it out to the browser
OPACBaseURL TraceCompleteSubfields UseICU
UseAuthoritiesForTracings TraceSubjectSubdivisions
Display856uAsImage OPACDisplay856uAsImage
- UseControlNumber
- AlternateHoldingsField AlternateHoldingsSeparator / )
+ UseControlNumber IntranetBiblioDefaultView BiblioDefaultView
+ singleBranchMode OPACItemLocation DisplayIconsXSLT
+ AlternateHoldingsField AlternateHoldingsSeparator
+ TrackClicks / )
{
my $sp = C4::Context->preference( $syspref );
next unless defined($sp);
my %hi = map {$_ => 1} @$hidden_items;
@items = grep { !$hi{$_->{itemnumber}} } @items;
}
+
+ my $shelflocations = GetKohaAuthorisedValues('items.location',GetFrameworkCode($biblionumber), 'opac');
+ my $ccodes = GetKohaAuthorisedValues('items.ccode',GetFrameworkCode($biblionumber), 'opac');
+
my $branches = GetBranches();
my $itemtypes = GetItemTypes();
+ my $location = "";
+ my $ccode = "";
my $xml = '';
for my $item (@items) {
my $status;
my ( $transfertwhen, $transfertfrom, $transfertto ) = C4::Circulation::GetTransfers($item->{itemnumber});
- my ( $reservestatus, $reserveitem, undef ) = C4::Reserves::CheckReserves($item->{itemnumber});
+ my $reservestatus = C4::Reserves::GetReserveStatus( $item->{itemnumber} );
- if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{wthdrawn} || $item->{itemlost} || $item->{damaged} ||
+ if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{withdrawn} || $item->{itemlost} || $item->{damaged} ||
(defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") ){
if ( $item->{notforloan} < 0) {
$status = "On order";
if ($item->{onloan}) {
$status = "Checked out";
}
- if ( $item->{wthdrawn}) {
+ if ( $item->{withdrawn}) {
$status = "Withdrawn";
}
if ($item->{itemlost}) {
$status = "available";
}
my $homebranch = $item->{homebranch}? xml_escape($branches->{$item->{homebranch}}->{'branchname'}):'';
- my $itemcallnumber = xml_escape($item->{itemcallnumber});
+ my $holdingbranch = $item->{holdingbranch}? xml_escape($branches->{$item->{holdingbranch}}->{'branchname'}):'';
+ $location = $item->{location}? xml_escape($shelflocations->{$item->{location}}||$item->{location}):'';
+ $ccode = $item->{ccode}? xml_escape($ccodes->{$item->{ccode}}||$item->{ccode}):'';
+ my $itemcallnumber = xml_escape($item->{itemcallnumber});
$xml.= "<item><homebranch>$homebranch</homebranch>".
+ "<holdingbranch>$holdingbranch</holdingbranch>".
+ "<location>$location</location>".
+ "<ccode>$ccode</ccode>".
"<status>$status</status>".
"<itemcallnumber>".$itemcallnumber."</itemcallnumber>"
. "</item>";