Bug 25428: Correctly encode link if authority subfield is a URL
authorOwen Leonard <oleonard@myacpl.org>
Fri, 8 May 2020 16:13:40 +0000 (16:13 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 22 May 2020 08:33:16 +0000 (09:33 +0100)
This patch modifies the script and template for showing the details of
an authority record so that if the authority subfield is configured to
be a link the link is correctly output in the template.

To test you must have an authority type configured with at least one
subfield designated as a URL:

 - Go to Administration -> Authority types
 - Select "MARC structure" from the actions menu for the authority type
   you want to modify.
 - Select "Subfields" from the actions menu for the tag containing
   the subfield you want to modify (for instance 856).
 - Edit the subfield you want to display as a link (e.g. subfield u).
 - In the subfield configuration form under "Advanced constraints" check
   the "Is a URL" checkbox and save your changes.

 - Apply the patch and go to Authorities in the staff interface.
 - Search for or create an authority record which contains URL
   information in the right subfield (for instance 856$u).
 - View the details for the record. Using the 856 example, the "8" tab
   should contain an active link pointing to the correct URL.

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

authorities/detail.pl
koha-tmpl/intranet-tmpl/prog/en/modules/authorities/detail.tt

index f9724ff..ca16544 100755 (executable)
@@ -120,7 +120,8 @@ sub build_tabs {
                         my %subfield_data;
                         $subfield_data{marc_lib}=$tagslib->{$field->tag()}->{$subf[$i][0]}->{lib};
                         if ($tagslib->{$field->tag()}->{$subf[$i][0]}->{isurl}) {
-                          $subfield_data{marc_value}="<a href=\"$subf[$i][1]\">$subf[$i][1]</a>";
+                            $subfield_data{marc_value} = $subf[$i][1];
+                            $subfield_data{is_url} = 1;
                         } else {
                           $subfield_data{marc_value}=$subf[$i][1];
                         }
index 9fddd71..618e325 100644 (file)
                 <label class="labelsubfield">&nbsp;
                 [% UNLESS ( subfiel.hide_marc ) %]<b>[% subfiel.marc_subfield | html %]</b>[% END %]
                 <span title="[% subfiel.long_desc | html %]" class="desc">[% subfiel.short_desc | html %]</span></label>
-                [% subfiel.marc_value | html %]
+                [% IF ( subfiel.is_url ) %]
+                    <a href="[% subfiel.marc_value | url %]">[% subfiel.marc_value | html %]</a>
+                [% ELSE %]
+                    [% subfiel.marc_value | html %]
+                [% END %]
                 [% IF ( subfiel.link ) %]
                     <a href="/cgi-bin/koha/catalogue/search.pl?op=do_search&amp;marclist=[% subfiel.link | uri %]&amp;operator==&amp;type=intranet&amp;value=[% subfiel.marc_value |url %]">
                         <img src="[% interface | html %]/[% theme | html %]/images/filefind.png" height="15" title="Search on [% subfiel.marc_value | html %]">