From: Elliott Davis <[email protected]> Added system preference to display shelving location of an item on opac results. The system preference is called OpacItemLocation. I also moved the call number to a new line called Location along with the shelving location if it is enabled. To Test: run database update script to add syspref. Enable OpacItemLocation to show locations on the opac-search page. If it is working you should see the shelving location of the item before the call number. Multiple home branch shelving locations are seperated by a |.
Signed-off-by: Nicole C. Engard <[email protected]> --- C4/XSLT.pm | 16 ++++-- installer/data/mysql/en/mandatory/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 7 +++ .../prog/en/modules/admin/preferences/opac.pref | 6 ++ .../prog/en/xslt/MARC21slim2OPACResults.xsl | 57 +++++++++++++------- 5 files changed, 63 insertions(+), 24 deletions(-) diff --git a/C4/XSLT.pm b/C4/XSLT.pm index 28a70fc..37dea46 100755 --- a/C4/XSLT.pm +++ b/C4/XSLT.pm @@ -183,8 +183,10 @@ sub XSLTParse4Display { sub buildKohaItemsNamespace { my ($biblionumber) = @_; my @items = C4::Items::GetItemsInfo($biblionumber); + my $shelflocations =GetKohaAuthorisedValues('items.location',GetFrameworkCode($biblionumber), 'opac'); my $branches = GetBranches(); my $itemtypes = GetItemTypes(); + my $location = ""; my $xml = ''; for my $item (@items) { my $status; @@ -223,12 +225,16 @@ sub buildKohaItemsNamespace { $status = "available"; } my $homebranch = xml_escape($branches->{$item->{homebranch}}->{'branchname'}); - my $itemcallnumber = xml_escape($item->{itemcallnumber}); + if(C4::Context->preference("OpacItemLocation") && defined $item->{'location'}) { + $location = xml_escape($shelflocations->{$item->{location}}); + } + my $itemcallnumber = xml_escape($item->{itemcallnumber}); $xml.= "<item><homebranch>$homebranch</homebranch>". - "<status>$status</status>". - "<itemcallnumber>".$itemcallnumber."</itemcallnumber>" - . "</item>"; - + "<location>$location</location>". + "<status>$status</status>". + "<itemcallnumber>".$itemcallnumber."</itemcallnumber>" + . "</item>"; + } $xml = "<items xmlns=\"http://www.koha-community.org/items\">".$xml."</items>"; return $xml; diff --git a/installer/data/mysql/en/mandatory/sysprefs.sql b/installer/data/mysql/en/mandatory/sysprefs.sql index f98b053..7419908 100755 --- a/installer/data/mysql/en/mandatory/sysprefs.sql +++ b/installer/data/mysql/en/mandatory/sysprefs.sql @@ -92,6 +92,7 @@ INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacPublic',1,'Turn on/off public OPAC',NULL,'YesNo'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('opacuserjs','','Define custom javascript for inclusion in OPAC','70|10','Textarea'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('opacuserlogin',1,'Enable or disable display of user login features',NULL,'YesNo'); +INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacItemLocation',1,'Show the shelving location of items in the opac',NULL,'YesNo'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('patronimages',0,'Enable patron images for the Staff Client',NULL,'YesNo'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('printcirculationslips',1,'If ON, enable printing circulation receipts','','YesNo'); INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('RequestOnOpac',1,'If ON, globally enables patron holds on OPAC',NULL,'YesNo'); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 3c7d043..c8bca2b 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -4354,6 +4354,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) { SetVersion ($DBversion); } +$DBversion = 'XXX'; +if (C4::Context->preference("Version") < TransformToNum($DBversion)) { + $dbh->do("INSERT INTO `systempreferences` (variable,value,explanation,options,type) VALUES('OpacItemLocation',1,'Show the shelving location of items in the opac',NULL,'YesNo');"); + print "Upgrade to $DBversion done (Add OpacItemLocation syspref)\n"; + SetVersion ($DBversion); +} + =head1 FUNCTIONS =head2 DropAllForeignKeys($table) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref index 71c9426..88aa7ca 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/opac.pref @@ -192,6 +192,12 @@ OPAC: no: "Don't allow" - patrons to log in to their accounts on the OPAC. - + - pref: OpacItemLocation + choices: + yes: Show + no: "Don't Show" + - Show the shelving location of items in opac results. + - - pref: OpacPasswordChange choices: yes: Allow diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl index 97d83e2..5805aea 100644 --- a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACResults.xsl @@ -979,22 +979,21 @@ </xsl:for-each> (<xsl:value-of select="$AlternateHoldingsCount"/>) </xsl:when> - <xsl:otherwise>No copies available</xsl:otherwise> + <xsl:otherwise>No copies available </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:when test="count(key('item-by-status', 'available'))>0"> - <span class="available"> - <b><xsl:text>Copies available for loan: </xsl:text></b> - <xsl:variable name="available_items" - select="key('item-by-status', 'available')"/> - <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]"> - <xsl:value-of select="items:homebranch"/> - <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if> - <xsl:text> (</xsl:text> - <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', 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 class="available"> + <b> + <xsl:value-of select="count(key('item-by-status', 'available'))"/> + <xsl:choose><xsl:when test="count(key('item-by-status', 'available')) = 1"><xsl:text> Copy available for loan at </xsl:text></xsl:when><xsl:otherwise><xsl:text> Copies available for loan at </xsl:text></xsl:otherwise></xsl:choose> + </b> + <xsl:variable name="available_items" + select="key('item-by-status', 'available')"/> + <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]"> + <xsl:value-of select="items:homebranch"/> + <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> @@ -1002,15 +1001,14 @@ <xsl:choose> <xsl:when test="count(key('item-by-status', 'reference'))>0"> <span class="available"> - <b><xsl:text>Copies available for reference: </xsl:text></b> - <xsl:variable name="reference_items" + <b> + <xsl:value-of select="count(key('item-by-status', 'reference'))"/> + <xsl:choose><xsl:when test="count(key('item-by-status', 'reference')) = 1"><xsl:text> Copy available for reference at </xsl:text></xsl:when><xsl:otherwise><xsl:text> Copies available for reference at </xsl:text></xsl:otherwise></xsl:choose> + </b> + <xsl:variable name="reference_items" select="key('item-by-status', 'reference')"/> <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]"> <xsl:value-of select="items:homebranch"/> - <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> [<xsl:value-of select="items:itemcallnumber"/>]</xsl:if> - <xsl:text> (</xsl:text> - <xsl:value-of select="count(key('item-by-status-and-branch', concat(items:status, ' ', 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> @@ -1061,6 +1059,27 @@ <xsl:text>). </xsl:text> </span> </xsl:if> </span> + <span class="results_summary" id="location"> + <span class="label">Location(s): </span> + <xsl:variable name="available_items" + select="key('item-by-status', 'available')"/> + <xsl:for-each select="$available_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]"> + <xsl:value-of select="concat(items:location,' ')"/> + <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> <xsl:value-of select="items:itemcallnumber"/></xsl:if> + <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> + <xsl:choose><xsl:when test="count(key('item-by-status', 'available'))>0 and count(key('item-by-status', 'reference'))>0"><xsl:text> | </xsl:text></xsl:when></xsl:choose> + <xsl:variable name="reference_items" + select="key('item-by-status', 'reference')"/> + <xsl:for-each select="$reference_items[generate-id() = generate-id(key('item-by-status-and-branch', concat(items:status, ' ', items:homebranch))[1])]"> + <xsl:value-of select="concat(items:location,' ')"/> + <xsl:if test="items:itemcallnumber != '' and items:itemcallnumber"> <xsl:value-of select="items:itemcallnumber"/></xsl:if> + <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:template> <xsl:template name="nameABCDQ"> -- 1.7.2.3 _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
