Bugzilla – Attachment 8166 Details for
Bug 6831
Enhanced Workflow for adding analytical records
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 6831 follow-up: add support for UNIMARC and NORMARC
Bug-6831-follow-up-add-support-for-UNIMARC-and-NOR.patch (text/plain), 5.24 KB, created by
Jared Camins-Esakov
on 2012-03-11 21:46:19 UTC
(
hide
)
Description:
Bug 6831 follow-up: add support for UNIMARC and NORMARC
Filename:
MIME Type:
Creator:
Jared Camins-Esakov
Created:
2012-03-11 21:46:19 UTC
Size:
5.24 KB
patch
obsolete
>From 5741ad7c26049e3c3535886bccf4742a31b883f3 Mon Sep 17 00:00:00 2001 >From: Katrin Fischer <Katrin.Fischer.83@web.de> >Date: Sun, 11 Mar 2012 20:00:39 +0100 >Subject: [PATCH] Bug 6831 follow-up: add support for UNIMARC and NORMARC >Content-Type: text/plain; charset="UTF-8" > >1) Removes unused subroutine get_host_control_num >2) Fixes small mistake, correct subfield for ISBN 020 is z >3) Checks system preference for correct marcflavour instead of > assuming MARC21 >4) Fixes MARC21 to not use author(), because it would also add > fields like $w and $0 to 773$a >5) Fixes MARC21 to not use title(), but 245$a, because it would > also add too many subfields. >6) Adds definitions for UNIMARC and includes NORMARC > >Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com> >Works properly with all supported MARC flavours. >--- > C4/Biblio.pm | 95 +++++++++++++++++++++++++++++++++++++++------ > cataloguing/addbiblio.pl | 9 ---- > 2 files changed, 82 insertions(+), 22 deletions(-) > >diff --git a/C4/Biblio.pm b/C4/Biblio.pm >index 424a296..df51715 100644 >--- a/C4/Biblio.pm >+++ b/C4/Biblio.pm >@@ -3638,19 +3638,25 @@ Generate the host item entry for an analytic child entry > > sub prepare_host_field { > my ( $hostbiblio, $marcflavour ) = @_; >- $marcflavour ||= 'MARC21'; >+ $marcflavour ||= C4::Context->preference('marcflavour'); > my $host = GetMarcBiblio($hostbiblio); >- if ( $marcflavour eq 'MARC21' ) { >- >- # unfortunately as_string does not 'do the right thing' >- # if field returns undef >- my %sfd; >- my $field; >- if ( $field = $host->author() ) { >- $sfd{a} = $field; >+ # unfortunately as_string does not 'do the right thing' >+ # if field returns undef >+ my %sfd; >+ my $field; >+ my $host_field; >+ if ( $marcflavour eq 'MARC21' || $marcflavour eq 'NORMARC' ) { >+ if ( $field = $host->field('100') || $host->field('110') || $host->field('11') ) { >+ my $s = $field->as_string('ab'); >+ if ($s) { >+ $sfd{a} = $s; >+ } > } >- if ( $field = $host->title() ) { >- $sfd{t} = $field; >+ if ( $field = $host->field('245') ) { >+ my $s = $field->as_string('a'); >+ if ($s) { >+ $sfd{t} = $s; >+ } > } > if ( $field = $host->field('260') ) { > my $s = $field->as_string('abc'); >@@ -3673,13 +3679,76 @@ sub prepare_host_field { > if ( $field = $host->field('020') ) { > my $s = $field->as_string('a'); > if ($s) { >- $sfd{x} = $s; >+ $sfd{z} = $s; > } > } > if ( $field = $host->field('001') ) { > $sfd{w} = $field->data(),; > } >- my $host_field = MARC::Field->new( 773, '0', ' ', %sfd ); >+ $host_field = MARC::Field->new( 773, '0', ' ', %sfd ); >+ return $host_field; >+ } >+ elsif ( $marcflavour eq 'UNIMARC' ) { >+ #author >+ if ( $field = $host->field('700') || $host->field('710') || $host->field('720') ) { >+ my $s = $field->as_string('ab'); >+ if ($s) { >+ $sfd{a} = $s; >+ } >+ } >+ #title >+ if ( $field = $host->field('200') ) { >+ my $s = $field->as_string('a'); >+ if ($s) { >+ $sfd{t} = $s; >+ } >+ } >+ #place of publicaton >+ if ( $field = $host->field('210') ) { >+ my $s = $field->as_string('a'); >+ if ($s) { >+ $sfd{c} = $s; >+ } >+ } >+ #date of publication >+ if ( $field = $host->field('210') ) { >+ my $s = $field->as_string('d'); >+ if ($s) { >+ $sfd{d} = $s; >+ } >+ } >+ #edition statement >+ if ( $field = $host->field('205') ) { >+ my $s = $field->as_string(); >+ if ($s) { >+ $sfd{a} = $s; >+ } >+ } >+ #URL >+ if ( $field = $host->field('856') ) { >+ my $s = $field->as_string('u'); >+ if ($s) { >+ $sfd{u} = $s; >+ } >+ } >+ #ISSN >+ if ( $field = $host->field('011') ) { >+ my $s = $field->as_string('a'); >+ if ($s) { >+ $sfd{x} = $s; >+ } >+ } >+ #ISBN >+ if ( $field = $host->field('010') ) { >+ my $s = $field->as_string('a'); >+ if ($s) { >+ $sfd{y} = $s; >+ } >+ } >+ if ( $field = $host->field('001') ) { >+ $sfd{0} = $field->data(),; >+ } >+ $host_field = MARC::Field->new( 461, '0', ' ', %sfd ); > return $host_field; > } > return; >diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl >index 22d1b8d..8e4defd 100755 >--- a/cataloguing/addbiblio.pl >+++ b/cataloguing/addbiblio.pl >@@ -995,12 +995,3 @@ $template->param( > ); > > output_html_with_http_headers $input, $cookie, $template->output; >- >-sub get_host_control_num { >- my $host_biblio_nr = shift; >- my $host = GetMarcBiblio($host_biblio_nr); >- my $control_num = GetMarcControlnumber($host, C4::Context->preference('marcflavour')); >- $host = GetBiblioData($host_biblio_nr); >- $host->{control_number} = $control_num; >- return $host; >-} >-- >1.7.2.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6831
:
5359
|
5466
|
8163
|
8164
|
8165
| 8166