use dojo dialog + iframe for receipt printing instead of window.open to avoid popup...
authorberick <berick@esilibrary.com>
Fri, 11 Feb 2011 16:18:28 +0000 (11:18 -0500)
committerberick <berick@esilibrary.com>
Fri, 11 Feb 2011 16:18:28 +0000 (11:18 -0500)
Open-ILS/web/opac/skin/kcls/js/myopac.js
Open-ILS/web/opac/skin/kcls/xml/myopac/myopac_summary.xml

index e50e2ef..af91e05 100644 (file)
@@ -1433,7 +1433,13 @@ function _myopacDrawPayments(r) {
     );\r
 }\r
 \r
-function emailPaymentReceipt(paymentIds) {\r
+function emailPaymentReceipt(paymentIds, callback) {\r
+\r
+    if(!G.user.email()) {\r
+        if(callback) callback();\r
+        return;\r
+    }\r
+\r
     progressDialog.show(true);\r
 \r
     fieldmapper.standardRequest(\r
@@ -1444,7 +1450,7 @@ function emailPaymentReceipt(paymentIds) {
             oncomplete : function(r) {\r
                 progressDialog.hide();\r
                 openils.Util.readResponse(r);\r
-                alert('Email will be delivered shortly...');\r
+                if(callback) callback();\r
             }\r
         }\r
     );\r
@@ -1549,6 +1555,7 @@ function showPaymentForm() {
                        G.user.last_xact_id(resp.last_xact_id); // update to match latest from server\r
             $('cc-payment-error-message').innerHTML = 'Payment Successful\nTRANSACTION ID: '+resp.last_xact_id;\r
                        printPaymentReceipt(resp.payments);\r
+            emailPaymentReceipt(resp.payments);\r
                        hideMe($('pay_fines_now'));unHideMe($('acct_sum'));\r
                        finesShown = false;\r
                        myOPACShowFines();              \r
@@ -2140,21 +2147,35 @@ function sortCheckedHist(by) {
 }\r
 \r
 function printData(data, numItems, callback) {\r
-    var win = window.open('', '', 'resizable,width=350,height=250,scrollbars=1'); \r
-    win.document.body.innerHTML = data;\r
-    win.print();\r
-\r
-    var sleepTime = 1000;\r
-    if(numItems > 0) \r
-        sleepTime += (numItems / 2) * 1000;\r
-\r
-    setTimeout(\r
-        function() { \r
-            win.close(); // close the print window\r
-            if(callback) callback(); // fire optional post-print callback\r
-        },\r
-        sleepTime \r
-    );\r
+\r
+    //unHideMe($('receipt-print-frame-wrapper'));\r
+    receiptPrintDialog.show();\r
+\r
+    var frame = window["receipt-frame"];\r
+    frame.document.body.innerHTML = data;\r
+\r
+    var cancel = $('receipt-view-print-cancel');\r
+    cancel.onclick = function() {\r
+        frame.document.body.innerHTML = '';\r
+       // hideMe($('receipt-print-frame-wrapper'));\r
+        receiptPrintDialog.hide();\r
+    }\r
+\r
+    $('receipt-view-print-button').onclick = function() {\r
+        frame.focus();\r
+        frame.print();\r
+        var sleepTime = 1000;\r
+        if(numItems > 0) \r
+            sleepTime += (numItems / 2) * 1000;\r
+\r
+        setTimeout(\r
+            function() { \r
+                cancel.onclick();\r
+                if(callback) callback(); // fire optional post-print callback\r
+            },\r
+            sleepTime \r
+        );\r
+    };\r
 }\r
 \r
 \r
index bf442c8..375bdaf 100644 (file)
 </div>\r
 </div>\r
 \r
+<!--\r
+<div id='receipt-print-frame-wrapper' class='hide_me'>\r
+-->\r
+<div dojoType='dijit.Dialog' jsId='receiptPrintDialog'>\r
+    <div>\r
+        <button id='receipt-view-print-button'>Print</button>\r
+        <button id='receipt-view-print-cancel'>Cancel</button>\r
+    </div>\r
+    <iframe name='receipt-frame' style='border:1px solid #888; overflow:auto; width:500px; height:500px;'></iframe>\r
+</div>\r
+\r
 <div id="pay_fines_now" class="hide_me">\r
 <div id='cc-payment-error-message' style='font-weight: bold; color: red; padding: 10px; border: 1px solid #888' class='hide_me'/>\r
 <table id='oils-selfck-cc-payment-table'>\r