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+' '+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 + 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);
66 request = obj.rerequest_on_session_timeout(app,name,params,request);
67 request = obj.rerequest_on_perm_failure(app,name,params,request);
69 request = obj.rerequest_on_override(app,name,params,request,o_params);
71 var result = request.getResultObject();
72 this.error.sdump('D_SES_RESULT','synced result #' + obj.link_id + '\n\n' + js2JSON(result));
77 if (instanceOf(E,perm_ex)) {
78 alert('permission exception: ' + js2JSON(E));
84 'rerequest_on_session_timeout' : function(app,name,params,req) {
87 var robj = req.getResultObject();
88 if (robj.ilsevent && robj.ilsevent == 1001) {
89 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
93 + '&desc_brief=' + window.escape('Your session has expired')
94 + '&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),
96 'chrome,resizable,modal,width=700,height=500'
98 JSAN.use('OpenILS.data');
99 var data = new OpenILS.data(); data.init({'via':'stash'});
100 if (data.temporary_session != '') {
101 data.session = data.temporary_session; data.stash('session');
102 params[0] = data.session;
103 req = obj._request(app,name,params);
107 this.error.sdump('D_ERROR',E);
112 'rerequest_on_perm_failure' : function(app,name,params,req) {
115 var robj = req.getResultObject();
116 if (robj.ilsevent && robj.ilsevent == 5000) {
117 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
121 + '&desc_brief=' + window.escape('Permission Denied: ' + robj.ilsperm)
122 + '&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),
124 'chrome,resizable,modal,width=700,height=500'
126 JSAN.use('OpenILS.data');
127 var data = new OpenILS.data(); data.init({'via':'stash'});
128 if (data.temporary_session != '') {
129 params[0] = data.temporary_session;
130 req = obj._request(app,name,params);
134 this.error.sdump('D_ERROR',E);
139 'rerequest_on_override' : function (app,name,params,req,o_params) {
142 function override(r) {
144 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
145 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>';
146 for (var i = 0; i < r.length; i++) {
147 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>';
149 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>';
151 '/xul/server/util/fancy_prompt.xul'
152 + '?xml=' + window.escape(xml)
153 + '&title=' + window.escape(o_params.title),
154 'fancy_prompt', 'chrome,resizable,modal,width=700,height=500'
156 JSAN.use('OpenILS.data');
157 var data = new OpenILS.data(); data.init({'via':'stash'});
158 if (data.fancy_prompt_data != '') {
159 req = obj._request(app,name + '.override',params);
167 var result = req.getResultObject();
168 if ( o_params.overridable_events.indexOf(result.ilsevent) != -1 ) {
169 req = override([result]);
171 var found_good = false; var found_bad = false;
172 for (var i = 0; i < result.length; i++) {
173 if (o_params.overridable_events.indexOf(result[i].ilsevent) != -1 ) {
179 if (found_good && (!found_bad)) req = override(result);
192 function sample_callback(request) {
193 var result = request.getResultObject();
197 dump('exiting util/network.js\n');