From 6d415993906a359023f280b9e85a3b49a897d427 Mon Sep 17 00:00:00 2001
From: Hammat Wele <hammat.wele@inlibro.com>
Date: Mon, 19 Aug 2024 16:14:37 +0000
Subject: [PATCH] Bug 36111: 856$h should not appear as a link in detailed
 record

Test plan:
1. Add 856$h to MARC editor
   1.1. Go to Administration > MARC bibliographic frameworks
   1.2. Next to Default framework, click Actions > MARC structure
   1.3. Search for field 856
   1.4. Click Actions > Edit subfields
   1.5. Click h
   1.6. Check the Editor box
   1.7. Click Save changes
2. Catalog a new record with a random URL in 856$h
   2.1. Go to Cataloging
   2.2. Click New record
   2.3. Fill out the mandatory fields (000, 003, 005, 008, 040$c,
        245$a, 942$c)
   2.4. Go to tab 8 and enter a value in 856$h
   2.5. Click Save (No need to add an item)
3. Search for the title in the staff interface (a large enough
   search to have more than one result)
   --> Notice it says "Online resources: Click here to access online"
   3.1. Try to click the link
        --> Blank page
4. Access the detailed record in the staff interface
   --> Notice it says "Online resources: Click here to access online"
   4.1. Try to click the link
        --> Blank page
5. Search for the title in the opac (a large enough search to have
   more than one result)
   --> Notice it says "Online resources: Click here to access online"
   5.1. Try to click the link
        --> Blank page
6. Access the detailed record in the opac
   --> Notice it says "Online resources: Click here to access online"
   6.1. Try to click the link
        --> Blank page
7. Edit the item and add a text in field 856$y
8. Access the detailed record in the staff interface
   --> Notice it says what you put in 856$y field
9. Apply the patch
10. Replay steps 3 through 6, but this time, the "Online resources"
   field should not be present.
11. Replay steps 7 through 8, but this time, what you put in 856$y
   field should not be present.
12. Edit the item and add a url in field 856$u
13. Replay steps 3 through 6, but this time, clicking on the link
    should take you to the URL specified in the 856$u field.
14. Replay steps 7 through 8, but this time, what you put in 856$y
   field should be present and
   clicking on the link should take you to the URL specified in the 856$u field.

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: David Nind <david@davidnind.com>

Bug 36111: fixed extra space

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: David Nind <david@davidnind.com>

Bug 36111: online resource link should be based on the presence of 856

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
---
 .../en/xslt/MARC21slim2intranetDetail.xsl     |  8 ++++---
 .../en/xslt/MARC21slim2intranetResults.xsl    |  6 +++--
 .../en/xslt/MARC21slim2OPACDetail.xsl         | 20 ++++++++++------
 .../en/xslt/MARC21slim2OPACResults.xsl        | 24 ++++++++++++-------
 4 files changed, 38 insertions(+), 20 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
index 36b01059b0..d6f5fb1964 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
@@ -921,8 +921,10 @@
     </xsl:if>
 
     <xsl:if test="marc:datafield[@tag=856]">
-        <span class="results_summary online_resources"><span class="label">Online resources: </span>
-        <xsl:for-each select="marc:datafield[@tag=856]">
+        <xsl:if test="marc:datafield[@tag=856]/marc:subfield[@code='u']">
+        <span class="results_summary online_resources">
+                <span class="label">Online resources: </span>
+        <xsl:for-each select="marc:datafield[@tag=856 and marc:subfield[@code='u']]">
             <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
             <a>
                 <xsl:attribute name="href">
@@ -958,9 +960,9 @@
                 <xsl:when test="position()=last()"><xsl:text>  </xsl:text></xsl:when>
                 <xsl:otherwise> | </xsl:otherwise>
             </xsl:choose>
-
         </xsl:for-each>
         </span>
+        </xsl:if>
     </xsl:if>
 
         <!-- 505 - Formatted contents note -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
index 16a423e421..5dbecdd6bc 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
@@ -978,9 +978,10 @@
     </xsl:call-template>
 
     <xsl:if test="marc:datafield[@tag=856]">
+        <xsl:if test="marc:datafield[@tag=856]/marc:subfield[@code='u']">
         <span class="results_summary online_resources">
-            <span class="label">Online resources: </span>
-            <xsl:for-each select="marc:datafield[@tag=856]">
+                <span class="label">Online resources: </span>
+            <xsl:for-each select="marc:datafield[@tag=856 and marc:subfield[@code='u']]">
                 <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
                 <a>
                     <xsl:attribute name="href">
@@ -1018,6 +1019,7 @@
                 </xsl:choose>
             </xsl:for-each>
         </span>
+        </xsl:if>
     </xsl:if>
 
     <!-- Content Warning -->
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl
index 515f954345..a6527ec2ad 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl
@@ -1038,10 +1038,11 @@
 
     <!-- Image processing code added here, takes precedence over text links including y3z text   -->
     <xsl:if test="marc:datafield[@tag=856]">
+        <xsl:if test="marc:datafield[@tag=856]/marc:subfield[@code='u']">
         <span class="results_summary online_resources">
-            <span class="label">Online resources: </span>
+                <span class="label">Online resources: </span>
                 <ul class="resource_list">
-                    <xsl:for-each select="marc:datafield[@tag=856]">
+                    <xsl:for-each select="marc:datafield[@tag=856 and marc:subfield[@code='u']]">
                         <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
                         <li>
                             <a property="url">
@@ -1075,18 +1076,23 @@
                                             <xsl:with-param name="codes">y3z</xsl:with-param>
                                         </xsl:call-template>
                                     </xsl:when>
-                                    <xsl:when test="$URLLinkText!=''">
-                                        <xsl:value-of select="$URLLinkText"/>
+                                    <xsl:when test="not(marc:subfield[@code='y']) and not(marc:subfield[@code='3']) and not(marc:subfield[@code='z'])">
+                                        <xsl:choose>
+                                            <xsl:when test="$URLLinkText!=''">
+                                                <xsl:value-of select="$URLLinkText"/>
+                                            </xsl:when>
+                                            <xsl:otherwise>
+                                                <xsl:text>Click here to access online</xsl:text>
+                                            </xsl:otherwise>
+                                        </xsl:choose>
                                     </xsl:when>
-                                    <xsl:otherwise>
-                                        <xsl:text>Click here to access online</xsl:text>
-                                    </xsl:otherwise>
                                 </xsl:choose>
                             </a>
                         </li>
                     </xsl:for-each>
                 </ul>
             </span>
+            </xsl:if>
         </xsl:if>
 
         <!--  787 Other Relationship Entry  -->
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl
index c2ebe9c7d9..d0a21bdc55 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl
@@ -1,3 +1,4 @@
+opacresult
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- $Id: MARC21slim2DC.xsl,v 1.1 2003/01/06 08:20:27 adam Exp $ -->
 <!DOCTYPE stylesheet>
@@ -1216,10 +1217,11 @@
     </xsl:if>
 
     <xsl:if test="marc:datafield[@tag=856]">
+        <xsl:if test="marc:datafield[@tag=856]/marc:subfield[@code='u']">
          <div class="results_summary online_resources">
                <span class="label">Online resources: </span>
                     <ul class="resource_list">
-                            <xsl:for-each select="marc:datafield[@tag=856]">
+                            <xsl:for-each select="marc:datafield[@tag=856 and marc:subfield[@code='u']]">
                             <xsl:variable name="SubqText"><xsl:value-of select="marc:subfield[@code='q']"/></xsl:variable>
                             <xsl:if test="$OPACURLOpenInNewWindow='0'">
 			      <li><a>
@@ -1255,9 +1257,9 @@
 					<xsl:when test="$URLLinkText!=''">
 						<xsl:value-of select="$URLLinkText"/>
 					</xsl:when>
-					<xsl:otherwise>
-						<xsl:text>Click here to access online</xsl:text>
-					</xsl:otherwise>
+                    <xsl:otherwise>
+                        <xsl:text>Click here to access online</xsl:text>
+                    </xsl:otherwise>
 					</xsl:choose>
                                     </xsl:when>
                                     </xsl:choose>
@@ -1274,7 +1276,10 @@
 				     </xsl:when>
 				     <xsl:otherwise>
 		                       <xsl:attribute name="href"><xsl:value-of select="marc:subfield[@code='u']"/></xsl:attribute>
-				     </xsl:otherwise>
+                                <xsl:if test="not(marc:subfield[@code='u'])">
+                                    <xsl:attribute name="style">pointer-events: none; color: #202020;</xsl:attribute>
+                                </xsl:if>
+                     </xsl:otherwise>
 				   </xsl:choose>
                                     <xsl:choose>
                                     <xsl:when test="($Show856uAsImage='Results' or $Show856uAsImage='Both') and ($SubqText='img' or $SubqText='bmp' or $SubqText='cod' or $SubqText='gif' or $SubqText='ief' or $SubqText='jpe' or $SubqText='jpeg' or $SubqText='jpg' or $SubqText='jfif' or $SubqText='png' or $SubqText='svg' or $SubqText='tif' or $SubqText='tiff' or $SubqText='ras' or $SubqText='cmx' or $SubqText='ico' or $SubqText='pnm' or $SubqText='pbm' or $SubqText='pgm' or $SubqText='ppm' or $SubqText='rgb' or $SubqText='xbm' or $SubqText='xpm' or $SubqText='xwd')">
@@ -1290,9 +1295,9 @@
 					<xsl:when test="$URLLinkText!=''">
 						<xsl:value-of select="$URLLinkText"/>
 					</xsl:when>
-					<xsl:otherwise>
-						<xsl:text>Click here to access online</xsl:text>
-					</xsl:otherwise>
+                    <xsl:otherwise>
+                        <xsl:text>Click here to access online</xsl:text>
+                    </xsl:otherwise>
 					</xsl:choose>
                                     </xsl:when>
                                     </xsl:choose>
@@ -1302,6 +1307,7 @@
                             </ul>
                             </div>
                         </xsl:if>
+        </xsl:if>
 
         <!-- Availability line -->
         <div class="results_summary availability">
@@ -1610,3 +1616,5 @@
 
 
 </xsl:stylesheet>
+
+</xsl:stylesheet>
-- 
2.34.1