Bug 15851: Display analytics links for more cases
authorTomas Cohen Arazi <tomascohen@theke.io>
Wed, 24 Jun 2020 16:08:25 +0000 (13:08 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 3 Sep 2020 12:18:23 +0000 (14:18 +0200)
The current XSLT displays the link to linked analytics only for serials.
This patch makes it show for all the relevant position 7 on the leader
values. I left out a and b as recommended by expert librarians on my
team, but I can revert that if required.

The current implementation adds a new CSS class for each case, so
libraries willing to keep the current behaviour or just have more
granular control on the cases they want the link to display, just can.

This patch makes sense with the follow-up one, which will display the
link only if there are really related records.

To test:
1. Open a non-serial record, notice there's no link to analytics
2. Apply this patch and reload
=> SUCCESS: There's an 'Analytics' link
3. Inspect the produced HTML
=> SUCCESS: A special class with analytic_* value has been added, and
thus we now can control its display through CSS
4. Sign off :-D

Sponsored-by: Orex Digital
Signed-off-by: Hugo Agud <hagud@orex.es>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl

index 10fcd84..66349e0 100644 (file)
         </span>
         </xsl:if>
 
-        <!-- Analytics -->
-        <xsl:if test="$leader7='s'">
-        <span class="results_summary analytics"><span class="label">Analytics: </span>
+        <!-- Analytics information -->
+        <xsl:variable name="leader7_class">
+            <xsl:choose>
+                <!--xsl:when test="$leader7='a'">analytic_mcp</xsl:when-->
+                <!--xsl:when test="$leader7='b'">analytic_scp</xsl:when-->
+                <xsl:when test="$leader7='c'">analytic_collection</xsl:when>
+                <xsl:when test="$leader7='d'">analytic_subunit</xsl:when>
+                <xsl:when test="$leader7='i'">analytic_ires</xsl:when>
+                <xsl:when test="$leader7='m'">analytic_monograph</xsl:when>
+                <xsl:when test="$leader7='s'">analytic_serial</xsl:when>
+                <xsl:otherwise>analytic_undefined</xsl:otherwise>
+            </xsl:choose>
+        </xsl:variable>
+
+        <xsl:element name="span">
+            <xsl:attribute name="class">results_summary analytics <xsl:value-of select="$leader7_class"/></xsl:attribute>
+            <span class="label">Analytics: </span>
             <a>
             <xsl:choose>
-            <xsl:when test="$UseControlNumber = '1' and marc:controlfield[@tag=001]">
-                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=rcn:<xsl:value-of select="str:encode-uri(marc:controlfield[@tag=001], true())"/>+AND+(bib-level:a+OR+bib-level:b)</xsl:attribute>
-            </xsl:when>
-            <xsl:otherwise>
-                <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Host-item:<xsl:value-of select="str:encode-uri(translate(marc:datafield[@tag=245]/marc:subfield[@code='a'], '/', ''), true())"/></xsl:attribute>
-            </xsl:otherwise>
+                <xsl:when test="$UseControlNumber = '1' and marc:controlfield[@tag=001]">
+                    <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=rcn:<xsl:value-of select="str:encode-uri(marc:controlfield[@tag=001], true())"/>+AND+(bib-level:a+OR+bib-level:b)</xsl:attribute>
+                </xsl:when>
+                <xsl:otherwise>
+                    <xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=Host-item:<xsl:value-of select="str:encode-uri(translate(marc:datafield[@tag=245]/marc:subfield[@code='a'], '/', ''), true())"/></xsl:attribute>
+                </xsl:otherwise>
             </xsl:choose>
             <xsl:text>Show analytics</xsl:text>
             </a>
-        </span>
-        </xsl:if>
+        </xsl:element>
 
         <!-- Volumes of sets and traced series -->
         <xsl:if test="$materialTypeCode='ST' or substring($controlField008,22,1)='m'">