[Koha-patches] [PATCH] [REVISED] Bug 5622: Always show host entry (773) in staff; control number without organization code

Marcel de Rooy M.de.Rooy at rijksmuseum.nl
Thu Jan 27 14:38:06 CET 2011


Applies to XSLT generated results in staff normal view.
Remove limitation to show host item entry only for leader19==c.
Use generic LOC label In: instead of Set:
Show title from 773t.

Revision: Add logic for control number containing MARC Org Code.
---
 .../prog/en/xslt/MARC21slim2intranetDetail.xsl     |   12 ++++++------
 .../intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl |   18 ++++++++++++++++++
 .../opac-tmpl/prog/en/xslt/MARC21slimUtils.xsl     |   18 ++++++++++++++++++
 3 files changed, 42 insertions(+), 6 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
index edaf280..022cb9a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
@@ -275,20 +275,20 @@
         </span>
         </xsl:if>
 
-        <!-- Set -->
-        <xsl:if test="$leader19='c'">
-        <span class="results_summary"><span class="label">Set: </span>
+        <!-- Host item entry -->
+        <xsl:if test="marc:datafield[@tag=773]">
+        <span class="results_summary"><span class="label">In: </span>
         <xsl:for-each select="marc:datafield[@tag=773]">
             <a>
             <xsl:choose>
             <xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
-                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=Control-number:<xsl:value-of select="marc:subfield[@code='w']"/></xsl:attribute>
+                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=Control-number:<xsl:call-template name="extractControlNumber"><xsl:with-param name="subfieldW" select="marc:subfield[@code='w']"/></xsl:call-template></xsl:attribute>
             </xsl:when>
             <xsl:otherwise>
-                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=Title:<xsl:value-of select="translate(//marc:datafield[@tag=245]/marc:subfield[@code='a'], '.', '')"/></xsl:attribute>
+                <xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=Title:<xsl:value-of select="translate(marc:subfield[@code='t'], '.', '')"/></xsl:attribute>
             </xsl:otherwise>
             </xsl:choose>
-            <xsl:value-of select="translate(//marc:datafield[@tag=245]/marc:subfield[@code='a'], '.', '')" />
+            <xsl:value-of select="translate(marc:subfield[@code='t'], '.', '')" />
             </a>
             <xsl:choose>
                 <xsl:when test="position()=last()"></xsl:when>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
index d101723..559de13 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
@@ -65,6 +65,24 @@
 <xsl:text> </xsl:text>
 	</xsl:template>
 
+	<!-- Function extractControlNumber is used to extract the control number (record number) from MARC tags 773/80/85 [etc.] subfield $w.
+	     Parameter: control number string.
+	     Assumes LOC convention: (OrgCode)recordNumber.
+	     If OrgCode is not present, return full string.
+	     Additionally, handle various brackets/parentheses. Chop leading and trailing spaces.
+	-->
+	<xsl:template name="extractControlNumber">
+	    <xsl:param name="subfieldW"/>
+	    <xsl:variable name="tranW" select="translate($subfieldW,']})&gt;','))))')"/>
+	    <xsl:choose>
+	      <xsl:when test="contains($tranW,')')">
+	        <xsl:value-of select="normalize-space(translate(substring-after($tranW,')'),'[]{}()&lt;&gt;',''))"/>
+	      </xsl:when>
+	      <xsl:otherwise>
+	        <xsl:value-of select="normalize-space($subfieldW)"/>
+	      </xsl:otherwise>
+	    </xsl:choose>
+	</xsl:template>
 
     <!-- Function m880Select:  Display Alternate Graphic Representation (MARC 880) for selected latin "base"tags
         - should be called immediately before the corresonding latin tags are processed 
diff --git a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slimUtils.xsl b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slimUtils.xsl
index d101723..559de13 100644
--- a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slimUtils.xsl
+++ b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slimUtils.xsl
@@ -65,6 +65,24 @@
 <xsl:text> </xsl:text>
 	</xsl:template>
 
+	<!-- Function extractControlNumber is used to extract the control number (record number) from MARC tags 773/80/85 [etc.] subfield $w.
+	     Parameter: control number string.
+	     Assumes LOC convention: (OrgCode)recordNumber.
+	     If OrgCode is not present, return full string.
+	     Additionally, handle various brackets/parentheses. Chop leading and trailing spaces.
+	-->
+	<xsl:template name="extractControlNumber">
+	    <xsl:param name="subfieldW"/>
+	    <xsl:variable name="tranW" select="translate($subfieldW,']})&gt;','))))')"/>
+	    <xsl:choose>
+	      <xsl:when test="contains($tranW,')')">
+	        <xsl:value-of select="normalize-space(translate(substring-after($tranW,')'),'[]{}()&lt;&gt;',''))"/>
+	      </xsl:when>
+	      <xsl:otherwise>
+	        <xsl:value-of select="normalize-space($subfieldW)"/>
+	      </xsl:otherwise>
+	    </xsl:choose>
+	</xsl:template>
 
     <!-- Function m880Select:  Display Alternate Graphic Representation (MARC 880) for selected latin "base"tags
         - should be called immediately before the corresonding latin tags are processed 
-- 
1.6.0.6



More information about the Koha-patches mailing list