From 4539aa0506eeeb03bf5ca9b7b4dd19bc4a3e39b8 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 3 Jun 2014 09:29:53 -0400 Subject: [PATCH] Bug 12357 [2] - Add ability to use record level itemtype for RIS export type Some libraries would like to be able to add arbitrary fields to both the RIS and BibTeX citation formats that a record can be saved as from the staff intranet and public catalog. In addition, they would like to be able to override the default record type and use Koha's itemtype as the record type for those formats as well. Test Plan: 1) Apply this patch 2) Run updatedatabase 3) Enable the new system preference RisUseItemtypeAsType 4) Choose a record that has a set biblio level itemtype 5) Save this record as RIS 6) View the record, note the TY field is your record's itemtype code Signed-off-by: Frederic Demians I confirm that with this patch TY RIS field can contain biblioitems.itemtype field. --- C4/Ris.pm | 18 ++++++++++++++++-- installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 6 ++++++ .../prog/en/modules/admin/preferences/cataloguing.pref | 6 ++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/C4/Ris.pm b/C4/Ris.pm index 539d622..9e9a275 100644 --- a/C4/Ris.pm +++ b/C4/Ris.pm @@ -64,6 +64,8 @@ package C4::Ris; use vars qw($VERSION @ISA @EXPORT); +use C4::Biblio qw(GetMarcSubfieldStructureFromKohaField); + # set the version for version checking $VERSION = 3.07.00.049; @@ -117,8 +119,20 @@ sub marc2ris { ## else: other MARC formats do not specify the character encoding ## we assume it's *not* UTF-8 - ## start RIS dataset - &print_typetag($leader); + ## start RIS dataset + if ( C4::Context->preference('RisUseItemtypeAsType') ) { + my $s = GetMarcSubfieldStructureFromKohaField('biblioitems.itemtype'); + my $type = $record->subfield( $s->{tagfield}, $s->{tagsubfield} ); + if ($type) { + print "TY - $type\r\n"; + } + else { + &print_typetag($leader); + } + } + else { + &print_typetag($leader); + } ## retrieve all author fields and collect them in a list my @author_fields; diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index d371914..e36e63a 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -344,6 +344,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('ReturnToShelvingCart','0','','If set, when any item is \'checked in\', it\'s location code will be changed to CART.','YesNo'), ('reviewson','1','','If ON, enables patron reviews of bibliographic records in the OPAC','YesNo'), ('RisExportAdditionalFields', '', NULL , 'Define additional RIS tags to export from MARC records in YAML format as an associative array with either a marc tag/subfield combination as the value, or a list of tag/subfield combinations.', 'textarea'), +('RisUseItemtypeAsType', '0', NULL , 'Use biblio.itemtype for RIS export type if set', 'YesNo'), ('RoutingListAddReserves','1','','If ON the patrons on routing lists are automatically added to holds on the issue.','YesNo'), ('RoutingListNote','To change this note edit RoutingListNote system preference.','70|10','Define a note to be shown on all routing lists','Textarea'), ('RoutingSerials','1',NULL,'If ON, serials routing is enabled','YesNo'), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 13bdd32..bf2e3ce 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -8958,6 +8958,12 @@ if ( CheckVersion($DBversion) ) { INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('RisExportAdditionalFields', '', NULL , 'Define additional RIS tags to export from MARC records in YAML format as an associative array with either a marc tag/subfield combination as the value, or a list of tag/subfield combinations.', 'textarea') }); + + $dbh->do(q{ + INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES + ('RisUseItemtypeAsType', '0', NULL , 'Use biblio.itemtype for RIS export type if set', 'YesNo') + }); + print "Upgrade to $DBversion done (Bug XXX - Add ability to export arbitrary MARC fields for RIS and BibTex)\n"; SetVersion($DBversion); } 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 49be897..a946fd8 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 @@ -209,3 +209,9 @@ Cataloging: - "To specificy multiple marc tags/subfields as targets for a repeating RIS tag, use the following format: RIS_TAG: [TAG2$SUBFIELD1, TAG2$SUBFIELD2] ( e.g. XY: [501$a, 505$g] )" - "
" - "All values of repeating tags and subfields will be printed with the given RIS tag." + - + - pref: RisUseItemtypeAsType + choices: + yes: "Do" + no: "Do not" + - use the record level itemtype code for the TY field if it is set. If it is not set, the default TY field handler will be used. -- 2.1.2