From 9835d03f6a43cb258913d37309c5358bec59b44e Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Thu, 18 Jul 2013 21:00:31 +0300 Subject: [PATCH] Allow generating fixed data in control field 008 quickly: Language and country codes come from 041a and 044a, Date1 comes from 260c, and the record date is set to current day. Signed-off-by: Pasi Kallinen --- Open-ILS/xul/staff_client/server/cat/marcedit.js | 57 +++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/Open-ILS/xul/staff_client/server/cat/marcedit.js b/Open-ILS/xul/staff_client/server/cat/marcedit.js index f62d93930d..e5aca23e09 100644 --- a/Open-ILS/xul/staff_client/server/cat/marcedit.js +++ b/Open-ILS/xul/staff_client/server/cat/marcedit.js @@ -46,6 +46,61 @@ function $(id) { return document.getElementById(id); } var acs; // AuthorityControlSet +function get_new_008() { + var orig008 = ' '; + var now = new Date(); + var y = now.getUTCFullYear().toString().substr(2,2); + var m = now.getUTCMonth() + 1; + if (m < 10) m = '0' + m; + var d = now.getUTCDate(); + if (d < 10) d = '0' + d; + + if (xml_record.controlfield.(@tag == '008')) { + var field = xml_record.controlfield.(@tag == '008')[0]; + orig008 = field.text(); + } + + /* lang code from 041a */ + var lang = orig008.substr(35, 3); + if (xml_record.datafield.(@tag == '041')) { + var field = xml_record.datafield.(@tag == '041')[0]; + if (field && field.subfield.(@code == 'a')) { + lang = field.subfield.(@code == 'a'); + } + } + + /* country code from 044a */ + var country = orig008.substr(15, 3); + if (xml_record.datafield.(@tag == '044')) { + var field = xml_record.datafield.(@tag == '044')[0]; + if (field && field.subfield.(@code == 'a')) { + country = field.subfield.(@code == 'a'); + } + } + while (country.length < 3) country = country + ' '; + if (country.length > 3) country = country.substr(0,3); + + /* date1 from 260c */ + var date1 = now.getUTCFullYear().toString(); + if (xml_record.datafield.(@tag == '260')) { + var field = xml_record.datafield.(@tag == '260')[0]; + if (field && field.subfield.(@code == 'c')) { + var tmpd = field.subfield.(@code == 'c').replace(/[^0-9]/g, ''); + if (tmpd.match(/^\d\d\d\d/)) { + date1 = tmpd.substr(0, 4); + } + } + } + + var date2 = orig008.substr(11, 4); + var datetype = orig008.substr(6, 1); + var modded = orig008.substr(38, 1); + var catsrc = orig008.substr(39, 1); + + return '' + y + m + d + datetype + date1 + date2 + country + ' ' + lang + modded + catsrc; + +} + function mangle_005() { var now = new Date(); var y = now.getUTCFullYear(); @@ -733,7 +788,7 @@ function createMARCTextbox (element,attrs) { createControlField('007',' '); loadRecord(); } else if (event.keyCode == 119 && event.ctrlKey) { // ctrl + F8 - createControlField('008',' '); + createControlField('008', get_new_008()); loadRecord(); } -- 2.11.0