[Koha-patches] [PATCH] Bug 8071: link between bib and authorities with the authid
Fridolyn SOMERS
fridolyn.somers at biblibre.com
Wed Jul 25 18:07:03 CEST 2012
---
C4/AuthoritiesMarc.pm | 2 +-
C4/Biblio.pm | 18 +++++++---
authorities/blinddetail-biblio-search.pl | 1 +
.../authorities/blinddetail-biblio-search.tt | 38 ++++++++++----------
4 files changed, 35 insertions(+), 24 deletions(-)
diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm
index ece46a3..00cbd8d 100644
--- a/C4/AuthoritiesMarc.pm
+++ b/C4/AuthoritiesMarc.pm
@@ -1362,7 +1362,7 @@ sub merge {
if ($auth_number==$mergefrom) {
my $field_to=MARC::Field->new(($tag_to?$tag_to:$tag),$field->indicator(1),$field->indicator(2),"9"=>$mergeto);
my $exclude='9';
- foreach my $subfield (@record_to) {
+ foreach my $subfield (grep {$_->[0] ne 9} @record_to) {
$field_to->add_subfields($subfield->[0] =>$subfield->[1]);
$exclude.= $subfield->[0];
}
diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index f8ba099..6a9be6c 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -1721,10 +1721,13 @@ sub GetMarcSubjects {
if ( $counter != 0 ) {
$operator = ' and ';
}
- if ( $code eq 9 ) {
+ if ( $code eq 9 and $linkvalue ne " 0 ") {
$found9 = 1;
@link_loop = ( { 'limit' => 'an', link => "$linkvalue" } );
}
+ if ( $code eq 9 and $linkvalue eq " 0 ") {
+ next;
+ }
if ( not $found9 ) {
push @link_loop, { 'limit' => $subject_limit, link => $linkvalue, operator => $operator };
}
@@ -1780,7 +1783,7 @@ sub GetMarcAuthors {
my $count_auth = 0;
# if there is an authority link, build the link with Koha-Auth-Number: subfield9
- my $subfield9 = $field->subfield('9');
+ my $found9 ;
for my $authors_subfield (@subfields) {
# don't load unimarc subfields 3, 5
@@ -1795,9 +1798,14 @@ sub GetMarcAuthors {
}
# if we have an authority link, use that as the link, otherwise use standard searching
- if ($subfield9) {
- @link_loop = ( { 'limit' => 'an', link => "$subfield9" } );
- } else {
+ if ( $subfieldcode eq 9 and $linkvalue ne " 0 ") {
+ $found9 = 1;
+ @link_loop = ( { 'limit' => 'an', link => "$linkvalue" } );
+ }
+ if ( not $found9 ) {
+ push @link_loop, { 'limit' => 'au', link => $linkvalue, operator => $operator };
+ }
+ unless ($found9){
# reset $linkvalue if UNIMARC author responsibility
if ( $marcflavour eq 'UNIMARC' and ( $authors_subfield->[0] eq "4" ) ) {
diff --git a/authorities/blinddetail-biblio-search.pl b/authorities/blinddetail-biblio-search.pl
index 7de7db3..469676a 100755
--- a/authorities/blinddetail-biblio-search.pl
+++ b/authorities/blinddetail-biblio-search.pl
@@ -84,6 +84,7 @@ if ($authid) {
# Get all values for each distinct subfield
my %subfields;
for ( $field->subfields ) {
+ next if $_->[0] == "9";
my $letter = $_->[0];
next if defined $subfields{$letter};
my @values = $field->subfield($letter);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt
index 56ed94f..b8793ee 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt
@@ -13,24 +13,6 @@
}
var field_start = whichfield.parentNode.parentNode;
-
- // browse all its subfields (clear and $9)
- var subfields = field_start.getElementsByTagName('input');
- var re = /^tag_\d*_code_/;
- for(var i=0, len = subfields.length ; i< len ; i++) { // browse all subfields
- if(subfields[i].getAttribute('name').match(re)){ // it s a subfield
- var code = subfields[i]; // code is the first input
- var subfield = subfields[i+1]; // subfield the second
-
- [% IF ( clear ) %]
- if (subfield){subfield.value="" ;}
- [% ELSE %]
- if(code.value=='9'){
- subfield.value = "[% authid |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]";
- }
- [% END %]
- }
- }
// Sets the good number of form fields for the specified subfield
// Returns false if the cloning failed
@@ -90,6 +72,7 @@
});
}
+ [% UNLESS ( clear ) %]
[% FOREACH SUBFIELD_LOO IN SUBFIELD_LOOP %]
SetSubfieldValues(
"[% tag_number |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %][% SUBFIELD_LOO.marc_subfield |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]"
@@ -98,6 +81,25 @@
[% END %]
);
[% END %]
+ [% END %]
+
+ // browse all its subfields (clear and $9)
+ var subfields = field_start.getElementsByTagName('input');
+ var re = /^tag_\d*_code_/;
+ for(var i=0, len = subfields.length ; i< len ; i++) { // browse all subfields
+ if(subfields[i].getAttribute('name').match(re)){ // it s a subfield
+ var code = subfields[i]; // code is the first input
+ var subfield = subfields[i+1]; // subfield the second
+
+ [% IF ( clear ) %]
+ if (subfield){subfield.value="" ;}
+ [% ELSE %]
+ if(code.value=='9'){
+ subfield.value = "[% authid |replace("'", "\'") |replace('"', '\"') |replace('\n', '\\n') |replace('\r', '\\r') %]";
+ }
+ [% END %]
+ }
+ }
opener.close();
window.close();
--
1.7.9.5
More information about the Koha-patches
mailing list