View | Details | Raw Unified | Return to bug 40481
Collapse All | Expand All

(-)a/opac/opac-MARCdetail.pl (-33 / +21 lines)
Lines 271-324 for ( my $tabloop = 0 ; $tabloop <= 9 ; $tabloop++ ) { Link Here
271
    $template->param( "tab" . $tabloop . "XX" => \@loop_data );
271
    $template->param( "tab" . $tabloop . "XX" => \@loop_data );
272
}
272
}
273
273
274
# now, build item tab !
274
# Now, build item tab!
275
# the main difference is that datas are in lines and not in columns : thus, we build the <th> first, then the values...
275
# Data is in rows (one per item) not columns: build headers (%witness) and row data (@item_loop).
276
# loop through each tag
277
# warning : we may have different number of columns in each row. Thus, we first build a hash, complete it if necessary
278
# then construct template.
279
# $record has already had all the item fields filtered above.
280
$items->reset();
276
$items->reset();
281
my @fields = map { $_->as_marc_field } $items->as_list;
277
my @fields       = map { $_->as_marc_field } $items->as_list;
282
my %witness;    #---- stores the list of subfields used at least once, with the "meaning" of the code
278
my $item_tag     = $fields[0] ? $fields[0]->tag()     : undef;
279
my $item_tagslib = $item_tag  ? $tagslib->{$item_tag} : {};
280
my %witness;
283
my @item_subfield_codes;
281
my @item_subfield_codes;
284
my @item_loop;
282
my @item_loop;
283
284
my %date_fields = map { $_ => 1 }
285
    qw( items.dateaccessioned items.onloan items.datelastseen items.datelastborrowed items.replacementpricedate );
286
285
foreach my $field (@fields) {
287
foreach my $field (@fields) {
286
    next if ( $field->tag() < 10 );
287
    my @subf = $field->subfields;
288
    my $item;
288
    my $item;
289
289
290
    # loop through each subfield
290
    for my $subf ( $field->subfields ) {
291
    for my $i ( 0 .. $#subf ) {
291
        my ( $code, $value ) = @$subf;
292
        my $sf_def = $tagslib->{ $field->tag() }->{ $subf[$i][0] };
292
        my $sf_def = $item_tagslib->{$code};
293
        next if ( ( $sf_def->{tab}    || 0 ) != 10 );
294
        next if ( ( $sf_def->{hidden} || 0 ) > 0 );
293
        next if ( ( $sf_def->{hidden} || 0 ) > 0 );
295
294
296
        push @item_subfield_codes, $subf[$i][0];
295
        push @item_subfield_codes, $code;
297
        $witness{ $subf[$i][0] } = $sf_def->{lib};
296
        $witness{$code} = $sf_def->{lib};
298
297
299
        # Allow repeatables (BZ 13574)
298
        # Allow repeatables (BZ 13574)
300
        if ( $item->{ $subf[$i][0] } ) {
299
        $item->{$code} = ( $item->{$code} ) ? $item->{$code} . ' | ' : q{};
301
            $item->{ $subf[$i][0] } .= ' | ';
302
        } else {
303
            $item->{ $subf[$i][0] } = q{};
304
        }
305
300
306
        if ( $sf_def->{isurl} ) {
301
        if ( $sf_def->{isurl} ) {
307
            $item->{ $subf[$i][0] } .= "<a href=\"$subf[$i][1]\">$subf[$i][1]</a>";
302
            $item->{$code} .= "<a href=\"$value\">$value</a>";
308
        } elsif ( $sf_def->{kohafield} eq "biblioitems.isbn" ) {
303
        } elsif ( $sf_def->{kohafield} eq "biblioitems.isbn" ) {
309
            $item->{ $subf[$i][0] } .= $subf[$i][1];
304
            $item->{$code} .= $value;
310
        } else {
305
        } else {
311
            $item->{ $subf[$i][0] } .= GetAuthorisedValueDesc(
306
            $item->{$code} .= GetAuthorisedValueDesc( $item_tag, $code, $value, '', $tagslib, '', 'opac' ) // q{};
312
                $field->tag(), $subf[$i][0],
313
                $subf[$i][1],  '', $tagslib, '', 'opac'
314
            ) // q{};
315
        }
307
        }
316
308
317
        my $kohafield = $tagslib->{ $field->tag() }->{ $subf[$i][0] }->{kohafield};
309
        $item->{$code} = output_pref( { str => $item->{$code}, dateonly => 1 } )
318
        $item->{ $subf[$i][0] } = output_pref( { str => $item->{ $subf[$i][0] }, dateonly => 1 } )
310
            if $date_fields{ $sf_def->{kohafield} // q{} };
319
            if grep { $kohafield eq $_ }
320
            qw( items.dateaccessioned items.onloan items.datelastseen items.datelastborrowed items.replacementpricedate );
321
322
    }
311
    }
323
    push @item_loop, $item if $item;
312
    push @item_loop, $item if $item;
324
}
313
}
325
- 

Return to bug 40481