Bug 21871: Show authority 856 links in the OPAC
authorOwen Leonard <oleonard@myacpl.org>
Wed, 21 Nov 2018 13:54:45 +0000 (13:54 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Wed, 30 Jan 2019 12:12:21 +0000 (12:12 +0000)
This patch modifies the authority detail view in the OPAC so that any
links found in 856 tags are displayed and active.

To test, apply the patch and locate or create an authority record which
contains one or more URLs in 856 tags.
 - View this record in the OPAC and confirm that the links appear.
 - Test records with and without link text.
 - Test records with and without public notes.

Signed-off-by: Devinim <kohadevinim@devinim.com.tr>

Signed-off-by: Charles Farmer <charles.farmer@inLibro.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

https://bugs.koha-community.org/show_bug.cgi?id=21817

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-auth-detail.tt
opac/opac-authoritiesdetail.pl

index 7d19e6b..db3d30f 100644 (file)
                             </div>
                         [% END %]
 
+                        [% IF ( MARCURLS ) %]
+                            <div class="authstanza online_resources">
+                                <span class="label">Online resources:</span>
+                                <ul>
+                                    [% FOREACH MARCurl IN MARCURLS %]
+                                        <li>[% IF ( MARCurl.part ) %][% MARCurl.part | html %]<br />[% END %]
+
+                                        [% IF ( OPACURLOpenInNewWindow ) %]
+                                            [% IF trackclicks == 'track' || trackclicks == 'anonymous' %]
+                                                <a href="/cgi-bin/koha/tracklinks.pl?uri=[% MARCurl.MARCURL | uri %]&amp;biblionumber=[% biblio.biblionumber | uri %]" title="[% MARCurl.MARCURL | html %]" target="_blank" rel="noreferrer">
+                                            [% ELSE %]
+                                                <a href="[% MARCurl.MARCURL | url %]" title="[% MARCurl.MARCURL | html %]" target="_blank" rel="noreferrer">
+                                            [% END %]
+                                        [% ELSE %]
+                                            [% IF trackclicks == 'track' || trackclicks == 'anonymous' %]
+                                                <a href="/cgi-bin/koha/tracklinks.pl?uri=[% MARCurl.MARCURL | uri %]&amp;biblionumber=[% biblio.biblionumber | uri %]" title="[% MARCurl.MARCURL | html %]">
+                                            [% ELSE %]
+                                                <a href="[% MARCurl.MARCURL | url %]" title="[% MARCurl.MARCURL | html %]">
+                                            [% END %]
+                                        [% END %]
+                                        [% MARCurl.linktext | html %]</a>
+                                            [% IF ( MARCurl.notes ) %]
+                                                <ul>
+                                                    [% FOREACH note IN MARCurl.notes %]
+                                                        <li>[% note.note | html %]</li>
+                                                    [% END %]
+                                                </ul>
+                                            [% END %]
+                                        </li>
+                                    [% END # /FOREACH MARCURLS %]
+                                </ul>
+                            </div>
+                        [% END # / IF MARCURLS %]
+
                         <div id="authdescriptions" class="toptabs">
                             <ul>
                                 <li id="tab_descriptions"><a href="#descriptions">Notes</a></li>
index 0f389a0..562457b 100755 (executable)
@@ -40,6 +40,7 @@ use Modern::Perl;
 
 use C4::AuthoritiesMarc;
 use C4::Auth;
+use C4::Biblio;
 use C4::Context;
 use C4::Output;
 use CGI qw ( -utf8 );
@@ -54,6 +55,7 @@ my $query = new CGI;
 my $dbh = C4::Context->dbh;
 
 my $display_hierarchy = C4::Context->preference("AuthDisplayHierarchy");
+my $marcflavour       = C4::Context->preference("marcflavour");
 my $show_marc = $query->param('marc');
 
 # open template
@@ -86,11 +88,14 @@ if ($display_hierarchy){
 my $count = $authority ? $authority->get_usage_count : 0;
 
 my $authority_types = Koha::Authority::Types->search( {}, { order_by => ['authtypecode'] } );
+my $marcurlsarray = GetMarcUrls( $record, $marcflavour );
+
 $template->param(
     authority_types => $authority_types,
     authtypetext    => $authority_types->find($authtypecode)->authtypetext,
     authid          => $authid,
     count           => $count,
+    MARCURLS        => $marcurlsarray,
 );
 
 # find the marc field/subfield used in biblio by this authority
@@ -117,7 +122,7 @@ if ($show_marc) {
         my @subfields_data;
 
 # skip UNIMARC fields <200, they are useless for a patron
-        next if C4::Context->preference('marcflavour') eq 'UNIMARC' && $field->tag() <200;
+        next if $marcflavour eq 'UNIMARC' && $field->tag() <200;
 
 # if tag <10, there's no subfield, use the "@" trick
         if ( $field->tag() < 10 ) {
@@ -129,7 +134,7 @@ if ($show_marc) {
             $subfield_data{marc_tag}      = $field->tag();
             push( @subfields_data, \%subfield_data );
         }
-        elsif ( C4::Context->preference('marcflavour') eq 'MARC21' && $field->tag() eq 667 ) {
+        elsif ( $marcflavour eq 'MARC21' && $field->tag() eq 667 ) {
             # tagfield 667 is a nonpublic general note in MARC21, which shouldn't be shown in the OPAC
         }
         else {