[Koha-patches] [PATCH] fix for bug 2951 - urls not showning

Mason James mason.loves.sushi at gmail.com
Sun Feb 8 16:08:34 CET 2009


---
 C4/Biblio.pm |   76 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 44 insertions(+), 32 deletions(-)

diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 54d3cab..1cebcb8 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -31,6 +31,8 @@ use C4::Log; # logaction
 use C4::ClassSource;
 use C4::Charset;
 
+#use Smart::Comments;
+
 use vars qw($VERSION @ISA @EXPORT);
 
 BEGIN {
@@ -1124,44 +1126,54 @@ Assumes web resources (not uncommon in MARC21 to omit resource type ind)
 =cut
 
 sub GetMarcUrls {
-    my ($record, $marcflavour) = @_;
+    my ( $record, $marcflavour ) = @_;
     my @marcurls;
-    for my $field ($record->field('856')) {
+    for my $field ( $record->field('856') ) {
         my $marcurl;
-        my $url = $field->subfield('u');
+
         my @notes;
-        for my $note ( $field->subfield('z')) {
-            push @notes , {note => $note};
-        }        
-        if($marcflavour eq 'MARC21') {
-            my $s3 = $field->subfield('3');
-            my $link = $field->subfield('y');
-			unless($url =~ /^\w+:/) {
-				if($field->indicator(1) eq '7') {
-					$url = $field->subfield('2') . "://" . $url;
-				} elsif ($field->indicator(1) eq '1') {
-					$url = 'ftp://' . $url;
-				} else {  
-					#  properly, this should be if ind1=4,
-					#  however we will assume http protocol since we're building a link.
-					$url = 'http://' . $url;
-				}
-			}
-			# TODO handle ind 2 (relationship)
-        	$marcurl = {  MARCURL => $url,
-                      notes => \@notes,
-            };
-            $marcurl->{'linktext'} = $link || $s3 || C4::Context->preference('URLLinkText') || $url ;;
-            $marcurl->{'part'} = $s3 if($link);
-            $marcurl->{'toc'} = 1 if($s3 =~ /^[Tt]able/) ;
-        } else {
-            $marcurl->{'linktext'} = $field->subfield('z') || C4::Context->preference('URLLinkText') || $url;
-            $marcurl->{'MARCURL'} = $url ;
+        for my $note ( $field->subfield('z') ) {
+            push @notes, { note => $note };
+        }
+
+        my @urls = $field->subfield('u');
+        foreach my $url (@urls) {
+
+            if ( $marcflavour eq 'MARC21' ) {
+                my $s3   = $field->subfield('3');
+                my $link = $field->subfield('y');
+
+                unless ( $url =~ /^\w+:/ ) {
+                    if ( $field->indicator(1) eq '7' ) {
+                        $url = $field->subfield('2') . "://" . $url;
+                    } elsif ( $field->indicator(1) eq '1' ) {
+                        $url = 'ftp://' . $url;
+                    } else {
+
+                        #  properly, this should be if ind1=4,
+                        #  however we will assume http protocol since we're building a link.
+                        $url = 'http://' . $url;
+                    }
+                }
+
+                # TODO handle ind 2 (relationship)
+                $marcurl = {
+                    MARCURL => $url,
+                    notes   => \@notes,
+                };
+                $marcurl->{'linktext'} = $link || $s3 || C4::Context->preference('URLLinkText') || $url;
+                $marcurl->{'part'} = $s3 if ($link);
+                $marcurl->{'toc'} = 1 if ( $s3 =~ /^[Tt]able/ );
+
+            } else {
+                $marcurl->{'linktext'} = $field->subfield('z') || C4::Context->preference('URLLinkText') || $url;
+                $marcurl->{'MARCURL'} = \@urls;
+            }
+            push @marcurls, $marcurl;
         }
-        push @marcurls, $marcurl;    
     }
     return \@marcurls;
-}  #end GetMarcUrls
+}    #end GetMarcUrls
 
 =head2 GetMarcSeries
 
-- 
1.5.6.5




More information about the Koha-patches mailing list