@@ -, +, @@ result --- C4/Breeding.pm | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) --- a/C4/Breeding.pm +++ a/C4/Breeding.pm @@ -25,6 +25,7 @@ use C4::Biblio; use C4::Koha; use C4::Charset; use MARC::File::USMARC; +use MARC::Field; use C4::ImportBatch; use C4::AuthoritiesMarc; #GuessAuthTypeCode, FindDuplicateAuthority use C4::Languages; @@ -228,7 +229,8 @@ sub Z3950Search { } my $pref_addnumber = C4::Context->preference('AdditionalFieldsInZ3950ResultSearch'); - $pref_addnumber =~ s/\s+//g; + $pref_addnumber =~ s/^\s+|\s+$//g; + $pref_addnumber =~ s/\h+/ /g; if ($pref_addnumber){ $template->param( additionalFields => '1', @@ -355,25 +357,37 @@ sub _add_rowdata { $row->{isbn}=_isbn_replace($row->{isbn}); my $pref_addnumber = C4::Context->preference('AdditionalFieldsInZ3950ResultSearch'); - $pref_addnumber =~ s/\s+//g; - my @addnumber_array = split /;/, $pref_addnumber; + $pref_addnumber =~ s/^\s+|\s+$//g; + $pref_addnumber =~ s/\h+/ /g; + my @addnumber_array = split / /, $pref_addnumber; my @addnumberfields; foreach (@addnumber_array) { my $length = length($_); my $adTag = substr($_, 0, 3); - my $row_field = 'field_'.$adTag; if ($record->field($adTag)) { my $field = $record->field($adTag); my $fieldContent=''; if ($length > 3){ my $adSubfield; - for (my $i=0; $i<$length-3; $i++){ - $adSubfield = substr($_, 3+$i, 1); + for (my $i=0; $i<$length-4; $i++){ # 4 because 3 digits, 1 dollar sign ($) + $adSubfield = substr($_, 4+$i, 1); $fieldContent = $fieldContent.$field->subfield($adSubfield).' '; } push(@addnumberfields, $_); $row->{$_} = $fieldContent; } + else { + if($adTag <= 10){ + my $data = $field->data(); + push(@addnumberfields, $_); + $row->{$_} = $data; + } + else { + my $subfields_text = $field->as_string(); + push(@addnumberfields, $_); + $row->{$_} = $subfields_text; + } + } } } --