Browse Source

Bug 16522: (follow-up) MARC display templates and get_marc_host fixes

Also:
- Show related parts 773$g
- Normalise using 'Host item entry' as title
- Remove 'foreach' because non-xslt views only return first
- If no $w, use $atg, and related tests in
t/db_dependent/Koha/Biblio/host_record.t

Signed-off-by: Heather Hernandez <heather_hernandez@nps.gov>

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
23.05.x
Aleisha Amohia 2 years ago
committed by Tomas Cohen Arazi
parent
commit
adad3a9e22
Signed by: tomascohen GPG Key ID: 0A272EA1B2F3C15F
  1. 6
      Koha/Biblio.pm
  2. 4
      basket/basket.pl
  3. 4
      basket/sendbasket.pl
  4. 18
      koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt
  5. 8
      koha-tmpl/intranet-tmpl/prog/en/modules/basket/sendbasket.tt
  6. 8
      koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelf.tt
  7. 73
      koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl
  8. 55
      koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl
  9. 74
      koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl
  10. 18
      koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-basket.tt
  11. 8
      koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-sendbasket.tt
  12. 8
      koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-sendshelf.tt
  13. 73
      koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl
  14. 55
      koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl
  15. 74
      koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slimUtils.xsl
  16. 4
      opac/opac-basket.pl
  17. 4
      opac/opac-sendbasket.pl
  18. 4
      opac/opac-sendshelf.pl
  19. 8
      t/db_dependent/Koha/Biblio/host_record.t
  20. 4
      virtualshelves/sendshelf.pl

6
Koha/Biblio.pm

@ -1237,6 +1237,12 @@ sub get_marc_host {
last;
}
}
if ( !$hostfld and $record->subfield('773','t') ) {
# not linked using $w so just return plaintext
my $unlinkedf = $record->field('773');
my $host = join( ", ", $unlinkedf->subfield('a'), $unlinkedf->subfield('t'), $unlinkedf->subfield('g') );
return wantarray ? ( $host, $unlinkedf->subfield('g') ) : $host;
}
return if !$hostfld;
my $rcn = $hostfld->subfield('w');

4
basket/basket.pl

@ -96,7 +96,9 @@ foreach my $biblionumber ( @bibs ) {
$dat->{MARCSERIES} = $marcseriesarray;
$dat->{MARCURLS} = $marcurlsarray;
$dat->{HASAUTHORS} = $hasauthors;
$dat->{HOSTITEMENTRIES} = $biblio->get_marc_host;
my ( $host, $relatedparts ) = $biblio->get_marc_host;
$dat->{HOSTITEMENTRIES} = $host;
$dat->{RELATEDPARTS} = $relatedparts;
push( @results, $dat );
}

4
basket/sendbasket.pl

@ -86,7 +86,9 @@ if ( $email_add ) {
$dat->{HASAUTHORS} = $hasauthors;
$dat->{'biblionumber'} = $biblionumber;
$dat->{ITEM_RESULTS} = $biblio->items->search_ordered;
$dat->{HOSTITEMENTRIES} = $biblio->get_marc_host;
my ( $host, $relatedparts ) = $biblio->get_marc_host;
$dat->{HOSTITEMENTRIES} = $host;
$dat->{RELATEDPARTS} = $relatedparts;
$iso2709 .= $record->as_usmarc();

18
koha-tmpl/intranet-tmpl/prog/en/modules/basket/basket.tt

@ -221,12 +221,12 @@
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
<tr>
<th scope="row">Host item entries</th>
<th scope="row">Host item entry</th>
<td>
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<p>
[% INCLUDE 'biblio-title.inc' link = 1 biblio=entry %]
</p>
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
<p>[% INCLUDE 'biblio-title.inc' link = 1 biblio=BIBLIO_RESULT.HOSTITEMENTRIES %] [% BIBLIO_RESULT.RELATEDPARTS | html %]</p>
[% ELSE %]
<p>[% BIBLIO_RESULT.HOSTITEMENTRIES | html %]</p>
[% END %]
</td>
</tr>
@ -299,11 +299,13 @@
<p>[% BIBLIO_RESULT.notes | html %]</p>
[% END %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<p>Host item entry:
[% INCLUDE 'biblio-title.inc' link = 1 biblio=entry %]
</p>
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
[% INCLUDE 'biblio-title.inc' link = 1 biblio=BIBLIO_RESULT.HOSTITEMENTRIES %] [% BIBLIO_RESULT.RELATEDPARTS | html %]
[% ELSE %]
[% BIBLIO_RESULT.HOSTITEMENTRIES | html %]
[% END %]
</p>
[% END %]
<!-- COinS / Openurl -->
<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.au=[% BIBLIO_RESULT.author | html %]&amp;rft.btitle=[% BIBLIO_RESULT.title |url %]&amp;rft.date=[% BIBLIO_RESULT.publicationyear | html %]&amp;rft.tpages=[% BIBLIO_RESULT.item('size') | html %]&amp;rft.isbn=[% BIBLIO_RESULT.isbn |url %]&amp;rft.aucorp=&amp;rft.place=[% BIBLIO_RESULT.place | html %]&amp;rft.pub=[% BIBLIO_RESULT.publisher |url %]&amp;rft.edition=[% BIBLIO_RESULT.edition | html %]&amp;rft.series=[% BIBLIO_RESULT.series | html %]&amp;rft.genre="></span>

8
koha-tmpl/intranet-tmpl/prog/en/modules/basket/sendbasket.tt

@ -129,13 +129,15 @@ Your cart
[% END %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<span>Host item entry:
[% INCLUDE 'biblio-title.inc' link = 1 biblio=entry %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
[% INCLUDE 'biblio-title.inc' link = 1 biblio=BIBLIO_RESULT.HOSTITEMENTRIES %] [% BIBLIO_RESULT.RELATEDPARTS | $raw %]
[% ELSE %]
[% BIBLIO_RESULT.HOSTITEMENTRIES %]
[% END %]
</span>
<br/>
[% END %]
[% END %]
[% IF ( BIBLIO_RESULT.url ) %]
<span>

8
koha-tmpl/intranet-tmpl/prog/en/modules/virtualshelves/sendshelf.tt

@ -136,13 +136,15 @@ Your list: [% shelfname | $raw %]
[% END %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<span>Host item entry:
[% INCLUDE 'biblio-title.inc' link = 1 biblio=entry %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
[% INCLUDE 'biblio-title.inc' link = 1 biblio=BIBLIO_RESULT.HOSTITEMENTRIES %] [% BIBLIO_RESULT.RELATEDPARTS | $raw %]
[% ELSE %]
[% BIBLIO_RESULT.HOSTITEMENTRIES %]
[% END %]
</span>
<br/>
[% END %]
[% END %]
[% IF ( BIBLIO_RESULT.url ) %]
<span>

73
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetDetail.xsl

@ -1053,78 +1053,9 @@
</span>
</xsl:if>
<!-- 773 -->
<xsl:if test="marc:datafield[@tag=773]">
<xsl:for-each select="marc:datafield[@tag=773]">
<xsl:if test="@ind1 !=1">
<span class="results_summary in"><span class="label">
<xsl:choose>
<xsl:when test="@ind2=' '">
In:
</xsl:when>
<xsl:when test="@ind2=8">
<xsl:if test="marc:subfield[@code='i']">
<xsl:value-of select="marc:subfield[@code='i']"/>
</xsl:if>
</xsl:when>
</xsl:choose>
</span>
<xsl:variable name="f773">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<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, '()', '')"/>
</a>
</xsl:when>
<xsl:when test="marc:subfield[@code='0']">
<a><xsl:attribute name="href">/cgi-bin/koha/catalogue/detail.pl?biblionumber=<xsl:value-of select="str:encode-uri(marc:subfield[@code='0'], true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="host_query">
<xsl:text>ti,phr:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term"><xsl:value-of select="marc:subfield[@code='t']"/></xsl:with-param>
</xsl:call-template>
<xsl:text>)</xsl:text>
<xsl:if test="marc:subfield[@code='a']">
<xsl:text> AND au:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term">
<xsl:value-of select="marc:subfield[@code='a']"/>
</xsl:with-param>
<xsl:call-template name="host-item-entries">
<xsl:with-param name="UseControlNumber" select="$UseControlNumber"/>
</xsl:call-template>
<xsl:text>)</xsl:text>
</xsl:if>
</xsl:variable>
<a>
<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="str:encode-uri($host_query, true())" />
</xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="marc:subfield[@code='g']">
<xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/>
</xsl:if>
</span>
<xsl:if test="marc:subfield[@code='n']">
<span class="results_summary in_note"><xsl:value-of select="marc:subfield[@code='n']"/></span>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:if test="marc:datafield[@tag=502]">
<span class="results_summary diss_note">

55
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slim2intranetResults.xsl

@ -929,60 +929,9 @@
</span>
</xsl:if>
<!-- 773 -->
<xsl:if test="marc:datafield[@tag=773]">
<xsl:for-each select="marc:datafield[@tag=773]">
<xsl:if test="@ind1 !=1">
<span class="results_summary in"><span class="label">
<xsl:choose>
<xsl:when test="@ind2=' '">
Source:
</xsl:when>
<xsl:when test="@ind2=8">
<xsl:if test="marc:subfield[@code='i']">
<xsl:value-of select="marc:subfield[@code='i']"/>
</xsl:if>
</xsl:when>
</xsl:choose>
</span>
<xsl:variable name="f773">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
<xsl:call-template name="host-item-entries">
<xsl:with-param name="UseControlNumber" select="$UseControlNumber"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<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, '()', '')"/>
</a>
</xsl:when>
<xsl:when test="marc:subfield[@code='0']">
<a><xsl:attribute name="href">/cgi-bin/koha/catalogue/detail.pl?biblionumber=<xsl:value-of select="str:encode-uri(marc:subfield[@code='0'], true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:when>
<xsl:otherwise>
<a><xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=ti,phr:<xsl:value-of select="str:encode-uri(translate($f773, '()', ''), true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="marc:subfield[@code='g']">
<xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/>
</xsl:if>
</span>
<xsl:if test="marc:subfield[@code='n']">
<span class="results_summary in_note"><xsl:value-of select="marc:subfield[@code='n']"/></span>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:if>
<!-- Other Title Statement: Alternate Graphic Representation (MARC 880) -->
<xsl:if test="$display880">

74
koha-tmpl/intranet-tmpl/prog/en/xslt/MARC21slimUtils.xsl

@ -615,6 +615,80 @@
</xsl:choose>
</xsl:template>
<xsl:template name="host-item-entries">
<xsl:param name="UseControlNumber"/>
<!-- 773 -->
<xsl:if test="marc:datafield[@tag=773]">
<xsl:for-each select="marc:datafield[@tag=773]">
<xsl:if test="@ind1 !=1">
<span class="results_summary in"><span class="label">
<xsl:choose>
<xsl:when test="@ind2=' '">
Host item entry:
</xsl:when>
<xsl:when test="@ind2=8">
<xsl:if test="marc:subfield[@code='i']">
<xsl:value-of select="marc:subfield[@code='i']"/>
</xsl:if>
</xsl:when>
</xsl:choose>
</span>
<xsl:variable name="f773">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<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, '()', '')"/>
</a>
</xsl:when>
<xsl:when test="marc:subfield[@code='0']">
<a><xsl:attribute name="href">/cgi-bin/koha/catalogue/detail.pl?biblionumber=<xsl:value-of select="str:encode-uri(marc:subfield[@code='0'], true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="host_query">
<xsl:text>ti,phr:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term"><xsl:value-of select="marc:subfield[@code='t']"/></xsl:with-param>
</xsl:call-template>
<xsl:text>)</xsl:text>
<xsl:if test="marc:subfield[@code='a']">
<xsl:text> AND au:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term">
<xsl:value-of select="marc:subfield[@code='a']"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text>)</xsl:text>
</xsl:if>
</xsl:variable>
<a>
<xsl:attribute name="href">/cgi-bin/koha/catalogue/search.pl?q=<xsl:value-of select="str:encode-uri($host_query, true())" />
</xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="marc:subfield[@code='g']">
<xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/>
</xsl:if>
</span>
<xsl:if test="marc:subfield[@code='n']">
<span class="results_summary in_note"><xsl:value-of select="marc:subfield[@code='n']"/></span>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.

18
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-basket.tt

@ -238,13 +238,15 @@
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
<tr>
<th scope="row">Host item entries</th>
<th scope="row">Host item entry</th>
<td>
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<p>
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% entry.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=entry %]</a>
</p>
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=BIBLIO_RESULT.HOSTITEMENTRIES %]</a> [% BIBLIO_RESULT.RELATEDPARTS | html %]
[% ELSE %]
[% BIBLIO_RESULT.HOSTITEMENTRIES %]
[% END %]
</p>
</td>
</tr>
[% END %]
@ -309,11 +311,13 @@
[% END %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<p>Host item entry:
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% entry.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=entry %]</a>
</p>
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=entry %]</a> [% BIBLIO_RESULT.RELATEDPARTS | html %]
[% ELSE %]
[% BIBLIO_RESULT.HOSTITEMENTRIES %]
[% END %]
</p>
[% END %]
</td>
<td>[% BIBLIO_RESULT.author | html %]</td>

8
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-sendbasket.tt

@ -134,13 +134,15 @@ Your cart
[% END %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<span>Host item entry:
<a href="[% OPACBaseURL | $raw %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% entry.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=entry %]</a>
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
<a href="[% OPACBaseURL | $raw %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=BIBLIO_RESULT.HOSTITEMENTRIES %]</a> [% BIBLIO_RESULT.RELATEDPARTS | $raw %]
[% ELSE %]
[% BIBLIO_RESULT.HOSTITEMENTRIES %]
[% END %]
</span>
<br/>
[% END %]
[% END %]
[% IF ( BIBLIO_RESULT.url ) %]
<span>

8
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-sendshelf.tt

@ -137,13 +137,15 @@ Your list : [% shelfname | $raw %]
[% END %]
[% IF BIBLIO_RESULT.HOSTITEMENTRIES %]
[% FOREACH entry IN BIBLIO_RESULT.HOSTITEMENTRIES %]
<span>Host item entry:
<a href="[% OPACBaseURL | $raw %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% entry.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=entry %]</a>
[% IF BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber %]
<a href="[% OPACBaseURL | $raw %]/cgi-bin/koha/opac-detail.pl?biblionumber=[% BIBLIO_RESULT.HOSTITEMENTRIES.biblionumber | uri %]">[% INCLUDE 'biblio-title.inc' biblio=BIBLIO_RESULT.HOSTITEMENTRIES %]</a> [% BIBLIO_RESULT.RELATEDPARTS | $raw %]
[% ELSE %]
[% BIBLIO_RESULT.HOSTITEMENTRIES %]
[% END %]
</span>
<br/>
[% END %]
[% END %]
[% IF ( BIBLIO_RESULT.url ) %]
<span>

73
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACDetail.xsl

@ -1255,78 +1255,9 @@
</span>
</xsl:if>
<!-- 773 -->
<xsl:if test="marc:datafield[@tag=773]">
<xsl:for-each select="marc:datafield[@tag=773]">
<xsl:if test="@ind1 !=1">
<span class="results_summary in"><span class="label">
<xsl:choose>
<xsl:when test="@ind2=' '">
In:
</xsl:when>
<xsl:when test="@ind2=8">
<xsl:if test="marc:subfield[@code='i']">
<xsl:value-of select="marc:subfield[@code='i']"/>
</xsl:if>
</xsl:when>
</xsl:choose>
</span>
<xsl:variable name="f773">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<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, '()', '')"/>
</a>
</xsl:when>
<xsl:when test="marc:subfield[@code='0']">
<a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="str:encode-uri(marc:subfield[@code='0'], true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="host_query">
<xsl:text>ti,phr:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term"><xsl:value-of select="marc:subfield[@code='t']"/></xsl:with-param>
</xsl:call-template>
<xsl:text>)</xsl:text>
<xsl:if test="marc:subfield[@code='a']">
<xsl:text> AND au:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term">
<xsl:value-of select="marc:subfield[@code='a']"/>
</xsl:with-param>
<xsl:call-template name="host-item-entries">
<xsl:with-param name="UseControlNumber" select="$UseControlNumber"/>
</xsl:call-template>
<xsl:text>)</xsl:text>
</xsl:if>
</xsl:variable>
<a>
<xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="str:encode-uri($host_query, true())" />
</xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="marc:subfield[@code='g']">
<xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/>
</xsl:if>
</span>
<xsl:if test="marc:subfield[@code='n']">
<span class="results_summary in_note"><xsl:value-of select="marc:subfield[@code='n']"/></span>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:for-each select="marc:datafield[@tag=511]">
<span class="results_summary perf_note">

55
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slim2OPACResults.xsl

@ -660,60 +660,9 @@
</div>
</xsl:if>
<!-- 773 -->
<xsl:if test="marc:datafield[@tag=773]">
<xsl:for-each select="marc:datafield[@tag=773]">
<xsl:if test="@ind1 !=1">
<div class="results_summary in"><span class="label">
<xsl:choose>
<xsl:when test="@ind2=' '">
Source:
</xsl:when>
<xsl:when test="@ind2=8">
<xsl:if test="marc:subfield[@code='i']">
<xsl:value-of select="marc:subfield[@code='i']"/>
</xsl:if>
</xsl:when>
</xsl:choose>
<xsl:variable name="f773">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
<xsl:call-template name="host-item-entries">
<xsl:with-param name="UseControlNumber" select="$UseControlNumber"/>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<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, '()', '')"/>
</a>
</xsl:when>
<xsl:when test="marc:subfield[@code='0']">
<a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="str:encode-uri(marc:subfield[@code='0'], true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:when>
<xsl:otherwise>
<a><xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=ti,phr:<xsl:value-of select="str:encode-uri(translate($f773, '()', ''), true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="marc:subfield[@code='g']">
<xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/>
</xsl:if>
</span>
</div>
<xsl:if test="marc:subfield[@code='n']">
<div class="results_summary in_note"><xsl:value-of select="marc:subfield[@code='n']"/></div>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:if test="$DisplayOPACiconsXSLT!='0'">
<div class="results_summary type">

74
koha-tmpl/opac-tmpl/bootstrap/en/xslt/MARC21slimUtils.xsl

@ -578,6 +578,80 @@
</xsl:choose>
</xsl:template>
<xsl:template name="host-item-entries">
<xsl:param name="UseControlNumber"/>
<!-- 773 -->
<xsl:if test="marc:datafield[@tag=773]">
<xsl:for-each select="marc:datafield[@tag=773]">
<xsl:if test="@ind1 !=1">
<span class="results_summary in"><span class="label">
<xsl:choose>
<xsl:when test="@ind2=' '">
Host item entry:
</xsl:when>
<xsl:when test="@ind2=8">
<xsl:if test="marc:subfield[@code='i']">
<xsl:value-of select="marc:subfield[@code='i']"/>
</xsl:if>
</xsl:when>
</xsl:choose>
</span>
<xsl:variable name="f773">
<xsl:call-template name="chopPunctuation">
<xsl:with-param name="chopString">
<xsl:call-template name="subfieldSelect">
<xsl:with-param name="codes">a_t</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$UseControlNumber = '1' and marc:subfield[@code='w']">
<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, '()', '')"/>
</a>
</xsl:when>
<xsl:when test="marc:subfield[@code='0']">
<a><xsl:attribute name="href">/cgi-bin/koha/opac-detail.pl?biblionumber=<xsl:value-of select="str:encode-uri(marc:subfield[@code='0'], true())"/></xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="host_query">
<xsl:text>ti,phr:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term"><xsl:value-of select="marc:subfield[@code='t']"/></xsl:with-param>
</xsl:call-template>
<xsl:text>)</xsl:text>
<xsl:if test="marc:subfield[@code='a']">
<xsl:text> AND au:(</xsl:text>
<xsl:call-template name="quote_search_term">
<xsl:with-param name="term">
<xsl:value-of select="marc:subfield[@code='a']"/>
</xsl:with-param>
</xsl:call-template>
<xsl:text>)</xsl:text>
</xsl:if>
</xsl:variable>
<a>
<xsl:attribute name="href">/cgi-bin/koha/opac-search.pl?q=<xsl:value-of select="str:encode-uri($host_query, true())" />
</xsl:attribute>
<xsl:value-of select="$f773"/>
</a>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="marc:subfield[@code='g']">
<xsl:text> </xsl:text><xsl:value-of select="marc:subfield[@code='g']"/>
</xsl:if>
</span>
<xsl:if test="marc:subfield[@code='n']">
<span class="results_summary in_note"><xsl:value-of select="marc:subfield[@code='n']"/></span>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<!-- Stylus Studio meta-information - (c)1998-2002 eXcelon Corp.

4
opac/opac-basket.pl

@ -117,7 +117,9 @@ foreach my $biblionumber ( @bibs ) {
$dat->{MARCSERIES} = $marcseriesarray;
$dat->{MARCURLS} = $marcurlsarray;
$dat->{HASAUTHORS} = $hasauthors;
$dat->{HOSTITEMENTRIES} = $biblio->get_marc_host;
my ( $host, $relatedparts ) = $biblio->get_marc_host;
$dat->{HOSTITEMENTRIES} = $host;
$dat->{RELATEDPARTS} = $relatedparts;
push( @results, $dat );
}

4
opac/opac-sendbasket.pl

@ -97,7 +97,9 @@ if ( $email_add ) {
$dat->{HASAUTHORS} = $hasauthors;
$dat->{'biblionumber'} = $biblionumber;
$dat->{ITEM_RESULTS} = $items;
$dat->{HOSTITEMENTRIES} = $biblio->get_marc_host;
my ( $host, $relatedparts ) = $biblio->get_marc_host;
$dat->{HOSTITEMENTRIES} = $host;
$dat->{RELATEDPARTS} = $relatedparts;
$iso2709 .= $record->as_usmarc();

4
opac/opac-sendshelf.pl

@ -102,7 +102,9 @@ if ( $shelf and $shelf->can_be_viewed( $borrowernumber ) ) {
$dat->{'biblionumber'} = $biblionumber;
$dat->{ITEM_RESULTS} = $items;
$dat->{HASAUTHORS} = $dat->{'author'} || @$marcauthorsarray;
$dat->{HOSTITEMENTRIES} = $biblio->get_marc_host;
my ( $host, $relatedparts ) = $biblio->get_marc_host;
$dat->{HOSTITEMENTRIES} = $host;
$dat->{RELATEDPARTS} = $relatedparts;
$iso2709 .= $record->as_usmarc();

8
t/db_dependent/Koha/Biblio/host_record.t

@ -36,7 +36,7 @@ $schema->storage->txn_begin;
our $builder = t::lib::TestBuilder->new;
subtest 'get_marc_host' => sub {
plan tests => 11;
plan tests => 12;
t::lib::Mocks::mock_preference( 'marcflavour', 'MARC21' );
t::lib::Mocks::mock_preference( 'MARCOrgCode', 'xyz' );
@ -72,6 +72,12 @@ subtest 'get_marc_host' => sub {
$marc->field('773')->update( w => '(xyz) bad data' ); # causes no results
$host = $bib1->get_marc_host;
is( $bib1->get_marc_host, undef, 'No results for bad 773' );
# Test plaintext when no $w
$marc->field('773')->update( t => 'title' );
$marc->field('773')->delete_subfield( code => 'w' );
$host = $bib1->get_marc_host;
is( $host, "title, relpart", '773$atg returned when no $w' );
$marc->field('773')->delete_subfield( code => 't' ); # restore
# Add second 773
$marc->append_fields( MARC::Field->new( '773', '', '', g => 'relpart2', w => '234' ) );
$host = $bib1->get_marc_host;

4
virtualshelves/sendshelf.pl

@ -90,7 +90,9 @@ if ($to_address) {
$dat->{'biblionumber'} = $biblionumber;
$dat->{ITEM_RESULTS} = $items;
$dat->{HASAUTHORS} = $dat->{'author'} || @$marcauthorsarray;
$dat->{HOSTITEMENTRIES} = $biblio->get_host_item_entries;
my ( $host, $relatedparts ) = $biblio->get_marc_host;
$dat->{HOSTITEMENTRIES} = $host;
$dat->{RELATEDPARTS} = $relatedparts;
$iso2709 .= $record->as_usmarc();

Loading…
Cancel
Save