From 4084d1f3f8e89316d03390bc5e1d3623b8e95df4 Mon Sep 17 00:00:00 2001 From: phasefx Date: Thu, 3 Aug 2006 05:03:49 +0000 Subject: [PATCH] printer settings git-svn-id: svn://svn.open-ils.org/ILS/trunk@5241 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../xul/staff_client/chrome/content/util/print.js | 84 ++++++++++++++++++++-- .../xul/staff_client/server/OpenILS/global_util.js | 30 ++++++++ .../staff_client/server/OpenILS/util_overlay.xul | 35 +-------- Open-ILS/xul/staff_client/server/admin/index.xhtml | 3 + .../server/admin/printer_settings.html | 12 ++++ .../staff_client/server/admin/printer_settings.js | 40 +++++++++++ .../staff_client/server/admin/printer_settings.txt | 15 ++++ 7 files changed, 178 insertions(+), 41 deletions(-) create mode 100644 Open-ILS/xul/staff_client/server/OpenILS/global_util.js create mode 100644 Open-ILS/xul/staff_client/server/admin/printer_settings.html create mode 100644 Open-ILS/xul/staff_client/server/admin/printer_settings.js create mode 100644 Open-ILS/xul/staff_client/server/admin/printer_settings.txt diff --git a/Open-ILS/xul/staff_client/chrome/content/util/print.js b/Open-ILS/xul/staff_client/chrome/content/util/print.js index e2d4b886c7..d154ece1c3 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/print.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/print.js @@ -271,24 +271,35 @@ util.print.prototype = { this.error.sdump('D_PRINT','webBrowserPrint = ' + webBrowserPrint); if (webBrowserPrint) { var gPrintSettings = obj.GetPrintSettings(); + //obj.error.standard_unexpected_error_alert('debugging printer settings #1',gPrintSettings); + //var s = '1: '; for (var i in gPrintSettings) if (i.match(/^paper/)) s += i + ': ' + gPrintSettings[i] + '\n'; alert(s); if (silent) gPrintSettings.printSilent = true; else gPrintSettings.printSilent = false; + //alert('silent = ' + silent + ' printSilent = ' + gPrintSettings.printSilent); if (params) { + /* They can set these now in Local Admin */ + /* gPrintSettings.marginTop = 0; gPrintSettings.marginLeft = 0; gPrintSettings.marginBottom = 0; gPrintSettings.marginRight = 0; + */ if (params.marginLeft) gPrintSettings.marginLeft = params.marginLeft; } + /* gPrintSettings.headerStrLeft = ''; gPrintSettings.headerStrCenter = ''; gPrintSettings.headerStrRight = ''; gPrintSettings.footerStrLeft = ''; gPrintSettings.footerStrCenter = ''; gPrintSettings.footerStrRight = ''; + */ //this.error.sdump('D_PRINT','gPrintSettings = ' + obj.error.pretty_print(js2JSON(gPrintSettings))); //alert('gPrintSettings = ' + js2JSON(gPrintSettings)); webBrowserPrint.print(gPrintSettings, null); + //var s = '2: '; for (var i in gPrintSettings) if (i.match(/^paper/)) s += i + ': ' + gPrintSettings[i] + '\n'; alert(s); + + /* This isn't working for kInitSavePageData, so we're going to save gPrintSettings ourselves from the local admin screen */ /* if (this.gPrintSettingsAreGlobal && this.gSavePrintSettings) { var PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"] @@ -297,44 +308,50 @@ util.print.prototype = { PSSVC.savePrintSettingsToPrefs( gPrintSettings, false, gPrintSettings.kInitSavePrinterName); } */ + //var s = '3: '; for (var i in gPrintSettings) if (i.match(/^paper/)) s += i + ': ' + gPrintSettings[i] + '\n'; alert(s); + //obj.error.standard_unexpected_error_alert('debugging printer settings #3',gPrintSettings); //this.error.sdump('D_PRINT','gPrintSettings 2 = ' + obj.error.pretty_print(js2JSON(gPrintSettings))); //alert('Should be printing\n'); this.error.sdump('D_PRINT','Should be printing\n'); } else { //alert('Should not be printing\n'); - this.error.sdump('D_PRINT','Should not be printing\n'); + this.error.sdump('D_ERROR','Should not be printing\n'); } } catch (e) { //alert('Probably not printing: ' + e); // Pressing cancel is expressed as an NS_ERROR_ABORT return value, // causing an exception to be thrown which we catch here. - // Unfortunately this will also consume helpful failures, so add a - this.error.sdump('D_PRINT','PRINT EXCEPTION: ' + js2JSON(e) + '\n'); - // if you need to debug + // Unfortunately this will also consume helpful failures + this.error.sdump('D_ERROR','PRINT EXCEPTION: ' + js2JSON(e) + '\n'); } }, 'GetPrintSettings' : function() { try { + //alert('entering GetPrintSettings'); netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var pref = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); + //alert('pref = ' + pref); if (pref) { this.gPrintSettingsAreGlobal = pref.getBoolPref("print.use_global_printsettings", false); this.gSavePrintSettings = pref.getBoolPref("print.save_print_settings", false); + //alert('gPrintSettingsAreGlobal = ' + this.gPrintSettingsAreGlobal + ' gSavePrintSettings = ' + this.gSavePrintSettings); } var printService = Components.classes["@mozilla.org/gfx/printsettings-service;1"] .getService(Components.interfaces.nsIPrintSettingsService); if (this.gPrintSettingsAreGlobal) { this.gPrintSettings = printService.globalPrintSettings; + //alert('called setPrinterDefaultsForSelectedPrinter'); this.setPrinterDefaultsForSelectedPrinter(printService); } else { this.gPrintSettings = printService.newPrintSettings; + //alert('used printService.newPrintSettings'); } } catch (e) { - this.error.sdump('D_PRINT',"GetPrintSettings() "+e+"\n"); + this.error.sdump('D_ERROR',"GetPrintSettings() "+e+"\n"); //alert("GetPrintSettings() "+e+"\n"); } @@ -346,17 +363,70 @@ util.print.prototype = { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); if (this.gPrintSettings.printerName == "") { this.gPrintSettings.printerName = aPrintService.defaultPrinterName; + //alert('used .defaultPrinterName'); } + //alert('printerName = ' + this.gPrintSettings.printerName); // First get any defaults from the printer aPrintService.initPrintSettingsFromPrinter(this.gPrintSettings.printerName, this.gPrintSettings); // now augment them with any values from last time aPrintService.initPrintSettingsFromPrefs(this.gPrintSettings, true, this.gPrintSettings.kInitSaveAll); + + // now augment from our own saved settings if they exist + this.load_settings(); + + } catch(E) { + this.error.sdump('D_ERROR',"setPrinterDefaultsForSelectedPrinter() "+E+"\n"); + } + }, + + 'page_settings' : function() { + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + this.GetPrintSettings(); + var PO = Components.classes["@mozilla.org/gfx/printsettings-service;1"].getService(Components.interfaces.nsIPrintOptions); + PO.ShowPrintSetupDialog(this.gPrintSettings); } catch(E) { - this.error.sdump('D_PRINT',"setPrinterDefaultsForSelectedPrinter() "+E+"\n"); + this.error.standard_unexpected_error_alert("page_settings()",E); } - } + }, + + 'load_settings' : function() { + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + JSAN.use('util.file'); var file = new util.file('gPrintSettings'); + if (file._file.exists()) { + temp = file.get_object(); file.close(); + for (var i in temp) { + this.gPrintSettings[i] = temp[i]; + } + } else { + this.gPrintSettings.marginTop = 0; + this.gPrintSettings.marginLeft = 0; + this.gPrintSettings.marginBottom = 0; + this.gPrintSettings.marginRight = 0; + this.gPrintSettings.headerStrLeft = ''; + this.gPrintSettings.headerStrCenter = ''; + this.gPrintSettings.headerStrRight = ''; + this.gPrintSettings.footerStrLeft = ''; + this.gPrintSettings.footerStrCenter = ''; + this.gPrintSettings.footerStrRight = ''; + } + } catch(E) { + this.error.standard_unexpected_error_alert("load_settings()",E); + } + }, + + 'save_settings' : function() { + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + JSAN.use('util.file'); var file = new util.file('gPrintSettings'); + file.set_object(this.gPrintSettings); file.close(); + } catch(E) { + this.error.standard_unexpected_error_alert("save_settings()",E); + } + }, } dump('exiting util/print.js\n'); diff --git a/Open-ILS/xul/staff_client/server/OpenILS/global_util.js b/Open-ILS/xul/staff_client/server/OpenILS/global_util.js new file mode 100644 index 0000000000..8775dc6c7c --- /dev/null +++ b/Open-ILS/xul/staff_client/server/OpenILS/global_util.js @@ -0,0 +1,30 @@ + function ses(a) { + JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'}); + switch(a) { + case 'authtime' : + return data.session.authtime; + break; + case 'key': + default: + return data.session.key; + break; + } + } + + function get_bool(a) { + // Normal javascript interpretation except 'f' == false, per postgres, and 'F' == false + // So false includes 'f', '', 0, null, and undefined + if (a == 'f') return false; + if (a == 'F') return false; + if (a) return true; else return false; + } + + function get_db_true() { + return 't'; + } + + function get_db_false() { + return 'f'; + } + + diff --git a/Open-ILS/xul/staff_client/server/OpenILS/util_overlay.xul b/Open-ILS/xul/staff_client/server/OpenILS/util_overlay.xul index cc8cd06812..988eb47ffa 100644 --- a/Open-ILS/xul/staff_client/server/OpenILS/util_overlay.xul +++ b/Open-ILS/xul/staff_client/server/OpenILS/util_overlay.xul @@ -17,40 +17,7 @@ + diff --git a/Open-ILS/xul/staff_client/server/admin/index.xhtml b/Open-ILS/xul/staff_client/server/admin/index.xhtml index 70e1c4d35e..ae16b30ad4 100644 --- a/Open-ILS/xul/staff_client/server/admin/index.xhtml +++ b/Open-ILS/xul/staff_client/server/admin/index.xhtml @@ -30,6 +30,9 @@
Library Settings Editor
+
+ Printer Settings Editor +
diff --git a/Open-ILS/xul/staff_client/server/admin/printer_settings.html b/Open-ILS/xul/staff_client/server/admin/printer_settings.html new file mode 100644 index 0000000000..05a8502705 --- /dev/null +++ b/Open-ILS/xul/staff_client/server/admin/printer_settings.html @@ -0,0 +1,12 @@ + + + + + + +
+ +
+ + diff --git a/Open-ILS/xul/staff_client/server/admin/printer_settings.js b/Open-ILS/xul/staff_client/server/admin/printer_settings.js new file mode 100644 index 0000000000..e768b43ddb --- /dev/null +++ b/Open-ILS/xul/staff_client/server/admin/printer_settings.js @@ -0,0 +1,40 @@ +var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {}; + +function my_init() { + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); } + JSAN.errorLevel = "die"; // none, warn, or die + JSAN.addRepository('/xul/server/'); + JSAN.use('util.error'); g.error = new util.error(); + g.error.sdump('D_TRACE','my_init() for printer_settings.xul'); + + JSAN.use('util.print'); g.print = new util.print(); + + /* + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + g.PSSVC = Components.classes["@mozilla.org/gfx/printsettings-service;1"].getService(Components.interfaces.nsIPrintSettingsService); + g.PO = Components.classes["@mozilla.org/gfx/printsettings-service;1"].getService(Components.interfaces.nsIPrintOptions); + g.PPSVC = Components.classes["@mozilla.org/embedcomp/printingprompt-service;1"].getService(Components.interfaces.nsIPrintingPromptService); + g.settings = g.PSSVC.globalPrintSettings; + */ + + } catch(E) { + try { g.error.standard_unexpected_error_dialog('admin/printer_settings.xul',E); } catch(F) { alert(E); } + } +} + +g.page_settings = function() { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + g.print.page_settings(); + g.print.save_settings(); +} + +g.printer_settings = function() { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var w = document.getElementById('sample').contentWindow; + g.print.NSPrint(w ? w : window); + g.print.save_settings(); +} + +g.save_settings = function() { g.print.save_settings(); } diff --git a/Open-ILS/xul/staff_client/server/admin/printer_settings.txt b/Open-ILS/xul/staff_client/server/admin/printer_settings.txt new file mode 100644 index 0000000000..be95e10aa4 --- /dev/null +++ b/Open-ILS/xul/staff_client/server/admin/printer_settings.txt @@ -0,0 +1,15 @@ +Test Print + +1234567890 + +12345678901234567890 + +123456789012345678901234567890 + +1234567890123456789012345678901234567890 + +12345678901234567890123456789012345678901234567890 + +12345678901234567890123456789012345678901234567890123456790 + +Test Print -- 2.11.0