Bug 12670: Show materials label instead of code
authorJulian Maurice <julian.maurice@biblibre.com>
Thu, 24 Jul 2014 09:23:25 +0000 (11:23 +0200)
committerBrendan A Gallagher <brendan@bywatersolutions.com>
Thu, 24 Mar 2016 17:30:21 +0000 (17:30 +0000)
In catalogue/detail.pl, if items.materials is linked to an authorised
values list, show label instead of code.

Test plan:
1/ Create an authorised values list 'MATERIALS' with some values
2/ In default MARC biblio framework, link an item subfield to
'items.materials', and to the AV list 'MATERIALS'
3/ Edit an item and give a value for this subfield
4/ Go to biblio record detail page (catalogue/detail.pl)
5/ In the items table, the authorised value label should be displayed.

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

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

Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com>

catalogue/detail.pl

index e971ce7..c4afb62 100755 (executable)
@@ -189,6 +189,17 @@ my $norequests = 1;
 my $authvalcode_items_itemlost = GetAuthValCode('items.itemlost',$fw);
 my $authvalcode_items_damaged  = GetAuthValCode('items.damaged', $fw);
 
+my $materials_authvalcode = GetAuthValCode('items.materials', $fw);
+my %materials_map;
+if ($materials_authvalcode) {
+    my $materials_authvals = GetAuthorisedValues($materials_authvalcode);
+    if ($materials_authvals) {
+        foreach my $value (@$materials_authvals) {
+            $materials_map{$value->{authorised_value}} = $value->{lib};
+        }
+    }
+}
+
 my $analytics_flag;
 my $materials_flag; # set this if the items have anything in the materials field
 my $currentbranch = C4::Context->userenv ? C4::Context->userenv->{branch} : undef;
@@ -275,7 +286,10 @@ foreach my $item (@items) {
     }
 
     if (defined($item->{'materials'}) && $item->{'materials'} =~ /\S/){
-       $materials_flag = 1;
+        $materials_flag = 1;
+        if (defined $materials_map{ $item->{materials} }) {
+            $item->{materials} = $materials_map{ $item->{materials} };
+        }
     }
 
     if ( C4::Context->preference('UseCourseReserves') ) {