1 dump('entering util/hide.js\n');
3 if (typeof util == 'undefined') var util = {};
6 util.hide.EXPORT_OK = [
10 util.hide.EXPORT_TAGS = { ':all' : util.hide.EXPORT_OK };
12 util.hide.generate_dialog = function(setting,org) {
13 JSAN.use('util.network'); JSAN.use('OpenILS.data');
14 var data = new OpenILS.data(); data.stash_retrieve();
15 var network = new util.network();
17 // gather the hideable elements and determine how we might best label them
18 var nl = document.getElementsByAttribute('hideable','*');
20 for (var i = 0; i < nl.length; i++) {
21 var hname = nl[i].getAttribute('hideable');
22 var value = nl[i].getAttribute('value');
23 var label = nl[i].getAttribute('label');
25 if (typeof hideable[hname] == 'undefined') {
26 hideable[hname] = hname;
29 if (nl[i].nodeName == 'label' && value) {
30 hideable[hname] = value;
34 hideable[hname] = label;
38 // put them into a sorted array
40 for (var hname in hideable) {
41 elements.push( { 'hname' : hname, 'label' : hideable[hname] } );
43 elements = elements.sort(
45 if (a.label < b.label) return -1;
46 if (a.label > b.label) return 1;
52 JSAN.use('util.widgets');
53 var vbox = document.createElement('vbox');
54 var menu_box = document.createElement('hbox');
55 vbox.appendChild(menu_box);
56 var perm = 'STAFF_LOGIN'; // let's be less restrictive up front, since
57 // staff may want to configure and then call over a manager for a perm
59 var menu = util.widgets.render_perm_org_menu(perm,ses('ws_ou'));
62 $('offlineStrings').getFormattedString(
63 'util.hide_elements.missing_permission',
69 menu_box.appendChild(menu);
71 var already_hidden = {};
72 var aous_req = network.simple_request(
73 'FM_AOUS_SPECIFIC_RETRIEVE',
81 var desc = document.createElement('description');
82 vbox.appendChild(desc);
83 var msg = $('offlineStrings').getFormattedString(
84 'util.hide_elements.current_setting_preamble',
85 [ ses('ws_ou_shortname'), data.hash.aou[ aous_req.org ].shortname() ]
87 desc.appendChild( document.createTextNode( msg ) );
89 for (var i in aous_req.value) {
90 already_hidden[aous_req.value[i]] = true;
93 /* update data.hash.aous while we have fresh data */
94 data.hash.aous[setting] = aous_req.value;
98 var desc = document.createElement('description');
99 vbox.appendChild(desc);
100 var msg = $('offlineStrings').getFormattedString(
101 'util.hide_elements.current_setting_nonexistent',
102 [ ses('ws_ou_shortname') ]
104 desc.appendChild( document.createTextNode( msg ) );
106 data.hash.aous[setting] = null;
110 for (var i = 0; i < elements.length; i++) {
111 var checkbox = document.createElement('checkbox');
112 checkbox.setAttribute('label',elements[i].label);
113 checkbox.setAttribute('value',elements[i].hname);
114 if (already_hidden[elements[i].hname]) {
115 checkbox.setAttribute('checked','true');
117 vbox.appendChild(checkbox);
121 var results = widget_prompt(
124 'title' : $('offlineStrings').getString('util.hide_elements.title'),
125 'desc' : $('offlineStrings').getString('util.hide_elements.desc'),
127 'method' : function() {
129 for (var i = 0; i < vbox.childNodes.length; i++) {
130 var checkbox = vbox.childNodes[i];
131 if (checkbox.checked) {
132 hide_these.push( checkbox.getAttribute('value') );
135 return { 'org' : menu.value, 'elements' : hide_these };
139 if (!results) { return; }
142 params[setting] = results.elements.length > 0
144 : null; // delete the setting so we can inherit from higher orgs
145 var result = network.simple_request(
155 if (results.elements.length > 0) {
156 alert($('offlineStrings').getString('util.hide_elements.update_setting.update_success'));
158 alert($('offlineStrings').getString('util.hide_elements.update_setting.delete_success'));
160 data.hash.aous[setting] = params[setting];
163 util.hide.generate_css(setting);
166 alert($('offlineStrings').getString('util.hide_elements.update_setting.failure'));
170 util.hide.generate_css = function(setting) {
171 JSAN.use('OpenILS.data');
172 var data = new OpenILS.data(); data.stash_retrieve();
174 for (var i in data.hash.aous[setting]) {
175 hidden[data.hash.aous[setting][i]] = true;
178 var nl = document.getElementsByAttribute('hideable','*');
179 for (var i = 0; i < nl.length; i++) {
180 var hname = nl[i].getAttribute('hideable');
182 addCSSClass(nl[i],'hideme');
184 removeCSSClass(nl[i],'hideme');
189 dump('exiting util/hide.js\n');