Mostly finish off server/circ i18n work
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 7 Feb 2008 22:39:23 +0000 (22:39 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 7 Feb 2008 22:39:23 +0000 (22:39 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@8696 dcc99617-32d9-48b4-a31d-7c20da2025e4

13 files changed:
Open-ILS/web/opac/locale/en-US/lang.dtd
Open-ILS/xul/staff_client/server/circ/checkin.xul
Open-ILS/xul/staff_client/server/circ/copy_status.js
Open-ILS/xul/staff_client/server/circ/copy_status.xul
Open-ILS/xul/staff_client/server/circ/hold_capture.js
Open-ILS/xul/staff_client/server/circ/hold_capture.xul
Open-ILS/xul/staff_client/server/circ/hold_capture_overlay.xul
Open-ILS/xul/staff_client/server/circ/in_house_use.js
Open-ILS/xul/staff_client/server/circ/in_house_use.xul
Open-ILS/xul/staff_client/server/circ/pre_cat_fields.xul
Open-ILS/xul/staff_client/server/circ/print_list_template_editor.js
Open-ILS/xul/staff_client/server/circ/print_list_template_editor.xul
Open-ILS/xul/staff_client/server/locale/en-US/circ.properties

index 74ed591..5629c17 100644 (file)
 <!ENTITY staff.chrome.menu_frame_overlay.tab8.accesskey "8">
 <!ENTITY staff.chrome.menu_frame_overlay.tab9.label "Tab 9">
 <!ENTITY staff.chrome.menu_frame_overlay.tab9.accesskey "9">
+<!ENTITY staff.circ.in_house_use.main.label "Record In-House Use">
+<!ENTITY staff.circ.in_house_use.cmgb1.caption "In-House Use">
+<!ENTITY staff.circ.in_house_use.multiplier_label.value "# of uses:">
+<!ENTITY staff.circ.in_house_use.multiplier_label.accesskey "u">
+<!ENTITY staff.circ.in_house_use.submit.label "Submit">
+<!ENTITY staff.circ.in_house_use.submit.accesskey "S">
+<!ENTITY staff.circ.in_house_use.print.label "Print List">
+<!ENTITY staff.circ.in_house_use.export.label "Export">
+<!ENTITY staff.circ.in_house_use.trim_list.label "Trim List (20 rows)">
+<!ENTITY staff.circ.in_house_use.strict_barcode.label "Strict Barcode">
+<!ENTITY staff.circ.in_house_use.sel_clip.label "Copy to Clipboard">
+<!ENTITY staff.circ.in_house_use.save_cols_btn.label "Save Columns">
+<!ENTITY staff.circ.pre_cat.window.title "Pre-Catalog Fields">
+<!ENTITY staff.circ.pre_cat.caption.label "Pre-Catalog Field Entry">
+<!ENTITY staff.circ.pre_cat.dummy_title.value "Title">
+<!ENTITY staff.circ.pre_cat.dummy_author.value "Author">
+<!ENTITY staff.circ.pre_cat.cancel.label "Cancel">
+<!ENTITY staff.circ.pre_cat.cancel.accesskey "C">
+<!ENTITY staff.circ.pre_cat.checkout.label "Checkout">
+<!ENTITY staff.circ.pre_cat.checkout.accesskey "o">
+<!ENTITY staff.circ.print_list.main.label "Templates">
+<!ENTITY staff.circ.print_list.top_ui.label "ID">
+<!ENTITY staff.circ.print_list.top_ui.name.label "Name">
+<!ENTITY staff.circ.print_list.top_ui.name.accesskey "N">
+<!ENTITY staff.circ.print_list.top_ui.type.label "Type">
+<!ENTITY staff.circ.print_list.top_ui.actions.label "Actions">
+<!ENTITY staff.circ.print_list.top_ui.preview.label "Preview">
+<!ENTITY staff.circ.print_list.top_ui.preview.accesskey "P">
+<!ENTITY staff.circ.print_list.top_ui.macros.label "Macros">
+<!ENTITY staff.circ.print_list.top_ui.macros.accesskey "M">
+<!ENTITY staff.circ.print_list.top_ui.default.label "Default">
+<!ENTITY staff.circ.print_list.top_ui.default.accesskey "D">
+<!ENTITY staff.circ.print_list.top_ui.save.label "Save Locally">
+<!ENTITY staff.circ.print_list.top_ui.save.accesskey "S">
+<!ENTITY staff.circ.print_list.top_ui.description "Be sure to 'Save Locally' before export">
+<!ENTITY staff.circ.print_list.top_ui.description.export.label "Export">
+<!ENTITY staff.circ.print_list.top_ui.description.export.accesskey "E">
+<!ENTITY staff.circ.print_list.top_ui.description.import.label "Import">
+<!ENTITY staff.circ.print_list.top_ui.description.import.accesskey "I">
+<!ENTITY staff.circ.print_list.header.label "Header">
+<!ENTITY staff.circ.print_list.line_item.label "Line Item">
+<!ENTITY staff.circ.print_list.footer.label "Footer">
index b0fbb18..eefffa4 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 
index ce4d5d8..7874490 100644 (file)
@@ -1,7 +1,7 @@
 dump('entering circ.copy_status.js\n');
 // vim:noet:sw=4:ts=4:
 
-if (typeof circ == 'undefined') circ = {};
+if (typeof circ == 'undefined') { circ = {}; }
 circ.copy_status = function (params) {
 
        JSAN.use('util.error'); this.error = new util.error();
@@ -10,7 +10,7 @@ circ.copy_status = function (params) {
        JSAN.use('util.date');
        JSAN.use('OpenILS.data'); this.data = new OpenILS.data(); this.data.init({'via':'stash'});
        JSAN.use('util.sound'); this.sound = new util.sound();
-}
+};
 
 circ.copy_status.prototype = {
        'selection_list' : [],
@@ -29,12 +29,12 @@ circ.copy_status.prototype = {
                                'call_number' : { 'hidden' : false },
                                'status' : { 'hidden' : false },
                                'alert_message' : { 'hidden' : false },
-                               'due_date' : { 'hidden' : false },
+                               'due_date' : { 'hidden' : false }
                        },
                        {
                                'except_these' : [
-                                       'checkin_time', 'checkin_time_full', 'route_to', 'message', 'uses', 'xact_finish',
-                               ],
+                                       'checkin_time', 'checkin_time_full', 'route_to', 'message', 'uses', 'xact_finish'
+                               ]
                        }
                );
 
@@ -102,7 +102,7 @@ circ.copy_status.prototype = {
                                        } catch(E) {
                                                alert('FIXME: ' + E);
                                        }
-                               },
+                               }
                        }
                );
                
@@ -293,7 +293,7 @@ circ.copy_status.prototype = {
                                                        JSAN.use('util.file');
                                                        var f = new util.file('');
                             var content = f.import_file( { 'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.upload_file.title'), 'not_json' : true } );
-                            if (!content) return;
+                            if (!content) { return; }
                                                        var barcodes = content.split(/\s+/);
                                        if (barcodes.length > 0) {
                                            JSAN.use('util.exec'); var exec = new util.exec();
@@ -303,7 +303,7 @@ circ.copy_status.prototype = {
                                                    function(b){
                                                        return function() {
                                                            obj.copy_status(b);
-                                                       }
+                                                       };
                                                    }(barcodes[i])
                                                );
                                            }
@@ -353,7 +353,7 @@ circ.copy_status.prototype = {
                                                                                } catch(E) {
                                                                                        obj.error.standard_unexpected_error_alert('export',E); 
                                                                                }
-                                                                       }
+                                                                       };
                                                                obj.list.full_retrieve();
                                                        } catch(E) {
                                                                obj.error.standard_unexpected_error_alert('export',E); 
@@ -368,21 +368,27 @@ circ.copy_status.prototype = {
 
                                                                JSAN.use('util.functional');
                                                                var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-                                                               if (list.length == 0) return;
+                                                               if (list.length == 0) { return; }
 
                                                                var copy_shortcut = {}; var map_acn = {};
 
                                                                for (var i = 0; i < list.length; i++) {
                                                                        var volume_id = list[i];
-                                                                       if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+                                                                       if (volume_id == -1) { 
+                                                                               continue; /* ignore magic pre-cat volume */
+                                                                       }
                                                                        if (! map_acn[volume_id]) {
                                                                                map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
                                                                        }
                                                                        var record_id = map_acn[ volume_id ].record();
                                                                        var ou_id = map_acn[ volume_id ].owning_lib();
                                                                        var label = map_acn[ volume_id ].label();
-                                                                       if (!copy_shortcut[record_id]) copy_shortcut[record_id] = {};
-                                                                       if (!copy_shortcut[record_id][ou_id]) copy_shortcut[record_id][ou_id] = {};
+                                                                       if (!copy_shortcut[record_id]) {
+                                                                               copy_shortcut[record_id] = {};
+                                                                       }
+                                                                       if (!copy_shortcut[record_id][ou_id]) {
+                                                                               copy_shortcut[record_id][ou_id] = {};
+                                                                       }
                                                                        copy_shortcut[record_id][ou_id][ label ] = volume_id;
 
                                                                }
@@ -408,7 +414,9 @@ circ.copy_status.prototype = {
                                                                                obj.error.sdump('D_ERROR','batch permission check: ' + E);
                                                                        }
        
-                                                                       if (edit==0) return; // no read-only view for this interface
+                                                                       if (edit==0) { 
+                                                                               return; // no read-only view for this interface
+                                                                       }
        
                                                                        var title = document.getElementById('circStrings').getFormattedString('staff.circ.copy_status.add_items.title', [r]);
        
@@ -451,7 +459,9 @@ circ.copy_status.prototype = {
                                     copies[i].isdeleted(1);
                                 }
 
-                                                               if (! window.confirm(document.getElementById('circStrings').getFormattedString('staff.circ.copy_status.del_items.confirm', [util.functional.map_list( copies, function(o) { return o.barcode(); }).join(", "))]) ) return;
+                                                               if (! window.confirm(document.getElementById('circStrings').getFormattedString('staff.circ.copy_status.del_items.confirm', [util.functional.map_list( copies, function(o) { return o.barcode(); }).join(", ")]))) {
+                                                                       return;
+                                                               }
 
                                 var robj = obj.network.simple_request('FM_ACP_FLESHED_BATCH_UPDATE',[ ses(), copies, true]);
                                                                var robj = obj.network.simple_request(
@@ -462,7 +472,7 @@ circ.copy_status.prototype = {
                                                                                'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.del_items.title'),
                                                                                'overridable_events' : [
                                                                                        1208 /* TITLE_LAST_COPY */,
-                                                                                       1227 /* COPY_DELETE_WARNING */,
+                                                                                       1227 /* COPY_DELETE_WARNING */
                                                                                ]
                                                                        }
                                                                );
@@ -503,7 +513,7 @@ circ.copy_status.prototype = {
                                                                                'copy_ids' : list, 
                                                                                'docid' : volume.record(),
                                                                                'volume_label' : volume.label(),
-                                                                               'owning_lib' : volume.owning_lib(),
+                                                                               'owning_lib' : volume.owning_lib()
                                                                        } );
 
                                                                } catch(E) {
@@ -518,13 +528,15 @@ circ.copy_status.prototype = {
                                                        try {
                                                                JSAN.use('util.functional');
                                                                var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-                                                               if (list.length == 0) return;
+                                                               if (list.length == 0) { return; }
 
                                                                var aou_hash = {}; var map_acn = {};
 
                                                                for (var i = 0; i < list.length; i++) {
                                                                        var volume_id = list[i];
-                                                                       if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+                                                                       if (volume_id == -1) {
+                                                                               continue; /* ignore magic pre-cat volume */
+                                                                       }
                                                                        if (! map_acn[volume_id]) {
                                                                                map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
                                                                        }
@@ -587,25 +599,32 @@ circ.copy_status.prototype = {
                                                        try {
                                                                JSAN.use('util.functional');
                                                                var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-                                                               if (list.length == 0) return;
+                                                               if (list.length == 0) { return; }
 
                                                                var volume_hash = {}; var map_acn = {};
 
                                                                for (var i = 0; i < list.length; i++) {
                                                                        var volume_id = list[i];
-                                                                       if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+                                                                       if (volume_id == -1) {
+                                                                               continue; /* ignore magic pre-cat volume */
+                                                                       }
                                                                        if (! map_acn[volume_id]) {
                                                                                map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
                                                                                map_acn[ volume_id ].copies( [] );
                                                                        }
                                                                        var record_id = map_acn[ volume_id ].record();
-                                                                       if (!volume_hash[record_id]) volume_hash[record_id] = {};
+                                                                       if (!volume_hash[record_id]) {
+                                                                               volume_hash[record_id] = {};
+                                                                       }
                                                                        volume_hash[record_id][volume_id] = 1;
                                                                }
 
                                                                for (var rec in volume_hash) {
 
-                                                                       list = []; for (var v in volume_hash[rec]) list.push( map_acn[v] );
+                                                                       list = [];
+                                                                       for (var v in volume_hash[rec]) {
+                                                                               list.push( map_acn[v] );
+                                                                       }
 
                                                                        var edit = 0;
                                                                        try {
@@ -654,7 +673,7 @@ circ.copy_status.prototype = {
                                                                        //obj.data.stash_retrieve();
                                                                        //var volumes = JSON2js( obj.data.volumes_temp );
                                                                        var volumes = my_xulG.volumes;
-                                                                       if (!volumes) return;
+                                                                       if (!volumes) { return; }
                                                                
                                                                        volumes = util.functional.filter_list(
                                                                                volumes,
@@ -671,7 +690,7 @@ circ.copy_status.prototype = {
                                                                                }
                                                                        );
 
-                                                                       if (volumes.length == 0) return;
+                                                                       if (volumes.length == 0) { return; }
 
                                                                        try {
                                                                                var r = obj.network.request(
@@ -706,19 +725,24 @@ circ.copy_status.prototype = {
                                                        try {
                                                                JSAN.use('util.functional');
                                                                var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-                                                               if (list.length == 0) return;
+                                                               if (list.length == 0) { return; }
 
                                                                var map_acn = {};
 
                                                                for (var i = 0; i < list.length; i++) {
                                                                        var volume_id = list[i];
-                                                                       if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+                                                                       if (volume_id == -1) {
+                                                                               continue; /* ignore magic pre-cat volume */
+                                                                       }
                                                                        if (! map_acn[volume_id]) {
                                                                                map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
                                                                        }
                                                                }
 
-                                                               list = []; for (var v in map_acn) list.push( map_acn[v] );
+                                                               list = [];
+                                                               for (var v in map_acn) {
+                                                                       list.push( map_acn[v] );
+                                                               }
 
                                                                var confirm_prompt;
                                                                if (list.length == 1) {
@@ -756,7 +780,7 @@ circ.copy_status.prototype = {
                                                                                        alert(document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.delete_copies'));
                                                                                        return;
                                                                                }
-                                                                               if (robj.ilsevent != 0) throw(robj);
+                                                                               if (robj.ilsevent != 0) { throw(robj); }
                                                                        }
                                                                        alert(document.getElementById('circStrings').getString('staff.circ.copy_status.delete_volumes.success'));
                                                                }
@@ -802,7 +826,10 @@ circ.copy_status.prototype = {
 
                                                                if (list.length == 1) {
                                                                        var v = obj.network.simple_request('FM_ACN_RETRIEVE',[list[0]]);
-                                                                       var owning_lib = v.owning_lib(); if (typeof owning_lib == 'object') owning_lib = owning_lib.id();
+                                                                       var owning_lib = v.owning_lib();
+                                                                       if (typeof owning_lib == 'object') {
+                                                                               owning_lib = owning_lib.id();
+                                                                       }
 
                                                                        obj.data.marked_library = { 'lib' : owning_lib, 'docid' : v.record() };
                                                                        obj.data.stash('marked_library');
@@ -835,19 +862,24 @@ circ.copy_status.prototype = {
                                                                        JSAN.use('util.functional');
 
                                                                        var list = util.functional.map_list( obj.selection_list, function(o) { return o.acn_id; } );
-                                                                       if (list.length == 0) return;
+                                                                       if (list.length == 0) { return; }
 
                                                                        var map_acn = {};
 
                                                                        for (var i = 0; i < list.length; i++) {
                                                                                var volume_id = list[i];
-                                                                               if (volume_id == -1) continue; /* ignore magic pre-cat volume */
+                                                                               if (volume_id == -1) {
+                                                                                       continue; /* ignore magic pre-cat volume */
+                                                                               }
                                                                                if (! map_acn[volume_id]) {
                                                                                        map_acn[ volume_id ] = obj.network.simple_request('FM_ACN_RETRIEVE',[ volume_id ]);
                                                                                }
                                                                        }
 
-                                                                       list = []; for (v in map_acn) list.push(map_acn[v]);
+                                                                       list = [];
+                                                                       for (v in map_acn) {
+                                                                               list.push(map_acn[v]);
+                                                                       }
 
                                                                        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
                                                                        var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" flex="1" style="overflow: auto">';
@@ -899,8 +931,8 @@ circ.copy_status.prototype = {
                                                                                        'title' : document.getElementById('circStrings').getString('staff.circ.copy_status.transfer_volume.override_failure'),
                                                                                        'overridable_events' : [
                                                                                                1208 /* TITLE_LAST_COPY */,
-                                                                                               1219 /* COPY_REMOTE_CIRC_LIB */,
-                                                                                       ],
+                                                                                               1219 /* COPY_REMOTE_CIRC_LIB */
+                                                                                       ]
                                                                                }
                                                                        );
 
@@ -919,7 +951,7 @@ circ.copy_status.prototype = {
                                                        }
                                                }
 
-                                       ],
+                                       ]
                                }
                        }
                );
@@ -956,8 +988,10 @@ circ.copy_status.prototype = {
                var obj = this;
                try {
                        try { document.getElementById('last_scanned').setAttribute('value',''); } catch(E) {}
-                       if (!barcode) barcode = obj.controller.view.copy_status_barcode_entry_textbox.value;
-                       if (!barcode) return;
+                       if (!barcode) {
+                               barcode = obj.controller.view.copy_status_barcode_entry_textbox.value;
+                       }
+                       if (!barcode) { return; }
                        if (barcode) {
                                if ( obj.test_barcode(barcode) ) { /* good */ } else { /* bad */ return; }
                        }
@@ -1002,9 +1036,10 @@ circ.copy_status.prototype = {
                                                msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.hold') + '  ';
                                        }
                                        if (details.transit) {
-                                               msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.transit') + '  '; }
+                                               msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.transit') + '  ';
+                                       }
                                        if (details.circ && ! details.circ.checkin_time()) {
-                                               msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.circ') + '  '; }
+                                               msg += document.getElementById('circStrings').getString('staff.circ.copy_status.status.circ') + '  ';
                                        }
                                        try { document.getElementById('last_scanned').setAttribute('value',msg); } catch(E) {}
                                        if (document.getElementById('trim_list')) {
index bf05ed6..59d8237 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,7 +35,9 @@
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') {
+                                       throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+                               }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
                                );
 
                                if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-                                       try { window.xulG.set_tab_name('Item Status'); } catch(E) { alert(E); }
+                                       try {
+                                               window.xulG.set_tab_name(document.getElementById('circStrings').getString('staff.circ.copy_status.tab_name'));
+                                       } catch(E) {
+                                               alert(E);
+                                       }
                                }
 
                                JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.stash_retrieve();
@@ -78,9 +84,7 @@
                                }
        
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\n" 
-                                       + 'circ.copy_status.xul\n' + E + '\n';
+                               var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ.copy_status.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
@@ -90,6 +94,8 @@
        ]]>
        </script>
 
+       <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
        <commandset id="copy_status_cmds">
                <command id="cmd_copy_status_submit_barcode" />
                <command id="cmd_copy_status_upload_file" />
index cc544a0..3c65993 100644 (file)
@@ -1,4 +1,5 @@
 dump('entering circ.hold_capture.js\n');
+// vim:noet:sw=4:ts=4:
 
 if (typeof circ == 'undefined') circ = {};
 circ.hold_capture = function (params) {
@@ -49,7 +50,7 @@ circ.hold_capture.prototype = {
                                        ],
                                        'cmd_broken' : [
                                                ['command'],
-                                               function() { alert('Not Yet Implemented'); }
+                                               function() { alert(document.getElementById('circStrings').getString('staff.circ.unimplemented')); }
                                        ],
                                        'cmd_hold_capture_submit_barcode' : [
                                                ['command'],
@@ -121,10 +122,12 @@ circ.hold_capture.prototype = {
                                );
                
                                try {
-                               alert('To Printer\n' + hold_capture.text + '\r\n' + 'Barcode: ' + barcode + '  Title: ' + hold_capture.record.title() + 
-                                       '  Author: ' + hold_capture.record.author() + '\r\n' +
-                                       'Route To: ' + hold_capture.route_to + 
-                                       '  Patron: ' + au_obj.card().barcode() + ' ' + au_obj.family_name() + ', ' + au_obj.first_given_name() + 
+                               alert(document.getElementById('circStrings').getString('staff.circ.hold_capture.print.to_printer') + '\n' + hold_capture.text + '\r\n' + 
+                                       document.getElementById('circStrings').getString('staff.circ.hold_capture.print.barcode') + ' ' + barcode + 
+                                       document.getElementById('circStrings').getString('staff.circ.hold_capture.print.title') + ' ' + hold_capture.record.title() + 
+                                       document.getElementById('circStrings').getString('staff.circ.hold_capture.print.author') + ' ' + hold_capture.record.author() + '\r\n' +
+                                       document.getElementById('circStrings').getString('staff.circ.hold_capture.print.route_to') + ' ' + hold_capture.route_to + 
+                                       document.getElementById('circStrings').getString('staff.circ.hold_capture.print.patron') + ' ' + au_obj.card().barcode() + ' ' + au_obj.family_name() + ', ' + au_obj.first_given_name() + 
                                        '\r\n'); //FIXME
                                } catch(E) { dump('errors\n'); }
                                /*
@@ -140,26 +143,26 @@ circ.hold_capture.prototype = {
                                        obj.on_hold_capture(hold_capture);
                                }
                                if (typeof window.xulG == 'object' && typeof window.xulG.on_hold_capture == 'function') {
-                                       obj.error.sdump('D_CIRC','circ.hold_capture: Calling external .on_hold_capture()\n');
+                                       obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.calling_external') + '\n');
                                        window.xulG.on_hold_capture(hold_capture);
                                } else {
-                                       obj.error.sdump('D_CIRC','circ.hold_capture: No external .on_hold_capture()\n');
+                                       obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.no_external') + '\n');
                                }
                        } else {
-                               throw("Could not capture hold.");
+                               throw(document.getElementById('circStrings').getString('staff.circ.hold_capture.capture_failed'));
                        }
 
                } catch(E) {
-                       alert('FIXME: need special alert and error handling\n'
+                       alert(document.getElementById('circStrings').getString('staff.circ.hold_capture.error') + '\n'
                                + js2JSON(E));
                        if (typeof obj.on_failure == 'function') {
                                obj.on_failure(E);
                        }
                        if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
-                               obj.error.sdump('D_CIRC','circ.hold_capture: Calling external .on_failure()\n');
+                               obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.calling_external') + '\n');
                                window.xulG.on_failure(E);
                        } else {
-                               obj.error.sdump('D_CIRC','circ.hold_capture: No external .on_failure()\n');
+                               obj.error.sdump('D_CIRC', document.getElementById('circStrings').getString('staff.circ.hold_capture.no_external') + '\n');
                        }
                }
 
index 55f7cad..4699977 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,7 +35,9 @@
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') {
+                                       throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+                               }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
@@ -52,9 +54,7 @@
                                }
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\n" 
-                                       + 'circ.hold_capture.xul\n' + E + '\n';
+                               var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ.hold_capture.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
@@ -63,6 +63,8 @@
        ]]>
        </script>
 
+       <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
        <commandset id="hold_capture_cmds">
                <command id="cmd_hold_capture_submit_barcode" />
                <command id="cmd_hold_capture_print" />
index 91bc0e4..236e643 100644 (file)
@@ -1,6 +1,6 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE overlay PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 <overlay id="hold_capture_overlay" 
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
index 9c2d24e..a46ea04 100644 (file)
@@ -1,4 +1,5 @@
 dump('entering circ.in_house_use.js\n');
+// vim:noet:sw=4:ts=4:
 
 if (typeof circ == 'undefined') circ = {};
 circ.in_house_use = function (params) {
@@ -54,7 +55,7 @@ circ.in_house_use.prototype = {
                                                function(e) {
                                                        return function() {
                                                                JSAN.use('util.widgets'); JSAN.use('util.functional'); JSAN.use('util.fm_utils');
-                                                               var items = [ [ 'Barcode:' , 'barcode' ] ].concat(
+                                                               var items = [ [ document.getElementById('circStrings').getString('staff.circ.in_house_use.barcode') , 'barcode' ] ].concat(
                                                                        util.functional.map_list(
                                                                                util.functional.filter_list(
                                                                                        obj.data.list.cnct,
@@ -70,7 +71,7 @@ circ.in_house_use.prototype = {
                                                                                                                [ b.owning_lib(), b.name() ]
                                                                                                        );
                                                                                                } catch(E) {
-                                                                                                       alert('error in noncat sorting: ' + E);
+                                                                                                       alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.noncat_sort_error') + ' ' + E);
                                                                                                        return 0;
                                                                                                }
                                                                                        }
@@ -81,7 +82,7 @@ circ.in_house_use.prototype = {
                                                                                }
                                                                        )
                                                                );
-                                                               g.error.sdump('D_TRACE','items = ' + js2JSON(items));
+                                                               g.error.sdump('D_TRACE', document.getElementById('circStrings').getString('staff.circ.in_house_use.items_dump') + js2JSON(items));
                                                                util.widgets.remove_children( e );
                                                                var ml = util.widgets.make_menulist(
                                                                        items
@@ -99,7 +100,7 @@ circ.in_house_use.prototype = {
                                                                                        tb.focus();
                                                                                } else {
                                                                                        tb.disabled = true;
-                                                                                       tb.value = 'Non-Cataloged';
+                                                                                       tb.value = document.getElementById('circStrings').getString('staff.circ.in_house_use.noncataloged');
                                                                                }
                                                                        }, false
                                                                );
@@ -144,7 +145,7 @@ circ.in_house_use.prototype = {
                                        ],
                                        'cmd_broken' : [
                                                ['command'],
-                                               function() { alert('Not Yet Implemented'); }
+                                               function() { alert(document.getElementById('circStrings').getString('staff.circ.unimplemented')); }
                                        ],
                                        'cmd_in_house_use_submit_barcode' : [
                                                ['command'],
@@ -195,12 +196,12 @@ circ.in_house_use.prototype = {
                        return true;
                } else {
                        if ( 1 == obj.error.yns_alert(
-                                               'Bad checkdigit; possible mis-scan.  Use this barcode ("' + bc + '") anyway?',
-                                               'Bad Barcode',
-                                               'Cancel',
-                                               'Accept Barcode',
+                                               document.getElementById('circStrings').getFormattedString('staff.circ.check_digit.bad', [bc]),
+                                               document.getElementById('circStrings').getString('staff.circ.barcode.bad'),
+                                               document.getElementById('circStrings').getString('staff.circ.cancel'),
+                                               document.getElementById('circStrings').getString('staff.circ.barcode.accept'),
                                                null,
-                                               'Check here to confirm this action',
+                                               document.getElementById('circStrings').getString('staff.circ.confirm'),
                                                '/xul/server/skin/media/images/bad_barcode.png'
                        ) ) {
                                return true;
@@ -237,7 +238,14 @@ circ.in_house_use.prototype = {
                        }
 
                        if (multiplier > 20) {
-                               var r = obj.error.yns_alert('Are you sure you want to mark ' + barcode + ' as having been used ' + multiplier + ' times?','In-House Use Verification', 'Yes', 'No', null, 'Check here to confirm this message.');
+                               var r = obj.error.yns_alert(
+                                       document.getElementById('circStrings').getFormattedString('staff.circ.in_house_use.confirm_multiple', [barcode, multiplier]),
+                                       document.getElementById('circStrings').getString('staff.circ.in_house_use.confirm_multiple.title'),
+                                       document.getElementById('circStrings').getString('staff.circ.in_house_use.yes'),
+                                       document.getElementById('circStrings').getString('staff.circ.in_house_use.no'),
+                                       null,
+                                       document.getElementById('circStrings').getString('staff.circ.confirm.msg')
+                               );
                                if (r != 0) {
                                        obj.controller.view.in_house_use_multiplier_textbox.focus();
                                        obj.controller.view.in_house_use_multiplier_textbox.select();
@@ -252,9 +260,21 @@ circ.in_house_use.prototype = {
                                var copy = obj.network.simple_request('FM_ACP_RETRIEVE_VIA_BARCODE',[ barcode ]); 
                                if (copy.ilsevent) { 
                                        switch(copy.ilsevent) {
-                                               case -1 : obj.error.standard_network_error_alert('In House Use Failed.  If you wish to use the offline interface, in the top menubar select Circulation -> Offline Interface'); break;
-                                               case 1502 /* ASSET_COPY_NOT_FOUND */ : obj.error.yns_alert(copy.textcode,'In House Use Failed','Ok',null,null,'Check here to confirm this message'); break;
-                                               default: throw(copy);
+                                               case -1 : 
+                                                       obj.error.standard_network_error_alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.failed.verbose'));
+                                                       break;
+                                               case 1502 /* ASSET_COPY_NOT_FOUND */ : 
+                                                       obj.error.yns_alert(
+                                                               copy.textcode,
+                                                               document.getElementById('circStrings').getString('staff.circ.in_house_use.failed'),
+                                                               document.getElementById('circStrings').getString('staff.circ.in_house_use.ok'),
+                                                               null,
+                                                               null,
+                                                               document.getElementById('circStrings').getString('staff.circ.confirm.msg')
+                                                       );
+                                                       break;
+                                               default:
+                                                       throw(copy);
                                        }
                                        return; 
                                }
@@ -294,22 +314,22 @@ circ.in_house_use.prototype = {
                                obj.on_in_house_use(result);
                        }
                        if (typeof window.xulG == 'object' && typeof window.xulG.on_in_house_use == 'function') {
-                               obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_in_house_use()\n');
+                               obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.external') + '\n');
                                window.xulG.on_in_house_use(result);
                        } else {
-                               obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_in_house_use()\n');
+                               obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.no_external') + '\n');
                        }
 
                } catch(E) {
-                       obj.error.standard_unexpected_error_alert('In House Use Failed',E);
+                       obj.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.in_house_use.failed'), E);
                        if (typeof obj.on_failure == 'function') {
                                obj.on_failure(E);
                        }
                        if (typeof window.xulG == 'object' && typeof window.xulG.on_failure == 'function') {
-                               obj.error.sdump('D_CIRC','circ.in_house_use: Calling external .on_failure()\n');
+                               obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.on_failure.external') + '\n');
                                window.xulG.on_failure(E);
                        } else {
-                               obj.error.sdump('D_CIRC','circ.in_house_use: No external .on_failure()\n');
+                               obj.error.sdump('D_CIRC', + document.getElementById('circStrings').getString('staff.circ.in_house_use.on_failure.external') + '\n');
                        }
                }
 
index db11262..4b376cd 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
 
@@ -12,7 +12,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -34,7 +34,9 @@
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') {
+                                       throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+                               }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
                                );
        
                                if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-                                       try { window.xulG.set_tab_name('In-House Use'); } catch(E) { alert(E); }
+                                       try {
+                                               window.xulG.set_tab_name(document.getElementById('circStrings').getString('staff.circ.in_house_use.tab_name'));
+                                       } catch(E) {
+                                               alert(E);
+                                       }
                                }
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\n" 
-                                       + 'circ.in_house_use.xul\n' + E + '\n';
+                               var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ.in_house_use.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
@@ -63,6 +67,8 @@
        ]]>
        </script>
 
+       <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
        <commandset id="in_house_use_cmds">
                <command id="sel_clip" />
                <command id="cmd_in_house_use_submit_barcode" />
 <vbox id="cmvb1" flex="1">
 <hbox id="background" style="background-color: purple; color: white;">
        <spacer flex="1"/>
-       <label value="Record In-House Use" style="font-size: x-large; font-weight: bold;"/>
+       <label value="&staff.circ.in_house_use.main.label;" style="font-size: x-large; font-weight: bold;"/>
        <spacer flex="1"/>
 </hbox>
 <groupbox id="cmgb1" flex="2">
 
-       <caption label="In-House Use" />
+       <caption label="&staff.circ.in_house_use.cmgb1.caption;" />
 
        <hbox id="in_house_use_top_ui">
-               <label id="in_house_use_multiplier_label" value="# of uses:" control="in_house_use_multiplier_textbox" accesskey="u" hidden="false"/>
+               <label id="in_house_use_multiplier_label" value="&staff.circ.in_house_use.multiplier_label.value;" control="in_house_use_multiplier_textbox" accesskey="&staff.circ.in_house_use.multiplier_label.accesskey;" hidden="false"/>
                <textbox id="in_house_use_multiplier_textbox" value="1" hidden="false" size="2" cols="2"/>
                <hbox id="in_house_use_menu_placeholder" flex="0"/>
                <textbox id="in_house_use_barcode_entry_textbox"/>
                <button id="in_house_use_submit_barcode_button" 
-                       label="Submit"
+                       label="&staff.circ.in_house_use.submit.label;"
                        command="cmd_in_house_use_submit_barcode"
-                       accesskey="S"/>
+                       accesskey="&staff.circ.in_house_use.submit.accesskey;"/>
        </hbox>
 
        <tree id="in_house_use_list" flex="1" enableColumnDrag="true" />
 
        <hbox id="in_house_use_bottom_ui">
                <button id="in_house_use_print" 
-                       label="Print List
+                       label="&staff.circ.in_house_use.print.label;
                        command="cmd_in_house_use_print"
                        accesskey=""/>
                <button id="in_house_use_export" 
-                       label="Export"
+                       label="&staff.circ.in_house_use.export.label;"
                        command="cmd_in_house_use_export"
                        accesskey=""/>
-               <checkbox id="trim_list" label="Trim List (20 rows)" checked="true" persist="checked"/> 
-               <checkbox id="strict_barcode" label="Strict Barcode" checked="false" persist="checked"/> 
+               <checkbox id="trim_list" label="&staff.circ.in_house_use.trim_list.label;" checked="true" persist="checked"/> 
+               <checkbox id="strict_barcode" label="&staff.circ.in_house_use.strict_barcode.label;" checked="false" persist="checked"/> 
                <spacer id="pcii3s" flex="1"/>
-               <button id="clip_button" disabled="true" command="sel_clip" label="Copy to Clipboard" />
-               <button id="save_cols_btn" command="save_columns" label="Save Columns" />
+               <button id="clip_button" disabled="true" command="sel_clip" label="&staff.circ.in_house_use.sel_clip.label;" />
+               <button id="save_cols_btn" command="save_columns" label="&staff.circ.in_house_use.save_cols_btn.label;" />
        </hbox>
 
 </groupbox>
index 7adae41..907092a 100644 (file)
@@ -1,6 +1,9 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Patron Display -->
+<!--
+ vim:noet:sw=4:ts=4:
+-->
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- STYLESHEETS -->
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- OVERLAYS -->
 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
 
-<window id="pre_cat_fields" title="Pre-Cat Fields"
+<window id="pre_cat_fields" title="&staff.circ.pre_cat.window.title;"
        orient="vertical" style="overflow: auto"
        onload="try{my_init();font_helper(); }catch(E){alert(E);}"
        onunload="try{my_finish();}catch(E){alert(E);}"
@@ -36,7 +39,9 @@
 
                function my_init() {
                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                       if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                       if (typeof JSAN == 'undefined') {
+                               throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+                       }
                        JSAN.errorLevel = "die"; // none, warn, or die
                        JSAN.addRepository('/xul/server/');
                        JSAN.use('util.error'); g.error = new util.error();
        ]]>
        </script>
 
+       <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
 
        <groupbox>
-               <caption label="Pre-Catalog Field Entry"/>
+               <caption label="&staff.circ.pre_cat.caption.label;"/>
                <grid>
                        <columns><column /><column flex="1"/></columns>
                        <rows>
                                <row>
-                                       <label value="Title" control="dummy_title"/>
+                                       <label value="&staff.circ.pre_cat.dummy_title.value;" control="dummy_title"/>
                                        <textbox id="dummy_title" onchange="g.data.dummy_title = event.target.value;"/>
                                </row>
                                <row>
-                                       <label value="Author" control="dummy_author"/>
+                                       <label value="&staff.circ.pre_cat.dummy_author.value;" control="dummy_author"/>
                                        <textbox id="dummy_author" onchange="g.data.dummy_author = event.target.value;"/>
                                </row>
                        </rows>
                </grid>
                <hbox>
                        <spacer flex="1"/>
-                       <button label="Cancel" oncommand="g.data.dummy_title = ''; window.close()" accesskey="C"/>
-                       <button label="Checkout" oncommand="window.close();" accesskey="o"/>
+                       <button label="&staff.circ.pre_cat.cancel.label;" oncommand="g.data.dummy_title = ''; window.close()" accesskey="&staff.circ.pre_cat.cancel.accesskey;"/>
+                       <button label="&staff.circ.pre_cat.checkout.label;" oncommand="window.close();" accesskey="&staff.circ.pre_cat.checkout.accesskey;"/>
                </hbox>
        </groupbox>
 
index 19bc1c8..446687c 100644 (file)
@@ -1,4 +1,5 @@
 dump('entering print_list_template_editor.js\n');
+// vim:noet:sw=4:ts=4:
 
 if (typeof circ == 'undefined') circ = {};
 circ.print_list_template_editor = function (params) {
@@ -43,12 +44,44 @@ circ.print_list_template_editor.prototype = {
 
                        this.test_list = {
                        
-                               'items' : [{"uses":"undefined","alert_message":"","author":"Annixter, Jane.","barcode":"3635300990263","call_number":"F","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:15-0400","circ_as_type":"","circ_id":"19907","circ_lib":"URRLS-SC","circ_modifier":"","circulate":"Yes","acp_id":"34","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"13","due_date":"2006-08-23","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"URRLS-SC","price":"10.00","pubdate":"1961","publisher":"Longmans","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000015 ","title":"Peace comes to Castle Oak ","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Josephson, Matthew","barcode":"33207002163014","call_number":"NONFIC 330.922 JOSEPHSO","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:23-0400","circ_as_type":"","circ_id":"19908","circ_lib":"ARL-ATH","circ_modifier":"","circulate":"Yes","acp_id":"1658","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"250","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ARL-ATH","price":"10.95","pubdate":"[c1934]","publisher":"Harcourt, Brace and company","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000311 ","title":"The  robber barons :  the great American capitalists, 1861-1901","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Payne, Emmy","barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19904","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Ames, Leslie","barcode":"31039000791757","call_number":"AF AME","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:07-0400","circ_as_type":"","circ_id":"19906","circ_lib":"ORLS-TEL","circ_modifier":"","circulate":"Yes","acp_id":"28","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"8","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ORLS-TEL","price":"5.95","pubdate":"","publisher":"Lenox Hill","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000009 ","title":"King's Castle ","xact_finish":""},{"uses":"undefined","alert_message":"","author":"Payne, Emmy","barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19903","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""}],
-                               'holds' : [{"author":"Wells, H. G. ","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:14:53-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:14:53-0400","current_copy":"33207003884402","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"57","holdable_formats":"","isbn":"0192828266 :","notify_time":"","notify_count":"0","patron_name":"23500000023053 Stompro, Josh","phone_notify":"218-233-3757","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T16:15:11-0400","pubdate":"1995","publisher":"Oxford University Press","request_time":"2006-05-20","request_timestamp":"2006-05-20","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03002240 ","target":"131469","title":"The  war of the worlds","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000567"},{"author":"Kramer, Kathryn.","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:32:58-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:32:58-0400","current_copy":"33207004030757","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"470","holdable_formats":"","isbn":"0375400834","notify_time":"2006-08-24T15:12:30-0400","notify_count":"1","patron_name":"21034000217210 Jenkins, George","phone_notify":"229-985-3464","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-03T12:15:03-0400","pubdate":"1998","publisher":"Knopf","request_time":"2006-07-28","request_timestamp":"2006-07-28","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03053147 ","target":"313678","title":"Sweet water ","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1001151"},{"author":"Silva, Daniel","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:39:35-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:39:35-0400","current_copy":"33207004323517","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"448","holdable_formats":"","isbn":"0375500898 (alk. paper)","notify_time":"","notify_count":"0","patron_name":"21099000002755 Broome, Sandra","phone_notify":"706-236-4632","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T17:16:39-0400","pubdate":"c1999","publisher":"Random House","request_time":"2006-07-27","request_timestamp":"2006-07-27","requestor":"1000001","selection_depth":"0","status":"Ready for pickup","tcn":"ocm40444117 ","target":"77772","title":"The  marching season :  a novel","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000846"},{"author":"Seuss","available_time":"2006-08-13","available_timestamp":"2006-08-13T20:55:02-0400","capture_time":"2006-08-13","capture_timestamp":"2006-08-13T20:55:02-0400","current_copy":"20070805","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1697","holdable_formats":"","isbn":"039480001X :","notify_time":"","notify_count":"0","patron_name":"4545 Tripper, Jack","phone_notify":"444-333-2222","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-13T20:45:09-0400","pubdate":"1992, c1957","publisher":"Seedlings Braille Books for Children","request_time":"2006-08-13","request_timestamp":"2006-08-13","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"ocm47673093 ","target":"1534993","title":"The  cat in the hat","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1002261"},{"author":"Potter, Sally.","available_time":"2006-08-09","available_timestamp":"2006-08-09T18:06:10-0400","capture_time":"2006-08-09","capture_timestamp":"2006-08-09T18:06:10-0400","current_copy":"31001000843129","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1004","holdable_formats":"","isbn":"0783262663","notify_time":"2006-08-10T15:24:46-0400","notify_count":"12","patron_name":"2222233333 Erickson, Bill","phone_notify":"999-999-9999","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-09T12:15:27-0400","pubdate":"c2001","publisher":"Universal Studios","request_time":"2006-08-08","request_timestamp":"2006-08-08","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"ocm48683123 ","target":"1572303","title":"The  man who cried","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"3"}],
-                               'bills' : [{"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"9","last_billing_ts":"2006-05-08 18:53","last_billing_note":"test","last_billing_type":"Miscellaneous charges","last_payment_ts":"2006-05-08 18:53","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"11","last_billing_ts":"2006-05-08 19:11","last_billing_note":"test","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 19:12","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"-50.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"18","last_billing_ts":"2006-05-08 20:20","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 21:27","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"50.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"1.00","xact_finish":"2006-06-14","xact_start":"2006-06-14","id":"451","last_billing_ts":"2006-06-14 16:49","last_billing_note":"SYSTEM GENERATED","last_billing_type":"Lost Materials","last_payment_ts":"2006-06-14 16:49","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"6.00","total_paid":"5.00","xact_type":"circulation","usr":"Id = 1000502"},{"balance_owed":"-1.00","xact_finish":"2006-06-17","xact_start":"2006-06-17","id":"3689","last_billing_ts":"2006-06-17 04:01","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-06-17 18:51","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"10.00","total_paid":"11.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":".66","xact_finish":"","xact_start":"2006-06-27","id":"5589","last_billing_ts":"2006-08-22 00:00","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-09-04 17:31","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.60","total_paid":"4.94","xact_type":"circulation","usr":"Id = 1000502"},{"balance_owed":".70","xact_finish":"","xact_start":"2006-06-27","id":"5593","last_billing_ts":"2006-08-22 00:00","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-08-16 11:01","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.50","total_paid":"4.80","xact_type":"circulation","usr":"Id = 1000502"},{"balance_owed":"5.00","xact_finish":"","xact_start":"2006-08-16","id":"14834","last_billing_ts":"2006-08-16 12:25","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"5.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"},{"balance_owed":"10.00","xact_finish":"","xact_start":"2006-08-16","id":"14858","last_billing_ts":"2006-08-16 12:34","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"10.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"}],
+                               'items' : [
+                               {"uses":"undefined","alert_message":"","author":"Annixter, Jane.","barcode":"3635300990263","call_number":"F","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:15-0400","circ_as_type":"","circ_id":"19907","circ_lib":"URRLS-SC","circ_modifier":"","circulate":"Yes","acp_id":"34","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"13","due_date":"2006-08-23","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"URRLS-SC","price":"10.00","pubdate":"1961","publisher":"Longmans","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000015 ","title":"Peace comes to Castle Oak ","xact_finish":""},
+                               {"uses":"undefined","alert_message":"","author":"Josephson, Matthew","barcode":"33207002163014","call_number":"NONFIC 330.922 JOSEPHSO","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:23-0400","circ_as_type":"","circ_id":"19908","circ_lib":"ARL-ATH","circ_modifier":"","circulate":"Yes","acp_id":"1658","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"250","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ARL-ATH","price":"10.95","pubdate":"[c1934]","publisher":"Harcourt, Brace and company","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000311 ","title":"The  robber barons :  the great American capitalists, 1861-1901","xact_finish":""},
+                               {"uses":"undefined","alert_message":"","author":"Payne, Emmy","barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19904","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""},
+                               {"uses":"undefined","alert_message":"","author":"Ames, Leslie","barcode":"31039000791757","call_number":"AF AME","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:37:07-0400","circ_as_type":"","circ_id":"19906","circ_lib":"ORLS-TEL","circ_modifier":"","circulate":"Yes","acp_id":"28","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"8","due_date":"2006-09-06","edition":"","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"ORLS-TEL","price":"5.95","pubdate":"","publisher":"Lenox Hill","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000009 ","title":"King's Castle ","xact_finish":""},
+                               {"uses":"undefined","alert_message":"","author":"Payne, Emmy","barcode":"33034001434539","call_number":"EJ PAYNE","checkin_time":"   ","checkin_time_full":"","xact_start":"2006-08-23","xact_start_full":"2006-08-23T14:36:54-0400","circ_as_type":"","circ_id":"19903","circ_lib":"SHRL-RM","circ_modifier":"","circulate":"Yes","acp_id":"6165596","copy_number":"1","create_date":"2006-04-28","edit_date":"2006-08-23","deleted":"No","deposit_amount":"0.00","deposit":"No","mvr_doc_id":"1220497","due_date":"2006-09-06","edition":"Reinforced ed.","fine_level":"Low","stop_fines":"","stop_fines_time":"","holdable":"Yes","isbn":"075872926X (BWI bdg.)","loan_duration":"Short","location":"Adult","message":"   ","opac_visible":"Yes","owning_lib":"SHRL-RM","price":"0.00","pubdate":"1944","publisher":"Houghton Mifflin","ref":"No","renewal_remaining":"0","route_to":"   ","status":"Checked out","tcn":"PIN01000377 ","title":"Katy no-pocket ","xact_finish":""}],
+                               'holds' : [{"author":"Wells, H. G. ","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:14:53-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:14:53-0400","current_copy":"33207003884402","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"57","holdable_formats":"","isbn":"0192828266 :","notify_time":"","notify_count":"0","patron_name":"23500000023053 Stompro, Josh","phone_notify":"218-233-3757","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T16:15:11-0400","pubdate":"1995","publisher":"Oxford University Press","request_time":"2006-05-20","request_timestamp":"2006-05-20","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03002240 ","target":"131469","title":"The  war of the worlds","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000567"},
+                               {"author":"Kramer, Kathryn.","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:32:58-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:32:58-0400","current_copy":"33207004030757","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"470","holdable_formats":"","isbn":"0375400834","notify_time":"2006-08-24T15:12:30-0400","notify_count":"1","patron_name":"21034000217210 Jenkins, George","phone_notify":"229-985-3464","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-03T12:15:03-0400","pubdate":"1998","publisher":"Knopf","request_time":"2006-07-28","request_timestamp":"2006-07-28","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"PIN03053147 ","target":"313678","title":"Sweet water ","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1001151"},
+                               {"author":"Silva, Daniel","available_time":"2006-08-03","available_timestamp":"2006-08-03T15:39:35-0400","capture_time":"2006-08-03","capture_timestamp":"2006-08-03T15:39:35-0400","current_copy":"33207004323517","edition":"1st ed.","email_notify":"No","expire_time":"","fulfillment_time":"","id":"448","holdable_formats":"","isbn":"0375500898 (alk. paper)","notify_time":"","notify_count":"0","patron_name":"21099000002755 Broome, Sandra","phone_notify":"706-236-4632","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-02T17:16:39-0400","pubdate":"c1999","publisher":"Random House","request_time":"2006-07-27","request_timestamp":"2006-07-27","requestor":"1000001","selection_depth":"0","status":"Ready for pickup","tcn":"ocm40444117 ","target":"77772","title":"The  marching season :  a novel","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1000846"},
+                               {"author":"Seuss","available_time":"2006-08-13","available_timestamp":"2006-08-13T20:55:02-0400","capture_time":"2006-08-13","capture_timestamp":"2006-08-13T20:55:02-0400","current_copy":"20070805","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1697","holdable_formats":"","isbn":"039480001X :","notify_time":"","notify_count":"0","patron_name":"4545 Tripper, Jack","phone_notify":"444-333-2222","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-13T20:45:09-0400","pubdate":"1992, c1957","publisher":"Seedlings Braille Books for Children","request_time":"2006-08-13","request_timestamp":"2006-08-13","requestor":"1000000","selection_depth":"0","status":"Ready for pickup","tcn":"ocm47673093 ","target":"1534993","title":"The  cat in the hat","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"1002261"},
+                               {"author":"Potter, Sally.","available_time":"2006-08-09","available_timestamp":"2006-08-09T18:06:10-0400","capture_time":"2006-08-09","capture_timestamp":"2006-08-09T18:06:10-0400","current_copy":"31001000843129","edition":"","email_notify":"No","expire_time":"","fulfillment_time":"","id":"1004","holdable_formats":"","isbn":"0783262663","notify_time":"2006-08-10T15:24:46-0400","notify_count":"12","patron_name":"2222233333 Erickson, Bill","phone_notify":"999-999-9999","pickup_lib_shortname":"ARL-ATH","pickup_lib":"Athens-Clarke County Library","prev_check_time":"2006-08-09T12:15:27-0400","pubdate":"c2001","publisher":"Universal Studios","request_time":"2006-08-08","request_timestamp":"2006-08-08","requestor":"3","selection_depth":"0","status":"Ready for pickup","tcn":"ocm48683123 ","target":"1572303","title":"The  man who cried","transit_dest_recv_time":"","transit_dest_lib":"","transit_source":"","transit_source_send_time":"","hold_type":"T","usr":"3"}],
+                               'bills' : [{"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"9","last_billing_ts":"2006-05-08 18:53","last_billing_note":"test","last_billing_type":"Miscellaneous charges","last_payment_ts":"2006-05-08 18:53","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},
+                               {"balance_owed":"-5.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"11","last_billing_ts":"2006-05-08 19:11","last_billing_note":"test","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 19:12","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"5.00","xact_type":"grocery","usr":"Id = 1000502"},
+                               {"balance_owed":"-50.00","xact_finish":"2006-05-08","xact_start":"2006-05-08","id":"18","last_billing_ts":"2006-05-08 20:20","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-05-08 21:27","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"0.00","total_paid":"50.00","xact_type":"grocery","usr":"Id = 1000502"},
+                               {"balance_owed":"1.00","xact_finish":"2006-06-14","xact_start":"2006-06-14","id":"451","last_billing_ts":"2006-06-14 16:49","last_billing_note":"SYSTEM GENERATED","last_billing_type":"Lost Materials","last_payment_ts":"2006-06-14 16:49","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"6.00","total_paid":"5.00","xact_type":"circulation","usr":"Id = 1000502"},
+                               {"balance_owed":"-1.00","xact_finish":"2006-06-17","xact_start":"2006-06-17","id":"3689","last_billing_ts":"2006-06-17 04:01","last_billing_note":"","last_billing_type":"Miscellaneous","last_payment_ts":"2006-06-17 18:51","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"10.00","total_paid":"11.00","xact_type":"grocery","usr":"Id = 1000502"},
+                               {"balance_owed":".66","xact_finish":"","xact_start":"2006-06-27","id":"5589","last_billing_ts":"2006-08-22 00:00","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-09-04 17:31","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.60","total_paid":"4.94","xact_type":"circulation","usr":"Id = 1000502"},
+                               {"balance_owed":".70","xact_finish":"","xact_start":"2006-06-27","id":"5593","last_billing_ts":"2006-08-22 00:00","last_billing_note":"Overdue Fine","last_billing_type":"Overdue materials","last_payment_ts":"2006-08-16 11:01","last_payment_note":"","last_payment_type":"cash_payment","total_owed":"5.50","total_paid":"4.80","xact_type":"circulation","usr":"Id = 1000502"},
+                               {"balance_owed":"5.00","xact_finish":"","xact_start":"2006-08-16","id":"14834","last_billing_ts":"2006-08-16 12:25","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"5.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"},
+                               {"balance_owed":"10.00","xact_finish":"","xact_start":"2006-08-16","id":"14858","last_billing_ts":"2006-08-16 12:34","last_billing_note":"","last_billing_type":"Damaged material","last_payment_ts":"","last_payment_note":"","last_payment_type":"","total_owed":"10.00","total_paid":"0.00","xact_type":"grocery","usr":"Id = 1000502"}],
                                'payment' : [{"bill_id":5559,"payment":"-0.04","last_billing_type":"Overdue materials","last_billing_note":"Overdue Fine","title":"Hali Bote Azikaban de tao fan","barcode":"a16"},{"bill_id":5589,"payment":"0.04","last_billing_type":"Overdue materials","last_billing_note":"Overdue Fine","title":"Hali Bote Azikaban de tao fan","barcode":"a47"}],
                                'patrons' : [],
-                               'transits' : [{"transit_item_author":"Arvetis, Chris.","transit_item_barcode":"3947801748348","transit_item_callnumber":"JE ARV","transit_item_title":"Why do birds sing?","transit_target_copy":"2385751","transit_dest_lib":"PIED-WIN","transit_id":"25","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-24T16:37:09-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Pine, Tillie S.","transit_item_barcode":"3635300990762","transit_item_callnumber":"F","transit_item_title":"Water all around ","transit_target_copy":"1","transit_dest_lib":"URRLS-SC","transit_id":"26","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-27T22:49:40-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"","transit_item_barcode":"31057000861941","transit_item_callnumber":"CD J 781.5246 CASPE","transit_item_title":"Casper's spookiest songs and sounds  10 spooky songs plus creepy sound effects","transit_target_copy":"7923932","transit_dest_lib":"WGRL-LS","transit_id":"98","transit_source":"ARL-ATH","transit_source_send_time":"2006-06-29T16:34:38-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Davidson, MaryJanice.","transit_item_barcode":"31027005649112","transit_item_callnumber":"AC DAV","transit_item_title":"Undead and unreturnable ","transit_target_copy":"7924995","transit_dest_lib":"HCLS-LG","transit_id":"100","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-07T16:02:32-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Evanovich, Janet.","transit_item_barcode":"31001001097295","transit_item_callnumber":"813/.54","transit_item_title":"Two for the dough","transit_target_copy":"8000335","transit_dest_lib":"ARL-BOG","transit_id":"102","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-11T12:12:11-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Edwards, Anne","transit_item_barcode":"39021423853564","transit_item_callnumber":"780.92 STREISAND","transit_item_title":"Streisand a biography","transit_target_copy":"949781","transit_dest_lib":"ECGR-BKM","transit_id":"110","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:00:01-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Riese, Randall.","transit_item_barcode":"31025900460205","transit_item_callnumber":"921 STREISAND 1993","transit_item_title":"Her name is Barbra an intimate portrait of the real Barbra Streisand","transit_target_copy":"2210566","transit_dest_lib":"HALL-BPL","transit_id":"112","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:01:39-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Rowling, J. K.","transit_item_barcode":"a45","transit_item_callnumber":"JROWLING2","transit_item_title":"Hali Bote Azikaban de tao fan","transit_target_copy":"8000297","transit_dest_lib":"WGRL-LS","transit_id":"118","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:52:38-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Some Author","transit_item_barcode":"321","transit_item_callnumber":"UNCATALOGED","transit_item_title":"Big Book","transit_target_copy":"8000387","transit_dest_lib":"ROCK-NG","transit_id":"119","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:58:21-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Thomas, Joyce Carol.","transit_item_barcode":"31036000522216","transit_item_callnumber":"E THOMAS","transit_item_title":"The  gospel Cinderella","transit_target_copy":"7422951","transit_dest_lib":"NCLS-COVTN","transit_id":"200","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:20:00-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545159","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487432","transit_dest_lib":"NCLS-COVTN","transit_id":"206","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:44-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545142","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487431","transit_dest_lib":"NCLS-COVTN","transit_id":"207","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:49-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Grafton, Sue.","transit_item_barcode":"31036000527900","transit_item_callnumber":"F GRAFTON","transit_item_title":"\"H\" is for homicide","transit_target_copy":"7273824","transit_dest_lib":"NCLS-COVTN","transit_id":"208","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:58-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Beaumont, Karen.","transit_item_barcode":"31036000521853","transit_item_callnumber":"E BEAUMONT","transit_item_title":"I like myself!","transit_target_copy":"7387328","transit_dest_lib":"NCLS-COVTN","transit_id":"211","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:26:08-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Sandler, Martin W.","transit_item_barcode":"31036000522612","transit_item_callnumber":"J 388.42 SANDLER","transit_item_title":"Straphanging in the USA trolleys and subways in American life","transit_target_copy":"7360328","transit_dest_lib":"NCLS-COVTN","transit_id":"212","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:35:17-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},{"transit_item_author":"Bohjalian, Christopher A.","transit_item_barcode":"31036000538303","transit_item_callnumber":"F BOHJALIAN","transit_item_title":"Before you know kindness :  a novel","transit_target_copy":"7544549","transit_dest_lib":"NCLS-COVTN","transit_id":"218","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-26T10:23:20-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},],
+                               'transits' : [{"transit_item_author":"Arvetis, Chris.","transit_item_barcode":"3947801748348","transit_item_callnumber":"JE ARV","transit_item_title":"Why do birds sing?","transit_target_copy":"2385751","transit_dest_lib":"PIED-WIN","transit_id":"25","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-24T16:37:09-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Pine, Tillie S.","transit_item_barcode":"3635300990762","transit_item_callnumber":"F","transit_item_title":"Water all around ","transit_target_copy":"1","transit_dest_lib":"URRLS-SC","transit_id":"26","transit_source":"ARL-ATH","transit_source_send_time":"2006-05-27T22:49:40-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"","transit_item_barcode":"31057000861941","transit_item_callnumber":"CD J 781.5246 CASPE","transit_item_title":"Casper's spookiest songs and sounds  10 spooky songs plus creepy sound effects","transit_target_copy":"7923932","transit_dest_lib":"WGRL-LS","transit_id":"98","transit_source":"ARL-ATH","transit_source_send_time":"2006-06-29T16:34:38-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Davidson, MaryJanice.","transit_item_barcode":"31027005649112","transit_item_callnumber":"AC DAV","transit_item_title":"Undead and unreturnable ","transit_target_copy":"7924995","transit_dest_lib":"HCLS-LG","transit_id":"100","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-07T16:02:32-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Evanovich, Janet.","transit_item_barcode":"31001001097295","transit_item_callnumber":"813/.54","transit_item_title":"Two for the dough","transit_target_copy":"8000335","transit_dest_lib":"ARL-BOG","transit_id":"102","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-11T12:12:11-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Edwards, Anne","transit_item_barcode":"39021423853564","transit_item_callnumber":"780.92 STREISAND","transit_item_title":"Streisand a biography","transit_target_copy":"949781","transit_dest_lib":"ECGR-BKM","transit_id":"110","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:00:01-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Riese, Randall.","transit_item_barcode":"31025900460205","transit_item_callnumber":"921 STREISAND 1993","transit_item_title":"Her name is Barbra an intimate portrait of the real Barbra Streisand","transit_target_copy":"2210566","transit_dest_lib":"HALL-BPL","transit_id":"112","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-14T10:01:39-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Rowling, J. K.","transit_item_barcode":"a45","transit_item_callnumber":"JROWLING2","transit_item_title":"Hali Bote Azikaban de tao fan","transit_target_copy":"8000297","transit_dest_lib":"WGRL-LS","transit_id":"118","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:52:38-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Some Author","transit_item_barcode":"321","transit_item_callnumber":"UNCATALOGED","transit_item_title":"Big Book","transit_target_copy":"8000387","transit_dest_lib":"ROCK-NG","transit_id":"119","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-19T13:58:21-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Thomas, Joyce Carol.","transit_item_barcode":"31036000522216","transit_item_callnumber":"E THOMAS","transit_item_title":"The  gospel Cinderella","transit_target_copy":"7422951","transit_dest_lib":"NCLS-COVTN","transit_id":"200","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:20:00-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545159","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487432","transit_dest_lib":"NCLS-COVTN","transit_id":"206","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:44-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Robinson, Barbara","transit_item_barcode":"31036000545142","transit_item_callnumber":"J ROBINSON","transit_item_title":"The  best Halloween ever","transit_target_copy":"7487431","transit_dest_lib":"NCLS-COVTN","transit_id":"207","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:49-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Grafton, Sue.","transit_item_barcode":"31036000527900","transit_item_callnumber":"F GRAFTON","transit_item_title":"\"H\" is for homicide","transit_target_copy":"7273824","transit_dest_lib":"NCLS-COVTN","transit_id":"208","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:25:58-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Beaumont, Karen.","transit_item_barcode":"31036000521853","transit_item_callnumber":"E BEAUMONT","transit_item_title":"I like myself!","transit_target_copy":"7387328","transit_dest_lib":"NCLS-COVTN","transit_id":"211","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:26:08-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Sandler, Martin W.","transit_item_barcode":"31036000522612","transit_item_callnumber":"J 388.42 SANDLER","transit_item_title":"Straphanging in the USA trolleys and subways in American life","transit_target_copy":"7360328","transit_dest_lib":"NCLS-COVTN","transit_id":"212","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-25T15:35:17-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},
+                               {"transit_item_author":"Bohjalian, Christopher A.","transit_item_barcode":"31036000538303","transit_item_callnumber":"F BOHJALIAN","transit_item_title":"Before you know kindness :  a novel","transit_target_copy":"7544549","transit_dest_lib":"NCLS-COVTN","transit_id":"218","transit_source":"ARL-ATH","transit_source_send_time":"2006-07-26T10:23:20-0400","capture_time":"   ","capture_timestamp":"   ","expire_time":"   ","patron_name":"undefined undefined, undefined","request_time":"   ","request_timestamp":"   ","hold_type":"   "},],
                                'offline_checkout' : [],
                                'offline_checkin' : [],
                                'offline_renew' : [],
@@ -176,15 +209,24 @@ circ.print_list_template_editor.prototype = {
                                                                        win.open('data:text/html,'
                                                                                + window.escape(
                                                                                        '<html style="width: 600; height: 400;">'
-                                                                                       + '<head><title>Template Macros</title></head>'
+                                                                                       + '<head><title>' 
+                                                                                       + document.getElementById('circStrings').getString('staff.circ.print_list_template.window.title')
+                                                                                       + '</title></head>'
                                                                                        + '<body onload="document.getElementById(\'btn\').focus()">'
-                                                                                       + '<h1>General:</h1>'
-                                                                                       + '<p>%PINES_CODE%, %TODAY%, %STAFF_FIRSTNAME%, %STAFF_LASTNAME%, '
+                                                                                       + '<h1>' +
+                                                                                       + document.getElementById('circStrings').getString('staff.circ.print_list_template.window.heading')
+                                                                                       + '</h1>'
+                                                                                       + '<p>%SHORTNAME%, %TODAY%, %STAFF_FIRSTNAME%, %STAFF_LASTNAME%, '
                                                                                        + '%PATRON_FIRSTNAME%, %LIBRARY%</p>'
-                                                                                       + '<h1>For type: '
-                                                                                       + template_type + '</h1>'
-                                                                                       + '<p>' + macro_string + '</p>'
-                                                                                       + '<button id="btn" onclick="window.close()">Close Window</button>'
+                                                                                       + '<h1>'
+                                                                                       + document.getElementById('circStrings').getFormattedString('staff.circ.print_list_template.window.template_type', [template_type])
+                                                                                       + '</h1>'
+                                                                                       + '<p>' 
+                                                                                       + macro_string 
+                                                                                       + '</p>'
+                                                                                       + '<button id="btn" onclick="window.close()">'
+                                                                                       + document.getElementById('circStrings').getString('staff.circ.print_list_template.window.close')
+                                                                                       + '</button>'
                                                                                        + '</body></html>'
                                                                                ), 'title', 'chrome,resizable');
                                                                } catch(E) {
@@ -274,8 +316,8 @@ circ.print_list_template_editor.prototype = {
                        JSAN.use('util.print'); var print = new util.print();
                        print.tree_list( params );
                } catch(E) {
-                       this.error.sdump('D_ERROR','preview: ' + E);
-                       alert('preview: ' + E);
+                       this.error.sdump('D_ERROR', document.getElementById('circStrings').getString('staff.circ.print_list_template.preview') + ' ' + E);
+                       alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.preview') + ' ' + E);
                }
        },
 
@@ -289,7 +331,7 @@ circ.print_list_template_editor.prototype = {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                JSAN.use('util.file'); var file = new util.file('print_list_templates');
                file.set_object(obj.data.print_list_templates); file.close();
-               alert('Template Saved\n' + js2JSON(obj.data.print_list_templates[name]));
+               alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.save') + '\n' + js2JSON(obj.data.print_list_templates[name]));
        },
 
        'export_templates' : function() {
@@ -297,10 +339,10 @@ circ.print_list_template_editor.prototype = {
                        var obj = this;
                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                        JSAN.use('util.file'); var f = new util.file('');
-            f.export_file( { 'title' : 'Save Templates File As', 'data' : obj.data.print_list_templates } );
+            f.export_file( { 'title' : document.getElementById('circStrings').getString('staff.circ.print_list_template.save_as'), 'data' : obj.data.print_list_templates } );
 
                } catch(E) {
-                       this.error.standard_unexpected_error_alert('Error exporting templates',E);
+                       this.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.export.error'),E);
                }
        },
 
@@ -309,8 +351,8 @@ circ.print_list_template_editor.prototype = {
                        var obj = this;
                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                        JSAN.use('util.file'); var f = new util.file('');
-            var temp = f.import_file( { 'title' : 'Import Templates File' } );
-            if (!temp) return;
+            var temp = f.import_file( { 'title' : document.getElementById('circStrings').getString('staff.circ.print_list_template.import') } );
+            if (!temp) { return; }
             var s = '';
             function set_t(k,v) {
                 obj.data.print_list_templates[k] = v;
@@ -318,15 +360,15 @@ circ.print_list_template_editor.prototype = {
             }
             for (var i in temp) { set_t(i,temp[i]); }
             obj.data.stash('print_list_templates');
-            alert('Imported these templates: ' + s);
+            alert(document.getElementById('circStrings').getFormattedString('staff.circ.print_list_template.import_results', [s]));
             if (xulG) { 
                 xulG.set_tab(xulG.url_prefix(urls.XUL_PRINT_LIST_TEMPLATE_EDITOR), {}, {});
             } else {
-                alert('Please reload this interface.');
+                alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.reload'));
             }
        
                } catch(E) {
-                       this.error.standard_unexpected_error_alert('Error importing templates',E);
+                       this.error.standard_unexpected_error_alert(document.getElementById('circStrings').getString('staff.circ.print_list_template.import.error'),E);
                }
        },
 
index 36d2a34..82ae6cf 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Application: Evergreen Staff Client -->
 <!-- Screen: Example Template for remote xul -->
 
@@ -11,7 +11,7 @@
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- LOCALIZATION -->
 <!DOCTYPE window PUBLIC "" ""[
-       <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
+       <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
 ]>
 
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
@@ -35,7 +35,9 @@
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-                               if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
+                               if (typeof JSAN == 'undefined') {
+                                       throw( document.getElementById("commonStrings").getString('common.jsan.missing') );
+                               }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                JSAN.use('util.error'); g.error = new util.error();
                                );
 
                                if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
-                                       try { window.xulG.set_tab_name('Receipt Template Editor'); } catch(E) { alert(E); }
+                                       try { window.xulG.set_tab_name(document.getElementById('circStrings').getString('staff.circ.print_list_template.tab_name')); } catch(E) { alert(E); }
                                }
 
                        } catch(E) {
-                               var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
-                                       "system administrator or software developer the following:\ncirc/print_list.xul\n" + E + '\n';
+                               var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['circ/print_list_template_editor.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
        ]]>
        </script>
 
+       <messagecatalog id="circStrings" src="/xul/server/locale/<!--#echo var='locale'-->/circ.properties" />
+
        <commandset id="print_list_cmds">
                <command id="cmd_broken" />
        </commandset>
 
        <groupbox id="main" flex="1">
-               <caption label="Templates" />
+               <caption label="&staff.circ.print_list.main.label;" />
                <hbox id="top_ui">
                        <groupbox flex="1">
-                               <caption label="ID" />
+                               <caption label="&staff.circ.print_list.top_ui.label;" />
                                <hbox>
-                                       <label value="Name" accesskey="N" control="template_name_menu" />
+                                       <label value="&staff.circ.print_list.top_ui.name.label;" accesskey="&staff.circ.print_list.top_ui.name.accesskey;" control="template_name_menu" />
                                        <hbox id="template_name_menu_placeholder" flex="1"/>
                                </hbox>
                                <hbox>
-                                       <label value="Type" />
+                                       <label value="&staff.circ.print_list.top_ui.type.label;" />
                                        <hbox id="template_type_menu_placeholder" />
                                </hbox>
                        </groupbox>
                        <groupbox orient="horizontal">
-                               <caption label="Actions" />
+                               <caption label="&staff.circ.print_list.top_ui.actions.label;" />
                                <vbox>
-                                       <button id="preview" label="Preview" accesskey="P" />
-                                       <button id="macros" label="Macros" accesskey="M" />
+                                       <button id="preview" label="&staff.circ.print_list.top_ui.preview.label;" accesskey="&staff.circ.print_list.top_ui.preview.accesskey;" />
+                                       <button id="macros" label="&staff.circ.print_list.top_ui.macros.label;" accesskey="&staff.circ.print_list.top_ui.macros.accesskey;" />
                                </vbox>
                                <vbox>
-                                       <button id="default" label="Default" accesskey="D" />
-                                       <button id="save" label="Save Locally" accesskey="S" />
+                                       <button id="default" label="&staff.circ.print_list.top_ui.default.label;" accesskey="&staff.circ.print_list.top_ui.default.accesskey;" />
+                                       <button id="save" label="&staff.circ.print_list.top_ui.save.label;" accesskey="&staff.circ.print_list.top_ui.save.accesskey;" />
                                </vbox>
                                <vbox>
-                                       <description>Be sure to "Save Locally" before export</description>
-                                       <button id="export" label="Export" accesskey="E" />
-                                       <button id="import" label="Import" accesskey="I" />
+                                       <description>&staff.circ.print_list.top_ui.description;</description>
+                                       <button id="export" label="&staff.circ.print_list.top_ui.description.export.label;" accesskey="&staff.circ.print_list.top_ui.description.export.accesskey;" />
+                                       <button id="import" label="&staff.circ.print_list.top_ui.description.import.label;" accesskey="&staff.circ.print_list.top_ui.description.import.accesskey;" />
                                </vbox>
                        </groupbox>
                </hbox>
                <hbox flex="1">
                        <groupbox flex="1">
-                               <caption label="Preview" />
+                               <caption label="&staff.circ.print_list.top_ui.preview.label;" />
                                <iframe id="sample" flex="1"/>
                        </groupbox>
                        <vbox flex="1">
                                <groupbox flex="1">
-                                       <caption label="Header"/>
+                                       <caption label="&staff.circ.print_list.header.label;"/>
                                        <textbox id="header" multiline="true" flex="1"/>
                                </groupbox>
                                <groupbox flex="1">
-                                       <caption label="Line Item"/>
+                                       <caption label="&staff.circ.print_list.line_item.label;"/>
                                        <textbox id="line_item" multiline="true" flex="1"/>
                                </groupbox>
                                <groupbox flex="1">
-                                       <caption label="Footer"/>
+                                       <caption label="&staff.circ.print_list.footer.label;"/>
                                        <textbox id="footer" multiline="true" flex="1"/>
                                </groupbox>
                        </vbox>
index 2dd174e..b6f75d4 100644 (file)
@@ -75,6 +75,7 @@ staff.circ.copy_details.not_transit=This item is not in transit.
 staff.circ.copy_details.user_details=%1$s, %2$s : %3$s
 staff.circ.copy_details.bad_hold_status=This item is not captured for a hold, however its status is incorrectly set to "On Holds Shelf".  Please check this item in to correct the status.
 staff.circ.copy_details.no_hold=This item is not captured for a hold.
+staff.circ.copy_status.tab_name=Item Status
 staff.circ.copy_status.action.complete=Action complete.
 staff.circ.copy_status.sel_checkin.error=Checkin did not likely happen.
 staff.circ.copy_status.cmd_replace_barcode.error=Barcode %1$s was not likely replaced.
@@ -132,3 +133,48 @@ staff.circ.copy_status.status.pre_cat=Item is a pre-cataloged item.
 staff.circ.copy_status.status.hold=Item is captured for a Hold.
 staff.circ.copy_status.status.transit=Item is in Transit.
 staff.circ.copy_status.status.circ=Item is circulating.
+staff.circ.hold_capture.print.to_printer=To Printer
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.barcode= Barcode:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.title=   Title:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.author=  Author:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.route_to=Route to:
+# pad this with whitespace to align with the rest of the staff.circ.hold_capture.print.* entries
+staff.circ.hold_capture.print.patron=  Patron:
+staff.circ.hold_capture.calling_external=circ.hold_capture: Calling external .on_hold_capture()
+staff.circ.hold_capture.no_external=circ.hold_capture: No external .on_hold_capture()
+staff.circ.hold_capture.capture_failed=Could not capture hold.
+staff.circ.hold_capture.error=FIXME: need special alert and error handling
+staff.circ.in_house_use.tab_name=In-House Use
+staff.circ.in_house_use.barcode=Barcode:
+staff.circ.in_house_use.noncat_sort_error=error in noncat sorting:
+staff.circ.in_house_use.noncataloged=Non-Cataloged
+staff.circ.in_house_use.items_dump=items = 
+staff.circ.in_house_use.confirm_multiple=Are you sure you want to mark %1$s as having been used %2$s times?
+staff.circ.in_house_use.confirm_multiple.title=In-House Use Verification
+staff.circ.in_house_use.yes=Yes
+staff.circ.in_house_use.no=No
+# adjust Circulation -> Offline Interface to match your translation in lang.dtd
+staff.circ.in_house_use.failed.verbose=In House Use Failed.  If you wish to use the offline interface, in the top menubar select Circulation -> Offline Interface
+staff.circ.in_house_use.failed=In House Use Failed
+staff.circ.in_house_use.ok=OK
+staff.circ.in_house_use.external=circ.in_house_use: Calling external .on_in_house_use()
+staff.circ.in_house_use.no_external=circ.in_house_use: No external .on_in_house_use()
+staff.circ.in_house_use.on_failure.external=circ.in_house_use: Calling external .on_failure()
+staff.circ.in_house_use.on_failure.no_external=circ.in_house_use: No external .on_failure()
+staff.circ.print_list_template.window.title=Template Macros
+staff.circ.print_list_template.window.heading=General:
+staff.circ.print_list_template.window.template_type=For type: %1$s
+staff.circ.print_list_template.window.close=Close Window
+staff.circ.print_list_template.preview=preview: 
+staff.circ.print_list_template.save=Template Saved
+staff.circ.print_list_template.save_as=Save Templates File As
+staff.circ.print_list_template.export.error=Error exporting templates
+staff.circ.print_list_template.import=Import Templates File
+staff.circ.print_list_template.import_results=Imported these templates: %1$s
+staff.circ.print_list_template.reload=Please reload this interface.
+staff.circ.print_list_template.import.error=Error exporting templates
+staff.circ.print_list_template.tab_name=Receipt Template Editor