Bug 13164: Incorrect ISSN visualization on the normal view if invalid/cancelled ISSN...
authorTomas Cohen Arazi <tomascohen@gmail.com>
Wed, 29 Oct 2014 19:24:49 +0000 (16:24 -0300)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Fri, 31 Oct 2014 17:13:31 +0000 (14:13 -0300)
Currently, 022$z (and 011$z for UNIMARC) occurences are not shown, but the XSLT
logic used introduces punctuation characters for those $z occurences.

This patch adds a check for the existence of subfield a, and only loops
on $a subfields.

To test:
- Create/have a record with 022$z (or 011$z on UNIMARC) but no 022$a (no 011$a on UNIMARC).
- Open the detail page for the record (on both OPAC and staff).
=> FAIL: the ISSN label and ';' and '.' characters incorrectly shown.
- Repeat mixing with 022$a occurences to notice the bug.
- Apply the patch, reload
=> SUCCES: ISSN label shows only on the presence of a $a, and $z are skipped.
           no matter how many ISSN fields you add.
- Sign off :-D

Regards
To+

Signed-off-by: Frederic Demians <f.demians@tamil.fr>
Works as described on an UNIMARC DB. Mimics what's done for ISBN field.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
koha-tmpl/intranet-tmpl/prog/en/xslt/NORMARCslim2intranetDetail.xsl
koha-tmpl/intranet-tmpl/prog/en/xslt/UNIMARCslim2intranetDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/NORMARCslim2OPACDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/UNIMARCslim2OPACDetail.xsl

index e7bf6d1..6711f9d 100644 (file)
         </span>
         </xsl:if>
 
-        <xsl:if test="marc:datafield[@tag=022]">
-        <span class="results_summary issn"><span class="label">ISSN: </span>
-        <xsl:for-each select="marc:datafield[@tag=022]">
-                <xsl:value-of select="marc:subfield[@code='a']"/>
-                <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>
+        <!-- Build ISSN -->
+        <xsl:if test="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+          <span class="results_summary issn"><span class="label">ISSN: </span>
+            <xsl:for-each select="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+              <span property="issn">
+                <xsl:value-of select="."/>
+                <xsl:choose>
+                  <xsl:when test="position()=last()">
+                    <xsl:text>.</xsl:text>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:text>; </xsl:text>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </span>
+            </xsl:for-each>
+          </span>
         </xsl:if>
 
         <xsl:if test="marc:datafield[@tag=013]">
index 3271e5b..150a29a 100644 (file)
         </span>
         </xsl:if>
 
-        <xsl:if test="marc:datafield[@tag=022]">
-        <span class="results_summary"><span class="label">ISSN: </span>
-        <xsl:for-each select="marc:datafield[@tag=022]">
-                <xsl:value-of select="marc:subfield[@code='a']"/>
-                <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>
+        <!-- Build ISSN -->
+        <xsl:if test="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+          <span class="results_summary issn"><span class="label">ISSN: </span>
+            <xsl:for-each select="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+              <span property="issn">
+                <xsl:value-of select="."/>
+                <xsl:choose>
+                  <xsl:when test="position()=last()">
+                    <xsl:text>.</xsl:text>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:text>; </xsl:text>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </span>
+            </xsl:for-each>
+          </span>
         </xsl:if>
 
         <!-- Other Title  Statement -->
index 552385e..61d8085 100644 (file)
     </li>
   </xsl:if>
 
-  <xsl:if test="marc:datafield[@tag=011]">
+  <!-- Build ISSN -->
+  <xsl:if test="marc:datafield[@tag=011]/marc:subfield[@code='a']">
     <li>
-      <strong>ISSN: </strong>
-      <xsl:for-each select="marc:datafield[@tag=011]">
-        <xsl:value-of select="marc:subfield[@code='a']"/>
-        <xsl:choose>
-          <xsl:when test="position()=last()">
-            <xsl:text>.</xsl:text>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:text>; </xsl:text>
-          </xsl:otherwise>
-        </xsl:choose>
+    <strong>ISSN: </strong>
+      <xsl:for-each select="marc:datafield[@tag=011]/marc:subfield[@code='a']">
+        <span property="issn">
+          <xsl:value-of select="."/>
+          <xsl:choose>
+            <xsl:when test="position()=last()">
+              <xsl:text>.</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>; </xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </span>
       </xsl:for-each>
     </li>
   </xsl:if>
index 353a96e..fe8daac 100644 (file)
         </span>
         </xsl:if>
 
-        <xsl:if test="marc:datafield[@tag=022]">
-        <span class="results_summary issn"><span class="label">ISSN: </span>
-        <xsl:for-each select="marc:datafield[@tag=022]">
-                <xsl:value-of select="marc:subfield[@code='a']"/>
-                <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>
+        <!-- Build ISSN -->
+        <xsl:if test="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+          <span class="results_summary issn"><span class="label">ISSN: </span>
+            <xsl:for-each select="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+              <span property="issn">
+                <xsl:value-of select="."/>
+                <xsl:choose>
+                  <xsl:when test="position()=last()">
+                    <xsl:text>.</xsl:text>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:text>; </xsl:text>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </span>
+            </xsl:for-each>
+          </span>
         </xsl:if>
 
         <xsl:if test="marc:datafield[@tag=013]">
index 62e004d..7a8e5ce 100644 (file)
         </span>
         </xsl:if>
 
-        <xsl:if test="marc:datafield[@tag=022]">
-        <span class="results_summary"><span class="label">ISSN: </span>
-        <xsl:for-each select="marc:datafield[@tag=022]">
-                <xsl:value-of select="marc:subfield[@code='a']"/>
-                <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>
+        <!-- Build ISSN -->
+        <xsl:if test="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+          <span class="results_summary issn"><span class="label">ISSN: </span>
+            <xsl:for-each select="marc:datafield[@tag=022]/marc:subfield[@code='a']">
+              <span property="issn">
+                <xsl:value-of select="."/>
+                <xsl:choose>
+                  <xsl:when test="position()=last()">
+                    <xsl:text>.</xsl:text>
+                  </xsl:when>
+                  <xsl:otherwise>
+                    <xsl:text>; </xsl:text>
+                  </xsl:otherwise>
+                </xsl:choose>
+              </span>
+            </xsl:for-each>
+          </span>
         </xsl:if>
 
         <!-- Other Title  Statement -->
index f7d1984..40eac3a 100644 (file)
     </span>
   </xsl:if>
 
-  <xsl:if test="marc:datafield[@tag=011]">
-    <span class="results_summary issn">
-      <span class="label">ISSN: </span>
-      <xsl:for-each select="marc:datafield[@tag=011]">
-        <xsl:value-of select="marc:subfield[@code='a']"/>
-        <xsl:choose>
-          <xsl:when test="position()=last()">
-            <xsl:text>.</xsl:text>
-          </xsl:when>
-          <xsl:otherwise>
-            <xsl:text>; </xsl:text>
-          </xsl:otherwise>
-        </xsl:choose>
+  <!-- Build ISSN -->
+  <xsl:if test="marc:datafield[@tag=011]/marc:subfield[@code='a']">
+    <span class="results_summary issn"><span class="label">ISSN: </span>
+      <xsl:for-each select="marc:datafield[@tag=011]/marc:subfield[@code='a']">
+        <span property="issn">
+          <xsl:value-of select="."/>
+          <xsl:choose>
+            <xsl:when test="position()=last()">
+              <xsl:text>.</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>; </xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </span>
       </xsl:for-each>
     </span>
   </xsl:if>