ah, document.loadOverlay.. this lovely thing is going to make it easier for us to...
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 29 Jan 2009 03:52:02 +0000 (03:52 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 29 Jan 2009 03:52:02 +0000 (03:52 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/staff-client-experiment@12008 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/xul/staff_client/server/patron/summary.xul

index e3227bc..93c48e3 100644 (file)
 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
 <!-- OVERLAYS -->
 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
-<?xul-overlay href="/xul/server/patron/summary_overlay.xul"?>
 
 <window id="patron_summary_win" 
-       onload="try { my_init(); font_helper(); } catch(E) { alert(E); }"
+       onload="try { my_init(); } catch(E) { alert(E); }" onunload="try { observer.unregister(); } catch(E) { alert(E); }"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
        <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
        <![CDATA[
                function $(id) { return document.getElementById(id); }
                
+               var observer;
+               function myObserver() { this.register(); }
+               myObserver.prototype = {
+                       register: function() {
+                               netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+                               var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+                               observerService.addObserver(this, "xul-overlay-merged", false);
+                       },
+                       unregister: function() {
+                               netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+                               var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+                               observerService.removeObserver(this, "xul-overlay-merged");
+                       },
+                       observe: function(subject,topic,data) {
+                               dump('observe: <'+subject+','+topic+','+data+'>\n');
+                               // setTimeout is needed here for xulrunner 1.8
+                               setTimeout( function() { try { post_overlay(); } catch(E) { alert(E); } }, 0 );
+                       }
+               }
+                               
                function my_init() {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+                               observer = new myObserver();
+                               document.loadOverlay(location.protocol + '//' + location.hostname + '/xul/server/patron/summary_overlay.xul',observer)
+                       } catch(E) {
+                               alert(E);
+                       }
+               }
+               
+               function post_overlay() {
+                       try {
+                               netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                                if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
                                JSAN.errorLevel = "die"; // none, warn, or die
                                JSAN.addRepository('/xul/server/');
                                } );
 
                                window.refresh = function () { g.summary.retrieve(); }
-
+                               font_helper();
                        } catch(E) {
                                var err_msg = $("commonStrings").getFormattedString('common.exception', ['patron/summary.xul', E]);
                                try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
                                alert(err_msg);
                        }
                }
-
        ]]>
        </script>