1 const rel_vert_pos_call_number_classification = 1;
2 const rel_vert_pos_call_number_prefix = 2;
3 const rel_vert_pos_call_number = 3;
4 const rel_vert_pos_call_number_suffix = 4;
10 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
11 if (typeof JSAN == 'undefined') { throw( $("commonStrings").getString('common.jsan.missing') ); }
12 JSAN.errorLevel = "die"; // none, warn, or die
13 JSAN.addRepository('/xul/server/');
14 JSAN.use('util.error'); g.error = new util.error();
15 g.error.sdump('D_TRACE','my_init() for cat/volume_editor.xul');
17 JSAN.use('OpenILS.data'); g.data = new OpenILS.data(); g.data.init({'via':'stash'});
18 JSAN.use('util.network'); g.network = new util.network();
20 JSAN.use('util.functional');
24 g.volumes = xul_param('volumes',{'stash_name':'volumes_temp','clear_xpcom':true,'modal_xulG':true}); //JSON2js( g.data.volumes_temp );
25 //g.data.volumes_temp = ''; g.data.stash('volumes_temp');
27 var rows = document.getElementById('rows');
31 for (var i = 0; i < g.volumes.length; i++) {
32 var row = document.createElement('row');
33 rows.appendChild(row);
34 var lib_label = document.createElement('label');
35 row.appendChild(lib_label);
36 var class_ml = g.render_class_menu(i);
37 class_ml.setAttribute('class','cn_class');
38 class_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_classification);
39 row.appendChild(class_ml);
40 var prefix_ml = g.render_prefix_menu(i);
41 prefix_ml.setAttribute('class','cn_prefix');
42 prefix_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_prefix);
43 row.appendChild(prefix_ml);
44 var label_tb = document.createElement('textbox');
45 label_tb.setAttribute('rel_vert_pos', rel_vert_pos_call_number);
46 row.appendChild(label_tb);
47 var suffix_ml = g.render_suffix_menu(i);
48 suffix_ml.setAttribute('class','cn_suffix');
49 suffix_ml.setAttribute('rel_vert_pos', rel_vert_pos_call_number_suffix);
50 row.appendChild(suffix_ml);
51 if (!first_tb) { first_tb = label_tb; }
53 var lib_id = g.volumes[i].owning_lib();
56 if (last_lib_seen != lib_id ) {
57 lib_label.setAttribute('value',g.data.hash.aou[ lib_id ].shortname() );
58 last_lib_seen = lib_id;
61 label_tb.setAttribute('value',g.volumes[i].label());
62 label_tb.setAttribute('onchange','try { var v = g.volumes['+i+']; v.ischanged("1"); v.label( this.value ); } catch(E) { alert(E); }');
65 first_tb.select(); first_tb.focus();
68 if (g.volumes.length > 0) {
70 JSAN.use('util.fm_utils');
72 // Get the default callnumber classification scheme from OU settings
73 g.label_class = g.data.hash.aous['cat.default_classification_scheme'];
75 // Assign a default value if none was returned
77 g.label_class = g.data.list.acnc[0].id();
80 // Find the pertinent orgs
83 for (var i = 0; i < g.volumes.length; i++) {
84 seen_ou[ g.volumes[i].owning_lib() ] = 1;
86 for (var i in seen_ou) {
90 for (var i = 0; i < ou_ids.length; i++) {
92 var org = g.data.hash.aou[ ou_ids[i] ];
93 if ( get_bool( g.data.hash.aout[ org.ou_type() ].can_have_vols() ) ) {
94 g.ou_ids.push( ou_ids[i] );
97 g.error.sdump('D_ERROR',E);
100 g.common_ancestor_ou_ids = util.fm_utils.find_common_aou_ancestors( g.ou_ids ).reverse();
105 cat.util.render_callnumbers_for_bib_menu('marc_cn',g.volumes[0].record(), g.label_class);
109 g.render_batch_button();
113 var err_msg = $("commonStrings").getFormattedString('common.exception', ['cat/volume_editor.xul', E]);
114 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); dump(js2JSON(E)); }
119 g.stash_and_close = function() {
121 //g.data.volumes_temp = js2JSON( g.volumes );
122 //g.error.sdump('D_CAT','in modal window, g.data.volumes_temp = \n' + g.data.volumes_temp + '\n');
123 //g.data.stash('volumes_temp');
124 xulG.volumes = g.volumes;
125 xulG.update_these_volumes = 1;
126 xulG.auto_merge = document.getElementById('auto_merge').checked;
127 update_modal_xulG(xulG);
130 alert('FIXME: volume editor -> ' + E);
134 g.render_class_menu = function(vol_idx) {
135 var ml = cat.util.render_cn_class_menu(
137 typeof g.volumes[vol_idx].label_class() == 'object'
138 ? g.volumes[vol_idx].label_class().id()
139 : g.volumes[vol_idx].label_class()
144 g.volumes[vol_idx].ischanged(1);
145 g.volumes[vol_idx].label_class(ml.value);
152 g.render_prefix_menu = function(vol_idx) {
154 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
155 ? g.volumes[vol_idx].owning_lib()
156 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
158 var menulist = cat.util.render_cn_prefix_menu(
161 typeof g.volumes[vol_idx].prefix() == 'object'
162 ? g.volumes[vol_idx].prefix().id()
163 : g.volumes[vol_idx].prefix()
166 menulist.addEventListener(
169 g.volumes[vol_idx].ischanged(1);
170 g.volumes[vol_idx].prefix(menulist.value);
177 g.render_suffix_menu = function(vol_idx) {
179 var org = typeof g.volumes[vol_idx].owning_lib() == 'object'
180 ? g.volumes[vol_idx].owning_lib()
181 : g.data.hash.aou[ g.volumes[vol_idx].owning_lib() ];
183 var menulist = cat.util.render_cn_suffix_menu(
186 typeof g.volumes[vol_idx].suffix() == 'object'
187 ? g.volumes[vol_idx].suffix().id()
188 : g.volumes[vol_idx].suffix()
191 menulist.addEventListener(
194 g.volumes[vol_idx].ischanged(1);
195 g.volumes[vol_idx].suffix(menulist.value);
202 g.list_classes = function() {
203 var hbox = $('batch_class');
204 var ml = cat.util.render_cn_class_menu(
206 [ '<No Change>', false ]
209 ml.setAttribute('id','batch_class_menulist');
210 hbox.appendChild(ml);
213 g.list_prefixes = function() {
214 var hbox = $('batch_prefix');
215 var ml = cat.util.render_cn_prefix_menu(
216 g.common_ancestor_ou_ids,
218 [ '<No Change>', false ]
221 ml.setAttribute('id','batch_prefix_menulist');
222 hbox.appendChild(ml);
225 g.list_suffixes = function() {
226 var hbox = $('batch_suffix');
227 var ml = cat.util.render_cn_suffix_menu(
228 g.common_ancestor_ou_ids,
230 [ '<No Change>', false ]
233 ml.setAttribute('id','batch_suffix_menulist');
234 hbox.appendChild(ml);
237 g.render_batch_button = function() {
238 var hbox = $('batch_button_box');
239 var btn = document.createElement('button');
240 btn.setAttribute('id','batch_button');
241 btn.setAttribute('label',$('catStrings').getString('staff.cat.volume_copy_creator.my_init.btn.label'));
242 btn.setAttribute('accesskey',$('catStrings').getString('staff.cat.volume_copy_creator.my_init.btn.accesskey'));
243 btn.setAttribute('image','/xul/server/skin/media/images/down_arrow.gif');
244 hbox.appendChild(btn);
245 btn.addEventListener(
248 var nl = document.getElementsByTagName('textbox');
249 for (var i = 0; i < nl.length; i++) {
251 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number && !nl[i].disabled) {
252 var label = $('marc_cn').firstChild.value;
255 util.widgets.dispatch('change',nl[i]);
259 nl = document.getElementsByTagName('menulist');
260 for (var i = 0; i < nl.length; i++) {
262 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_classification && !nl[i].disabled) {
263 var value = $('batch_class_menulist').value;
264 if (!isNaN( Number(value) )) {
266 util.widgets.dispatch('command',nl[i]);
270 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_prefix && !nl[i].disabled) {
271 var value = $('batch_prefix_menulist').value;
272 if (!isNaN( Number(value) )) {
274 util.widgets.dispatch('command',nl[i]);
278 if (nl[i].getAttribute('rel_vert_pos')==rel_vert_pos_call_number_suffix && !nl[i].disabled) {
279 var value = $('batch_suffix_menulist').value;
280 if (!isNaN( Number(value) )) {
282 util.widgets.dispatch('command',nl[i]);