Applies change to OPAC and staff detail view.
Chops punctuation. Adds 773g. Strips MARC org code from URL.
Utils code is used as basis for patches #5662 and #5663 too.
---
 .../prog/en/xslt/MARC21slim2intranetDetail.xsl     |   10 +++++-----
 .../intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl |   18 ++++++++++++++++++
 .../prog/en/xslt/MARC21slim2OPACDetail.xsl         |   10 +++++-----
 .../opac-tmpl/prog/en/xslt/MARC21slimUtils.xsl     |   18 ++++++++++++++++++
 4 files changed, 46 insertions(+), 10 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..ebc8a86 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
+++ b/koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
@@ -565,19 +565,19 @@
         </xsl:choose>
         </span>
                 <xsl:variable name="f773">
-                    <xsl:call-template name="subfieldSelect">
+                    <xsl:call-template name="chopPunctuation"><xsl:with-param 
name="chopString"><xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">at</xsl:with-param>
-                    </xsl:call-template>
+                    </xsl:call-template></xsl:with-param></xsl:call-template>
                 </xsl:variable>
             <xsl:choose>
                 <xsl:when test="$UseControlNumber = '1' and 
marc:subfield[@code='w']">
-                    <a 
href="/cgi-bin/koha/catalogue/search.pl?q=Control-number:{marc:subfield[@code='w']}">
-                        <xsl:value-of select="translate($f773, '()', '')"/>
+                    <a><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:value-of select="translate($f773, '()', 
'')"/><xsl:if test="marc:subfield[@code='g']"><xsl:text> 
</xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
                     </a>
                 </xsl:when>
                 <xsl:otherwise>
                     <a><xsl:attribute 
name="href">/cgi-bin/koha/catalogue/search.pl?q=Title:<xsl:value-of 
select="translate($f773, '()', '')"/></xsl:attribute>
-                        <xsl:value-of select="$f773"/>
+                        <xsl:value-of select="$f773"/><xsl:if 
test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of 
select="marc:subfield[@code='g']"/></xsl:if>
                     </a>
                 </xsl:otherwise>
             </xsl:choose>
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/MARC21slim2OPACDetail.xsl 
b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl
index 5703059..019ee01 100755
--- a/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl
+++ b/koha-tmpl/opac-tmpl/prog/en/xslt/MARC21slim2OPACDetail.xsl
@@ -605,19 +605,19 @@
         </xsl:choose>
         </span>
                 <xsl:variable name="f773">
-                    <xsl:call-template name="subfieldSelect">
+                    <xsl:call-template name="chopPunctuation"><xsl:with-param 
name="chopString"><xsl:call-template name="subfieldSelect">
                         <xsl:with-param name="codes">at</xsl:with-param>
-                    </xsl:call-template>
+                    </xsl:call-template></xsl:with-param></xsl:call-template>
                 </xsl:variable>
             <xsl:choose>
                 <xsl:when test="$UseControlNumber = '1' and 
marc:subfield[@code='w']">
-                    <a 
href="/cgi-bin/koha/opac-search.pl?q=Control-number:{marc:subfield[@code='w']}">
-                        <xsl:value-of select="translate($f773, '()', '')"/>
+                    <a><xsl:attribute 
name="href">/cgi-bin/koha/opac-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:value-of select="translate($f773, '()', 
'')"/><xsl:if test="marc:subfield[@code='g']"><xsl:text> 
</xsl:text><xsl:value-of select="marc:subfield[@code='g']"/></xsl:if>
                     </a>
                 </xsl:when>
                 <xsl:otherwise>
                     <a><xsl:attribute 
name="href">/cgi-bin/koha/opac-search.pl?q=Title:<xsl:value-of 
select="translate($f773, '()', '')"/></xsl:attribute>
-                        <xsl:value-of select="$f773"/>
+                        <xsl:value-of select="$f773"/><xsl:if 
test="marc:subfield[@code='g']"><xsl:text> </xsl:text><xsl:value-of 
select="marc:subfield[@code='g']"/></xsl:if>
                     </a>
                 </xsl:otherwise>
             </xsl:choose>
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
_______________________________________________
Koha-patches mailing list
Koha-patches@lists.koha-community.org
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to