Bug 16245: RIS export file type incorrect
When exporting lists to a RIS file, the TY field of the RIS file is always 'book' even if the item being exported is a journal or serial. Since unimarc and marc21 is coded in Koha, just a few references types are included. This needs a much better code. This bug changes only TY BOOK result. Other resources needs a case by case basis. To test: -In advanced search limit by itemtype (books, music, continue resources, etc). -Search and save result in Cart -Export to RIS Format and notice about the new TY change with all materials -Export record in bib record details page in OPAC and Intranet. -Confirm that works as expected. -Bonus test: -Try to import the RIS file in http://www.myendnoteweb.com if you have account or create one. NOTE: According with previous comment, some values has changed. Sponsored-by: Universidad de El Salvador Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz> Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
6f5ea70f9a
commit
a74329af02
1 changed files with 50 additions and 36 deletions
86
C4/Ris.pm
86
C4/Ris.pm
|
@ -41,6 +41,7 @@ package C4::Ris;
|
|||
# Modified 2008 by BibLibre for Koha
|
||||
# Modified 2011 by Catalyst
|
||||
# Modified 2011 by Equinox Software, Inc.
|
||||
# Modified 2016 by Universidad de El Salvador
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
|
@ -349,41 +350,43 @@ sub print_typetag {
|
|||
## of the leader of a MARC record, the values are the RIS types
|
||||
## that might appropriately represent these types.
|
||||
my %ustypehash = (
|
||||
"a" => "BOOK",
|
||||
"c" => "MUSIC",
|
||||
"d" => "MUSIC",
|
||||
"e" => "MAP",
|
||||
"f" => "MAP",
|
||||
"g" => "ADVS",
|
||||
"i" => "SOUND",
|
||||
"j" => "SOUND",
|
||||
"k" => "ART",
|
||||
"m" => "DATA",
|
||||
"o" => "GEN",
|
||||
"p" => "GEN",
|
||||
"r" => "ART",
|
||||
"t" => "GEN",
|
||||
);
|
||||
|
||||
"a" => "BOOK",
|
||||
"c" => "MUSIC",
|
||||
"d" => "MUSIC",
|
||||
"e" => "MAP",
|
||||
"f" => "MAP",
|
||||
"g" => "ADVS",
|
||||
"i" => "SOUND",
|
||||
"j" => "SOUND",
|
||||
"k" => "ART",
|
||||
"m" => "DATA",
|
||||
"o" => "GEN",
|
||||
"p" => "GEN",
|
||||
"r" => "ART",
|
||||
"t" => "MANSCPT",
|
||||
);
|
||||
|
||||
my %unitypehash = (
|
||||
"a" => "BOOK",
|
||||
"b" => "BOOK",
|
||||
"c" => "MUSIC",
|
||||
"d" => "MUSIC",
|
||||
"e" => "MAP",
|
||||
"f" => "MAP",
|
||||
"g" => "ADVS",
|
||||
"i" => "SOUND",
|
||||
"j" => "SOUND",
|
||||
"k" => "ART",
|
||||
"l" => "ELEC",
|
||||
"m" => "ADVS",
|
||||
"r" => "ART",
|
||||
);
|
||||
|
||||
"a" => "BOOK",
|
||||
"b" => "MANSCPT",
|
||||
"c" => "MUSIC",
|
||||
"d" => "MUSIC",
|
||||
"e" => "MAP",
|
||||
"f" => "MAP",
|
||||
"g" => "ADVS",
|
||||
"i" => "SOUND",
|
||||
"j" => "SOUND",
|
||||
"k" => "ART",
|
||||
"l" => "ELEC",
|
||||
"m" => "GEN",
|
||||
"r" => "ART",
|
||||
);
|
||||
|
||||
## The type of a MARC record is found at position 06 of the leader
|
||||
my $typeofrecord = defined($leader) && length $leader >=6 ?
|
||||
substr($leader, 6, 1): undef;
|
||||
my $typeofrecord2 = defined($leader) && length $leader >=6 ?
|
||||
substr($leader, 7, 1): undef;
|
||||
|
||||
## ToDo: for books, field 008 positions 24-27 might have a few more
|
||||
## hints
|
||||
|
@ -399,11 +402,22 @@ sub print_typetag {
|
|||
}
|
||||
|
||||
if (!defined $typeofrecord || !exists $typehash{$typeofrecord}) {
|
||||
print "TY - BOOK\r\n"; ## most reasonable default
|
||||
warn ("no type found - assume BOOK") if $marcprint;
|
||||
}
|
||||
else {
|
||||
print "TY - $typehash{$typeofrecord}\r\n";
|
||||
print "TY - GEN\r\n"; ## most reasonable default
|
||||
warn ("no type found - assume GEN") if $marcprint;
|
||||
} elsif ( $typeofrecord =~ "a" ) {
|
||||
if ( $typeofrecord2 =~ "a" ) {
|
||||
print "TY - GEN\r\n"; ## monographic component part
|
||||
} elsif ( $typeofrecord2 =~ "b" || $typeofrecord2 =~ "s" ) {
|
||||
print "TY - SER\r\n"; ## serial or serial component part
|
||||
} elsif ( $typeofrecord2 =~ "m" ) {
|
||||
print "TY - $typehash{$typeofrecord}\r\n"; ## book
|
||||
} elsif ( $typeofrecord2 =~ "c" || $typeofrecord2 =~ "d" ) {
|
||||
print "TY - GEN\r\n"; ## collections, part of collections or made-up collections
|
||||
} elsif ( $typeofrecord2 =~ "i" ) {
|
||||
print "TY - DATA\r\n"; ## updating loose-leafe as Dataset
|
||||
}
|
||||
} else {
|
||||
print "TY - $typehash{$typeofrecord}\r\n";
|
||||
}
|
||||
|
||||
## use $typeofrecord as the return value, just in case
|
||||
|
|
Loading…
Reference in a new issue