From: pines Date: Fri, 7 Jul 2006 21:09:10 +0000 (+0000) Subject: operator change.. needs testing, styling X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=008bd524cc4c4bd3bb8a98e670f06869b5849bf2;p=Evergreen.git operator change.. needs testing, styling git-svn-id: svn://svn.open-ils.org/ILS/trunk@4938 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu.js b/Open-ILS/xul/staff_client/chrome/content/main/menu.js index 0d710d3686..fec09bd991 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/menu.js +++ b/Open-ILS/xul/staff_client/chrome/content/main/menu.js @@ -356,6 +356,39 @@ main.menu.prototype = { ], /* Admin menu */ + 'cmd_change_session' : [ + ['oncommand'], + function() { + try { + obj.data.stash_retrieve(); + JSAN.use('util.network'); var network = new util.network(); + var x = document.getElementById('oc_menuitem'); + var x_label = x.getAttribute('label_orig'); + var temp_au = js2JSON( obj.data.list.au[0] ); + var temp_ses = js2JSON( obj.data.session ); + if (obj.data.list.au.length > 1) { + obj.data.list.au = [ obj.data.list.au[1] ]; + obj.data.stash('list'); + network.reset_titlebars( obj.data ); + x.setAttribute('label', x_label ); + network.simple_request('AUTH_DESTROY', [ obj.data.session.key ] ); + obj.data.session = obj.data.previous_session; + obj.data.stash('session'); + } else { + if (network.get_new_session('Change Login',{'url_prefix':obj.url_prefix})) { + obj.data.stash_retrieve(); + obj.data.list.au[1] = JSON2js( temp_au ); + obj.data.stash('list'); + obj.data.previous_session = JSON2js( temp_ses ); + obj.data.stash('previous_session'); + x.setAttribute('label', 'Change Operator: ' + obj.data.list.au[1].usrname() ); + } + } + } catch(E) { + obj.error.standard_unexpected_error_alert('cmd_change_session',E); + } + } + ], 'cmd_manage_offline_xacts' : [ ['oncommand'], function() { diff --git a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul index 91ba4f1c47..f8a61f3c30 100644 --- a/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul +++ b/Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul @@ -45,6 +45,7 @@ + @@ -178,6 +179,8 @@ + diff --git a/Open-ILS/xul/staff_client/chrome/content/util/network.js b/Open-ILS/xul/staff_client/chrome/content/util/network.js index 03733f213b..92801df35d 100644 --- a/Open-ILS/xul/staff_client/chrome/content/util/network.js +++ b/Open-ILS/xul/staff_client/chrome/content/util/network.js @@ -137,48 +137,73 @@ util.network.prototype = { } }, + 'reset_titlebars' : function(data) { + var obj = this; + data.stash_retrieve(); + try { + JSAN.use('util.window'); var win = new util.window(); + var windowManager = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(); + var windowManagerInterface = windowManager.QueryInterface(Components.interfaces.nsIWindowMediator); + var enumerator = windowManagerInterface.getEnumerator(null); + + var w; // set title on all appshell windows + while ( w = enumerator.getNext() ) { + if (w.document.title.match(/^\d/)) { + w.document.title = + win.appshell_name_increment() + + ': ' + data.list.au[0].usrname() + + '@' + data.ws_name; + + '.' + data.server_unadorned + } + } + } catch(E) { + obj.error.standard_unexpected_error_alert('Error setting window titles to match new login',E); + } + }, + + 'get_new_session' : function(name,xulG) { + var obj = this; + try { + + netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite'); + var url = urls.XUL_AUTH_SIMPLE; + if (typeof xulG != 'undefined' && typeof xulG.url_prefix == 'function') url = xulG.url_prefix( url ); + window.open( + url + + '?login_type=staff' + + '&desc_brief=' + window.escape('Your session has expired') + + '&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), + 'simple_auth' + (new Date()).toString(), + 'chrome,resizable,modal,width=700,height=500' + ); + JSAN.use('OpenILS.data'); + var data = new OpenILS.data(); data.init({'via':'stash'}); + if (typeof data.temporary_session != 'undefined' && data.temporary_session != '') { + data.session.key = data.temporary_session.key; + data.session.authtime = data.temporary_session.authtime; + data.stash('session'); + alert('data.temporary_session = ' + js2JSON(data.temporary_session)); + data.list.au[0] = JSON2js(data.temporary_session.usr); + alert('data.list.au[0] = ' + data.list.au[0]); + data.stash('list'); + obj.reset_titlebars(data); + return true; + } + return false; + + } catch(E) { + obj.error.standard_unexpected_error_alert('util.network.get_new_session',E); + } + }, + 'rerequest_on_session_timeout' : function(app,name,params,req,o_params) { try { var obj = this; var robj = req.getResultObject(); if (robj != null && robj.ilsevent && robj.ilsevent == 1001) { - netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite'); - window.open( - urls.XUL_AUTH_SIMPLE - + '?login_type=staff' - + '&desc_brief=' + window.escape('Your session has expired') - + '&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), - 'simple_auth' + (new Date()).toString(), - 'chrome,resizable,modal,width=700,height=500' - ); - JSAN.use('OpenILS.data'); - var data = new OpenILS.data(); data.init({'via':'stash'}); - if (typeof data.temporary_session != 'undefined' && data.temporary_session != '') { - data.session.key = data.temporary_session.key; - data.session.authtime = data.temporary_session.authtime; - data.stash('session'); - data.list.au[0] = JSON2js(data.temporary_session.usr); - data.stash('list'); - try { - JSAN.use('util.window'); var win = new util.window(); - var windowManager = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(); - var windowManagerInterface = windowManager.QueryInterface(Components.interfaces.nsIWindowMediator); - var enumerator = windowManagerInterface.getEnumerator(null); - - var w; // set title on all appshell windows - while ( w = enumerator.getNext() ) { - if (w.document.title.match(/^\d/)) { - w.document.title = - win.appshell_name_increment() - + ': ' + data.list.au[0].usrname() - + '@' + data.ws_name; - + '.' + data.server_unadorned - } - } - } catch(E) { - obj.error.standard_unexpected_error_alert('Error setting window titles to match new login',E); - } + if (obj.get_new_session(name)) { + JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'}); params[0] = data.session.key; req = obj._request(app,name,params,null,o_params); }