Bug 21986: Do not escape quotation marks when cataloguing
[koha.git] / cataloguing / additem.pl
index c5d0d43..6bf4629 100755 (executable)
@@ -143,12 +143,10 @@ sub generate_subfield_form {
                 my $username=(C4::Context->userenv?C4::Context->userenv->{'surname'}:"superlibrarian");
                 $value=~s/<<USER>>/$username/g;
             }
-        } else {
-            $value =~ s/"/&quot;/g;
         }
-        
+
         $subfield_data{visibility} = "display:none;" if (($subfieldlib->{hidden} > 4) || ($subfieldlib->{hidden} <= -4));
-        
+
         my $pref_itemcallnumber = C4::Context->preference('itemcallnumber');
         if (!$value && $subfieldlib->{kohafield} eq 'items.itemcallnumber' && $pref_itemcallnumber) {
             my $CNtag       = substr($pref_itemcallnumber, 0, 3);
@@ -156,7 +154,7 @@ sub generate_subfield_form {
             my $CNsubfield2 = substr($pref_itemcallnumber, 4, 1);
             my $temp2 = $temp->field($CNtag);
             if ($temp2) {
-                my $value = join ' ', $temp2->subfield($CNsubfield) || q{}, $temp2->subfield($CNsubfield2) || q{};
+                $value = join ' ', $temp2->subfield($CNsubfield) || q{}, $temp2->subfield($CNsubfield2) || q{};
                 #remove any trailing space incase one subfield is used
                 $value =~ s/^\s+|\s+$//g;
             }
@@ -179,7 +177,7 @@ sub generate_subfield_form {
                 }
             }
             elsif ( $subfieldlib->{authorised_value} eq "itemtypes" ) {
-                  push @authorised_values, "" unless ( $subfieldlib->{mandatory} );
+                  push @authorised_values, "";
                   my $itemtypes = Koha::ItemTypes->search_with_localization;
                   while ( my $itemtype = $itemtypes->next ) {
                       push @authorised_values, $itemtype->itemtype;
@@ -195,7 +193,7 @@ sub generate_subfield_form {
                   #---- class_sources
             }
             elsif ( $subfieldlib->{authorised_value} eq "cn_source" ) {
-                  push @authorised_values, "" unless ( $subfieldlib->{mandatory} );
+                  push @authorised_values, "";
                     
                   my $class_sources = GetClassSources();
                   my $default_source = C4::Context->preference("DefaultClassificationSource");
@@ -212,7 +210,7 @@ sub generate_subfield_form {
                   #---- "true" authorised value
             }
             else {
-                  push @authorised_values, qq{} unless ( $subfieldlib->{mandatory} );
+                  push @authorised_values, qq{};
                   my $av = GetAuthorisedValues( $subfieldlib->{authorised_value} );
                   for my $r ( @$av ) {
                       push @authorised_values, $r->{authorised_value};
@@ -224,7 +222,7 @@ sub generate_subfield_form {
                 $subfield_data{marc_value} = {
                     type        => 'hidden',
                     id          => $subfield_data{id},
-                    maxlength   => $subfield_data{max_length},
+                    maxlength   => $subfield_data{maxlength},
                     value       => $value,
                 };
             }
@@ -243,7 +241,7 @@ sub generate_subfield_form {
                 $subfield_data{marc_value} = {
                     type         => 'text_auth',
                     id           => $subfield_data{id},
-                    maxlength    => $subfield_data{max_length},
+                    maxlength    => $subfield_data{maxlength},
                     value        => $value,
                     authtypecode => $subfieldlib->{authtypecode},
                 };
@@ -263,7 +261,7 @@ sub generate_subfield_form {
                 $subfield_data{marc_value} = {
                     type        => 'text_plugin',
                     id          => $subfield_data{id},
-                    maxlength   => $subfield_data{max_length},
+                    maxlength   => $subfield_data{maxlength},
                     value       => $value,
                     class       => $class,
                     nopopup     => $plugin->noclick,
@@ -274,7 +272,7 @@ sub generate_subfield_form {
                 $subfield_data{marc_value} = {
                     type        => 'text',
                     id          => $subfield_data{id},
-                    maxlength   => $subfield_data{max_length},
+                    maxlength   => $subfield_data{maxlength},
                     value       => $value,
                 }; # supply default input form
             }
@@ -283,7 +281,7 @@ sub generate_subfield_form {
             $subfield_data{marc_value} = {
                 type        => 'hidden',
                 id          => $subfield_data{id},
-                maxlength   => $subfield_data{max_length},
+                maxlength   => $subfield_data{maxlength},
                 value       => $value,
             };
         }
@@ -291,7 +289,7 @@ sub generate_subfield_form {
             $subfield_data{marc_value} = {
                 type        => 'text',
                 id          => $subfield_data{id},
-                maxlength   => $subfield_data{max_length},
+                maxlength   => $subfield_data{maxlength},
                 value       => $value,
             };
         }
@@ -319,7 +317,7 @@ sub generate_subfield_form {
             $subfield_data{marc_value} = {
                 type        => 'text',
                 id          => $subfield_data{id},
-                maxlength   => $subfield_data{max_length},
+                maxlength   => $subfield_data{maxlength},
                 value       => $value,
             };
         }
@@ -652,8 +650,8 @@ if ($op eq "additem") {
 #-------------------------------------------------------------------------------
 } elsif ($op eq "delallitems") {
 #-------------------------------------------------------------------------------
-    my $itemnumbers = C4::Items::GetItemnumbersForBiblio( $biblionumber );
-    foreach my $itemnumber ( @$itemnumbers ) {
+    my @itemnumbers = Koha::Items->search({ biblionumber => $biblionumber })->get_column('itemnumber');
+    foreach my $itemnumber ( @itemnumbers ) {
         $error = C4::Items::DelItemCheck( $biblionumber, $itemnumber );
         next if $error == 1; # Means ok
         push @errors,$error;
@@ -735,7 +733,9 @@ my @big_array;
 #---- finds where items.itemnumber is stored
 my (  $itemtagfield,   $itemtagsubfield) = &GetMarcFromKohaField("items.itemnumber", $frameworkcode);
 my ($branchtagfield, $branchtagsubfield) = &GetMarcFromKohaField("items.homebranch", $frameworkcode);
-C4::Biblio::EmbedItemsInMarcBiblio($temp, $biblionumber);
+C4::Biblio::EmbedItemsInMarcBiblio({
+    marc_record  => $temp,
+    biblionumber => $biblionumber });
 my @fields = $temp->fields();
 
 
@@ -798,22 +798,16 @@ foreach my $field (@fields) {
         }
         $this_row{itemnumber} = $subfieldvalue if ($field->tag() eq $itemtagfield && $subfieldcode eq $itemtagsubfield);
 
-       if ( C4::Context->preference('EasyAnalyticalRecords') ) {
-           foreach my $hostitemnumber (@hostitemnumbers){
-            my $item = Koha::Items->find( $hostitemnumber );
-               if ($this_row{itemnumber} eq $hostitemnumber){
-                       $this_row{hostitemflag} = 1;
-            $this_row{hostbiblionumber}= $item->biblio->biblionumber;
-                       last;
-               }
-           }
-
-#          my $countanalytics=GetAnalyticsCount($this_row{itemnumber});
-#           if ($countanalytics > 0){
-#                $this_row{countanalytics} = $countanalytics;
-#           }
-       }
-
+        if ( C4::Context->preference('EasyAnalyticalRecords') ) {
+            foreach my $hostitemnumber (@hostitemnumbers) {
+                my $item = Koha::Items->find( $hostitemnumber );
+                if ($this_row{itemnumber} eq $hostitemnumber) {
+                    $this_row{hostitemflag} = 1;
+                    $this_row{hostbiblionumber}= $item->biblio->biblionumber;
+                    last;
+                }
+            }
+        }
     }
     if (%this_row) {
         push(@big_array, \%this_row);
@@ -909,6 +903,8 @@ foreach my $tag ( keys %{$tagslib}){
 }
 @loop_data = sort {$a->{subfield} cmp $b->{subfield} } @loop_data;
 
+my $item = Koha::Items->find($itemnumber); # We certainly want to fetch it earlier
+
 # what's the next op ? it's what we are not in : an add if we're editing, otherwise, and edit.
 $template->param(
     biblionumber => $biblionumber,
@@ -918,7 +914,7 @@ $template->param(
     item_header_loop => \@header_value_loop,
     item             => \@loop_data,
     itemnumber       => $itemnumber,
-    barcode          => GetBarcodeFromItemnumber($itemnumber),
+    barcode          => $item ? $item->barcode : undef,
     itemtagfield     => $itemtagfield,
     itemtagsubfield  => $itemtagsubfield,
     op      => $nextop,