From 98496939b344205b0c46dc5dc117c6d00c0ef700 Mon Sep 17 00:00:00 2001 From: charles Date: Thu, 23 Apr 2015 11:33:27 -0400 Subject: [PATCH] Bug 12747 - Add extra column in Z3950 search result MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch uses the standard field syntax (ex: 023$ab), allows writing fields without mentionning subfields and uses whitespace as a field separator instead of semicolon. sponsored by the CCSR ( http://www.ccsr.qc.ca ) Tested with both patches, works as expected. Signed-off-by: Marc VĂ©ron --- C4/Breeding.pm | 27 +++++++++++++++++----- .../en/modules/admin/preferences/cataloguing.pref | 2 +- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/C4/Breeding.pm b/C4/Breeding.pm index e4848d1..7b2774c 100644 --- a/C4/Breeding.pm +++ b/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; @@ -226,7 +227,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', @@ -353,25 +355,38 @@ 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; + } + } } } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref index 60b0fad..ff01177 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref @@ -227,7 +227,7 @@ Cataloging: - - Determines the MARC field/subfields - pref: AdditionalFieldsInZ3950ResultSearch - - "are displayed in 'Additional fields' column in the result of a search Z3950 (use semicolon as delimiter ex: 082ab;090ab)" + - "are displayed in 'Additional fields' column in the result of a search Z3950 (use whitespace as delimiter ex: 082$ab 090$ab)" - - When matching on ISSN with the record import tool, - pref: AggressiveMatchOnISSN -- 1.9.1