]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/main/main.js
28de091954cbc0bd5b99d734a36abce1871f7f75
[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         }
12
13 }
14
15 function main_init() {
16         dump('entering main_init()\n');
17         try {
18                 if (typeof JSAN == 'undefined') {
19                         throw(
20                                 "The JSAN library object is missing."
21                         );
22                 }
23                 /////////////////////////////////////////////////////////////////////////////
24
25                 JSAN.errorLevel = "die"; // none, warn, or die
26                 JSAN.addRepository('..');
27
28                 //JSAN.use('test.test'); test.test.hello_world();
29
30                 var mw = self;
31                 G =  {};
32
33                 JSAN.use('util.error');
34                 G.error = new util.error();
35                 G.error.sdump('D_ERROR','Testing');
36
37                 JSAN.use('util.window');
38                 G.window = new util.window();
39
40                 //G.window.open(urls.XUL_DEBUG_CONSOLE,'testconsole','chrome,resizable');
41
42                 JSAN.use('auth.controller');
43                 G.auth = new auth.controller( { 'window' : mw } );
44
45                 JSAN.use('OpenILS.data');
46                 G.data = new OpenILS.data()
47                 G.data.on_error = G.auth.logoff;
48                 G.data.entities = entities;
49                 G.data.stash('entities');
50
51                 JSAN.use('util.file');
52                 G.file = new util.file();
53                 try {
54                         G.file.get('ws_info');
55                         G.ws_info = G.file.get_object();
56                         // { server_name : { 'id' : ..., 'name' : ..., 'owning_lib' : ... }, ... : ... }
57                         alert('retrieved ws_info from filesystem: ' + js2JSON(ws_info) );
58                 } catch(E) {
59                         G.ws_info = {};
60                         alert('could not retrieve ws_info from filesystem');
61                 }
62                 G.data.ws_info = G.ws_info; G.data.stash('ws_info');
63
64                 G.auth.on_login = function() {
65
66                         var url = G.auth.controller.view.server_prompt.value || urls.remote;
67                         if (! url.match( '^http://' ) ) url = 'http://' + url;
68
69                         G.data.server = url; G.data.stash('server'); G.data.stash_retrieve();
70
71                         grant_perms(url);
72
73                         if (G.data.ws_info && G.data.ws_info[G.auth.controller.view.server_prompt.value]) {
74                                 var deck = document.getElementById('main_deck');
75                                 var iframe = document.createElement('iframe'); deck.appendChild(iframe);
76                                 iframe.setAttribute( 'src', url + '/xul/server/main/data.xul' );
77                                 var xulG = {
78                                         'auth' : G.auth,
79                                         'url' : url,
80                                         'window' : G.window,
81                                 }
82                                 iframe.contentWindow.xulG = xulG;
83                         } else {
84                                 G.auth.controller.view.ws_deck.selectedIndex = 1;
85                                 JSAN.use('util.widgets');
86                                 var spot = document.getElementById('menu_spot');
87                                 util.widgets.remove_children(spot);
88                                 var ml = util.widgets.make_menulist( [ ['PINES','1'], ['ARL-ATH','18'] ] );
89                                 ml.setAttribute('id','menu');
90                                 spot.appendChild(ml);
91                         }
92                 }
93
94                 G.auth.on_register = function(ses,server,orgid,wsname) {
95                         try {
96                                 alert('register happens here: ses = ' + ses + ' server = ' + server + ' orgid = ' + orgid + ' wsname = ' + wsname );
97
98                                 var deck = document.getElementById('main_deck');
99                                 var iframe = document.createElement('iframe'); deck.appendChild(iframe);
100                                 iframe.setAttribute( 'src', G.data.server + '/xul/server/main/register.xul');
101                                 var xulG = {
102                                         'auth' : G.auth,
103                                         'url' : G.data.server,
104                                         'window' : G.window,
105                                         'ses' : ses,
106                                         'ws_server' : server,
107                                         'ws_orgid' : orgid,
108                                         'ws_name' : wsname,
109                                         'file' : G.file,
110                                 }
111                                 iframe.contentWindow.xulG = xulG;
112
113                         } catch(E) {
114                                 G.error.sdump('D_ERROR',E);
115                                 alert(E);
116                         }
117
118                 }
119
120                 G.auth.init();
121                 // XML_HTTP_SERVER will get reset to G.auth.controller.view.server_prompt.value
122
123                 /////////////////////////////////////////////////////////////////////////////
124         } catch(E) {
125                 var error = "!! This software has encountered an error.  Please tell your friendly " +
126                         "system administrator or software developer the following:\n" + E + '\n';
127                 try { G.error.sdump('D_ERROR',error); } catch(E) { dump(error); }
128                 alert(error);
129         }
130         dump('exiting main_init()\n');
131 }
132
133 dump('exiting main/main.js\n');