installer (part 1): started major changes
[koha_fer] / cataloguing / additem.pl
index 81b904d..a82b621 100755 (executable)
@@ -26,6 +26,8 @@ use C4::Biblio;
 use C4::Context;
 use C4::Koha; # XXX subfield_is_koha_internal_p
 use C4::Branch; # XXX subfield_is_koha_internal_p
+use C4::ClassSource;
+
 use Date::Calc qw(Today);
 
 use MARC::File::XML;
@@ -153,16 +155,16 @@ if ($op eq "additem") {
     my @indicator = $input->param('indicator');
     #    my $itemnumber = $input->param('itemnumber');
     my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag,'ITEM');
-    $itemrecord=MARC::Record::new_from_xml($xml, 'UTF-8');
+    my $itemtosave=MARC::Record::new_from_xml($xml, 'UTF-8');
     # MARC::Record builded => now, record in DB
     # warn "R: ".$record->as_formatted;
     # check that the barcode don't exist already
-    my $addedolditem = TransformMarcToKoha($dbh,$itemrecord);
+    my $addedolditem = TransformMarcToKoha($dbh,$itemtosave);
     my $exist_itemnumber = get_item_from_barcode($addedolditem->{'barcode'});
     if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {
         push @errors,"barcode_not_unique";
     } else {
-        my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItem($itemrecord,$biblionumber,$itemnumber,0);
+        my ($oldbiblionumber,$oldbibnum,$oldbibitemnum) = ModItem($itemtosave,$biblionumber,$itemnumber,0);
     $itemnumber="";
     }
     $nextop="additem";
@@ -339,6 +341,26 @@ foreach my $tag (sort keys %{$tagslib}) {
           }
           $value = $itemtype unless ($value);
   
+          #---- class_sources
+      }
+      elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "cn_source" ) {
+          push @authorised_values, ""
+            unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
+            
+          my $class_sources = GetClassSources();
+
+          my $default_source = C4::Context->preference("DefaultClassificationSource");
+          
+          foreach my $class_source (sort keys %$class_sources) {
+              next unless $class_sources->{$class_source}->{'used'} or
+                          ($value and $class_source eq $value) or
+                          ($class_source eq $default_source);
+              push @authorised_values, $class_source;
+              $authorised_lib{$class_source} = $class_sources->{$class_source}->{'description'};
+              $value = $class_source unless ($value);
+              $value = $default_source unless ($value);
+          }
+  
           #---- "true" authorised value
       }
       else {
@@ -390,26 +412,41 @@ foreach my $tag (sort keys %{$tagslib}) {
         my $cgidir = C4::Context->intranetdir . "/cgi-bin/cataloguing/value_builder";
         unless ( opendir( DIR, "$cgidir" ) ) {
             $cgidir = C4::Context->intranetdir . "/cataloguing/value_builder";
+            closedir( DIR );
         }
         my $plugin = $cgidir . "/" . $tagslib->{$tag}->{$subfield}->{'value_builder'};
-        do $plugin || die "Plugin Failed: ".$plugin;
-        my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
-        my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
-#         my ( $function_name, $javascript,$extended_param );
+        if (do $plugin) {
+            my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
+            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
         
-        $subfield_data{marc_value} =
-                "<input tabindex=\"1\"
-                        type=\"text\"
+            $subfield_data{marc_value} =
+                    "<input tabindex=\"1\"
+                            type=\"text\"
+                            id=\"".$subfield_data{id}."\"
+                            name=\"field_value\"
+                            value=\"$value\"
+                            class=\"input_marceditor\"
+                            onfocus=\"Focus$function_name(".$subfield_data{random}.")\"
+                            size=\"67\"
+                            maxlength=\"255\" 
+                            onblur=\"Blur$function_name(".$subfield_data{random}."); \" \/>
+                            <a href=\"#\" class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
+                    $javascript";
+        } else {
+            warn "Plugin Failed: $plugin";
+            # supply default input form
+            $subfield_data{marc_value} =
+                "<input type=\"text\"
                         id=\"".$subfield_data{id}."\"
                         name=\"field_value\"
                         value=\"$value\"
-                        class=\"input_marceditor\"
-                        onfocus=\"Focus$function_name(".$subfield_data{random}.")\"
+                        tabindex=\"1\"
                         size=\"67\"
                         maxlength=\"255\" 
-                        onblur=\"Blur$function_name(".$subfield_data{random}."); \" \/>
-                        <a href=\"#\" class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id}'; return false;)\" title=\"Tag Editor\">...</a>
-                $javascript";
+                        class=\"input_marceditor\"
+                \/>
+                ";
+        }
         # it's an hidden field
     }
     elsif ( $tag eq '' ) {