printer settings
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 3 Aug 2006 05:03:49 +0000 (05:03 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 3 Aug 2006 05:03:49 +0000 (05:03 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@5241 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/chrome/content/util/print.js
Open-ILS/xul/staff_client/server/OpenILS/global_util.js [new file with mode: 0644]
Open-ILS/xul/staff_client/server/OpenILS/util_overlay.xul
Open-ILS/xul/staff_client/server/admin/index.xhtml
Open-ILS/xul/staff_client/server/admin/printer_settings.html [new file with mode: 0644]
Open-ILS/xul/staff_client/server/admin/printer_settings.js [new file with mode: 0644]
Open-ILS/xul/staff_client/server/admin/printer_settings.txt [new file with mode: 0644]

index e2d4b88..d154ece 100644 (file)
@@ -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 (file)
index 0000000..8775dc6
--- /dev/null
@@ -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';
+       }
+
+
index cc8cd06..988eb47 100644 (file)
                <script type="text/javascript" src="/opac/common/js/RemoteRequest.js" />
                <script type="text/javascript" src="/opac/common/js/OrgTree.js" />
                <script type="text/javascript" src="/opac/common/js/org_utils.js" />   
-               <script type="text/javascript">
-               <![CDATA[
-
-                       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';
-                       }
-
-               ]]>
-               </script>
+               <script type="text/javascript" src="global_util.js" />   
                <script>dump('finished openils_util_overlay\n');</script>
        </scripts>
 
index 70e1c4d..ae16b30 100644 (file)
@@ -30,6 +30,9 @@
                        <div style='padding: 8px;'>
                                <a href='javascript:_l("org_settings.xhtml");'>Library Settings Editor</a>
                        </div>
+                       <div style='padding: 8px;'>
+                               <a href='javascript:_l("printer_settings.html");'>Printer Settings Editor</a>
+                       </div>
                </center>
        </body>
 </html>
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 (file)
index 0000000..05a8502
--- /dev/null
@@ -0,0 +1,12 @@
+<html><head>
+       <script type="text/javascript" src="/opac/common/js/JSON.js" />
+       <script type="text/javascript" src="/xul/server/OpenILS/global_utils.js"></script>
+       <script type="text/javascript" src="/xul/server/main/constants.js"></script>
+       <script type="text/javascript" src="/xul/server/main/JSAN.js"></script>
+       <script type="text/javascript" src="printer_settings.js"></script>
+</head><body onload="try { my_init(); } catch(E) { alert(E); }">
+       <iframe id="sample" src="printer_settings.txt"></iframe><br />
+       <button onclick="try { g.printer_settings(); } catch(E) { alert(E); }">Set Default Printer and Print Test Page</button>
+       <button onclick="try { g.page_settings(); } catch(E) { alert(E); }">Page Settings</button><br />
+</body></html>
+
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 (file)
index 0000000..e768b43
--- /dev/null
@@ -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 (file)
index 0000000..be95e10
--- /dev/null
@@ -0,0 +1,15 @@
+Test Print
+
+1234567890
+
+12345678901234567890
+
+123456789012345678901234567890
+
+1234567890123456789012345678901234567890
+
+12345678901234567890123456789012345678901234567890
+
+12345678901234567890123456789012345678901234567890123456790
+
+Test Print