@@ -, +, @@ --- catalogue/MARCdetail.pl | 54 ++++++++-------------- .../prog/en/modules/catalogue/MARCdetail.tt | 12 ++--- 2 files changed, 26 insertions(+), 40 deletions(-) --- a/catalogue/MARCdetail.pl +++ a/catalogue/MARCdetail.pl @@ -59,6 +59,7 @@ use C4::Members; # to use GetMember use C4::Serials; #uses getsubscriptionsfrombiblionumber GetSubscriptionsFromBiblionumber use C4::Search; # enabled_staff_search_views +use List::MoreUtils qw( uniq ); my $query = new CGI; my $dbh = C4::Context->dbh; @@ -259,55 +260,39 @@ for ( my $tabloop = 0 ; $tabloop <= 10 ; $tabloop++ ) { my @fields = $record->fields(); my %witness ; #---- stores the list of subfields used at least once, with the "meaning" of the code -my @big_array; +my @item_subfield_codes; +my @item_loop; my $norequests = 1; foreach my $field (@fields) { next if ( $field->tag() < 10 ); my @subf = $field->subfields; - my %this_row; + my $item; # loop through each subfield for my $i ( 0 .. $#subf ) { next if ( $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{tab} ne 10 ); next if ( $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{hidden} =~ /-7|-4|-3|-2|2|3|5|8/); + push @item_subfield_codes, $subf[$i][0]; $witness{ $subf[$i][0] } = $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{lib}; - $this_row{ $subf[$i][0] } = GetAuthorisedValueDesc( $field->tag(), + $item->{ $subf[$i][0] } = GetAuthorisedValueDesc( $field->tag(), $subf[$i][0], $subf[$i][1], '', $tagslib) || $subf[$i][1]; $norequests = 0 if $subf[$i][1] ==0 and $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{kohafield} eq 'items.notforloan'; } - if (%this_row) { - push( @big_array, \%this_row ); - } + push @item_loop, $item if $item; } my ($holdingbrtagf,$holdingbrtagsubf) = &GetMarcFromKohaField("items.holdingbranch",$frameworkcode); -@big_array = sort {$a->{$holdingbrtagsubf} cmp $b->{$holdingbrtagsubf}} @big_array; - -#fill big_row with missing datas -foreach my $subfield_code ( keys(%witness) ) { - for ( my $i = 0 ; $i <= $#big_array ; $i++ ) { - $big_array[$i]{$subfield_code} = " " - unless ( $big_array[$i]{$subfield_code} ); - } -} - -# now, construct template ! -my @item_value_loop; -my @header_value_loop; -for ( my $i = 0 ; $i <= $#big_array ; $i++ ) { - my $items_data; - foreach my $subfield_code ( keys(%witness) ) { - $items_data .= "
- [% item_header_loo.header_value %] - | + [% FOREACH header IN item_header_loop %] +[% header %] | [% END %]
---|---|
[% item.$sf_code %] | + [% END %]