xulG.fromBack() in browser contexts returns true if the Back navigation was used...
authorJason Etheridge <jason@esilibrary.com>
Mon, 28 Mar 2011 20:33:13 +0000 (16:33 -0400)
committerJason Etheridge <jason@esilibrary.com>
Mon, 28 Mar 2011 20:34:12 +0000 (16:34 -0400)
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Open-ILS/xul/staff_client/chrome/content/util/browser.js

index 41ff0d2..ad55b3d 100644 (file)
@@ -14,6 +14,8 @@ util.browser.prototype = {
 
     'lock_reload' : false, // as opposed to lock 'n load :)
 
+    'back_button_clicked' : false,
+
     'init' : function( params ) {
 
         try {
@@ -115,7 +117,10 @@ util.browser.prototype = {
                                 try {
                                     netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                                     var n = obj.getWebNavigation();
-                                    if (n.canGoBack) n.goBack();
+                                    if (n.canGoBack) {
+                                        obj.back_button_clicked = true;
+                                        n.goBack();
+                                    }
                                 } catch(E) {
                                     var err = 'cmd_back: ' + E;
                                     obj.error.sdump('D_ERROR',err);
@@ -265,6 +270,14 @@ util.browser.prototype = {
             cw.IAMXUL = true;
             cw.XUL_BUILD_ID = '/xul/server/'.split(/\//)[2];
             cw.xulG = obj.passthru_content_params || {};
+            cw.xulG.fromBack = function() {
+                if (obj.back_button_clicked) {
+                    obj.back_button_clicked = false;
+                    return true;
+                } else {
+                    return false;
+                }
+            }
             if (!cw.xulG.set_tab) { cw.xulG.set_tab = function(a,b,c) { return window.xulG.set_tab(a,b,c); }; }
             if (!cw.xulG.new_tab) { cw.xulG.new_tab = function(a,b,c) { return window.xulG.new_tab(a,b,c); }; }
             if (!cw.xulG.close_tab) { cw.xulG.close_tab = function(a) { return window.xulG.close_tab(a); }; }
@@ -412,6 +425,7 @@ util.browser.prototype = {
                         if (stateFlags & nsIWebProgressListener.STATE_IS_DOCUMENT) {
                             s += ('\tSTATE_IS_DOCUMENT\n');
                             if( stateFlags & nsIWebProgressListener.STATE_STOP ) {
+                                var alert_string = 'document has stopped: ' + new Date() + '\n'; dump(alert_string);
                                 obj.push_variables(); obj.updateNavButtons();
                                 if (typeof obj.on_url_load == 'function') {
                                     try {