Bug 17938: Fix display of label for repeated MARC 583 - Action note fields
authorKatrin Fischer <katrin.fischer.83@web.de>
Thu, 26 Mar 2020 22:30:52 +0000 (22:30 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 3 Apr 2020 13:28:59 +0000 (14:28 +0100)
When there are mulitple 583 on a record, the label "Action note" will be
repeated for each. This fixes it, so that the label only appears once and
multiple fields are separated by | following the existing pattern.

Also makes sure there is a space between $z and other subfields.

Note:
Ind. 1 = private - These won't display in the OPAC
Ind. 1 = 0 or empty - These will display in the OPAC
Staff will display all 583 independent from indicator.

To test:
- Add one or more records with none, one and muliple 583, at least one including $z
  For examples see:
  http://www.loc.gov/marc/bibliographic/bd583.html
- Verify display problems
- Apply patch
- Verify display is improved - one label and $z is followed by a space

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl

index 16775d8..23944c5 100644 (file)
         </xsl:if>
 
          <!-- 583 -->
-             <xsl:if test="marc:datafield[@tag=583]">
-                 <xsl:for-each select="marc:datafield[@tag=583]">
-                    <xsl:if test="@ind1=1 or @ind1=' '">
-                      <span class="results_summary actionnote">
-                          <span class="label">Action note: </span>
-                             <xsl:choose>
-                                 <xsl:when test="marc:subfield[@code='z']">
-                                     <xsl:value-of select="marc:subfield[@code='z']"/>
-                                 </xsl:when>
-                                 <xsl:otherwise>
-                                     <xsl:call-template name="subfieldSelect">
-                                         <xsl:with-param name="codes">abcdefgijklnou</xsl:with-param>
-                                     </xsl:call-template>
-                                 </xsl:otherwise>
-                             </xsl:choose>
-                         </span>
-                     </xsl:if>
-                 </xsl:for-each>
-             </xsl:if>
+         <xsl:if test="marc:datafield[@tag=583]">
+            <span class="results_summary actionnote">
+                <span class="label">Action note: </span>
+                <xsl:for-each select="marc:datafield[@tag=583]">
+                    <xsl:choose>
+                        <xsl:when test="marc:subfield[@code='z']">
+                            <xsl:value-of select="marc:subfield[@code='z']"/><xsl:text> </xsl:text>
+                        </xsl:when>
+                        <xsl:otherwise>
+                            <xsl:call-template name="subfieldSelect">
+                                <xsl:with-param name="codes">abcdefgijklnou</xsl:with-param>
+                            </xsl:call-template>
+                        </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:if test="position()!=last()"><span class="separator"><xsl:text> | </xsl:text></span></xsl:if>
+                </xsl:for-each>
+            </span>
+         </xsl:if>
 
         <!-- 508 -->
         <xsl:if test="marc:datafield[@tag=508]">
index 0ade997..ca5ee81 100644 (file)
         </xsl:if>
 
         <!-- 583 -->
-        <xsl:if test="marc:datafield[@tag=583]">
-        <xsl:for-each select="marc:datafield[@tag=583]">
-            <xsl:if test="@ind1=1 or @ind1=' '">
+        <xsl:if test="marc:datafield[@tag=583 and not(@ind1=0)]">
             <span class="results_summary actionnote">
                 <span class="label">Action note: </span>
-                <xsl:choose>
-                <xsl:when test="marc:subfield[@code='z']">
-                    <xsl:value-of select="marc:subfield[@code='z']"/>
-                </xsl:when>
-                <xsl:otherwise>
-                    <xsl:call-template name="subfieldSelect">
-                        <xsl:with-param name="codes">abcdefgijklnou</xsl:with-param>
-                    </xsl:call-template>
-                </xsl:otherwise>
-                </xsl:choose>
+                <xsl:for-each select="marc:datafield[@tag=583 and not(@ind1=0)]">
+                    <xsl:choose>
+                    <xsl:when test="marc:subfield[@code='z']">
+                        <xsl:value-of select="marc:subfield[@code='z']"/><xsl:text> </xsl:text>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:call-template name="subfieldSelect">
+                            <xsl:with-param name="codes">abcdefgijklnou</xsl:with-param>
+                        </xsl:call-template>
+                    </xsl:otherwise>
+                    </xsl:choose>
+                    <xsl:if test="position()!=last()"><span class="separator"><xsl:text> | </xsl:text></span></xsl:if>
+                </xsl:for-each>
             </span>
-            </xsl:if>
-        </xsl:for-each>
         </xsl:if>
 
         <!-- 508 -->