fix problem with prior patch that inadvertantly
[koha_fer] / cataloguing / addbiblio.pl
index 06b81d1..36195bc 100755 (executable)
@@ -1,6 +1,5 @@
 #!/usr/bin/perl 
 
-# $Id$
 
 # Copyright 2000-2002 Katipo Communications
 #
@@ -30,6 +29,9 @@ use C4::Context;
 use MARC::Record;
 use C4::Log;
 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::USMARC;
 use MARC::File::XML;
@@ -164,16 +166,16 @@ sub build_authorized_values_list ($$$$$$$) {
 
     #---- branch
     if ( $tagslib->{$tag}->{$subfield}->{'authorised_value'} eq "branches" ) {
-        my $sth =
-          $dbh->prepare(
-            "select branchcode,branchname from branches order by branchname");
-        $sth->execute;
-        push @authorised_values, ""
-          unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
-
-        while ( my ( $branchcode, $branchname ) = $sth->fetchrow_array ) {
-            push @authorised_values, $branchcode;
-            $authorised_lib{$branchcode} = $branchname;
+        #Use GetBranches($onlymine)
+        my $onlymine=C4::Context->preference('IndependantBranches') && 
+                C4::Context->userenv && 
+                C4::Context->userenv->{flags}!=1 && 
+                C4::Context->userenv->{branch};
+        my $branches = GetBranches($onlymine);
+        my @branchloop;
+        foreach my $thisbranch ( sort keys %$branches ) {
+            push @authorised_values, $thisbranch;
+            $authorised_lib{$thisbranch} = $branches->{$thisbranch}->{'branchname'};
         }
 
         #----- itemtypes
@@ -194,6 +196,25 @@ sub build_authorized_values_list ($$$$$$$) {
         }
         $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 {
@@ -328,9 +349,11 @@ sub create_input {
                     value=\"$value\"
                     class=\"input_marceditor\"
                     tabindex=\"1\"
+                    size=\"67\"
+                    maxlength=\"255\" 
                     \/>
                     <a href=\"#\" class=\"buttonDot\"
-                        onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'; return false;)\" title=\"Tag Editor\">...</a>
+                        onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'); return false;\" title=\"Tag Editor\">...</a>
                ";
     # it's a plugin field
     }
@@ -341,24 +364,41 @@ sub create_input {
         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, $rec, $tagslib, $subfield_data{id}, $tabloop );
-        my ( $function_name, $javascript ) = plugin_javascript( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
-#         my ( $function_name, $javascript,$extended_param );
+        if (do $plugin) {
+            my $extended_param = plugin_parameters( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
+            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $rec, $tagslib, $subfield_data{id}, $tabloop );
         
-        $subfield_data{marc_value} =
-               "<input tabindex=\"1\"
-                        type=\"text\"
+            $subfield_data{marc_value} =
+                    "<input tabindex=\"1\"
+                            type=\"text\"
+                            id=\"".$subfield_data{id}."\"
+                            name=\"".$subfield_data{id}."\"
+                            value=\"$value\"
+                            class=\"input_marceditor\"
+                            onfocus=\"Focus$function_name($index_tag)\"
+                            size=\"67\"
+                            maxlength=\"255\" 
+                            onblur=\"Blur$function_name($index_tag); \" \/>
+                            <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=\"".$subfield_data{id}."\"
-                       value=\"$value\"
+                        name=\"".$subfield_data{id}."\"
+                        value=\"$value\"
+                        tabindex=\"1\"
+                        size=\"67\"
+                        maxlength=\"255\" 
                         class=\"input_marceditor\"
-                       onfocus=\"Focus$function_name($index_tag)\"
-                       onblur=\"Blur$function_name($index_tag); \" \/>
-               <a href=\"#\" class=\"buttonDot\" onclick=\"Clic$function_name('$subfield_data{id}'; return false;)\" title=\"Tag Editor\">...</a>
-               $javascript";
+                \/>
+                ";
+        }
         # it's an hidden field
     }
     elsif ( $tag eq '' ) {
@@ -367,6 +407,8 @@ sub create_input {
                     type=\"hidden\"
                     id=\"".$subfield_data{id}."\"
                     name=\"".$subfield_data{id}."\"
+                    size=\"67\"
+                    maxlength=\"255\" 
                     value=\"$value\" \/>
             ";
     }
@@ -377,6 +419,8 @@ sub create_input {
                     name=\"".$subfield_data{id}."\"
                     class=\"input_marceditor\"
                     tabindex=\"1\"
+                    size=\"67\"
+                    maxlength=\"255\" 
                     value=\"$value\"
             \/>";
 
@@ -400,6 +444,8 @@ sub create_input {
                            name=\"".$subfield_data{id}."\"
                            class=\"input_marceditor\"
                            tabindex=\"1\"
+                            size=\"67\"
+                            maxlength=\"255\" 
                            >$value</textarea>
                 ";
         }
@@ -410,6 +456,8 @@ sub create_input {
                         name=\"".$subfield_data{id}."\"
                         value=\"$value\"
                         tabindex=\"1\"
+                        size=\"67\"
+                        maxlength=\"255\" 
                         class=\"input_marceditor\"
                 \/>
                 ";