Bug 6617: Improve MARC21 enhanced contents display (intranet)

The display of "Enhanced" 505 (contents) fields in the MARC21
XSLT is very poor, resulting in large, unreadable blocks of text,
and -- for some series -- so much unnecessary duplication in the
Notes tab that important information is entirely obscured. This
patch reformats "enhanced" contents fields (MARC21 505 fields with
$t and $r) so as to be more readable by breaking up entries on
separate lines and making titles bold (to make them stand out more).

This patch does not address duplication of information in the Notes
tab, per discussion on the #koha IRC channel.

To test:
1) View record with enhanced 505 field before applying patch. Observe
it is very unfriendly.
2) Apply patch.
3) View same record, note that display is much improved.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Display in staff and OPAC is consistent and improved after
applying the patch.

Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
This commit is contained in:
Jared Camins-Esakov 2012-08-04 11:36:35 -04:00 committed by Paul Poulain
parent 0f13ce8380
commit 4a8e71ea93
3 changed files with 76 additions and 27 deletions

View File

@ -2370,6 +2370,33 @@ ul.ui-tabs-nav li {
float: right;
}
.contents {
width: 75%;
}
.contentblock {
position: relative;
margin-left: 2em;
}
.contents .t:first-child:before {
content: "→ ";
}
.contents .t:before {
content: "\A→ ";
white-space: pre;
}
.contents .t {
font-weight: bold;
display: inline;
}
.contents .r {
display: inline;
}
/* jQuery UI Datepicker */
.ui-datepicker-trigger {
vertical-align: middle;

View File

@ -542,33 +542,35 @@
</span>
</xsl:if>
<xsl:if test="marc:datafield[@tag=505]">
<xsl:for-each select="marc:datafield[@tag=505]">
<span class="results_summary contents">
<xsl:choose>
<xsl:when test="@ind1=0">
<span class="label">Contents:</span>
</xsl:when>
<xsl:when test="@ind1=1">
<span class="label">Incomplete contents:</span>
</xsl:when>
<xsl:when test="@ind1=1">
<span class="label">Partial contents:</span>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="@ind2=0">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">tru</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">au</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</span>
</xsl:for-each>
<div class="results_summary contents">
<xsl:choose>
<xsl:when test="marc:datafield[@tag=505]/@ind1=0">
<span class="label">Contents:</span>
</xsl:when>
<xsl:when test="marc:datafield[@tag=505]/@ind1=1">
<span class="label">Incomplete contents:</span>
</xsl:when>
<xsl:when test="marc:datafield[@tag=505]/@ind1=2">
<span class="label">Partial contents:</span>
</xsl:when>
</xsl:choose>
<xsl:for-each select="marc:datafield[@tag=505]">
<div class='contentblock'>
<xsl:choose>
<xsl:when test="@ind2=0">
<xsl:call-template name="subfieldSelectSpan">
<xsl:with-param name="codes">tru</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="subfieldSelectSpan">
<xsl:with-param name="codes">atru</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</div>
</xsl:for-each>
</div>
</xsl:if>
<!-- 773 -->

View File

@ -40,6 +40,26 @@
<xsl:value-of select="substring($str,1,string-length($str)-string-length($delimeter))"/>
</xsl:template>
<xsl:template name="subfieldSelectSpan">
<xsl:param name="codes"/>
<xsl:param name="delimeter"><xsl:text> </xsl:text></xsl:param>
<xsl:param name="subdivCodes"/>
<xsl:param name="subdivDelimiter"/>
<xsl:param name="prefix"/>
<xsl:param name="suffix"/>
<xsl:for-each select="marc:subfield">
<xsl:if test="contains($codes, @code)">
<span>
<xsl:attribute name="class"><xsl:value-of select="@code"/></xsl:attribute>
<xsl:if test="contains($subdivCodes, @code)">
<xsl:value-of select="$subdivDelimiter"/>
</xsl:if>
<xsl:value-of select="$prefix"/><xsl:value-of select="text()"/><xsl:value-of select="$suffix"/><xsl:if test="position()!=last()"><xsl:value-of select="$delimeter"/></xsl:if>
</span>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="buildSpaces">
<xsl:param name="spaces"/>
<xsl:param name="char"><xsl:text> </xsl:text></xsl:param>