From b29144362e9c9177f416d559920b3d999c475cdf Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 3 Jun 2014 09:29:53 -0400 Subject: [PATCH] Bug 12357 [4] - Add ability to use record level itemtype for BibTeX 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 BibUseItemtypeAsType 4) Choose a record that has a set biblio level itemtype 5) Save this record as BIBTEX 6) View the record, note that instead of @BOOK, the type is your record's itemtype code --- C4/Record.pm | 14 +++++++++++++- installer/data/mysql/sysprefs.sql | 1 + installer/data/mysql/updatedatabase.pl | 5 +++++ .../en/modules/admin/preferences/cataloguing.pref | 8 +++++++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/C4/Record.pm b/C4/Record.pm index ff88f93..2a28f97 100644 --- a/C4/Record.pm +++ b/C4/Record.pm @@ -707,7 +707,19 @@ sub marc2bibtex { ); } - $tex .= "\@book{"; + if ( C4::Context->preference('RisUseItemtypeAsType') ) { + my $s = GetMarcSubfieldStructureFromKohaField('biblioitems.itemtype'); + my $type = $record->subfield( $s->{tagfield}, $s->{tagsubfield} ); + if ( $type ) { + warn "TYPE: $type"; + $tex .= '@' . $type . '{'; + } else { + $tex .= "\@book{"; + } + } + else { + $tex .= "\@book{"; + } $tex .= join(",\n", $id, map { $bh{$_} ? qq(\t$_ = {$bh{$_}}) : () } keys %bh); $tex .= "\n"; diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 40d7cac..702554b 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -65,6 +65,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('BiblioAddsAuthorities','0',NULL,'If ON, adding a new biblio will check for an existing authority record and create one on the fly if one doesn\'t exist','YesNo'), ('BiblioDefaultView','normal','normal|marc|isbd','Choose the default detail view in the catalog; choose between normal, marc or isbd','Choice'), ('BibtexExportAdditionalFields', '', NULL , 'Define additional BibTex 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'), +('BibtexUseItemtypeAsType', '0', NULL , 'Use biblio.itemtype for BibTeX export type if set', 'YesNo'), ('BlockExpiredPatronOpacActions','1',NULL,'Set whether an expired patron can perform opac actions such as placing holds or renew books, can be overridden on a per patron-type basis','YesNo'), ('BlockReturnOfWithdrawnItems','1','0','If enabled, items that are marked as withdrawn cannot be returned.','YesNo'), ('BorrowerMandatoryField','surname|cardnumber',NULL,'Choose the mandatory fields for a patron\'s account','free'), diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index b94473b..3a4c5f0 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -8568,6 +8568,11 @@ if ( CheckVersion($DBversion) ) { VALUES ('BibtexExportAdditionalFields', '', NULL , 'Define additional BibTex 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 + ('BibtexUseItemtypeAsType', '0', NULL , 'Use biblio.itemtype for BibTeX 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 fc8d27e..f13f4d5 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 @@ -210,12 +210,18 @@ Cataloging: - "
" - "All values of repeating tags and subfields will be printed with the given BibTeX tag." - + - pref: BibtexUseItemtypeAsType + choices: + yes: "Do" + no: "Do not" + - use the record level itemtype code for the record type if it is set. If it is not set, the default of @book will be used. + - - Include following fields when exporting RIS, - pref: RisExportAdditionalFields type: textarea - "Use one line per tag in the format RIS_TAG: TAG$SUBFIELD ( e.g. LC: 010$a )" - "
" - - "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] )" + - "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. NT: [501$a, 505$g] )" - "
" - "All values of repeating tags and subfields will be printed with the given RIS tag." - -- 1.7.2.5