2 <!-- Application: Evergreen Staff Client -->
3 <!-- Screen: Main, Authentication Window -->
5 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
7 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
8 <?xml-stylesheet href="chrome://open_ils_staff_client/skin/global.css" type="text/css"?>
9 <?xml-stylesheet href="chrome://open_ils_staff_client/skin/auth.css" type="text/css"?>
11 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
13 <!DOCTYPE window PUBLIC "" ""[
14 <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
17 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
19 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
21 <window id="gen_offline_menus_win"
22 onload="try { gen_offline_menus_init(); } catch(E) { alert(E); }"
23 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
26 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
28 <script type="text/javascript">var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};</script>
29 <scripts id="openils_util_scripts"/>
31 <script type="text/javascript" src="chrome://open_ils_staff_client/content/main/lang.js"/>
32 <script type="text/javascript" src="/xul/server/main/lang.js"/>
33 <script type="text/javascript" src="chrome://open_ils_staff_client/content/main/JSAN.js"/>
37 function gen_offline_menus_init() {
39 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
41 if (typeof JSAN == 'undefined') {
43 "The JSAN library object is missing."
46 /////////////////////////////////////////////////////////////////////////////
48 JSAN.errorLevel = "die"; // none, warn, or die
49 JSAN.addRepository('/xul/server/');
51 JSAN.use('util.error'); g.error = new util.error();
52 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
53 JSAN.use('util.network'); g.network = new util.network();
54 JSAN.use('util.functional');
56 save_object('offline_ou_list', build_ou_list());
58 save_object('offline_pgt_list', build_pgt_list());
60 save_object('offline_cit_list', build_cit_list());
62 save_object('offline_cnct_list', build_cnct_list());
64 save_object('offline_asv_list', build_asv_list());
66 var server_time = g.network.request('open-ils.actor','opensrf.system.time',[]);
67 var local_time = parseInt( new Date().getTime() / 1000 );
69 var delta = server_time - local_time;
71 JSAN.use('util.file'); var file = new util.file('pending_xacts');
72 if (file._file.exists()) {
76 save_object('offline_delta', [ delta ]);
79 save_object('print_list_templates',g.data.print_list_templates);
81 $('placeholder').setAttribute('value','Offline interface synchronized with server.');
86 return document.getElementById(id);
89 function save_object(filename,obj) {
90 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
91 JSAN.use('util.file'); var file = new util.file(filename);
92 file.set_object(obj); file.close();
95 function build_ou_list() {
97 util.functional.map_list(
100 var sname = obj.shortname(); for (i = sname.length; i < 20; i++) sname += ' ';
102 obj.name() ? sname + ' ' + obj.name() : obj.shortname(),
104 ( get_bool( g.data.hash.aout[ obj.ou_type() ].can_have_users() ) ),
105 ( g.data.hash.aout[ obj.ou_type() ].depth() * 2),
109 g.data.list.au[0].ws_ou()
113 function build_pgt_list() {
114 var list = []; var added = {};
118 (n.application_perm() == 'group_application.user.patron') ||
119 (n.application_perm() == null) ||
120 (n.application_perm() == '')
122 if (typeof added[n.id()] == 'undefined') {
123 list.push(n); added[n.id()] = true;
124 var children = n.children();
125 if (children) for (var i = 0; i < children.length; i++) {
129 } else if (n.parent() == null) {
130 var children = n.children();
131 if (children) for (var i = 0; i < children.length; i++) {
137 walk(g.data.tree.pgt);
140 util.functional.map_list(
142 function(obj) { return [
143 obj.description() ? obj.name() + ' : ' + obj.description() : obj.name(),
150 function build_cit_list() {
152 util.functional.map_list(
154 function(obj) { return [
162 function build_cnct_list() {
163 JSAN.use('util.fm_utils');
165 util.functional.map_list(
166 util.functional.filter_list(
169 return util.fm_utils.compare_aou_a_is_b_or_ancestor(o.owning_lib(), g.data.list.au[0].ws_ou());
175 return util.fm_utils.sort_func_aou_by_depth_and_then_string(
176 [ a.owning_lib(), a.name() ],
177 [ b.owning_lib(), b.name() ]
180 alert('error in noncat sorting: ' + E);
187 return [ g.data.hash.aou[ o.owning_lib() ].shortname() + ' : ' + o.name(), js2JSON( [ o.id(), o.circ_duration() ] ) ];
193 function build_asv_list() {
195 /* loop through required surveys */
196 for (var i = 0; i < g.data.list.my_asv.length; i++) {
197 dump('i = ' + i + '\n');
198 var survey = g.data.list.my_asv[i];
199 obj[ survey.name() ] = {};
200 obj[ survey.name() ][ 'description' ] = survey.description();
201 obj[ survey.name() ][ 'questions' ] = [];
203 /* loop through survey questions */
204 for (var j = 0; j < survey.questions().length; j++) {
205 dump('\tj = ' + j + '\n');
206 var question = survey.questions()[j];
208 q[ 'question' ] = question.question();
209 q[ 'answers' ] = util.functional.map_list(
211 function(obj) { return [
214 + obj.question() + ','
215 + question.survey() + ']'
218 obj[ survey.name() ][ 'questions' ].push( q );
228 <label id="placeholder"/>