Authorities framework Bug fixing
[koha.git] / authorities / authorities.pl
index 1cb8f8c..ce476eb 100755 (executable)
@@ -120,6 +120,14 @@ sub create_input {
 
     $value =~ s/"/"/g;
 
+    # determine maximum length; 9999 bytes per ISO 2709 except for leader and MARC21 008
+    my $max_length = 9999;
+    if ($tag eq '000') {
+        $max_length = 24;
+    } elsif ($tag eq '008' and C4::Context->preference('marcflavour') eq 'MARC21')  {
+        $max_length = 40;
+    }
+
     # if there is no value provided but a default value in parameters, get it
     unless ($value) {
         $value = $tagslib->{$tag}->{$subfield}->{defaultvalue};
@@ -177,7 +185,6 @@ sub create_input {
     value=\"$value\"
     class=\"input_marceditor\"
     tabindex=\"1\"                     
-    disabled=\"disabled\"
         readonly=\"readonly\" \/>
     <span class=\"buttonDot\"
         onclick=\"Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=".$tagslib->{$tag}->{$subfield}->{authtypecode}."&index=$subfield_data{id}','$subfield_data{id}')\">...</span>
@@ -194,7 +201,10 @@ sub create_input {
         }
         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 $extended_param;
+        eval{
+            $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 );
         
@@ -203,7 +213,7 @@ sub create_input {
                     type=\"text\"
                     id=\"".$subfield_data{id}."\"
                     size=\"67\"
-                    maxlength=\"255\" 
+                    maxlength=\"$max_length\"
                     name=\"".$subfield_data{id}."\"
                     value=\"$value\"
                     class=\"input_marceditor\"
@@ -220,7 +230,7 @@ sub create_input {
                     id=\"".$subfield_data{id}."\"
                     name=\"".$subfield_data{id}."\"
                     size=\"67\"
-                    maxlength=\"255\" 
+                    maxlength=\"$max_length\"
                     value=\"$value\" \/>
             ";
     }
@@ -232,7 +242,7 @@ sub create_input {
                     class=\"input_marceditor\"
                     tabindex=\"1\"
                     size=\"67\"
-                    maxlength=\"255\" 
+                    maxlength=\"$max_length\"
                     value=\"$value\"
             \/>";
 
@@ -244,8 +254,8 @@ sub create_input {
             or
             ( C4::Context->preference("marcflavour") eq "UNIMARC" && $tag >= 300
                 and $tag < 400 && $subfield eq 'a' )
-            or (    $tag >= 500
-                and $tag < 600
+            or (    $tag >= 600
+                and $tag < 700
                 && C4::Context->preference("marcflavour") eq "MARC21" )
         )
         {
@@ -257,7 +267,7 @@ sub create_input {
                         class=\"input_marceditor\"
                         tabindex=\"1\"
                         size=\"67\"
-                        maxlength=\"255\" 
+                        maxlength=\"$max_length\"
                         >$value</textarea>
                 ";
         }
@@ -269,7 +279,7 @@ sub create_input {
                         value=\"$value\"
                         tabindex=\"1\"
                         size=\"67\"
-                        maxlength=\"255\" 
+                        maxlength=\"$max_length\"
                         class=\"input_marceditor\"
                 \/>
                 ";
@@ -418,11 +428,12 @@ sub build_tabs ($$$$$) {
                             index         => $index_tag,
                             tag_lib       => $tagslib->{$tag}->{lib},
                             repeatable       => $tagslib->{$tag}->{repeatable},
+                            mandatory       => $tagslib->{$tag}->{mandatory},
                             subfield_loop => \@subfields_data,
                             fixedfield    => ($tag < 10)?(1):(0),
                             random        => CreateKey,
                         );
-                        if ($tag >= 010){ # no indicator for theses tag
+                        if ($tag >= 10){ # no indicator for theses tag
                             $tag_data{indicator1} = format_indicator($field->indicator(1)),
                             $tag_data{indicator2} = format_indicator($field->indicator(2)),
                         }
@@ -454,6 +465,7 @@ sub build_tabs ($$$$$) {
                         index            => $index_tag,
                         tag_lib          => $tagslib->{$tag}->{lib},
                         repeatable       => $tagslib->{$tag}->{repeatable},
+                        mandatory       => $tagslib->{$tag}->{mandatory},
                         indicator1       => $indicator1,
                         indicator2       => $indicator2,
                         subfield_loop    => \@subfields_data,
@@ -570,7 +582,7 @@ if ($op eq "add") {
     # it is not a duplicate (determined either by Koha itself or by user checking it's not a duplicate)
     if (!$duplicateauthid or $confirm_not_duplicate) {
         if ($is_a_modif ) {    
-            ModAuthority($authid,$record,$authtypecode,1);
+            ModAuthority($authid,$record,$authtypecode);
         } else {
             ($authid) = AddAuthority($record,$authid,$authtypecode);
         }
@@ -587,7 +599,7 @@ if ($op eq "add") {
     }
 } elsif ($op eq "delete") {
 #------------------------------------------------------------------------------------------------------------------------------
-        &AUTHdelauthority($authid);
+        &DelAuthority($authid);
         if ($nonav){
             print $input->redirect("auth_finder.pl");
         }else{