LP#1712637 Patron edit hold pickup location repairs
[working/Evergreen.git] / Open-ILS / web / js / ui / base.js
1 dojo.require('dijit.form._FormWidget');
2
3 /* scrollOnFocus is usually terrible, and causes lots of buttons and the like
4  * to require a second click. */
5 dijit.form._FormWidget.prototype.scrollOnFocus = false;
6
7 dojo.require('dijit.Dialog');
8 dojo.require('dojo.cookie');
9 dojo.require('fieldmapper.AutoIDL');  // make conditional.  TT variable sets JS var to enable/disable?
10 dojo.require('openils.User');
11 dojo.require('openils.CGI');
12 dojo.require('openils.Event');
13 dojo.require('openils.Util');
14 dojo.require('openils.XUL');
15 var cgi = new openils.CGI();
16
17 function oilsSetupUser() {
18     var authtoken = cgi.param('ses') || dojo.cookie('ses');
19     var workstation = cgi.param('ws') || dojo.cookie('ws');
20     var user;
21     var ses_user;
22
23     openils.User.user = null;
24     openils.User.authtoken = null;
25     openils.User.workstation = null;
26
27     if(openils.XUL.isXUL()) {
28                 stash = openils.XUL.getStash();
29                 authtoken = stash.session.key
30         ses_user = stash.list.au[0];
31         }
32
33     if(authtoken) {
34         user = new openils.User();
35         delete user.sessionCache[authtoken];
36         user.authtoken = authtoken;
37         if(ses_user) {
38             user.user = ses_user;
39             user.sessionCache[authtoken] = ses_user;
40         }
41         user.user = user.getBySession();
42     }
43
44     if(!authtoken || openils.Event.parse(user.user)) {
45
46         authtoken = oilsLoginFromCookies();
47
48         if(!authtoken) {
49
50             dojo.cookie('ses', null, {expires:-1, path:'/'}); // remove the cookie
51
52             dojo.addOnLoad(function(){
53                 if(openils.XUL.isXUL()) {
54                     // let XUL handle the login dialog
55                     dump('getNewSession in base.js\n');
56                     openils.XUL.getNewSession( function() { location.href = location.href } );
57                 } else {
58                     // in web-only mode, use the dojo login dialog
59                     oilsLoginDialog.show(); 
60                     var func = function(){ oilsDoLogin(); };
61                     openils.Util.registerEnterHandler(dojo.byId('oils-login-username'), func);
62                     openils.Util.registerEnterHandler(dojo.byId('oils-login-password'), func);
63                     dojo.byId('oils-login-workstation').innerHTML = workstation || '';
64                 }
65             });
66             return null;
67         }
68     }
69
70     dojo.cookie('ses', authtoken, {path:'/', 'secure' : true});
71     openils.User.authtoken = authtoken;
72     openils.User.workstation = workstation;
73     return authtoken;
74 }
75
76 // pulls username / password and optional workstation from cgi params or cookies
77 function oilsLoginFromCookies() {
78
79     var username = cgi.param('username') || dojo.cookie('username');
80     var password = cgi.param('password') || dojo.cookie('password');
81     var workstation = cgi.param('ws') || dojo.cookie('ws');
82
83     if(username && password) {
84
85         var user = new openils.User();
86         var args = {
87             username : username,
88             passwd : password,
89             type : 'staff'
90         };
91
92         if(workstation) 
93             args.workstation = workstation;
94
95         if(user.login(args)) {
96             // fetches the login session and sets the global vars
97             user = new openils.User({authtoken : user.authtoken});
98             return (user && !openils.Event.parse(user.user)) ? user.authtoken : null;
99         } 
100     }
101
102     return null;
103 }
104
105 function oilsDoLogin() {
106     openils.Util.hide('oils-login-failed');
107     var workstation = cgi.param('ws') || dojo.cookie('ws');
108     var user = new openils.User();
109     var args = {
110         username: dojo.byId('oils-login-username').value,
111         passwd: dojo.byId('oils-login-password').value,
112         type: 'staff', // hardcode for now
113     };
114     if(workstation) 
115         args.workstation = workstation;
116
117     if(user.login(args)) {
118         dojo.cookie('ses', user.authtoken, {path : '/'});
119         location.href = location.href;
120     } else {
121         openils.Util.show('oils-login-failed');
122     }
123
124     return false;
125 }
126
127 oilsSetupUser();
128