From 1ed52bb13536c933227a0d81e2871bd152fceaa6 Mon Sep 17 00:00:00 2001 From: Nick Clemens <nick@bywatersolutions.com> Date: Fri, 11 Sep 2020 18:44:13 +0000 Subject: [PATCH] Bug 5927: [Alternate] Show series information in staff and opac results pages This moves the series info to a template in the XSLT utils files and adds a few variables to make it work right. To test: 1 - Create a catalog records with: 440 series fields 490 traced series fields 490 untraced series fields 2 - View the details pages for these records and note the display and the links formed 3 - Apply patch 4 - Confirm the details pages look the same 5 - Search on staff and opac to return the records 6 - Confirm the results pages form the same series as on details 7 - Confirm the links work the same Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> --- .../prog/en/xslt/MARC21slim2intranetDetail.xsl | 160 +------------------- .../prog/en/xslt/MARC21slim2intranetResults.xsl | 7 + .../intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl | 161 +++++++++++++++++++++ .../bootstrap/en/xslt/MARC21slim2OPACDetail.xsl | 158 +------------------- .../bootstrap/en/xslt/MARC21slim2OPACResults.xsl | 8 + .../bootstrap/en/xslt/MARC21slimUtils.xsl | 161 +++++++++++++++++++++ 6 files changed, 347 insertions(+), 308 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl index 16f727a0e1..6d0d9e649a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl +++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl @@ -190,135 +190,12 @@ <xsl:with-param name="index">se</xsl:with-param> </xsl:call-template> </xsl:if> - - <!-- Series --> - <xsl:if test="marc:datafield[@tag=440 or @tag=490]"> - <span class="results_summary series"><span class="label">Series: </span> - <!-- 440 --> - <xsl:for-each select="marc:datafield[@tag=440]"> - <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">av</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - <xsl:choose> - <xsl:when test="position()=last()"> - <xsl:if test="../marc:datafield[@tag=490][@ind1!=1]"> - <xsl:text>; </xsl:text> - </xsl:if> - </xsl:when> - <xsl:otherwise><xsl:text> ; </xsl:text></xsl:otherwise> - </xsl:choose> - </xsl:for-each> - - <!-- 490 Series not traced, Ind1 = 0 --> - <xsl:for-each select="marc:datafield[@tag=490][@ind1!=1]"> - <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">av</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - <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> - <!-- 490 Series traced, Ind1 = 1 --> - <xsl:if test="marc:datafield[@tag=490][@ind1=1]"> - <xsl:for-each select="marc:datafield[@tag=800 or @tag=810 or @tag=811]"> - <xsl:choose> - <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> - <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=rcn:<xsl:value-of select="str:encode-uri(marc:subfield[@code='w'], true())"/></xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> - <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:otherwise> - <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='t'], true())"/>"&q=au:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - </xsl:otherwise> - </xsl:choose> - <xsl:text>: </xsl:text> - <xsl:value-of select="marc:subfield[@code='v']" /> - <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:for-each select="marc:datafield[@tag=830]"> - <xsl:choose> - <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> - <a href="/cgi-bin/koha/catalogue/search.pl?q=rcn:{marc:subfield[@code='w']}"> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> - <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:otherwise> - <a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - </xsl:otherwise> - </xsl:choose> - <xsl:text>: </xsl:text> - <xsl:value-of select="marc:subfield[@code='v']" /> - <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:if> - - </span> - </xsl:if> + <xsl:call-template name="show-series"> + <xsl:with-param name="searchurl">/cgi-bin/koha/catalogue/search.pl</xsl:with-param> + <xsl:with-param name="UseControlNumber" select="$UseControlNumber"/> + <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> + </xsl:call-template> <!-- Analytics information --> <xsl:variable name="leader7_class"> @@ -1396,33 +1273,6 @@ </xsl:call-template> </xsl:template> - <xsl:template name="part"> - <xsl:variable name="partNumber"> - <xsl:call-template name="specialSubfieldSelect"> - <xsl:with-param name="axis">n</xsl:with-param> - <xsl:with-param name="anyCodes">n</xsl:with-param> - <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> - </xsl:call-template> - </xsl:variable> - <xsl:variable name="partName"> - <xsl:call-template name="specialSubfieldSelect"> - <xsl:with-param name="axis">p</xsl:with-param> - <xsl:with-param name="anyCodes">p</xsl:with-param> - <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> - </xsl:call-template> - </xsl:variable> - <xsl:if test="string-length(normalize-space($partNumber))"> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString" select="$partNumber"/> - </xsl:call-template> - </xsl:if> - <xsl:if test="string-length(normalize-space($partName))"> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString" select="$partName"/> - </xsl:call-template> - </xsl:if> - </xsl:template> - <xsl:template name="specialSubfieldSelect"> <xsl:param name="anyCodes"/> <xsl:param name="axis"/> diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl index be70b9abcb..d263de1ea1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl +++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl @@ -16,6 +16,7 @@ <!-- Option: Display Alternate Graphic Representation (MARC 880) --> <xsl:variable name="display880" select="boolean(marc:datafield[@tag=880])"/> + <xsl:variable name="UseControlNumber" select="marc:sysprefs/marc:syspref[@name='UseControlNumber']"/> <xsl:variable name="URLLinkText" select="marc:sysprefs/marc:syspref[@name='URLLinkText']"/> <xsl:variable name="Show856uAsImage" select="marc:sysprefs/marc:syspref[@name='Display856uAsImage']"/> @@ -839,6 +840,12 @@ </xsl:call-template> </xsl:if> + <xsl:call-template name="show-series"> + <xsl:with-param name="searchurl">/cgi-bin/koha/catalogue/search.pl</xsl:with-param> + <xsl:with-param name="UseControlNumber" select="$UseControlNumber"/> + <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> + </xsl:call-template> + <!-- Publisher info and RDA related info from tags 260, 264 --> <xsl:choose> <xsl:when test="marc:datafield[@tag=264]"> diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl index 7fb14ad515..0c019a2ca3 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl +++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl @@ -397,6 +397,167 @@ </xsl:if> </xsl:template> + <xsl:template name="part"> + <xsl:variable name="partNumber"> + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="axis">n</xsl:with-param> + <xsl:with-param name="anyCodes">n</xsl:with-param> + <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="partName"> + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="axis">p</xsl:with-param> + <xsl:with-param name="anyCodes">p</xsl:with-param> + <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:if test="string-length(normalize-space($partNumber))"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="$partNumber"/> + </xsl:call-template> + </xsl:if> + <xsl:if test="string-length(normalize-space($partName))"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="$partName"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="show-series"> + <xsl:param name="searchurl"/> + <xsl:param name="UseControlNumber"/> + <xsl:param name="UseAuthoritiesForTracings"/> + <!-- Series --> + <xsl:if test="marc:datafield[@tag=440 or @tag=490]"> + <span class="results_summary series"><span class="label">Series: </span> + <!-- 440 --> + <xsl:for-each select="marc:datafield[@tag=440]"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">av</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:if test="../marc:datafield[@tag=490][@ind1!=1]"> + <xsl:text>; </xsl:text> + </xsl:if> + </xsl:when> + <xsl:otherwise><xsl:text> ; </xsl:text></xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- 490 Series not traced, Ind1 = 0 --> + <xsl:for-each select="marc:datafield[@tag=490][@ind1!=1]"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">av</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + <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> + <!-- 490 Series traced, Ind1 = 1 --> + <xsl:if test="marc:datafield[@tag=490][@ind1=1]"> + <xsl:for-each select="marc:datafield[@tag=800 or @tag=810 or @tag=811]"> + <xsl:choose> + <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=rcn:<xsl:value-of select="str:encode-uri(marc:subfield[@code='w'], true())"/></xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:otherwise> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='t'], true())"/>"&q=au:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>: </xsl:text> + <xsl:value-of select="marc:subfield[@code='v']" /> + <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:for-each select="marc:datafield[@tag=830]"> + <xsl:choose> + <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> + <a href="/cgi-bin/koha/catalogue/search.pl?q=rcn:{marc:subfield[@code='w']}"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:otherwise> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>: </xsl:text> + <xsl:value-of select="marc:subfield[@code='v']" /> + <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:if> + + </span> + </xsl:if> + </xsl:template> + </xsl:stylesheet> <!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp. diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl index f507ea428e..909c9e26d4 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl @@ -212,132 +212,11 @@ </xsl:call-template> </xsl:if> - <!-- Series --> - <xsl:if test="marc:datafield[@tag=440 or @tag=490]"> - <span class="results_summary series"><span class="label">Series: </span> - <!-- 440 --> - <xsl:for-each select="marc:datafield[@tag=440]"> - <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">av</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - <xsl:choose> - <xsl:when test="position()=last()"> - <xsl:if test="../marc:datafield[@tag=490][@ind1!=1]"> - <xsl:text>; </xsl:text> - </xsl:if> - </xsl:when> - <xsl:otherwise><xsl:text> ; </xsl:text></xsl:otherwise> - </xsl:choose> - </xsl:for-each> - - <!-- 490 Series not traced, Ind1 = 0 --> - <xsl:for-each select="marc:datafield[@tag=490][@ind1!=1]"> - <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">av</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - <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> - <!-- 490 Series traced, Ind1 = 1 --> - <xsl:if test="marc:datafield[@tag=490][@ind1=1]"> - <xsl:for-each select="marc:datafield[@tag=800 or @tag=810 or @tag=811]"> - <xsl:choose> - <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> - <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=rcn:<xsl:value-of select="str:encode-uri(marc:subfield[@code='w'], true())"/></xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> - <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:otherwise> - <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='t'], true())"/>"&q=au:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - </xsl:otherwise> - </xsl:choose> - <xsl:text>: </xsl:text> - <xsl:value-of select="marc:subfield[@code='v']" /> - <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:for-each select="marc:datafield[@tag=830]"> - <xsl:choose> - <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> - <a href="/cgi-bin/koha/catalogue/search.pl?q=rcn:{marc:subfield[@code='w']}"> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> - <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - </xsl:when> - <xsl:otherwise> - <a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString"> - <xsl:call-template name="subfieldSelect"> - <xsl:with-param name="codes">a_t</xsl:with-param> - </xsl:call-template> - </xsl:with-param> - </xsl:call-template> - </a> - <xsl:call-template name="part"/> - </xsl:otherwise> - </xsl:choose> - <xsl:text>: </xsl:text> - <xsl:value-of select="marc:subfield[@code='v']" /> - <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:if> - </span> - </xsl:if> + <xsl:call-template name="show-series"> + <xsl:with-param name="searchurl">/cgi-bin/koha/opac-search.pl</xsl:with-param> + <xsl:with-param name="UseControlNumber" select="$UseControlNumber"/> + <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> + </xsl:call-template> <!-- Analytics information --> <xsl:variable name="leader7_class"> @@ -1884,33 +1763,6 @@ </xsl:call-template> </xsl:template> - <xsl:template name="part"> - <xsl:variable name="partNumber"> - <xsl:call-template name="specialSubfieldSelect"> - <xsl:with-param name="axis">n</xsl:with-param> - <xsl:with-param name="anyCodes">n</xsl:with-param> - <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> - </xsl:call-template> - </xsl:variable> - <xsl:variable name="partName"> - <xsl:call-template name="specialSubfieldSelect"> - <xsl:with-param name="axis">p</xsl:with-param> - <xsl:with-param name="anyCodes">p</xsl:with-param> - <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> - </xsl:call-template> - </xsl:variable> - <xsl:if test="string-length(normalize-space($partNumber))"> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString" select="$partNumber"/> - </xsl:call-template> - </xsl:if> - <xsl:if test="string-length(normalize-space($partName))"> - <xsl:call-template name="chopPunctuation"> - <xsl:with-param name="chopString" select="$partName"/> - </xsl:call-template> - </xsl:if> - </xsl:template> - <xsl:template name="specialSubfieldSelect"> <xsl:param name="anyCodes"/> <xsl:param name="axis"/> diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl index a0879f65d4..78aa361918 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl @@ -22,6 +22,8 @@ <!-- Option: Display Alternate Graphic Representation (MARC 880) --> <xsl:variable name="display880" select="boolean(marc:datafield[@tag=880])"/> + <xsl:variable name="UseControlNumber" select="marc:sysprefs/marc:syspref[@name='UseControlNumber']"/> + <xsl:variable name="UseAuthoritiesForTracings" select="marc:sysprefs/marc:syspref[@name='UseAuthoritiesForTracings']"/> <xsl:variable name="OPACResultsLibrary" select="marc:sysprefs/marc:syspref[@name='OPACResultsLibrary']"/> <xsl:variable name="hidelostitems" select="marc:sysprefs/marc:syspref[@name='hidelostitems']"/> <xsl:variable name="DisplayOPACiconsXSLT" select="marc:sysprefs/marc:syspref[@name='DisplayOPACiconsXSLT']"/> @@ -638,6 +640,12 @@ </xsl:choose> </p> + <xsl:call-template name="show-series"> + <xsl:with-param name="searchurl">/cgi-bin/koha/opac-search.pl</xsl:with-param> + <xsl:with-param name="UseControlNumber" select="$UseControlNumber"/> + <xsl:with-param name="UseAuthoritiesForTracings" select="$UseAuthoritiesForTracings"/> + </xsl:call-template> + <xsl:if test="marc:datafield[@tag=250]"> <span class="results_summary edition"> <span class="label">Edition: </span> diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slimUtils.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slimUtils.xsl index bc8b4f75f9..564dbd17f9 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slimUtils.xsl +++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slimUtils.xsl @@ -361,6 +361,167 @@ </xsl:if> </xsl:template> + <xsl:template name="show-series"> + <xsl:param name="searchurl"/> + <xsl:param name="UseControlNumber"/> + <xsl:param name="UseAuthoritiesForTracings"/> + <!-- Series --> + <xsl:if test="marc:datafield[@tag=440 or @tag=490]"> + <span class="results_summary series"><span class="label">Series: </span> + <!-- 440 --> + <xsl:for-each select="marc:datafield[@tag=440]"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">av</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + <xsl:choose> + <xsl:when test="position()=last()"> + <xsl:if test="../marc:datafield[@tag=490][@ind1!=1]"> + <xsl:text>; </xsl:text> + </xsl:if> + </xsl:when> + <xsl:otherwise><xsl:text> ; </xsl:text></xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- 490 Series not traced, Ind1 = 0 --> + <xsl:for-each select="marc:datafield[@tag=490][@ind1!=1]"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">av</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + <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> + <!-- 490 Series traced, Ind1 = 1 --> + <xsl:if test="marc:datafield[@tag=490][@ind1=1]"> + <xsl:for-each select="marc:datafield[@tag=800 or @tag=810 or @tag=811]"> + <xsl:choose> + <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=rcn:<xsl:value-of select="str:encode-uri(marc:subfield[@code='w'], true())"/></xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:otherwise> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='t'], true())"/>"&q=au:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>: </xsl:text> + <xsl:value-of select="marc:subfield[@code='v']" /> + <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:for-each select="marc:datafield[@tag=830]"> + <xsl:choose> + <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']"> + <a href="/cgi-bin/koha/catalogue/search.pl?q=rcn:{marc:subfield[@code='w']}"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:when test="marc:subfield[@code=9] and $UseAuthoritiesForTracings='1'"> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=an:<xsl:value-of select="str:encode-uri(marc:subfield[@code=9], true())"/></xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + </xsl:when> + <xsl:otherwise> + <a><xsl:attribute name="href"><xsl:value-of select="$searchurl"/>?q=se,phr:"<xsl:value-of select="str:encode-uri(marc:subfield[@code='a'], true())"/>"</xsl:attribute> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString"> + <xsl:call-template name="subfieldSelect"> + <xsl:with-param name="codes">a_t</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </a> + <xsl:call-template name="part"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>: </xsl:text> + <xsl:value-of select="marc:subfield[@code='v']" /> + <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:if> + + </span> + </xsl:if> + </xsl:template> + + <xsl:template name="part"> + <xsl:variable name="partNumber"> + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="axis">n</xsl:with-param> + <xsl:with-param name="anyCodes">n</xsl:with-param> + <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="partName"> + <xsl:call-template name="specialSubfieldSelect"> + <xsl:with-param name="axis">p</xsl:with-param> + <xsl:with-param name="anyCodes">p</xsl:with-param> + <xsl:with-param name="afterCodes">fghkdlmor</xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:if test="string-length(normalize-space($partNumber))"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="$partNumber"/> + </xsl:call-template> + </xsl:if> + <xsl:if test="string-length(normalize-space($partName))"> + <xsl:call-template name="chopPunctuation"> + <xsl:with-param name="chopString" select="$partName"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + </xsl:stylesheet> <!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp. -- 2.11.0