From 6c1ba76183b5cce60026f45f946c9a52683a6e55 Mon Sep 17 00:00:00 2001 From: Jared Camins-Esakov <jcamins@cpbibliography.com> Date: Sat, 4 Aug 2012 11:36:35 -0400 Subject: [PATCH] Bug 6617: Improve MARC21 enhanced contents display (intranet) Content-Type: text/plain; charset="UTF-8" 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. --- .../intranet-tmpl/prog/en/css/staff-global.css | 26 +++++++++ .../prog/en/xslt/MARC21slim2intranetDetail.xsl | 56 ++++++++++--------- .../intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl | 20 +++++++ 3 files changed, 75 insertions(+), 27 deletions(-) diff --git a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css index 436b728..41749b4 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css +++ b/koha-tmpl/intranet-tmpl/prog/en/css/staff-global.css @@ -2351,6 +2351,32 @@ ul.ui-tabs-nav li { float: right; } +.contents { + width: 75%; +} + +.contentblock { + position: relative; +} + +.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; diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl index c7fb89c..52c7a0d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl +++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl @@ -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> + <xsl:choose> + <xsl:when test="marc:datafield[@tag=505][0]/@ind1=0"> + <span class="label">Contents:</span> + </xsl:when> + <xsl:when test="marc:datafield[@tag=505][0]/@ind1=1"> + <span class="label">Incomplete contents:</span> + </xsl:when> + <xsl:when test="marc:datafield[@tag=505][0]/@ind1=2"> + <span class="label">Partial contents:</span> + </xsl:when> + </xsl:choose> + <div class="results_summary contents"> + <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 --> diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl index 8c0618b..151fc7b 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl +++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl @@ -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> -- 1.7.2.5