Bugzilla – Attachment 132778 Details for
Bug 27943
MARC21 authorities not support 7XX on display
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 27943: add support for 7XX equal terms on authorities marc21 display
Bug-27943-add-support-for-7XX-equal-terms-on-autho.patch (text/plain), 6.88 KB, created by
Frank Hansen
on 2022-03-31 13:25:46 UTC
(
hide
)
Description:
Bug 27943: add support for 7XX equal terms on authorities marc21 display
Filename:
MIME Type:
Creator:
Frank Hansen
Created:
2022-03-31 13:25:46 UTC
Size:
6.88 KB
patch
obsolete
>From bc4a5cd1a53359a897cc4f664308c41417742ae0 Mon Sep 17 00:00:00 2001 >From: George Veranis <gveranis@dataly.gr> >Date: Fri, 2 Jul 2021 16:41:24 +0200 >Subject: [PATCH] Bug 27943: add support for 7XX equal terms on authorities > marc21 display > >Currently when a MARC21 authority has 7XX field they do not display on >authority search result page. 7XX is equal term of 1XX based on LC rules. >Applying this patch will enable that feature, which is important for non latin >catalogues. > >Test plan: >1) Add a new authority with 1XX and 7XX fields. >2) Try to search that authority and check if 7XX values are displayed >3) Apply this patch >4) Try to search that authority and you will see that 7XX values are displayed > like "1XX = 7XX" > >Sponsored-by: Keratsini-Drapetsona Municipal Library, Greece >Mentored-by: Andreas Roussos >Signed-off-by: Frank Hansen <frank.hansen@ub.lu.se> > >Works for me! >--- > C4/AuthoritiesMarc.pm | 79 +++++++++++++++++++ > .../includes/authorities-search-results.inc | 6 ++ > .../includes/authorities-search-results.inc | 6 ++ > 3 files changed, 91 insertions(+) > >diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm >index 36cbf5c43b..bfa2aa539c 100644 >--- a/C4/AuthoritiesMarc.pm >+++ b/C4/AuthoritiesMarc.pm >@@ -886,6 +886,8 @@ sub BuildSummary { > my @seefrom; > my @seealso; > my @otherscript; >+ my @equalterm; >+ > if (C4::Context->preference('marcflavour') eq 'UNIMARC') { > # construct UNIMARC summary, that is quite different from MARC21 one > # accepted form >@@ -939,6 +941,8 @@ sub BuildSummary { > use C4::Heading::MARC21; > my $handler = C4::Heading::MARC21->new(); > my $subfields_to_report; >+ my $subfields_to_subdivision=""; >+ my $delimiter = " -- "; > foreach my $field ($record->field('1..')) { > my $tag = $field->tag(); > next if "152" eq $tag; >@@ -1015,6 +1019,80 @@ sub BuildSummary { > foreach my $field ($record->field('6..')) { > push @notes, { note => $field->as_string(), field => $field->tag() }; > } >+ >+ foreach my $field ($record->field('7..')) >+ { >+ my $tag = $field->tag(); >+ >+ if ($tag eq '700') { >+ $subfields_to_report = 'abcdefghjklmnopqrst'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '710') { >+ $subfields_to_report = 'abcdefghklmnoprst'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '711') { >+ $subfields_to_report = 'acdefghklnpqst'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '730') { >+ $subfields_to_report = 'adfghklmnoprst'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '748') { >+ $subfields_to_report = 'ab'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '750') { >+ $subfields_to_report = 'ab'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '751') { >+ $subfields_to_report = 'a'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '755') { >+ $subfields_to_report = 'abvxyz'; >+ $subfields_to_subdivision='vxyz'; >+ $delimiter=" -- "; >+ } elsif ($tag eq '780') { >+ $subfields_to_report = 'vxyz'; >+ $delimiter=" "; >+ } elsif ($tag eq '781') { >+ $subfields_to_report = 'vxyz'; >+ $delimiter=" "; >+ } elsif ($tag eq '782') { >+ $subfields_to_report = 'vxyz'; >+ $delimiter=" "; >+ } elsif ($tag eq '785') { >+ $subfields_to_report = 'vxyz'; >+ $delimiter=" "; >+ } >+ >+ my $heading = $field->as_string($subfields_to_report); >+ >+ my $subheading = $field->as_string($subfields_to_subdivision,$delimiter); >+ if(length $subheading > 0 ) >+ { >+ $heading.=$delimiter.$subheading; >+ } >+ >+ if ($subfields_to_report) { >+ push @equalterm, { >+ heading => $heading, >+ hemain => ( $field->subfield( substr($subfields_to_report, 0, 1) ) // undef ), >+ field => $tag, >+ }; >+ } else { >+ push @equalterm, { >+ heading => $field->as_string(), >+ hemain => ( $field->subfield( 'a' ) // undef ), >+ field => $tag, >+ }; >+ } >+ } >+ > foreach my $field ($record->field('880')) { > my $linkage = $field->subfield('6'); > my $category = substr $linkage, 0, 1; >@@ -1042,6 +1120,7 @@ sub BuildSummary { > $summary{seefrom} = \@seefrom; > $summary{seealso} = \@seealso; > $summary{otherscript} = \@otherscript; >+ $summary{equalterm} = \@equalterm; > return \%summary; > } > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-search-results.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-search-results.inc >index 66d8c7f633..80395bb45b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-search-results.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/authorities-search-results.inc >@@ -69,6 +69,12 @@ > </span> > [% UNLESS loop.last %] | [% END %] > [% END %] >+ [% IF summary.equalterm.size %] >+ [% FOREACH term IN summary.equalterm %] >+ <span class="label">=</span> >+ <span class="authorized">[% term.heading %]</span> >+ [% END %] >+ [% END %] > </div> > [% IF ( marcflavour == 'UNIMARC' ) %] > [% IF summary.notes %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/authorities-search-results.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/authorities-search-results.inc >index 5cf2e6044b..c126e4a8fb 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/authorities-search-results.inc >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/authorities-search-results.inc >@@ -61,6 +61,12 @@ > <span class="authorizedheading">[% authorize.heading | html %]</span> > [% UNLESS loop.last %] | [% END %] > [% END %] >+ [% IF summary.equalterm.size %] >+ [% FOREACH term IN summary.equalterm %] >+ <span class="label">=</span> >+ <span class="authorized">[% term.heading %]</span> >+ [% END %] >+ [% END %] > </div> > [% IF ( marcflavour == 'UNIMARC' ) %] > [% IF summary.notes %] >-- >2.30.2
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 27943
:
122549
|
132778
|
133712
|
146945
|
154502
|
157173
|
157174
|
157175
|
157176
|
157177