5 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
6 if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
7 JSAN.errorLevel = "die"; // none, warn, or die
8 JSAN.addRepository('/xul/server/');
9 JSAN.use('util.error'); g.error = new util.error();
10 g.error.sdump('D_TRACE','my_init() for cat/volume_editor.xul');
12 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
13 JSAN.use('util.network'); g.network = new util.network();
15 JSAN.use('util.functional');
17 g.volumes = xul_param('volumes',{'stash_name':'volumes_temp','clear_xpcom':true,'modal_xulG':true}); //JSON2js( g.data.volumes_temp );
18 //g.data.volumes_temp = ''; g.data.stash('volumes_temp');
20 var rows = document.getElementById('rows');
24 for (var i = 0; i < g.volumes.length; i++) {
25 var row = document.createElement('row'); rows.appendChild(row);
26 var lib_label = document.createElement('label'); row.appendChild(lib_label);
27 var class_ml = g.render_class_menu(i); row.appendChild(class_ml);
28 var prefix_ml = g.render_prefix_menu(i); row.appendChild(prefix_ml);
29 var label_tb = document.createElement('textbox'); row.appendChild(label_tb);
30 var suffix_ml = g.render_suffix_menu(i); row.appendChild(suffix_ml);
31 if (!first_tb) { first_tb = label_tb; }
33 var lib_id = g.volumes[i].owning_lib();
36 if (last_lib_seen != lib_id ) {
37 lib_label.setAttribute('value',g.data.hash.aou[ lib_id ].shortname() );
38 last_lib_seen = lib_id;
41 label_tb.setAttribute('value',g.volumes[i].label());
42 label_tb.setAttribute('onchange','try { var v = g.volumes['+i+']; v.ischanged("1"); v.label( this.value ); } catch(E) { alert(E); }');
45 first_tb.select(); first_tb.focus();
48 var err_msg = $("commonStrings").getFormattedString('common.exception', ['cat/volume_editor.xul', E]);
49 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); dump(js2JSON(E)); }
54 g.stash_and_close = function() {
56 //g.data.volumes_temp = js2JSON( g.volumes );
57 //g.error.sdump('D_CAT','in modal window, g.data.volumes_temp = \n' + g.data.volumes_temp + '\n');
58 //g.data.stash('volumes_temp');
59 xulG.volumes = g.volumes;
60 xulG.update_these_volumes = 1;
61 xulG.auto_merge = document.getElementById('auto_merge').checked;
62 update_modal_xulG(xulG);
65 alert('FIXME: volume editor -> ' + E);
69 g.render_class_menu = function(vol_idx) {
70 var ml = util.widgets.make_menulist(
71 util.functional.map_list(
74 return [ o.name(), o.id() ];
77 typeof g.volumes[vol_idx].label_class() == 'object'
78 ? g.volumes[vol_idx].label_class().id()
79 : g.volumes[vol_idx].label_class()
84 g.volumes[vol_idx].ischanged(1);
85 g.volumes[vol_idx].label_class(ml.value);
92 g.render_prefix_menu = function(vol_idx) {
93 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
94 ? g.volumes[vol_idx].owning_lib()
95 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
96 var menulist = document.createElement('menulist');
97 var menupopup = document.createElement('menupopup');
98 menulist.appendChild(menupopup);
99 var org_list = []; // order from top of consortium to owning lib
101 org_list.unshift(org.id());
102 org = org.parent_ou();
103 if (org && typeof org != 'object') {
104 org = g.data.hash.aou[ org ];
107 for (var i = 0; i < org_list.length; i++) {
108 g.render_prefix_menu_items(menupopup,org_list[i]);
110 menulist.setAttribute('value',
111 typeof g.volumes[vol_idx].prefix() == 'object'
112 ? g.volumes[vol_idx].prefix().id()
113 : g.volumes[vol_idx].prefix()
116 menulist.addEventListener(
119 g.volumes[vol_idx].ischanged(1);
120 g.volumes[vol_idx].prefix(menulist.value);
127 g.render_prefix_menu_items = function(menupopup,ou_id) {
128 if (typeof g.data.list['acnp_for_lib_'+ou_id] == 'undefined') {
129 g.data.list['acnp_for_lib_'+ou_id] = g.network.simple_request(
130 'FM_ACNP_RETRIEVE_VIA_PCRUD',
131 [ ses(), {"owning_lib":{"=":ou_id}}, {"order_by":{"acnp":"label_sortkey"}} ]
133 g.data.stash('list');
135 for (var i = 0; i < g.data.list['acnp_for_lib_'+ou_id].length; i++) {
136 var my_acnp = g.data.list['acnp_for_lib_'+ou_id][i];
137 var menuitem = document.createElement('menuitem');
138 menupopup.appendChild(menuitem);
139 menuitem.setAttribute(
141 my_acnp.id() == -1 ? '' :
142 $('catStrings').getFormattedString(
143 'staff.cat.volume_copy_creator.call_number_prefix.menuitem_label',
146 g.data.hash.aou[ ou_id ].shortname()
150 menuitem.setAttribute('value',my_acnp.id());
155 g.render_suffix_menu = function(vol_idx) {
156 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
157 ? g.volumes[vol_idx].owning_lib()
158 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
159 var menulist = document.createElement('menulist');
160 var menupopup = document.createElement('menupopup');
161 menulist.appendChild(menupopup);
162 var org_list = []; // order from top of consortium to owning lib
164 org_list.unshift(org.id());
165 org = org.parent_ou();
166 if (org && typeof org != 'object') {
167 org = g.data.hash.aou[ org ];
170 for (var i = 0; i < org_list.length; i++) {
171 g.render_suffix_menu_items(menupopup,org_list[i]);
173 menulist.setAttribute('value',
174 typeof g.volumes[vol_idx].suffix() == 'object'
175 ? g.volumes[vol_idx].suffix().id()
176 : g.volumes[vol_idx].suffix()
179 menulist.addEventListener(
182 g.volumes[vol_idx].ischanged(1);
183 g.volumes[vol_idx].suffix(menulist.value);
190 g.render_suffix_menu_items = function(menupopup,ou_id) {
191 if (typeof g.data.list['acns_for_lib_'+ou_id] == 'undefined') {
192 g.data.list['acns_for_lib_'+ou_id] = g.network.simple_request(
193 'FM_ACNS_RETRIEVE_VIA_PCRUD',
194 [ ses(), {"owning_lib":{"=":ou_id}}, {"order_by":{"acns":"label_sortkey"}} ]
196 g.data.stash('list');
198 for (var i = 0; i < g.data.list['acns_for_lib_'+ou_id].length; i++) {
199 var my_acns = g.data.list['acns_for_lib_'+ou_id][i];
200 var menuitem = document.createElement('menuitem');
201 menupopup.appendChild(menuitem);
202 menuitem.setAttribute(
204 my_acns.id() == -1 ? '' :
205 $('catStrings').getFormattedString(
206 'staff.cat.volume_copy_creator.call_number_suffix.menuitem_label',
209 g.data.hash.aou[ ou_id ].shortname()
213 menuitem.setAttribute('value',my_acns.id());