Bug 32794: Expand tests for access method in XLST files
authorNick Clemens <nick@bywatersolutions.com>
Thu, 2 Feb 2023 13:29:04 +0000 (13:29 +0000)
committerTomas Cohen Arazi <tomascohen@theke.io>
Fri, 31 Mar 2023 10:09:36 +0000 (12:09 +0200)
This patch expands the checks for 856u to check for mailto, and adds a few conditiona
checks of the first indicator to cover more methods

Reference: https://www.oclc.org/bibformats/en/8xx/856.html

To test:
1 - Edit a record and add a few 856 fields:
    856 0 0 $umailto:test@example.org
    856 0 0 $utest@example.org
    856 2 0 $utelnet://pucc.princeton.edu
    856 2 0 $upucc.princeton.edu
    856 3 0 $u8885555555
2 - View staff details and results and opac details and results
3 - Note all links have been prepended with http://
4 - Apply patch
5 - Refresh all views, ensure links are correctly formed

Signed-off-by: Phil Ringnalda <phil@chetcolibrary.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl

index c5fd064..661d61a 100644 (file)
             <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
             <a>
                 <xsl:attribute name="href">
-                    <xsl:if test="not(contains(marc:subfield[@code='u'],'://'))">
+                    <xsl:if test="not(contains(marc:subfield[@code='u'],'://') or contains(marc:subfield[@code='u'],'mailto:'))">
                         <xsl:choose>
                             <xsl:when test="@ind1=7">
                                 <xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>://</xsl:text>
                             </xsl:when>
+                            <xsl:when test="@ind1=0">
+                                <xsl:text>mailto:</xsl:text>
+                            </xsl:when>
                             <xsl:when test="@ind1=1">
                                 <xsl:text>ftp://</xsl:text>
                             </xsl:when>
+                            <xsl:when test="@ind1=2">
+                                <xsl:text>telnet://</xsl:text>
+                            </xsl:when>
+                            <xsl:when test="@ind1=3">
+                                <xsl:text>tel:</xsl:text>
+                            </xsl:when>
                             <xsl:otherwise>
                                 <xsl:text>http://</xsl:text>
                             </xsl:otherwise>
index fa94894..902751a 100644 (file)
                 <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
                 <a>
                     <xsl:attribute name="href">
-                        <xsl:if test="not(contains(marc:subfield[@code='u'],'://'))">
+                        <xsl:if test="not(contains(marc:subfield[@code='u'],'://') or contains(marc:subfield[@code='u'],'mailto:'))">
                             <xsl:choose>
                                 <xsl:when test="@ind1=7">
                                     <xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>://</xsl:text>
                                 </xsl:when>
+                                <xsl:when test="@ind1=0">
+                                    <xsl:text>mailto:</xsl:text>
+                                </xsl:when>
                                 <xsl:when test="@ind1=1">
                                     <xsl:text>ftp://</xsl:text>
                                 </xsl:when>
+                                <xsl:when test="@ind1=2">
+                                    <xsl:text>telnet://</xsl:text>
+                                </xsl:when>
+                                <xsl:when test="@ind1=3">
+                                    <xsl:text>tel:</xsl:text>
+                                </xsl:when>
                                 <xsl:otherwise>
                                     <xsl:text>http://</xsl:text>
                                 </xsl:otherwise>
index 34a6e0b..429ad70 100644 (file)
                                     </xsl:when>
                                     <xsl:otherwise>
                                         <xsl:attribute name="href">
-                                            <xsl:if test="not(contains(marc:subfield[@code='u'],'://'))">
+                                            <xsl:if test="not(contains(marc:subfield[@code='u'],'://') or contains(marc:subfield[@code='u'],'mailto:'))">
                                                 <xsl:choose>
                                                     <xsl:when test="@ind1=7">
                                                         <xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>://</xsl:text>
                                                     </xsl:when>
+                                                    <xsl:when test="@ind1=0">
+                                                        <xsl:text>mailto:</xsl:text>
+                                                    </xsl:when>
                                                     <xsl:when test="@ind1=1">
                                                         <xsl:text>ftp://</xsl:text>
                                                     </xsl:when>
+                                                    <xsl:when test="@ind1=2">
+                                                        <xsl:text>telnet://</xsl:text>
+                                                    </xsl:when>
+                                                    <xsl:when test="@ind1=3">
+                                                        <xsl:text>tel:</xsl:text>
+                                                    </xsl:when>
                                                     <xsl:otherwise>
                                                         <xsl:text>http://</xsl:text>
                                                     </xsl:otherwise>
index 9e7a16a..ffd4e26 100644 (file)
                                </xsl:when>
                                <xsl:otherwise>
                     <xsl:attribute name="href">
-                        <xsl:if test="not(contains(marc:subfield[@code='u'],'://'))">
+                        <xsl:if test="not(contains(marc:subfield[@code='u'],'://') or contains(marc:subfield[@code='u'],'mailto:'))">
                             <xsl:choose>
                                 <xsl:when test="@ind1=7">
                                     <xsl:value-of select="marc:subfield[@code='2']"/><xsl:text>://</xsl:text>
                                 </xsl:when>
+                                <xsl:when test="@ind1=0">
+                                    <xsl:text>mailto:</xsl:text>
+                                </xsl:when>
                                 <xsl:when test="@ind1=1">
                                     <xsl:text>ftp://</xsl:text>
                                 </xsl:when>
+                                <xsl:when test="@ind1=2">
+                                    <xsl:text>telnet://</xsl:text>
+                                </xsl:when>
+                                <xsl:when test="@ind1=3">
+                                    <xsl:text>tel:</xsl:text>
+                                </xsl:when>
                                 <xsl:otherwise>
                                     <xsl:text>http://</xsl:text>
                                 </xsl:otherwise>