1 dump('entering util/network.js\n');
3 if (typeof util == 'undefined') util = {};
4 util.network = function () {
6 JSAN.use('util.error'); this.error = new util.error();
7 // Place a test here for network connectivity
8 // this.offline = true;
13 util.network.prototype = {
15 // Flag for whether the staff client should act as if it were offline or not
20 'simple_request' : function(id,params,f) {
21 return this.request(api[id].app,api[id].method,params,f);
24 'request' : function (app,name,params,f,o_params) {
25 var request = this._request(app,name,params,f,o_params);
27 return request.getResultObject();
33 '_request' : function (app,name,params,f,o_params) {
36 var sparams = js2JSON(params);
37 obj.error.sdump('D_SES','request '+app+' '+name+' '+obj.error.pretty_print(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]);
45 request.setCompleteCallback(
48 obj.error.sdump('D_SES_RESULT','asynced result #'
49 + obj.link_id + '\n\n'
50 + obj.error.pretty_print(js2JSON(req.getResultObject())));
51 req = obj.rerequest_on_session_timeout(app,name,params,req);
52 req = obj.rerequest_on_perm_failure(app,name,params,req);
54 req = obj.rerequest_on_override(app,name,params,req,o_params);
56 req = obj.check_for_offline(req);
67 request = obj.rerequest_on_session_timeout(app,name,params,request);
68 request = obj.rerequest_on_perm_failure(app,name,params,request);
70 request = obj.rerequest_on_override(app,name,params,request,o_params);
72 request = obj.check_for_offline(request);
73 var result = request.getResultObject();
74 this.error.sdump('D_SES_RESULT','synced result #' + obj.link_id + '\n\n' + obj.error.pretty_print(js2JSON(result)));
79 if (instanceOf(E,perm_ex)) {
80 alert('permission exception: ' + js2JSON(E));
86 'check_for_offline' : function (req) {
87 var result = req.getResultObject();
88 if (result != null) return req;
89 var test = new RemoteRequest( 'open-ils.actor','opensrf.system.time');
91 if (test.getResultObject() == null) { /* opensrf/network problem */
92 return { 'getResultObject' : function() { return { 'ilsevent' : -1, 'textcode' : 'Network/Server Problem' }; } };
93 } else { /* legitimate null result */
98 'rerequest_on_session_timeout' : function(app,name,params,req) {
101 var robj = req.getResultObject();
102 if (robj != null && robj.ilsevent && robj.ilsevent == 1001) {
103 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
106 + '?login_type=staff'
107 + '&desc_brief=' + window.escape('Your session has expired')
108 + '&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 inform your friendly Evergreen developers of this debug information: ' + name),
110 'chrome,resizable,modal,width=700,height=500'
112 JSAN.use('OpenILS.data');
113 var data = new OpenILS.data(); data.init({'via':'stash'});
114 if (data.temporary_session != '') {
115 data.session = data.temporary_session; data.stash('session');
116 params[0] = data.session;
117 req = obj._request(app,name,params);
121 this.error.sdump('D_ERROR',E);
126 'rerequest_on_perm_failure' : function(app,name,params,req) {
129 var robj = req.getResultObject();
130 if (robj != null && robj.ilsevent && robj.ilsevent == 5000) {
131 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
135 + '&desc_brief=' + window.escape('Permission Denied: ' + robj.ilsperm)
136 + '&desc_full=' + window.escape('Another staff member with the above permission may authorize this specific action. Please notify your library administrator if you need this permission. If you feel you have received this exception in error, inform your friendly Evergreen developers of the above permission and this debug information: ' + name),
138 'chrome,resizable,modal,width=700,height=500'
140 JSAN.use('OpenILS.data');
141 var data = new OpenILS.data(); data.init({'via':'stash'});
142 if (data.temporary_session != '') {
143 params[0] = data.temporary_session;
144 req = obj._request(app,name,params);
148 this.error.sdump('D_ERROR',E);
153 'rerequest_on_override' : function (app,name,params,req,o_params) {
156 function override(r) {
158 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
159 var xml = '<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"><groupbox><caption label="Exceptions"/><grid><columns><column/><column/><column/></columns><rows>';
160 for (var i = 0; i < r.length; i++) {
161 xml += '<row style="color: red"><description>' + r[i].ilsevent + '</description><description>' + r[i].textcode + '</description><description>' + (obj.error.get_ilsevent(r[i].ilsevent) ? obj.error.get_ilsevent(r[i].ilsevent) : "") + '</description></row>';
163 xml += '</rows></grid></groupbox><groupbox><caption label="Override"/><hbox><description>Force this action?</description><button accesskey="C" label="Cancel" name="fancy_cancel"/><button id="override" accesskey="O" label="Override" name="fancy_submit" value="override"/></hbox></groupbox></vbox>';
165 '/xul/server/util/fancy_prompt.xul'
166 + '?xml=' + window.escape(xml)
167 + '&title=' + window.escape(o_params.title),
168 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500'
170 JSAN.use('OpenILS.data');
171 var data = new OpenILS.data(); data.init({'via':'stash'});
172 if (data.fancy_prompt_data != '') {
173 req = obj._request(app,name + '.override',params);
181 var result = req.getResultObject();
182 if (!result) return req;
184 if ( o_params.overridable_events.indexOf(result.ilsevent) != -1 ) {
185 req = override([result]);
187 var found_good = false; var found_bad = false;
188 for (var i = 0; i < result.length; i++) {
189 if (o_params.overridable_events.indexOf(result[i].ilsevent) != -1 ) {
195 if (found_good && (!found_bad)) req = override(result);
208 function sample_callback(request) {
209 var result = request.getResultObject();
213 dump('exiting util/network.js\n');