1 sdump('D_TRACE','Loading print.js\n');
3 var print_crlf = '<br />\r\n';
7 function print_itemsout_receipt(params) {
8 sdump('D_PRINT',arg_dump(arguments));
9 var s = ''; params.current_circ = new circ(); params.current_copy = new acp(); params.current_mvr = new mvr();
10 if (params.header) { s += print_template_replace(params.header, params); }
11 for (var i = 0; i < params.au.checkouts().length; i++) {
12 params.current_circ = params.au.checkouts()[i].circ;
13 params.current_copy = params.au.checkouts()[i].copy;
14 params.current_mvr = params.au.checkouts()[i].record;
15 params.current_index = i;
16 s += print_template_replace(params.line_item, params);
18 if (params.footer) { s += print_template_replace(params.footer, params); }
19 s = s.replace( /\n/g, print_crlf );
23 function print_template_replace(s,params) {
26 if (params.truncate) {
28 return t.toString().substr(0,params.truncate);
37 if (params.title_truncate) {
39 return t.toString().substr(0,params.title_truncate);
48 if (params.author_truncate) {
50 return t.toString().substr(0,params.author_truncate);
61 var b = s.match( /%TRUNC.{0,3}:\s*(\d+)%/ );
62 if (b) params.truncate = b[1];
64 try{s=s.replace(/%TRUNC.{0,3}:\s*\d+%/g,'');}
65 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
66 try{s=s.replace(/%LIBRARY%/g,trunc(params.lib.name()));}
67 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
68 try{s=s.replace(/%PINES_CODE%/g,trunc(params.lib.shortname()));}
69 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
71 try{s=s.replace(/%PATRON_LASTNAME%/g,trunc(params.au.family_name()));}
72 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
73 try{s=s.replace(/%PATRON_FIRSTNAME%/g,trunc(params.au.first_given_name()));}
74 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
75 try{s=s.replace(/%PATRON_MIDDLENAME%/g,trunc(params.au.second_given_name()));}
76 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
77 try{s=s.replace(/%PATRON_BARCODE%/g,trunc(params.au.card().barcode()));}
78 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
80 try{s=s.replace(/%TODAY%/g,trunc(new Date()));}
81 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
82 try{s=s.replace(/%TODAY_m%/g,trunc(formatted_date(new Date(),'%m')));}
83 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
84 try{s=s.replace(/%TODAY_d%/g,trunc(formatted_date(new Date(),'%d')));}
85 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
86 try{s=s.replace(/%TODAY_Y%/g,trunc(formatted_date(new Date(),'%Y')));}
87 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
88 try{s=s.replace(/%TODAY_H%/g,trunc(formatted_date(new Date(),'%H')));}
89 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
90 try{s=s.replace(/%TODAY_I%/g,trunc(formatted_date(new Date(),'%I')));}
91 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
92 try{s=s.replace(/%TODAY_M%/g,trunc(formatted_date(new Date(),'%M')));}
93 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
94 try{s=s.replace(/%TODAY_D%/g,trunc(formatted_date(new Date(),'%D')));}
95 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
96 try{s=s.replace(/%TODAY_F%/g,trunc(formatted_date(new Date(),'%F')));}
97 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
99 try{s=s.replace(/%OUT%/g,trunc(params.current_circ.xact_start()));}
100 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
101 try{s=s.replace(/%OUT_m%/g,trunc(formatted_date(params.current_circ.xact_start(),'%m')));}
102 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
103 try{s=s.replace(/%OUT_d%/g,trunc(formatted_date(params.current_circ.xact_start(),'%d')));}
104 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
105 try{s=s.replace(/%OUT_Y%/g,trunc(formatted_date(params.current_circ.xact_start(),'%Y')));}
106 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
107 try{s=s.replace(/%OUT_H%/g,trunc(formatted_date(params.current_circ.xact_start(),'%H')));}
108 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
109 try{s=s.replace(/%OUT_I%/g,trunc(formatted_date(params.current_circ.xact_start(),'%I')));}
110 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
111 try{s=s.replace(/%OUT_M%/g,trunc(formatted_date(params.current_circ.xact_start(),'%M')));}
112 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
113 try{s=s.replace(/%OUT_D%/g,trunc(formatted_date(params.current_circ.xact_start(),'%D')));}
114 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
115 try{s=s.replace(/%OUT_F%/g,trunc(formatted_date(params.current_circ.xact_start(),'%F')));}
116 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
118 try{s=s.replace(/%DUE%/g,trunc(params.current_circ.due_date()));}
119 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
120 try{s=s.replace(/%DUE_m%/g,trunc(formatted_date(params.current_circ.due_date(),'%m')));}
121 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
122 try{s=s.replace(/%DUE_d%/g,trunc(formatted_date(params.current_circ.due_date(),'%d')));}
123 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
124 try{s=s.replace(/%DUE_Y%/g,trunc(formatted_date(params.current_circ.due_date(),'%Y')));}
125 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
126 try{s=s.replace(/%DUE_H%/g,trunc(formatted_date(params.current_circ.due_date(),'%H')));}
127 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
128 try{s=s.replace(/%DUE_I%/g,trunc(formatted_date(params.current_circ.due_date(),'%I')));}
129 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
130 try{s=s.replace(/%DUE_M%/g,trunc(formatted_date(params.current_circ.due_date(),'%M')));}
131 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
132 try{s=s.replace(/%DUE_D%/g,trunc(formatted_date(params.current_circ.due_date(),'%D')));}
133 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
134 try{s=s.replace(/%DUE_F%/g,trunc(formatted_date(params.current_circ.due_date(),'%F')));}
135 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
137 try{s=s.replace(/%DURATION%/g,trunc(params.current_circ.duration()));}
138 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
140 try{s=s.replace(/%COPY_BARCODE%/g,trunc(params.current_copy.barcode()));}
141 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
143 var tb = s.match( /%TITLE:?\s*(\d*)%/ );
144 if (tb) params.title_truncate = tb[1];
146 try{s=s.replace(/%TITLE:?\s*\d*%/g,ttrunc(params.current_mvr.title()));}
147 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
149 var ab = s.match( /%AUTHOR:?\s*(\d*)%/ );
150 if (ab) params.author_truncate = ab[1];
152 try{s=s.replace(/%AUTHOR%/g,atrunc(params.current_mvr.author()));}
153 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
154 try{s=s.replace(/%PUBLISHER%/g,trunc(params.current_mvr.publisher()));}
155 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
156 try{s=s.replace(/%PUBDATE%/g,trunc(params.current_mvr.pubdate()));}
157 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
159 try{s=s.replace(/%NUMBER%/g,(params.current_index+1));}
160 catch(E){sdump('D_ERROR','string = <' + s + '> error = ' + js2JSON(E)+'\n');}
168 sdump('D_PRINT',arg_dump(arguments));
169 var w = new_window('data:text/html,<html>' + s + '</html>\r\n', { 'window_name':'LastPrint' });
172 w.minimize(); mw.minimize();
175 w.minimize(); mw.minimize();
183 sdump('D_PRINT',arg_dump(arguments));
184 if (!w) { w = this; }
186 var webBrowserPrint = w
187 .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
188 .getInterface(Components.interfaces.nsIWebBrowserPrint);
189 if (webBrowserPrint) {
190 var gPrintSettings = GetPrintSettings();
192 gPrintSettings.printSilent = true;
193 gPrintSettings.marginTop = 0;
194 gPrintSettings.marginLeft = 0;
195 gPrintSettings.marginBottom = 0;
196 gPrintSettings.marginRight = 0;
197 gPrintSettings.headerStrLeft = '';
198 gPrintSettings.headerStrCenter = '';
199 gPrintSettings.headerStrRight = '';
200 gPrintSettings.footerStrLeft = '';
201 gPrintSettings.footerStrCenter = '';
202 gPrintSettings.footerStrRight = '';
204 webBrowserPrint.print(gPrintSettings, null);
205 //alert('Should be printing\n');
207 //alert('Should not be printing\n');
210 //alert('Probably not printing: ' + e);
211 // Pressing cancel is expressed as an NS_ERROR_ABORT return value,
212 // causing an exception to be thrown which we catch here.
213 // Unfortunately this will also consume helpful failures, so add a
214 sdump('D_PRINT','PRINT EXCEPTION: ' + js2JSON(e) + '\n'); // if you need to debug
218 var gPrintSettings = null;
220 function GetPrintSettings()
222 sdump('D_PRINT',arg_dump(arguments));
224 if (gPrintSettings == null) {
225 var pref = Components.classes["@mozilla.org/preferences-service;1"]
226 .getService(Components.interfaces.nsIPrefBranch);
228 gPrintSettingsAreGlobal = pref.getBoolPref("print.use_global_printsettings", false);
229 gSavePrintSettings = pref.getBoolPref("print.save_print_settings", false);
232 var printService = Components.classes["@mozilla.org/gfx/printsettings-service;1"]
233 .getService(Components.interfaces.nsIPrintSettingsService);
234 if (gPrintSettingsAreGlobal) {
235 gPrintSettings = printService.globalPrintSettings;
236 setPrinterDefaultsForSelectedPrinter(printService);
238 gPrintSettings = printService.newPrintSettings;
242 sdump('D_PRINT',"GetPrintSettings() "+e+"\n");
243 alert("GetPrintSettings() "+e+"\n");
246 return gPrintSettings;
249 function setPrinterDefaultsForSelectedPrinter(aPrintService)
251 sdump('D_PRINT',arg_dump(arguments));
252 if (gPrintSettings.printerName == "") {
253 gPrintSettings.printerName = aPrintService.defaultPrinterName;
256 // First get any defaults from the printer
257 aPrintService.initPrintSettingsFromPrinter(gPrintSettings.printerName, gPrintSettings);
259 // now augment them with any values from last time
260 aPrintService.initPrintSettingsFromPrefs(gPrintSettings, true, gPrintSettings.kInitSaveAll);