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="gen_offline_menus_win"
24 onload="try { my_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="/xul/server/main/JSAN.js"/>
38 if (typeof JSAN == 'undefined') {
39 throw(document.getElementById('commonStrings').getString('common.jsan.missing'));
41 /////////////////////////////////////////////////////////////////////////////
43 JSAN.errorLevel = "die"; // none, warn, or die
44 JSAN.addRepository('/xul/server/');
46 JSAN.use('util.error'); g.error = new util.error();
47 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
48 JSAN.use('util.network'); g.network = new util.network();
50 gen_offline_menus_init();
52 var r = g.network.simple_request('USER_ORG_UNIT_OPT_IN_FEATURE',[]);
53 g.data.user_org_unit_opt_in_enabled = (r == "1" || r == 1);
54 g.data.stash('user_org_unit_opt_in_enabled');
57 function gen_offline_menus_init() {
59 JSAN.use('util.functional');
61 save_object('offline_ou_list', build_ou_list());
63 save_object('offline_pgt_list', build_pgt_list());
65 save_object('offline_cit_list', build_cit_list());
67 save_object('offline_cnct_list', build_cnct_list());
69 save_object('offline_asv_list', build_asv_list());
71 var server_time = g.network.request('open-ils.actor','opensrf.system.time',[]);
72 var local_time = parseInt( new Date().getTime() / 1000 );
74 var delta = server_time - local_time;
76 JSAN.use('util.file'); var file = new util.file('pending_xacts');
77 if (file._file.exists()) {
81 save_object('offline_delta', [ delta ]);
84 save_object('print_list_templates',g.data.print_list_templates);
86 $('placeholder').setAttribute('value', document.getElementById('commonStrings').getString('staff.main.gen_offline_widgets.synced'));
91 return document.getElementById(id);
94 function save_object(filename,obj) {
95 JSAN.use('util.file'); var file = new util.file(filename);
96 file.set_object(obj); file.close();
99 function build_ou_list() {
100 JSAN.use('util.fm_utils');
102 util.functional.map_list(
103 /*util.fm_utils.flatten_ou_branch(g.data.tree.aou)*/ g.data.list.aou,
105 var sname = obj.shortname();
106 for (i = sname.length; i < 20; i++) {
110 obj.name() ? sname + ' ' + obj.name() : obj.shortname(),
112 ( ! get_bool( g.data.hash.aout[ obj.ou_type() ].can_have_users() ) ),
113 ( g.data.hash.aout[ obj.ou_type() ].depth() * 2),
117 g.data.list.au[0].ws_ou()
121 function build_pgt_list() {
122 var list = []; var added = {};
126 (n.application_perm() == 'group_application.user.patron') ||
127 (n.application_perm() == null) ||
128 (n.application_perm() == '')
130 if (typeof added[n.id()] == 'undefined') {
131 list.push(n); added[n.id()] = true;
132 var children = n.children();
133 if (children) for (var i = 0; i < children.length; i++) {
137 } else if (n.parent() == null) {
138 var children = n.children();
139 if (children) for (var i = 0; i < children.length; i++) {
145 walk(g.data.tree.pgt);
148 util.functional.map_list(
150 function(obj) { return [
151 obj.description() ? obj.name() + ' : ' + obj.description() : obj.name(),
158 function build_cit_list() {
160 util.functional.map_list(
162 function(obj) { return [
170 function build_cnct_list() {
171 JSAN.use('util.fm_utils');
173 util.functional.map_list(
174 util.functional.filter_list(
177 return util.fm_utils.compare_aou_a_is_b_or_ancestor(o.owning_lib(), g.data.list.au[0].ws_ou());
183 return util.fm_utils.sort_func_aou_by_depth_and_then_string(
184 [ a.owning_lib(), a.name() ],
185 [ b.owning_lib(), b.name() ]
188 alert(document.getElementById('commonStrings').getString('staff.main.gen_offline_widgets.noncat_sort.error') + E);
195 return [ g.data.hash.aou[ o.owning_lib() ].shortname() + ' : ' + o.name(), js2JSON( [ o.id(), o.circ_duration() ] ) ];
201 function build_asv_list() {
203 /* loop through required surveys */
204 for (var i = 0; i < g.data.list.my_asv.length; i++) {
205 dump('i = ' + i + '\n');
206 var survey = g.data.list.my_asv[i];
207 obj[ survey.name() ] = {};
208 obj[ survey.name() ][ 'description' ] = survey.description();
209 obj[ survey.name() ][ 'questions' ] = [];
211 /* loop through survey questions */
212 for (var j = 0; j < survey.questions().length; j++) {
213 dump('\tj = ' + j + '\n');
214 var question = survey.questions()[j];
216 q[ 'question' ] = question.question();
217 q[ 'answers' ] = util.functional.map_list(
219 function(obj) { return [
222 + obj.question() + ','
223 + question.survey() + ']'
226 obj[ survey.name() ][ 'questions' ].push( q );
236 <label id="placeholder"/>