]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/browser.js
util.browser flexibility
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / browser.js
1 dump('entering util.browser.js\n');
2
3 if (typeof util == 'undefined') util = {};
4 util.browser = function (params) {
5         try {
6                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
7                 JSAN.use('util.error'); this.error = new util.error();
8         } catch(E) {
9                 dump('util.browser: ' + E + '\n');
10         }
11 }
12
13 util.browser.prototype = {
14
15         'init' : function( params ) {
16
17                 try {
18                         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
19
20                         var obj = this;
21
22                         obj.url = params['url'];
23                         obj.push_xulG = params['push_xulG'];
24                         obj.alt_print = params['alt_print'];
25                         obj.browser_id = params['browser_id'];
26
27                         JSAN.use('util.controller'); obj.controller = new util.controller();
28                         obj.controller.init(
29                                 {
30                                         control_map : {
31                                                 'cmd_broken' : [
32                                                         ['command'],
33                                                         function() { alert('Not Yet Implemented'); }
34                                                 ],
35                                                 'cmd_print' : [
36                                                         ['command'],
37                                                         function() {
38                                                                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
39                                                                 if (obj.alt_print) {
40                                                                         JSAN.use('util.print'); var p = new util.print();
41                                                                         p.NSPrint(obj.get_content(),false,{});
42                                                                 } else {
43                                                                         obj.get_content().print();
44                                                                 }
45                                                         }
46                                                 ],
47                                                 'cmd_forward' : [
48                                                         ['command'],
49                                                         function() {
50                                                                 try {
51                                                                         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
52                                                                         var n = obj.getWebNavigation();
53                                                                         if (n.canGoForward) n.goForward();
54                                                                 } catch(E) {
55                                                                         var err = 'cmd_forward: ' + E;
56                                                                         obj.error.sdump('D_ERROR',err);
57                                                                 }
58                                                         }
59                                                 ],
60                                                 'cmd_back' : [
61                                                         ['command'],
62                                                         function() {
63                                                                 try {
64                                                                         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
65                                                                         var n = obj.getWebNavigation();
66                                                                         if (n.canGoBack) n.goBack();
67                                                                 } catch(E) {
68                                                                         var err = 'cmd_back: ' + E;
69                                                                         obj.error.sdump('D_ERROR',err);
70                                                                 }
71                                                         }
72                                                 ],
73                                         }
74                                 }
75                         );
76                         var browser_id = 'browser_browser'; if (obj.browser_id) browser_id = obj.browser_id;
77                         obj.controller.view.browser_browser = document.getElementById(browser_id);
78
79                         obj.buildProgressListener();
80                         dump('obj.controller.view.browser_browser.addProgressListener = ' 
81                                 + obj.controller.view.browser_browser.addProgressListener + '\n');
82                         obj.controller.view.browser_browser.addProgressListener(obj.progressListener,
83                                         Components.interfaces.nsIWebProgress.NOTIFY_ALL );
84
85                         obj.controller.view.browser_browser.setAttribute('src',obj.url);
86                         dump('url = ' + obj.url + '\n');
87
88                 } catch(E) {
89                         this.error.sdump('D_ERROR','util.browser.init: ' + E + '\n');
90                 }
91         },
92
93         'get_content' : function() {
94                 try {
95                         if (this.controller.view.browser_browser.contentWindow.wrappedJSObject) {
96                                 return this.controller.view.browser_browser.contentWindow.wrappedJSObject;
97                         } else {
98                                 return this.controller.view.browser_browser.contentWindow;
99                         }
100                 } catch(E) {
101                         alert('util.browser.get_content(): ' + E);
102                 }
103         },
104
105         'push_variables' : function() {
106                 try {
107                         var obj = this;
108                         if (!obj.push_xulG) return;
109                         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
110                         var cw = this.get_content();
111                         cw.IAMXUL = true;
112                         if (window.xulG) {
113                                 cw.xulG = window.xulG.passthru_content_params;
114                                 dump('xulG = ' + js2JSON(cw.xulG) + '\n');
115                         }
116                 } catch(E) {
117                         this.error.sdump('D_ERROR','util.browser.push_variables: ' + E + '\n');
118                 }
119         },
120
121         'getWebNavigation' : function() {
122                 try {
123                         var wn = this.controller.view.browser_browser.webNavigation;
124                         dump('getWebNavigation() = ' + wn + '\n');
125                         return wn;
126                 } catch(E) {
127                         alert('util.browser.getWebNavigation(): ' + E );
128                 }
129         },
130
131         'updateNavButtons' : function() {
132                 var obj = this; var s = '';
133                 try {
134                         var n = obj.getWebNavigation();
135                         s += ('webNavigation = ' + n + '\n');
136                         s += ('webNavigation.canGoForward = ' + n.canGoForward + '\n');
137                         if (n.canGoForward) {
138                                 obj.controller.view.cmd_forward.disabled = false;
139                                 obj.controller.view.cmd_forward.setAttribute('disabled','false');
140                         } else {
141                                 obj.controller.view.cmd_forward.disabled = true;
142                                 obj.controller.view.cmd_forward.setAttribute('disabled','true');
143                         }
144                 } catch(E) {
145                         s += E + '\n';
146                 }
147                 try {
148                         var n = obj.getWebNavigation();
149                         s += ('webNavigation = ' + n + '\n');
150                         s += ('webNavigation.canGoBack = ' + n.canGoBack + '\n');
151                         if (n.canGoBack) {
152                                 obj.controller.view.cmd_back.disabled = false;
153                                 obj.controller.view.cmd_back.setAttribute('disabled','false');
154                         } else {
155                                 obj.controller.view.cmd_back.disabled = true;
156                                 obj.controller.view.cmd_back.setAttribute('disabled','true');
157                         }
158
159                 } catch(E) {
160                         s += E + '\n';
161                 }
162
163                 dump(s);
164         },
165
166         'buildProgressListener' : function() {
167
168                 try {
169                         netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
170
171                         var obj = this;
172                         obj.progressListener = {
173                                 onProgressChange        : function(){},
174                                 onLocationChange        : function(){},
175                                 onStatusChange          : function(){},
176                                 onSecurityChange        : function(){},
177                                 onStateChange           : function ( webProgress, request, stateFlags, status) {
178                                         try {
179                                                 netscape.security.PrivilegeManager.enablePrivilege( "UniversalXPConnect" );
180                                                 var s = '';
181                                                 const nsIWebProgressListener = Components.interfaces.nsIWebProgressListener;
182                                                 const nsIChannel = Components.interfaces.nsIChannel;
183                                                 if (stateFlags == 65540 || stateFlags == 65537 || stateFlags == 65552) { return; }
184                                                 s = ('onStateChange: stateFlags = ' + stateFlags + ' status = ' + status + '\n');
185                                                 if (stateFlags & nsIWebProgressListener.STATE_IS_REQUEST) {
186                                                         s += ('\tSTATE_IS_REQUEST\n');
187                                                 }
188                                                 if (stateFlags & nsIWebProgressListener.STATE_IS_DOCUMENT) {
189                                                         s += ('\tSTATE_IS_DOCUMENT\n');
190                                                         if( stateFlags & nsIWebProgressListener.STATE_STOP ) {
191                                                                 obj.push_variables(); obj.updateNavButtons();
192                                                                 if (window.xulG && typeof window.xulG.on_url_load == 'function') {
193                                                                         try {
194                                                                                 obj.error.sdump('D_TRACE','calling on_url_load');
195                                                                                 window.xulG.on_url_load( obj.controller.view.browser_browser );
196                                                                         } catch(E) {
197                                                                                 obj.error.sdump('D_ERROR','on_url_load: ' + E );
198                                                                         }
199                                                                 }
200                                                         }
201                                                 }
202                                                 if (stateFlags & nsIWebProgressListener.STATE_IS_NETWORK) {
203                                                         s += ('\tSTATE_IS_NETWORK\n');
204                                                 }
205                                                 if (stateFlags & nsIWebProgressListener.STATE_IS_WINDOW) {
206                                                         s += ('\tSTATE_IS_WINDOW\n');
207                                                 }
208                                                 if (stateFlags & nsIWebProgressListener.STATE_START) {
209                                                         s += ('\tSTATE_START\n');
210                                                 }
211                                                 if (stateFlags & nsIWebProgressListener.STATE_REDIRECTING) {
212                                                         s += ('\tSTATE_REDIRECTING\n');
213                                                 }
214                                                 if (stateFlags & nsIWebProgressListener.STATE_TRANSFERING) {
215                                                         s += ('\tSTATE_TRANSFERING\n');
216                                                 }
217                                                 if (stateFlags & nsIWebProgressListener.STATE_NEGOTIATING) {
218                                                         s += ('\tSTATE_NEGOTIATING\n');
219                                                 }
220                                                 if (stateFlags & nsIWebProgressListener.STATE_STOP) {
221                                                         s += ('\tSTATE_STOP\n');
222                                                 }
223                                                 obj.error.sdump('D_OPAC',s);    
224                                         } catch(E) {
225                                                 alert('util.browser.progresslistener.onstatechange: ' + js2JSON(E));
226                                         }
227                                 }
228                         }
229                         obj.progressListener.QueryInterface = function(){return this;};
230                 } catch(E) {
231                         this.error.sdump('D_ERROR','util.browser.buildProgressListener: ' + E + '\n');
232                 }
233         },
234 }
235
236 dump('exiting util.browser.js\n');