3 function bib_brief_init(mode) {
6 ui_init(); // JSAN, etc.
8 if (! mode) { mode = 'horizontal'; }
10 JSAN.use('OpenILS.data');
11 g.data = new OpenILS.data();
12 g.data.stash_retrieve();
14 docid = xul_param('docid');
16 // hackery if modal and invoked with util.window
17 var key = location.pathname + location.search + location.hash;
19 && typeof g.data.modal_xulG_stack != 'undefined'
20 && typeof g.data.modal_xulG_stack[key] != 'undefined'
22 var xulG = g.data.modal_xulG_stack[key][
23 g.data.modal_xulG_stack[key].length - 1 ];
24 if (typeof xulG == 'object') {
29 JSAN.use('util.network'); g.network = new util.network();
30 JSAN.use('util.date');
32 document.getElementById('caption').setAttribute(
34 document.getElementById('catStrings').getFormattedString(
35 'staff.cat.bib_brief.record_id', [docid]
41 g.data.last_record = docid; g.data.stash('last_record');
43 g.network.simple_request(
44 'MODS_SLIM_RECORD_RETRIEVE.authoritative',
48 g.mods = req.getResultObject();
50 g.network.simple_request(
51 'FM_BRE_RETRIEVE_VIA_ID.authoritative',
55 g.meta = req2.getResultObject()[0];
57 dynamic_grid_replacement(mode);
63 alert('Error in bib_brief.js, '
64 + 'req handler 2: ' + E + '\n');
69 alert('Error in bib_brief.js, req handler 1: '
76 var t = document.getElementById('caption').getAttribute('label');
77 t += ' ' + document.getElementById('catStrings').getString('staff.cat.bib_brief.noncat') + ' ';
78 document.getElementById('caption').setAttribute('style','background: red; color: white;');
79 document.getElementById('caption').setAttribute('label',t);
83 var err_msg = document.getElementById("commonStrings").getFormattedString('common.exception', ['cat/bib_brief.xul', E]);
84 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
89 function set_tab_name() {
91 window.xulG.set_tab_name(g.mods.tcn());
93 dump('Error in bib_brief.js, set_tab_name(): ' + E + '\n');
97 function set_caption() {
99 var t = document.getElementById('caption').getAttribute('label');
100 if (get_bool( g.meta.deleted() )) {
101 t += ' ' + document.getElementById('catStrings').getString('staff.cat.bib_brief.deleted') + ' ';
102 document.getElementById('caption').setAttribute('style','background: red; color: white;');
104 if ( ! get_bool( g.meta.active() ) ) {
105 t += ' ' + document.getElementById('catStrings').getString('staff.cat.bib_brief.inactive') + ' ';
106 document.getElementById('caption').setAttribute('style','background: red; color: white;');
108 document.getElementById('caption').setAttribute('label',t);
111 dump('Error in bib_brief.js, set_caption(): ' + E + '\n');
115 function unhide_add_volumes_button() {
116 if (xulG && typeof xulG == 'object' && typeof xulG['new_tab'] == 'function') {
117 document.getElementById('add_volumes').hidden = false;
118 document.getElementById('add_volumes_left_paren').hidden = false;
119 document.getElementById('add_volumes_right_paren').hidden = false;
123 function view_marc() {
125 JSAN.use('util.window'); var win = new util.window();
127 alert(document.getElementById("catStrings").getString('staff.cat.bib_brief.noncat.alert'));
129 //win.open( urls.XUL_MARC_VIEW + '?noprint=1&docid=' + docid, 'marc_view', 'chrome,resizable,modal,width=400,height=400');
130 win.open( urls.XUL_MARC_VIEW, 'marc_view', 'chrome,resizable,modal,width=400,height=400',{'noprint':1,'docid':docid});
133 g.error.standard_unexpected_error_alert('spawning marc display',E);
137 function spawn_patron(span) {
139 if (typeof window.xulG == 'object' && typeof window.xulG.set_patron_tab == 'function') {
140 window.xulG.set_patron_tab( {}, { 'id' : span.getAttribute('au_id') } );
142 copy_to_clipboard( span.textContent );
145 g.error.standard_unexpected_error_alert('spawning patron display',E);
149 function add_volumes() {
153 edit = g.network.request(
154 api.PERM_MULTI_ORG_CHECK.app,
155 api.PERM_MULTI_ORG_CHECK.method,
160 [ 'CREATE_VOLUME', 'CREATE_COPY' ]
162 ).length == 0 ? 1 : 0;
164 g.error.sdump('D_ERROR','batch permission check: ' + E);
168 alert(document.getElementById('offlineStrings').getString('staff.circ.copy_status.add_volumes.perm_failure'));
169 return; // no read-only view for this interface
173 JSAN.use('cat.util');
174 var cbsObj = cat.util.get_cbs_for_bre_id(docid);
175 if (cbsObj && cbsObj.can_have_copies() != get_db_true()) {
176 alert(document.getElementById('offlineStrings').getFormattedString('staff.cat.bib_source.can_have_copies.false', [cbsObj.source()]));
180 g.error.sdump('D_ERROR','can have copies check: ' + E);
181 alert('Error in server/cat/bib_brief.js, add_volumes(): ' + E);
185 var title = document.getElementById('offlineStrings').getFormattedString('staff.circ.copy_status.add_volumes.title', [docid]);
188 var unified_interface = String( g.data.hash.aous['ui.unified_volume_copy_editor'] ) == 'true';
189 if (unified_interface) {
190 var horizontal_interface = String( g.data.hash.aous['ui.cat.volume_copy_editor.horizontal'] ) == 'true';
191 url = window.xulG.url_prefix( horizontal_interface ? 'XUL_VOLUME_COPY_CREATOR_HORIZONTAL' : 'XUL_VOLUME_COPY_CREATOR' );
193 url = window.xulG.url_prefix('XUL_VOLUME_COPY_CREATOR_ORIGINAL');
195 var w = xulG.new_tab(
197 { 'tab_name' : title },
198 { 'doc_id' : docid, 'ou_ids' : [ ses('ws_ou') ], 'reload_opac' : xulG.reload_opac }
201 alert('Error in server/cat/bib_brief.js, add_volumes(): ' + E);
206 if (typeof JSAN == 'undefined') {
208 document.getElementById("commonStrings").getString(
209 'common.jsan.missing'
213 JSAN.errorLevel = "die"; // none, warn, or die
214 JSAN.addRepository('/xul/server/');
215 JSAN.use('util.error'); g.error = new util.error();
216 g.error.sdump('D_TRACE','my_init() for cat_bib_brief.xul');
219 function dynamic_grid_replacement(mode) {
220 var prefs = Components.classes[
221 '@mozilla.org/preferences-service;1'
223 Components.interfaces['nsIPrefBranch']
225 if (! prefs.prefHasUserValue(
226 'oils.bib_brief.'+mode+'.dynamic_grid_replacement.data'
232 var gridData = JSON2js(
234 'oils.bib_brief.'+mode+'.dynamic_grid_replacement.data'
238 var grid = document.getElementById('bib_brief_grid');
239 if (!grid) { return false; }
241 JSAN.use('util.widgets');
243 util.widgets.remove_children(grid);
245 var columns = document.createElement('columns');
246 grid.appendChild(columns);
249 for (var i = 0; i < gridData.length; i++) {
250 if (gridData[i].length > maxColumns) {
251 maxColumns = gridData[i].length;
255 for (var i = 0; i < maxColumns; i++) {
256 var columnA = document.createElement('column');
257 columns.appendChild(columnA);
258 var columnB = document.createElement('column');
259 columns.appendChild(columnB);
262 // Flex the column where the title usually goes
263 columns.firstChild.nextSibling.setAttribute('flex','1');
265 var rows = document.createElement('rows');
266 grid.appendChild(rows);
269 <row id="bib_brief_grid_row1" position="1">
270 <label control="title" class="emphasis"
271 value="&staff.cat.bib_brief.title.label;"
272 accesskey="&staff.cat.bib_brief.title.accesskey;"/>
274 name="title" readonly="true" context="clipboard"
275 class="plain" onfocus="this.select()"/>
279 var catStrings = document.getElementById('catStrings');
281 for (var i = 0; i < gridData.length; i++) {
282 var row = document.createElement('row');
283 row.setAttribute('id','bib_brief_grid_row'+i);
284 rows.appendChild(row);
286 for (var j = 0; j < gridData[i].length; j++) {
287 var name = gridData[i][j];
289 var label = document.createElement('label');
290 label.setAttribute('control',name);
291 label.setAttribute('class','emphasis');
292 label.setAttribute('value',
293 catStrings.testString('staff.cat.bib_brief.'+name+'.label')
294 ? catStrings.getString('staff.cat.bib_brief.'+name+'.label')
297 label.setAttribute('accesskey',
298 catStrings.testString('staff.cat.bib_brief.'+name+'.accesskey')
299 ? catStrings.getString('staff.cat.bib_brief.'+name+'.accesskey')
302 row.appendChild(label);
304 var textbox = document.createElement('textbox');
305 textbox.setAttribute('id',name);
306 textbox.setAttribute('name',name);
307 textbox.setAttribute('readonly','true');
308 textbox.setAttribute('context','clipboard');
309 textbox.setAttribute('class','plain');
310 textbox.setAttribute('onfocus','this.select()');
311 row.appendChild(textbox);