]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/cat/opac.xul
e282de012561b0aa5f869c1f5bbc7358c782d153
[Evergreen.git] / Open-ILS / xul / staff_client / server / cat / opac.xul
1 <?xml version="1.0"?>
2 <!-- Application: Evergreen Staff Client -->
3 <!-- Screen: Cataloger's Search Result Screen -->
4
5 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
6 <!-- STYLESHEETS -->
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"?>
9
10 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
11 <!-- LOCALIZATION -->
12 <!DOCTYPE window PUBLIC "" ""[
13         <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
14 ]>
15
16 <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
17 <!-- OVERLAYS -->
18 <?xul-overlay href="/xul/server/OpenILS/util_overlay.xul"?>
19
20 <window id="opac_win"
21         onload="try { my_init(); font_helper(); } catch(E) { alert(E); }"
22         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
23
24         <!-- ///////////////////////////////////////////////////////////////////////////////////////////////////////////// -->
25         <!-- BEHAVIOR -->
26         <script type="text/javascript">
27                 var myPackageDir = 'open_ils_staff_client'; var IAMXUL = true; var g = {};
28                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
29         </script>
30         <scripts id="openils_util_scripts"/>
31
32         <script type="text/javascript" src="/xul/server/main/JSAN.js"/>
33         <script>
34         <![CDATA[
35
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;
38                 var editor_obj;
39                 var holdings_obj;
40                 var holds_obj;
41
42                 var iframe_method = 'reset_iframe'; // set_iframe
43
44                 function my_init() {
45                         try {
46                                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
47                 if (typeof JSAN == 'undefined') { throw( "The JSAN library object is missing."); }
48                                 JSAN.errorLevel = "die"; // none, warn, or die
49                                 JSAN.addRepository('/xul/server/');
50                                 JSAN.use('util.error'); g.error = new util.error();
51                                 g.error.sdump('D_TRACE','my_init() for cat/opac.xul');
52
53                                 JSAN.use('OpenILS.data'); var data = new OpenILS.data(); data.init({'via':'stash'});
54                                 XML_HTTP_SERVER = data.server_unadorned;
55
56                                 JSAN.use('util.network'); g.network = new util.network();
57
58                                 try { authtime = xul_param('authtime'); } catch(E) { g.error.sdump('D_ERROR',E); }
59                                 try { docid = xul_param('docid'); } catch(E) { g.error.sdump('D_ERROR',E); }
60                                 try { opac_url = xul_param('opac_url'); } catch(E) { g.error.sdump('D_ERROR',E); }
61
62                                 JSAN.use('util.deck');
63                                 top_pane = new util.deck('top_pane');
64                                 bottom_pane = new util.deck('bottom_pane');
65
66                                 set_opac();
67
68                         } catch(E) {
69                                 var err_msg = "!! This software has encountered an error.  Please tell your friendly " +
70                                         "system administrator or software developer the following:\ncat/opac.xul\n" + E + '\n';
71                                 try { g.error.sdump('D_ERROR',err_msg); } catch(E) { dump(err_msg); }
72                                 alert(err_msg);
73                         }
74                 }
75
76                 function set_brief_view() {
77                         try {
78                                 var url = xulG.url_prefix( urls.XUL_BIB_BRIEF ); // + '?docid=' + window.escape(docid); 
79                                 dump('spawning ' + url + '\n');
80                                 top_pane[iframe_method]( 
81                                         url,
82                                         {}, 
83                                         { 
84                                                 'docid' : docid,
85                                                 'set_tab_name' : function(n) { 
86                                                         if (typeof window.xulG == 'object' && typeof window.xulG.set_tab_name == 'function') {
87                                                                 try { window.xulG.set_tab_name('Bib Record: ' + n); } catch(E) { alert(E); }
88                                                         } else {
89                                                                 dump('no set_tab_name\n');
90                                                         }
91                                                 }
92                                         }  
93                                 );
94                         } catch(E) {
95                                 alert(E);
96                         }
97                 }
98
99                 function set_marc_view() {
100                         try {
101                                 bottom_pane[iframe_method]( 
102                                         xulG.url_prefix( urls.XUL_MARC_VIEW ), // + '?docid=' + window.escape(docid),
103                                         {},
104                                         {
105                                                 'docid' : docid,
106                                         }
107                                 );
108                         } catch(E) {
109                                 alert(E);
110                         }
111                 }
112
113                 function set_marc_edit() {
114                         try {
115                                 bottom_pane.node.selectedIndex = 1;
116                                 var content_params = { 
117                                         'show_nav_buttons' : false,
118                                         'show_print_button' : false,
119                                         'passthru_content_params' : { 
120                                                 'record' : { 'url' : '/opac/extras/supercat/retrieve/marcxml/record/' + docid },
121                                                 'save' : {
122                                                         'label' : 'Save Record',
123                                                         'func' : function (new_marcxml) {
124                                                                 try {
125                                                                         var r = g.network.simple_request('MARC_XML_RECORD_UPDATE', [ ses(), docid, new_marcxml ]);
126                                                                         if (typeof r.ilsevent != 'undefined') {
127                                                                                 throw(r);
128                                                                         } else {
129                                                                                 alert('Record successfully saved.');
130                                                                         }
131                                                                 } catch(E) {
132                                                                                 g.error.standard_unexpected_error_alert('Record not likely updated.',E);
133                                                                 }
134                                                         }
135                                                 },
136                                         },
137                                         'url' : xulG.url_prefix( urls.XUL_MARC_EDIT ),
138                                         'name' : 'MarcEditor',
139                                 };
140                                 if (editor_obj) return;
141                                 JSAN.use('util.browser');
142                                 editor_obj = new util.browser();
143                                 editor_obj.init(
144                                         {
145                                                 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER), // + '?name=MarcEditor',
146                                                 'push_xulG' : true,
147                                                 'alt_print' : false,
148                                                 'browser_id' : 'editor',
149                                                 'passthru_content_params' : content_params,
150                                         }
151                                 );
152                         } catch(E) {
153                                 g.error.sdump('D_ERROR','set_marc_edit: ' + E);
154                                 alert('set_marc_edit: ' + E);
155                         }
156                 }
157
158                 function set_copy_browser() {
159                         try {
160                                 bottom_pane.node.selectedIndex = 2;
161                                 xulG.docid = docid;
162                                 var content_params = { 
163                                         'show_nav_buttons' : false,
164                                         'show_print_button' : false,
165                                         'passthru_content_params' : xulG,
166                                         'url' : xulG.url_prefix( urls.XUL_COPY_VOLUME_BROWSE ), // + '?docid=' + window.escape(docid),
167                                         'name' : 'HoldingsMaintenance',
168                                 };
169                                 if (holdings_obj) return;
170                                 JSAN.use('util.browser');
171                                 holdings_obj = new util.browser();
172                                 holdings_obj.init(
173                                         {
174                                                 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER), // + '?name=HoldingsMaintenance',
175                                                 'push_xulG' : true,
176                                                 'alt_print' : false,
177                                                 'browser_id' : 'holdings',
178                                                 'passthru_content_params' : content_params,
179                                         }
180                                 );
181
182                                 //bottom_pane.set_iframe( xulG.url_prefix( urls.XUL_COPY_VOLUME_BROWSE ) + '?docid=' + window.escape(docid),{},xulG);
183                         } catch(E) {
184                                 alert(E);
185                         }
186                 }
187
188                 function set_hold_browser() {
189                         try {
190                                 bottom_pane.node.selectedIndex = 3;
191                                 xulG.docid = docid;
192                                 var content_params = { 
193                                         'show_nav_buttons' : false,
194                                         'show_print_button' : false,
195                                         'passthru_content_params' : xulG,
196                                         'url' : xulG.url_prefix( urls.XUL_HOLDS_BROWSER ), // + '?docid=' + window.escape(docid),
197                                         'name' : 'Holds',
198                                 };
199                                 if (holds_obj) return;
200                                 JSAN.use('util.browser');
201                                 holds_obj = new util.browser();
202                                 holds_obj.init(
203                                         {
204                                                 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER), // + '?name=Holds',
205                                                 'push_xulG' : true,
206                                                 'alt_print' : false,
207                                                 'browser_id' : 'holds',
208                                                 'passthru_content_params' : content_params,
209                                         }
210                                 );
211                                 //bottom_pane.set_iframe( xulG.url_prefix( urls.XUL_HOLDS_BROWSER ) + '?docid=' + window.escape(docid),{},xulG);
212                         } catch(E) {
213                                 alert(E);
214                         }
215                 }
216
217                 function set_opac() {
218                         try {
219                                 bottom_pane.node.selectedIndex = 0;
220                                 var content_params = { 
221                                         'show_nav_buttons' : true,
222                                         'show_print_button' : true,
223                                         'passthru_content_params' : { 
224                                                 'authtoken' : ses(), 
225                                                 'authtime' : ses('authtime'),
226                                                 'window_open' : function(a,b,c) {
227                                                         try {
228                                                                 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite');
229                                                                 return window.open(a,b,c);
230                                                         } catch(E) {
231                                                                 g.error.standard_unexpected_error_alert('window_open',E);
232                                                         }
233                                                 }
234                                         },
235                                         'on_url_load' : function(f) {
236                                                 netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
237                                                 var win;
238                                                 try {
239                                                         if (typeof f.contentWindow.wrappedJSObject.attachEvt != 'undefined') {
240                                                                 win = f.contentWindow.wrappedJSObject;
241                                                         } else {
242                                                                 win = f.contentWindow;
243                                                         }
244                                                 } catch(E) {
245                                                         win = f.contentWindow;
246                                                 }
247                                                 browser_win = win;
248                                                 win.attachEvt("rdetail", "recordRetrieved",
249                                                         function(id){
250                                                                 try {
251                                                                         docid = id;
252                                                                         browser_obj = null; editor_obj = null; holdings_obj = null; holds_obj = null;
253                                                                         top_pane.clear(); bottom_pane.clear();
254                                                                         set_brief_view();
255                                                                         document.getElementById('nav').setAttribute('hidden','false');
256                                                                 } catch(E) {
257                                                                         g.error.standard_unexpected_error_alert('rdetail -> recordRetrieved',E);
258                                                                 }
259                                                         }
260                                                 );
261                                         },
262                                         'url_prefix' : xulG.url_prefix,
263                                         'name' : 'Catalog',
264                                 };
265                                 if (opac_url) content_params.url = opac_url;
266                                 if (browser_obj) return;
267                                 JSAN.use('util.browser');
268                                 browser_obj = new util.browser();
269                                 browser_obj.init(
270                                         {
271                                                 'url' : xulG.url_prefix(urls.XUL_REMOTE_BROWSER), // + '?name=Catalog',
272                                                 'push_xulG' : true,
273                                                 'alt_print' : false,
274                                                 'browser_id' : 'browser',
275                                                 'passthru_content_params' : content_params,
276                                         }
277                                 );
278                                 //browser_frame = bottom_pane.set_browser( xulG.url_prefix(urls.XUL_REMOTE_BROWSER) + '?name=Catalog', {}, content_params);
279                         } catch(E) {
280                                 g.error.sdump('D_ERROR','set_opac: ' + E);
281                                 alert('set_opac: ' + E);
282                         }
283                 }
284
285                 function bib_in_new_tab() {
286                         try {
287                                 netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
288                                 var url = browser_win.location.href;
289                                 var content_params = { 'session' : ses(), 'authtime' : ses('authtime'), 'opac_url' : url };
290                                 xulG.new_tab(xulG.url_prefix(urls.XUL_OPAC_WRAPPER), {}, content_params);
291                         } catch(E) {
292                                 g.error.sdump('D_ERROR',E);
293                                 alert(E);
294                         }
295                 }
296
297                 function remove_me() {
298                         try {
299                                 browser_obj = null; editor_obj = null; holdings_obj = null; holds_obj = null;
300                                 top_pane.clear(); bottom_pane.clear();
301                                 document.getElementById('nav').setAttribute('hidden','true');
302                         } catch(E) {
303                                 alert(E);
304                         }
305                 }
306
307                 function add_to_bucket() {
308                         try {
309                                 JSAN.use('util.window'); var win = new util.window();
310                                 win.open(
311                                         xulG.url_prefix(urls.XUL_RECORD_BUCKETS),
312                                         //+ '?record_ids=' + js2JSON( [ docid ] ),
313                                         'sel_bucket_win' + win.window_name_increment(),
314                                         'chrome,resizable,modal,center',
315                                         { 'record_ids' : [ docid ] }
316                                 );
317                         } catch(E) {
318                                 alert(E);
319                         }
320                 }
321
322                 function refresh() {
323                         alert('Not yet implemented.  Work around: Choose Duplicate in New Tab option');
324                 }
325         ]]>
326         </script>
327
328         <commandset><command id="cmd_forward"/><command id="cmd_back"/></commandset>
329
330         <vbox flex="1">
331                 <deck id="top_pane"/>
332                 <splitter><grippy/></splitter>
333                 <menubar id="nav" hidden="true">
334                         <menu label="&staff.cat.opac.menu.label;" accesskey="&staff.cat.opac.menu.accesskey;">
335                         <menupopup>
336                         <menuitem label="&staff.cat.opac.menuitem.opacview.label;" accesskey="&staff.cat.opac.menuitem.opacview.accesskey;" id="opac_view" oncommand="set_opac();"/>
337                         <menuitem label="&staff.cat.opac.menuitem.marcview.label;" accesskey="&staff.cat.opac.menuitem.marcview.accesskey;" id="marc_view" oncommand="set_marc_view();"/>
338                         <menuitem label="&staff.cat.opac.menuitem.marcedit.label;" accesskey="&staff.cat.opac.menuitem.marcedit.accesskey;" id="marc_edit" oncommand="set_marc_edit();"/>
339                         <menuitem label="&staff.cat.opac.menuitem.holding.label;" accesskey="&staff.cat.opac.menuitem.holding.accesskey;" id="copy_browse" oncommand="set_copy_browser();"/>
340                         <menuitem label="&staff.cat.opac.menuitem.viewholds.label;" accesskey="&staff.cat.opac.menuitem.viewholds.accesskey;" id="view_holds" oncommand="set_hold_browser();"/>
341                         <menuseparator/>
342                         <menuitem label="&staff.cat.opac.menuitem.addtobucket.label;" accesskey="&staff.cat.opac.menuitem.addtobucket.accesskey;" id="add_bucket" oncommand="add_to_bucket();"/>
343                         <menuseparator/>
344                         <menuitem label="&staff.cat.opac.menuitem.refreshinterfaces.label;" id="refresh" oncommand="refresh();"/>
345                         <menuitem label="&staff.cat.opac.menuitem.dupnewtab.label;" id="bib_in_new_tab" oncommand="bib_in_new_tab();"/>
346                         <menuitem label="&staff.cat.opac.menuitem.removeframe.label;" id="remove_me" oncommand="remove_me();"/>
347                         </menupopup>
348                         </menu>
349                 </menubar>
350                 <deck id="bottom_pane" flex="1">
351                         <browser id="browser"/>
352                         <browser id="editor"/>
353                         <browser id="holdings"/>
354                         <browser id="holds"/>
355                 </deck>
356         </vbox>
357
358 </window>
359