1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Application: Evergreen Staff Client -->
3 <!-- Screen: Main, Authentication Window -->
8 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
10 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
11 <?xml-stylesheet href="/xul/server/skin/global.css" type="text/css"?>
13 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
15 <!DOCTYPE window PUBLIC "" ""[
16 <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
19 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
21 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
23 <window id="wsinfo_win"
24 onload="try { wsinfo_init(); } catch(E) { alert(E); }"
25 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
28 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
30 <script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
31 <scripts id="openils_util_scripts"/>
33 <script type='text/javascript' src='/opac/common/js/<!--#echo var="locale"-->/OrgTree.js'/>
34 <script type="text/javascript" src="/opac/common/js/org_utils.js"/>
35 <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
39 function wsinfo_init() {
41 document.getElementById('register_btn').disabled = true;
42 document.getElementById('wsname').disabled = true;
43 document.getElementById('wsname').value = document.getElementById('commonStrings').getString('staff.main.gen_offline_widgets.please_wait');
45 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
47 if (typeof JSAN == 'undefined') {
48 throw(document.getElementById("commonStrings").getString('common.jsan.missing'));
50 /////////////////////////////////////////////////////////////////////////////
52 JSAN.errorLevel = "die"; // none, warn, or die
53 JSAN.addRepository('/xul/server/');
55 JSAN.use('util.error'); g.error = new util.error();
56 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
57 JSAN.use('util.network'); g.network = new util.network();
58 JSAN.use('util.widgets');
59 JSAN.use('util.functional');
60 JSAN.use('util.fm_utils');
62 g.user = g.network.simple_request( 'FM_AU_RETRIEVE_VIA_SESSION', [ xulG.auth.session.key ] );
64 g.my_lib = g.user.home_ou();
66 g.aout_list = g.network.simple_request(
71 for (var i = 0; i < g.aout_list.length; i++) {
72 g.aout_hash[ g.aout_list[i].id() ] = g.aout_list[i];
75 var work_ous = g.network.simple_request(
76 'PERM_RETRIEVE_WORK_OU',
77 [ xulG.auth.session.key, 'REGISTER_WORKSTATION']
79 if (work_ous.length == 0) {
80 alert(document.getElementById('commonStrings').getString('staff.main.gen_offline_widgets.workstation_registration_denied'));
85 for (var i = 0; i < work_ous.length; i++ ) {
86 var perm_depth = findOrgDepth( work_ous[i] );
88 g.my_libs_tree = g.network.simple_request(
89 'FM_AOU_DESCENDANTS_RETRIEVE',
90 [ work_ous[i], perm_depth ]
92 if (!instanceOf(g.my_libs_tree,aou)) { /* FIXME - workaround for weird descendants call result */
93 g.my_libs_tree = g.my_libs_tree[0];
95 g.my_libs = g.my_libs.concat( util.fm_utils.flatten_ou_branch( g.my_libs_tree ) );
98 g.my_libs_shortname_hash = {};
99 g.my_libs_ou_hash = {};
100 g.my_deduped_libs = [];
101 for (var i = 0; i < g.my_libs.length; i++) {
102 if (typeof g.my_libs_shortname_hash[ g.my_libs[i].id() ] == 'undefined') {
103 g.my_libs_shortname_hash[ g.my_libs[i].id() ] = g.my_libs[i].shortname();
104 g.my_libs_ou_hash[ g.my_libs[i].id() ] = function(o){return o;}(g.my_libs[i]);
105 g.my_deduped_libs.push( g.my_libs[i] );
109 g.tb = document.getElementById('wsname');
113 document.getElementById('register_btn').disabled = false;
114 document.getElementById('wsname').disabled = false;
115 document.getElementById('wsname').value = '';
117 document.getElementById('wsname').focus();
120 function render_menulist() {
121 var x = document.getElementById('placeholder');
122 util.widgets.remove_children( x );
124 var default_lib = g.my_lib;
126 if (typeof g.my_libs_ou_hash[ default_lib ] == 'undefined') {
129 if ( !get_bool( g.aout_hash[ g.my_libs_ou_hash[ default_lib ].ou_type() ].can_have_users() ) ) {
134 dump('Error in ws_info.xul, render_menulist(): ' + E + '\n');
138 g.ml = util.widgets.make_menulist(
139 util.functional.map_list(
143 if ( get_bool( g.aout_hash[ obj.ou_type() ].can_have_users() ) ) default_lib = obj.id();
148 ( !get_bool( g.aout_hash[ obj.ou_type() ].can_have_users() ) ),
149 ( g.aout_hash[ obj.ou_type() ].depth() )
156 x.appendChild( g.ml );
159 function register() {
161 var robj = g.network.simple_request(
163 [ xulG.auth.session.key, g.my_libs_shortname_hash[ g.ml.value ] + '-' + g.tb.value, g.ml.value ],
166 'title' : document.getElementById('commonStrings').getString('staff.main.gen_offline_widgets.registration.override'),
167 'overridable_events' : [
168 1703 /* WORKSTATION_NAME_EXISTS */
173 if (typeof robj.ilsevent != 'undefined') {
174 switch(Number(robj.ilsevent)) {
175 case -1 : g.error.standard_network_error_alert(); break;
176 case 1703 /* WORKSTATION_NAME_EXISTS */ : /* handled with override request */ break;
177 case 1001 /* NO_SESSION */ : /* handled with request dialog */ break;
178 default: g.error.standard_unexpected_error_alert(document.getElementById('commonStrings').getFormattedString('staff.main.gen_offline_widgets.registration.error', ['1']), robj); break;
181 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalPreferencesWrite UniversalBrowserWrite UniversalPreferencesRead UniversalBrowserRead");
182 g.data.ws_info[ xulG.auth.controller.view.server_prompt.value ] = {
183 'name' : g.my_libs_shortname_hash[ g.ml.value ] + '-' + g.tb.value,
184 'owning_lib' : g.ml.value,
185 'lib_shortname' : g.my_libs_shortname_hash[ g.ml.value ]
187 xulG.file.get('ws_info');
188 xulG.file.set_object(g.data.ws_info);
189 alert(document.getElementById('commonStrings').getString('staff.main.gen_offline_widgets.registration.success'));
193 g.error.standard_unexpected_error_alert(document.getElementById('commonStrings').getFormattedString('staff.main.gen_offline_widgets.registration.error', ['2']) ,E);
200 <vbox flex="1" class="my_overflow">
201 <description id="desc" hidden="true">
202 &staff.main.ws_info.entry;
204 <grid style="border: solid thick red;">
211 <label value="&staff.main.ws_info.name;" control="wsname"/>
212 <textbox id="wsname" context="clipboard"/>
215 <label value="&staff.main.ws_info.organization;" control="placeholder"/>
216 <hbox id="placeholder" flex="1"/>
219 <button id="register_btn" label="&staff.main.ws_info.register_btn.label;" accesskey="&staff.main.ws_info.register_btn.accesskey;" oncommand="register();"/>
220 <button id="help_btn" label="&staff.main.ws_info.help_btn.label;" accesskey="&staff.main.ws_info.help_btn.accesskey;" oncommand="alert(document.getElementById('desc').textContent); document.getElementById('wsname').focus();"/>