]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/util/network.js
re-login prompt on expired session
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / util / network.js
1 dump('entering util/network.js\n');
2
3 if (typeof util == 'undefined') util = {};
4 util.network = function () {
5
6         JSAN.use('util.error'); this.error = new util.error();
7         // Place a test here for network connectivity
8         // this.offline = true;
9
10         return this;
11 };
12
13 util.network.prototype = {
14
15         // Flag for whether the staff client should act as if it were offline or not
16         'offline' : false,
17
18         'link_id' : 0,
19
20         'simple_request' : function(id,params,f) {
21                 return this.request(api[id].app,api[id].method,params,f);
22         },
23
24         'request' : function (app,name,params,f) {
25                 var request =  this.bare_request(app,name,params,f);
26                 if (request) {
27                         return request.getResultObject();
28                 } else {
29                         return null;
30                 }
31         },
32
33         'bare_request' : function (app,name,params,f) {
34                 var obj = this;
35                 try {
36                         var sparams = js2JSON(params);
37                         obj.error.sdump('D_SES','request '+app+' '+name+' '+sparams.slice(1,sparams.length-1)+
38                                 '\nResult #' + (++obj.link_id) + ( f ? ' asynced' : ' synced' ) );
39                         var request = new RemoteRequest( app, name );
40                         for(var index in params) {
41                                 request.addParam(params[index]);
42                         }
43         
44                         if (f)  {
45                                 request.setCompleteCallback(
46                                         function(req) {
47                                                 try {
48                                                         obj.error.sdump('D_SES_RESULT','asynced result #' 
49                                                                 + obj.link_id + '\n\n' 
50                                                                 + js2JSON(req.getResultObject()));
51                                                         req = obj.rerequest_on_session_timeout(app,name,params,req);
52                                                         f(req);
53                                                 } catch(E) {
54                                                         alert(E);
55                                                 }
56                                         }
57                                 );
58                                 request.send(false);
59                                 return null;
60                         } else {
61                                 request.send(true);
62                                 request = obj.rerequest_on_session_timeout(app,name,params,request);
63                                 var result = request.getResultObject();
64                                 this.error.sdump('D_SES_RESULT','synced result #' + obj.link_id + '\n\n' + js2JSON(result));
65                                 return request;
66                         }
67
68                 } catch(E) {
69                         if (instanceOf(E,perm_ex)) {
70                                 alert('permission exception: ' + js2JSON(E));
71                         }
72                         throw(E);
73                 }
74         },
75
76         'rerequest_on_session_timeout' : function(app,name,params,req) {
77                 try {
78                         var obj = this;
79                         var robj = req.getResultObject();
80                         if (robj.ilsevent && robj.ilsevent == 1001) {
81                                 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
82                                 window.open(
83                                         urls.XUL_AUTH_SIMPLE
84                                         + '?login_type=staff'
85                                         + '&desc_brief=' + window.escape('Your session has expired')
86                                         + '&desc_full=' + window.escape('Please re-login.  If after you have re-authenticated, you still see session expired dialogs like this one, please note where they are occuring and notify your friendly Evergreen developers.'),
87                                         'simple_auth',
88                                         'chrome,resizable,modal,width=300,height=300'
89                                 );
90                                 JSAN.use('OpenILS.data');
91                                 var data = new OpenILS.data(); data.init({'via':'stash'});
92                                 if (data.temporary_session != '') {
93                                         data.session = data.temporary_session; data.stash('session');
94                                         params[0] = data.session;
95                                         req = obj.bare_request(app,name,params);
96                                 }
97                         }
98                 } catch(E) {
99                         this.error.sdump('D_ERROR',E);
100                 }
101                 return req;
102         }
103 }
104
105 /*
106 function sample_callback(request) {
107         var result = request.getResultObject();
108 }
109 */
110
111 dump('exiting util/network.js\n');