]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/main/main.js
some debugging options when versionless, and an offline/standalone entrypoint
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / main / main.js
1 dump('entering main/main.js\n');
2
3 function grant_perms(url) {
4         var perms = "UniversalXPConnect UniversalPreferencesWrite UniversalBrowserWrite UniversalPreferencesRead UniversalBrowserRead";
5         dump('Granting ' + perms + ' to ' + url + '\n');
6         var pref = Components.classes["@mozilla.org/preferences-service;1"]
7                 .getService(Components.interfaces.nsIPrefBranch);
8         if (pref) {
9                 pref.setCharPref("capability.principal.codebase.p0.granted", perms);
10                 pref.setCharPref("capability.principal.codebase.p0.id", url);
11                 pref.setBoolPref("dom.disable_open_during_load",false);
12                 pref.setBoolPref("browser.popups.showPopupBlocker",false);
13         }
14
15 }
16
17 function clear_the_cache() {
18         try {
19                 var cacheClass          = Components.classes["@mozilla.org/network/cache-service;1"];
20                 var cacheService        = cacheClass.getService(Components.interfaces.nsICacheService);
21                 cacheService.evictEntries(Components.interfaces.nsICache.STORE_ON_DISK);
22                 cacheService.evictEntries(Components.interfaces.nsICache.STORE_IN_MEMORY);
23         } catch(E) {
24                 dump(E+'\n');alert(E);
25         }
26 }
27
28 function main_init() {
29         dump('entering main_init()\n');
30         try {
31                 clear_the_cache();
32
33                 if (typeof JSAN == 'undefined') {
34                         throw(
35                                 "The JSAN library object is missing."
36                         );
37                 }
38                 /////////////////////////////////////////////////////////////////////////////
39
40                 JSAN.errorLevel = "die"; // none, warn, or die
41                 JSAN.addRepository('..');
42
43                 //JSAN.use('test.test'); test.test.hello_world();
44
45                 var mw = self;
46                 G =  {};
47
48                 JSAN.use('util.error');
49                 G.error = new util.error();
50                 G.error.sdump('D_ERROR','Testing');
51
52                 JSAN.use('util.window');
53                 G.window = new util.window();
54
55                 JSAN.use('auth.controller');
56                 G.auth = new auth.controller( { 'window' : mw } );
57
58                 JSAN.use('OpenILS.data');
59                 G.data = new OpenILS.data()
60                 G.data.on_error = G.auth.logoff;
61                 G.data.entities = entities;
62                 G.data.stash('entities');
63
64                 JSAN.use('util.file');
65                 G.file = new util.file();
66                 try {
67                         G.file.get('ws_info');
68                         G.ws_info = G.file.get_object(); G.file.close();
69                 } catch(E) {
70                         G.ws_info = {};
71                 }
72                 G.data.ws_info = G.ws_info; G.data.stash('ws_info');
73
74                 G.auth.on_login = function() {
75
76                         var url = G.auth.controller.view.server_prompt.value || urls.remote;
77
78                         G.data.server_unadorned = url; G.data.stash('server_unadorned'); G.data.stash_retrieve();
79
80                         if (! url.match( '^http://' ) ) url = 'http://' + url;
81
82                         G.data.server = url; G.data.stash('server'); G.data.stash_retrieve();
83
84                         grant_perms(url);
85
86                         var xulG = {
87                                 'auth' : G.auth,
88                                 'url' : url,
89                                 'window' : G.window,
90                         }
91
92                         if (G.data.ws_info && G.data.ws_info[G.auth.controller.view.server_prompt.value]) {
93                                 var deck = document.getElementById('main_deck');
94                                 var iframe = document.createElement('iframe'); deck.appendChild(iframe);
95                                 iframe.setAttribute( 'src', url + '/xul/server/main/data.xul' );
96                                 iframe.contentWindow.xulG = xulG;
97                         } else {
98                                 xulG.file = G.file;
99                                 var deck = G.auth.controller.view.ws_deck;
100                                 JSAN.use('util.widgets'); util.widgets.remove_children('ws_deck');
101                                 var iframe = document.createElement('iframe'); deck.appendChild(iframe);
102                                 iframe.setAttribute( 'src', url + '/xul/server/main/ws_info.xul' );
103                                 iframe.contentWindow.xulG = xulG;
104                                 deck.selectedIndex = deck.childNodes.length - 1;
105                         }
106                 }
107
108                 G.auth.on_standalone = function() {
109                         G.window.open(urls.XUL_STANDALONE,'Offline','chrome,resizable,modal');
110                 }
111
112                 G.auth.on_debug = function(action) {
113                         switch(action) {
114                                 case 'js_console' :
115                                         G.window.open(urls.XUL_DEBUG_CONSOLE,'testconsole','chrome,resizable');
116                                 break;
117                                 case 'clear_cache' :
118                                         clear_the_cache();
119                                         alert('cache cleared');
120                                 break;
121                                 default:
122                                         alert('debug the debug :D');
123                                 break;
124                         }
125                 }
126
127                 G.auth.init();
128                 // XML_HTTP_SERVER will get reset to G.auth.controller.view.server_prompt.value
129
130                 /////////////////////////////////////////////////////////////////////////////
131
132                 var x = document.getElementById('version_label');
133                 var version = '/xul/server/'.split(/\//)[2];
134                 if (version = 'server') {
135                         version = 'versionless debug build';
136                         document.getElementById('debug_gb').hidden = false;
137                 }
138                 x.setAttribute('value','Build ID: ' + version);
139
140         } catch(E) {
141                 var error = "!! This software has encountered an error.  Please tell your friendly " +
142                         "system administrator or software developer the following:\n" + E + '\n';
143                 try { G.error.sdump('D_ERROR',error); } catch(E) { dump(error); }
144                 alert(error);
145         }
146         dump('exiting main_init()\n');
147 }
148
149 dump('exiting main/main.js\n');