2 <!-- Application: Evergreen Staff Client -->
3 <!-- Screen: Cataloger's Search Result Screen -->
5 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
7 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
8 <?xml-stylesheet href="chrome://open_ils_staff_client/skin/global.css" type="text/css"?>
10 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
12 <!DOCTYPE window PUBLIC "" ""[
13 <!--#include virtual="/opac/locale/en-US/lang.dtd"-->
16 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
18 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
21 onload="try { my_init(); } catch(E) { alert(E); }"
22 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
24 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
26 <script type="text/javascript">
27 var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};
28 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
30 <scripts id="openils_util_scripts"/>
32 <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
36 var docid; var marc_html; var top_pane; var bottom_pane; var opac_frame;
37 var browser_frame; var browser_obj; var browser_win;
44 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
45 if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
46 JSAN.errorLevel = "die"; // none, warn, or die
47 JSAN.addRepository('/xul/server/');
48 JSAN.use('util.error'); g.error = new util.error();
49 g.error.sdump('D_TRACE','my_init() for cat/opac.xul');
51 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
52 XML_HTTP_SERVER = data.server_unadorned;
54 JSAN.use('util.network'); g.network = new util.network();
57 try { authtime = g.cgi.param('authtime') || xulG.authtime; } catch(E) { g.error.sdump('D_ERROR',E); }
58 try { docid = g.cgi.param('docid') || xulG.docid; } catch(E) { g.error.sdump('D_ERROR',E); }
59 try { opac_url = g.cgi.param('opac_url') || xulG.opac_url; } catch(E) { g.error.sdump('D_ERROR',E); }
61 JSAN.use('util.deck');
62 top_pane = new util.deck('top_pane');
63 bottom_pane = new util.deck('bottom_pane');
68 var err_msg = "!! This software has encountered an error. Please tell your friendly " +
69 "system administrator or software developer the following:\ncat/opac.xul\n" + E + '\n';
70 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
75 function set_brief_view() {
77 var url = xulG.url_prefix( urls.XUL_BIB_BRIEF ) + '?docid=' + window.escape(docid);
78 dump('spawning ' + url + '\n');
83 'set_tab_name' : function(n) {
84 if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
85 try { window.xulG.set_tab_name('Bib Record: ' + n); } catch(E) { alert(E); }
87 dump('no set_tab_name\n');
97 function set_marc_view() {
99 bottom_pane.set_iframe( xulG.url_prefix( urls.XUL_MARC_VIEW ) + '?docid=' + window.escape(docid),{},xulG);
105 function set_marc_edit() {
107 bottom_pane.node.selectedIndex = 1;
108 var content_params = {
109 'show_nav_buttons' : false,
110 'show_print_button' : false,
111 'passthru_content_params' : {
112 'record' : { 'url' : '/opac/extras/supercat/retrieve/marcxml/record/' + docid },
114 'label' : 'Save Record',
115 'func' : function (new_marcxml) {
117 var r = g.network.simple_request('MARC_XML_RECORD_UPDATE', [ ses(), docid, new_marcxml ]);
118 if (typeof r.ilsevent != 'undefined') {
121 alert('Record successfully saved.');
124 g.error.standard_unexpected_error_alert('Record not likely updated.',E);
129 'url' : xulG.url_prefix( urls.XUL_MARC_EDIT ),
131 if (editor_obj) return;
132 JSAN.use('util.browser');
133 editor_obj = new util.browser();
136 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER) + '?name=MarcEditor',
139 'browser_id' : 'editor',
140 'passthru_content_params' : content_params,
144 g.error.sdump('D_ERROR','set_marc_edit: ' + E);
145 alert('set_marc_edit: ' + E);
149 function set_copy_browser() {
151 bottom_pane.node.selectedIndex = 2;
152 var content_params = {
153 'show_nav_buttons' : false,
154 'show_print_button' : false,
155 'passthru_content_params' : xulG,
156 'url' : xulG.url_prefix( urls.XUL_COPY_VOLUME_BROWSE ) + '?docid=' + window.escape(docid),
158 if (holdings_obj) return;
159 JSAN.use('util.browser');
160 holdings_obj = new util.browser();
163 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER) + '?name=HoldingsMaintenance',
166 'browser_id' : 'holdings',
167 'passthru_content_params' : content_params,
171 //bottom_pane.set_iframe( xulG.url_prefix( urls.XUL_COPY_VOLUME_BROWSE ) + '?docid=' + window.escape(docid),{},xulG);
177 function set_hold_browser() {
179 bottom_pane.node.selectedIndex = 3;
180 var content_params = {
181 'show_nav_buttons' : false,
182 'show_print_button' : false,
183 'passthru_content_params' : xulG,
184 'url' : xulG.url_prefix( urls.XUL_HOLDS_BROWSER ) + '?docid=' + window.escape(docid),
186 if (holds_obj) return;
187 JSAN.use('util.browser');
188 holds_obj = new util.browser();
191 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER) + '?name=Holds',
194 'browser_id' : 'holds',
195 'passthru_content_params' : content_params,
198 //bottom_pane.set_iframe( xulG.url_prefix( urls.XUL_HOLDS_BROWSER ) + '?docid=' + window.escape(docid),{},xulG);
204 function set_opac() {
206 bottom_pane.node.selectedIndex = 0;
207 var content_params = {
208 'show_nav_buttons' : true,
209 'show_print_button' : true,
210 'passthru_content_params' : {
212 'authtime' : ses('authtime'),
213 'window_open' : function(a,b,c) {
215 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
216 return window.open(a,b,c);
218 g.error.standard_unexpected_error_alert('window_open',E);
222 'on_url_load' : function(f) {
223 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
226 if (typeof f.contentWindow.wrappedJSObject.attachEvt != 'undefined') {
227 win = f.contentWindow.wrappedJSObject;
229 win = f.contentWindow;
232 win = f.contentWindow;
235 win.attachEvt("rdetail", "recordRetrieved",
238 var url = xulG.url_prefix( urls.XUL_BIB_BRIEF ) + '?docid=' + window.escape(docid)
239 dump('removing ' + url + '\n');
240 try { top_pane.remove_iframe( url ); } catch(E) { dump(E + '\n'); }
243 document.getElementById('nav').setAttribute('hidden','false');
245 g.error.standard_unexpected_error_alert('rdetail -> recordRetrieved',E);
250 'url_prefix' : xulG.url_prefix,
252 if (opac_url) content_params.url = opac_url;
253 if (browser_obj) return;
254 JSAN.use('util.browser');
255 browser_obj = new util.browser();
258 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER) + '?name=Catalog',
261 'browser_id' : 'browser',
262 'passthru_content_params' : content_params,
265 //browser_frame = bottom_pane.set_browser( xulG.url_prefix(urls.XUL_REMOTE_BROWSER) + '?name=Catalog', {}, content_params);
267 g.error.sdump('D_ERROR','set_opac: ' + E);
268 alert('set_opac: ' + E);
272 function bib_in_new_tab() {
274 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
275 var url = browser_win.location.href;
276 var content_params = { 'session' : ses(), 'authtime' : ses('authtime'), 'opac_url' : url };
277 xulG.new_tab(xulG.url_prefix(urls.XUL_OPAC_WRAPPER), {}, content_params);
279 g.error.sdump('D_ERROR',E);
284 function remove_me() {
286 var url = xulG.url_prefix( urls.XUL_BIB_BRIEF ) + '?docid=' + window.escape(docid);
287 dump('removing ' + url + '\n');
288 try { top_pane.remove_iframe( url ); } catch(E) { dump(E + '\n'); }
289 document.getElementById('nav').setAttribute('hidden','true');
295 function add_to_bucket() {
297 JSAN.use('util.window'); var win = new util.window();
299 xulG.url_prefix(urls.XUL_RECORD_BUCKETS)
300 + '?record_ids=' + js2JSON( [ docid ] ),
301 'sel_bucket_win' + win.window_name_increment(),
302 'chrome,resizable,modal,center'
310 alert('Not yet implemented. Work around: Choose Duplicate in New Tab option');
315 <commandset><command id="cmd_forward"/><command id="cmd_back"/></commandset>
318 <deck id="top_pane"/>
319 <splitter><grippy/></splitter>
320 <menubar id="nav" hidden="true">
321 <menu label="Actions for this Record" accesskey="A">
323 <menuitem label="OPAC View" accesskey="O" id="opac_view" oncommand="set_opac();"/>
324 <menuitem label="MARC View" accesskey="V" id="marc_view" oncommand="set_marc_view();"/>
325 <menuitem label="MARC Edit" accesskey="E" id="marc_edit" oncommand="set_marc_edit();"/>
326 <menuitem label="Holdings Maintenance" accesskey="H" id="copy_browse" oncommand="set_copy_browser();"/>
327 <menuitem label="View Holds" accesskey="s" id="view_holds" oncommand="set_hold_browser();"/>
329 <menuitem label="Add to Bucket" accesskey="B" id="add_bucket" oncommand="add_to_bucket();"/>
331 <menuitem label="Refresh All Interfaces" id="refresh" oncommand="refresh();"/>
332 <menuitem label="Duplicate in New Tab" id="bib_in_new_tab" oncommand="bib_in_new_tab();"/>
333 <menuitem label="Remove this Frame" id="remove_me" oncommand="remove_me();"/>
337 <deck id="bottom_pane" flex="1">
338 <browser id="browser"/>
339 <browser id="editor"/>
340 <browser id="holdings"/>
341 <browser id="holds"/>