From fe7d630c1cc9dc44f63c6dd77d87049eb256f5f3 Mon Sep 17 00:00:00 2001 From: Mehdi Hamidi <mehdi.hamidi@inlibro.com> Date: Fri, 3 Mar 2017 14:33:29 -0500 Subject: [PATCH] Bug 7611: Show the NOT_LOAN authorised values for item status in XSLT OPAC search results Added : Call number for all not for loan status XSLT Results template improvement : Use the NOT_LOAN authorised values Improvement : Use the NOT_LOAN authorised values when showing items status in the OPAC search results. Before this patch, these items were only considered as "unavailable". Note : This patch only affects the OPAC XSLT search results template for MARC21 records. This patch was not tested on UNIMARC or NORMARC records. I won't be able to support these formats, so I'm hoping someone could do the same for these other record formats. Patch sponsored by the CCSR ( http://www.ccsr.qc.ca ) --- C4/XSLT.pm | 10 ++++++++++ .../bootstrap/en/xslt/MARC21slim2OPACResults.xsl | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/C4/XSLT.pm b/C4/XSLT.pm index 173d4e0da7..160252a5ff 100644 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -310,8 +310,12 @@ sub buildKohaItemsNamespace { my $itemtypes = { map { $_->{itemtype} => $_ } @{ Koha::ItemTypes->search->unblessed } }; my $xml = ''; + my %descs = map { $_->{authorised_value} => $_ } Koha::AuthorisedValues->get_descriptions_by_koha_field( { kohafield => 'items.notforloan' } ); + for my $item (@items) { my $status; + my $substatus = ''; +<<<<<<< HEAD if ($item->has_pending_hold) { $status = 'Pending hold'; @@ -334,6 +338,11 @@ sub buildKohaItemsNamespace { elsif ($item->onloan) { $status = "Checked out"; } + elsif ( $item->notforloan > 0 ) { + $status = "reallynotforloan"; + $substatus = $descs{$item->{notforloan}} || ''; + $substatus = $substatus->{opac_description} if $substatus; + } elsif ( $item->notforloan && $item->notforloan > 0 || exists $itemtypes->{ $item->effective_itemtype } && $itemtypes->{ $item->effective_itemtype }->{notforloan} == 1 ) @@ -359,6 +368,7 @@ sub buildKohaItemsNamespace { . "<location>$location</location>" . "<ccode>$ccode</ccode>" . "<status>".( $status // q{} )."</status>" + . "<substatus>$substatus</substatus>" . "<itemcallnumber>$itemcallnumber</itemcallnumber>" . "<stocknumber>$stocknumber</stocknumber>" . "</item>"; diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl index 14f8b17144..c4061cda99 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl @@ -12,6 +12,7 @@ <xsl:key name="item-by-status" match="items:item" use="items:status"/> <xsl:key name="item-by-status-and-branch-home" match="items:item" use="concat(items:status, ' ', items:homebranch)"/> <xsl:key name="item-by-status-and-branch-holding" match="items:item" use="concat(items:status, ' ', items:holdingbranch)"/> + <xsl:key name="item-by-substatus-and-branch" match="items:item" use="concat(items:substatus, ' ', items:homebranch)"/> <xsl:template match="/"> <xsl:apply-templates/> @@ -1334,6 +1335,27 @@ </xsl:when></xsl:choose> </xsl:when> </xsl:choose> + <xsl:if test="count(key('item-by-status', 'available'))=0"> + <span class="available"><xsl:value-of select="items:homebranch"/><xsl:text>: </xsl:text></span> + </xsl:if> + + <xsl:choose> + <xsl:when test="count(key('item-by-status', 'reallynotforloan'))>0"> + <span class="unavailable"> + <br /> + <xsl:variable name="reference_items" select="key('item-by-status', 'reallynotforloan')"/> + <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-substatus-and-branch', concat(items:substatus, ' ', items:homebranch))[1])]"> + <xsl:value-of select="items:substatus"/> + <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<span class="LabelCallNumber">Call number: </span><xsl:value-of select="items:itemcallnumber"/>]</xsl:if> + <xsl:text> (</xsl:text> + <xsl:value-of select="count(key('item-by-substatus-and-branch', concat(items:substatus, ' ', items:homebranch)))"/> + <xsl:text>)</xsl:text> + <xsl:choose><xsl:when test="position()=last()"><xsl:text>. </xsl:text></xsl:when><xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise></xsl:choose> + </xsl:for-each> + </span> + </xsl:when> + </xsl:choose> + <xsl:if test="count(key('item-by-status', 'Checked out'))>0"> <span class="unavailable"> <xsl:text>Checked out (</xsl:text> -- 2.11.0