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 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
130 //win.open( urls.XUL_MARC_VIEW + '?noprint=1&docid=' + docid, 'marc_view', 'chrome,resizable,modal,width=400,height=400');
131 win.open( urls.XUL_MARC_VIEW, 'marc_view', 'chrome,resizable,modal,width=400,height=400',{'noprint':1,'docid':docid});
134 g.error.standard_unexpected_error_alert('spawning marc display',E);
138 function spawn_patron(span) {
140 if (typeof window.xulG == 'object' && typeof window.xulG.set_patron_tab == 'function') {
141 window.xulG.set_patron_tab( {}, { 'id' : span.getAttribute('au_id') } );
143 copy_to_clipboard( span.textContent );
146 g.error.standard_unexpected_error_alert('spawning patron display',E);
150 function add_volumes() {
154 edit = g.network.request(
155 api.PERM_MULTI_ORG_CHECK.app,
156 api.PERM_MULTI_ORG_CHECK.method,
161 [ 'CREATE_VOLUME', 'CREATE_COPY' ]
163 ).length == 0 ? 1 : 0;
165 g.error.sdump('D_ERROR','batch permission check: ' + E);
169 alert(document.getElementById('offlineStrings').getString('staff.circ.copy_status.add_volumes.perm_failure'));
170 return; // no read-only view for this interface
174 JSAN.use('cat.util');
175 var cbsObj = cat.util.get_cbs_for_bre_id(docid);
176 if (cbsObj && cbsObj.can_have_copies() != get_db_true()) {
177 alert(document.getElementById('offlineStrings').getFormattedString('staff.cat.bib_source.can_have_copies.false', [cbsObj.source()]));
181 g.error.sdump('D_ERROR','can have copies check: ' + E);
182 alert('Error in server/cat/bib_brief.js, add_volumes(): ' + E);
186 var title = document.getElementById('offlineStrings').getFormattedString('staff.circ.copy_status.add_volumes.title', [docid]);
189 var unified_interface = String( g.data.hash.aous['ui.unified_volume_copy_editor'] ) == 'true';
190 if (unified_interface) {
191 var horizontal_interface = String( g.data.hash.aous['ui.cat.volume_copy_editor.horizontal'] ) == 'true';
192 url = window.xulG.url_prefix( horizontal_interface ? urls.XUL_VOLUME_COPY_CREATOR_HORIZONTAL : urls.XUL_VOLUME_COPY_CREATOR );
194 url = window.xulG.url_prefix( urls.XUL_VOLUME_COPY_CREATOR_ORIGINAL );
196 var w = xulG.new_tab(
198 { 'tab_name' : title },
199 { 'doc_id' : docid, 'ou_ids' : [ ses('ws_ou') ] }
202 alert('Error in server/cat/bib_brief.js, add_volumes(): ' + E);
207 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
208 if (typeof JSAN == 'undefined') {
210 document.getElementById("commonStrings").getString(
211 'common.jsan.missing'
215 JSAN.errorLevel = "die"; // none, warn, or die
216 JSAN.addRepository('/xul/server/');
217 JSAN.use('util.error'); g.error = new util.error();
218 g.error.sdump('D_TRACE','my_init() for cat_bib_brief.xul');
221 function dynamic_grid_replacement(mode) {
222 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
223 var prefs = Components.classes[
224 '@mozilla.org/preferences-service;1'
226 Components.interfaces['nsIPrefBranch']
228 if (! prefs.prefHasUserValue(
229 'oils.bib_brief.'+mode+'.dynamic_grid_replacement.data'
235 var gridData = JSON2js(
237 'oils.bib_brief.'+mode+'.dynamic_grid_replacement.data'
241 var grid = document.getElementById('bib_brief_grid');
242 if (!grid) { return false; }
244 JSAN.use('util.widgets');
246 util.widgets.remove_children(grid);
248 var columns = document.createElement('columns');
249 grid.appendChild(columns);
252 for (var i = 0; i < gridData.length; i++) {
253 if (gridData[i].length > maxColumns) {
254 maxColumns = gridData[i].length;
258 for (var i = 0; i < maxColumns; i++) {
259 var columnA = document.createElement('column');
260 columns.appendChild(columnA);
261 var columnB = document.createElement('column');
262 columns.appendChild(columnB);
265 // Flex the column where the title usually goes
266 columns.firstChild.nextSibling.setAttribute('flex','1');
268 var rows = document.createElement('rows');
269 grid.appendChild(rows);
272 <row id="bib_brief_grid_row1" position="1">
273 <label control="title" class="emphasis"
274 value="&staff.cat.bib_brief.title.label;"
275 accesskey="&staff.cat.bib_brief.title.accesskey;"/>
277 name="title" readonly="true" context="clipboard"
278 class="plain" onfocus="this.select()"/>
282 var catStrings = document.getElementById('catStrings');
284 for (var i = 0; i < gridData.length; i++) {
285 var row = document.createElement('row');
286 row.setAttribute('id','bib_brief_grid_row'+i);
287 rows.appendChild(row);
289 for (var j = 0; j < gridData[i].length; j++) {
290 var name = gridData[i][j];
292 var label = document.createElement('label');
293 label.setAttribute('control',name);
294 label.setAttribute('class','emphasis');
295 label.setAttribute('value',
296 catStrings.testString('staff.cat.bib_brief.'+name+'.label')
297 ? catStrings.getString('staff.cat.bib_brief.'+name+'.label')
300 label.setAttribute('accesskey',
301 catStrings.testString('staff.cat.bib_brief.'+name+'.accesskey')
302 ? catStrings.getString('staff.cat.bib_brief.'+name+'.accesskey')
305 row.appendChild(label);
307 var textbox = document.createElement('textbox');
308 textbox.setAttribute('id',name);
309 textbox.setAttribute('name',name);
310 textbox.setAttribute('readonly','true');
311 textbox.setAttribute('context','clipboard');
312 textbox.setAttribute('class','plain');
313 textbox.setAttribute('onfocus','this.select()');
314 row.appendChild(textbox);