]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/server/index.xhtml
UI cleanup for batch-holds from lists
[working/Evergreen.git] / Open-ILS / xul / staff_client / server / index.xhtml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!DOCTYPE html PUBLIC
4         "-//W3C//DTD XHTML 1.0 Transitional//EN" 
5         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
6         <!--#include virtual="/opac/locale/${locale}/lang.dtd"-->
7 ]>
8
9 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
10 <head>
11   <meta name="generator" content=
12   "HTML Tidy for Linux/x86 (vers 11 February 2007), see www.w3.org" />
13
14   <title>&staff.client.portal.title;</title>
15   <script type="text/javascript">
16 // <![CDATA[
17
18   // FIXME - some I18N love still needed in this file.  See @alt on img tags, and javascript for tab names
19
20   function SearchOnBlur() {
21         var textbox = document.getElementById("quicksearch");
22
23         if(textbox && textbox.value == "")
24                 textbox.style.background = "#FFFFFF url(\"eg_tiny_logo.jpg\") center no-repeat";
25   }
26
27   function SearchOnFocus() {
28         var textbox = document.getElementById("quicksearch");
29         
30         if(textbox)
31                 textbox.style.background = "#FFFFFF";
32   }
33
34   var home_ou_id = 1;
35
36   function SearchOnSubmit() {
37         var textbox = document.getElementById("quicksearch");
38         
39         //var home_ou_id = 1; // 1 = all org units. Should come from staff client scripts
40         // a quicksearch should probably just default to the whole system. Staff can narrow it down later if they want.
41         var search_depth = 0; // 0 = consortium, 1 = system, 2 = library, 3 = sub-library, etc.
42         
43         if(textbox && textbox.value != "") {
44                 var opac_url =  xulG.url_prefix(urls.opac_rresult) + "?rt=keyword&tp=keyword&l=" + home_ou_id + "&d=" + search_depth +"&f=&t=" + escape(textbox.value);
45                 if (urls.opac_rresult.match(/\/eg\/opac\/results/)) {
46                     opac_url =  xulG.url_prefix(urls.opac_rresult) + "?query=" + escape(textbox.value);
47                 }
48                 var params = {'tab_name':'Catalog'};
49                 var content_params = { 'session' : ses(), 'authtime' : ses('authtime'), 'opac_url' : opac_url };
50                 xulG.set_tab(urls.XUL_OPAC_WRAPPER, params, content_params);
51         }
52         
53         return false;
54   }
55   // ]]> 
56   </script>
57   <script type="text/javascript" src="main/constants.js">
58 </script>
59   <script type="text/javascript" src="main/lang.js">
60 </script>
61   <script type="text/javascript" src="/opac/common/js/utils.js">
62 </script>
63   <script type="text/javascript" src="/opac/common/js/CGI.js">
64 </script>
65   <script type="text/javascript" src="/opac/common/js/md5.js">
66 </script>
67   <script type="text/javascript" src="/opac/common/js/JSON.js">
68 </script>
69   <script type="text/javascript" src="/opac/common/js/fmall.js">
70 </script>
71   <script type="text/javascript" src="/opac/common/js/fmgen.js">
72 </script>
73   <script type="text/javascript" src="/opac/common/js/RemoteRequest.js">
74 </script>
75   <script type="text/javascript" src="/opac/common/js/OrgTree.js">
76 </script>
77   <script type="text/javascript" src="/opac/common/js/org_utils.js">
78 </script>
79   <script type="text/javascript" src="OpenILS/global_util.js">
80 </script>
81   <script type="text/javascript" src="main/JSAN.js">
82 </script>
83   <script type="text/javascript">
84       // <![CDATA[
85         
86                 //this function will allow for the "Hello, Staff Member" messages
87                 function init() { 
88                         SearchOnBlur();
89                         JSAN.use('OpenILS.data'); 
90                         var data = new OpenILS.data(); 
91                         data.stash_retrieve(); 
92                         document.getElementById('staffname').innerHTML = ", " + data.list.au[0].first_given_name(); 
93                         home_ou_id = data.list.au[0].ws_ou();
94                 }
95                 function jb_open_eg_web_page(path, label) {
96                         var loc = urls.XUL_BROWSER + '?url=' + window.escape(xulG.url_prefix(urls.EG_WEB_BASE) + '/' + path);
97
98                         xulG.set_tab( 
99                                 loc, 
100                                 {tab_name : label, browser : false }, 
101                                 {no_xulG : false, show_print_button : false, show_nav_buttons : true }
102                         );
103                 }
104                 function jb_open_eg_web_page_newtab(path, label) {
105                         var loc = urls.XUL_BROWSER + '?url=' + window.escape(xulG.url_prefix(urls.EG_WEB_BASE) + '/' + path);
106
107                         xulG.new_tab( 
108                                 loc, 
109                                 {tab_name : label, browser : false }, 
110                                 {no_xulG : false, show_print_button : false, show_nav_buttons : true }
111                         );
112                 }
113                 
114                 //Place your helpdesk link here
115                 function helpdesk(newtab) {
116                         loc = "http://evergreen-ils.org/communicate.php";
117                         var params = {'tab_name':'Evergreen Project Website'};
118                         
119                         if(newtab)
120                                 xulG.new_tab(loc, params, {}); 
121                         else
122                                 xulG.set_tab(loc, params, {}); 
123                 }
124                 
125                 //A good place for a Google map.  Evergreen Indiana uses GIS data to create a Google map to verify if a library is within district boundaries
126                 //http://208.119.72.68/evergreen/evergreenmap.html
127                 function address_map(newtab) {
128                         loc = "http://maps.google.com";
129                         var params = {'tab_name':'Locate Address In Map'};
130                         
131                         if(newtab)
132                                 xulG.new_tab(loc, params, {}); 
133                         else
134                                 xulG.set_tab(loc, params, {}); 
135                 }
136                 function local_admin(newtab) {
137                         var loc = urls.XUL_REMOTE_BROWSER + '?url=' + window.escape(urls.XUL_LOCAL_ADMIN + '?ses=' + window.escape(ses()) + '&session=' + window.escape(ses())); 
138                         var params = {'tab_name':'Local Administration', 'browser' : true };
139                         var content_params = { 'no_xulG' : false, 'show_nav_buttons' : true, 'show_print_button' : true };
140                         
141                         if(newtab)
142                                 xulG.new_tab(loc, params, content_params);
143                         else
144                                 xulG.set_tab(loc, params, content_params);
145                 }
146                 function copy_status(newtab) {
147                         if(newtab)
148                                 xulG.new_tab(urls.XUL_COPY_STATUS,{},{});
149                         else
150                                 xulG.set_tab(urls.XUL_COPY_STATUS,{},{});
151                 }
152                 function hold_pull_list(newtab) {
153                         var loc = urls.XUL_REMOTE_BROWSER + '?url=' + window.escape(urls.XUL_HOLD_PULL_LIST + '?ses=' + window.escape(ses()));
154                         var params = {'tab_name':'On Shelf Pull List'};
155                         
156                         if(newtab)
157                                 xulG.new_tab(loc, params);
158                         else
159                                 xulG.set_tab(loc, params);
160                 }
161                 function checkout(newtab) {
162                         if(newtab)
163                                 xulG.new_tab(urls.XUL_PATRON_BARCODE_ENTRY,{},{});
164                         else
165                                 xulG.set_tab(urls.XUL_PATRON_BARCODE_ENTRY,{},{});
166                 }
167                 function catalog(newtab) {
168                         var params = {'tab_name':'Catalog'};
169                         var content_params = { 'session' : ses(), 'authtime' : ses('authtime') };
170                         
171                         if(newtab)
172                                 xulG.new_tab(urls.XUL_OPAC_WRAPPER, params, content_params);
173                         else
174                                 xulG.set_tab(urls.XUL_OPAC_WRAPPER, params, content_params);
175                 }
176                 function z39_50(newtab) {
177                         if(newtab)
178                                 xulG.new_tab(urls.XUL_Z3950_IMPORT,{},{});
179                         else
180                                 xulG.set_tab(urls.XUL_Z3950_IMPORT,{},{});
181                 }
182                 function copy_buckets(newtab) {
183                         params = {'tab_name':'Copy Buckets'};
184                         if(newtab)
185                                 xulG.new_tab(urls.XUL_COPY_BUCKETS, params, {});
186                         else
187                                 xulG.set_tab(urls.XUL_COPY_BUCKETS, params, {});
188                 }
189                 function record_buckets(newtab) {
190                         params = {'tab_name':'Record Buckets'};
191                         if(newtab)
192                                 xulG.new_tab(urls.XUL_RECORD_BUCKETS, params, {});
193                         else
194                                 xulG.set_tab(urls.XUL_RECORD_BUCKETS, params, {});
195                 }
196                 function receipt_editor(newtab) {
197                         if(newtab)
198                                 xulG.new_tab(urls.XUL_PRINT_LIST_TEMPLATE_EDITOR, {}, {});
199                         else
200                                 xulG.set_tab(urls.XUL_PRINT_LIST_TEMPLATE_EDITOR, {}, {});
201                 }
202                 function checkin(newtab) {
203                         if(newtab)
204                                 xulG.new_tab(urls.XUL_CHECKIN,{},{});
205                         else
206                                 xulG.set_tab(urls.XUL_CHECKIN,{},{});
207                 }
208                 function MARC_batch_import(newtab) {
209                         if(newtab)
210                                 jb_open_eg_web_page_newtab('vandelay/vandelay', 'Server Settings');
211                         else
212                                 jb_open_eg_web_page('vandelay/vandelay', 'Server Settings');
213                 }
214                 function local_admin_reports(newtab) {
215                         var loc = urls.XUL_BROWSER + '?url=' + window.escape( xulG.url_prefix(urls.XUL_REPORTS) + '?ses=' + ses());
216                         params = {'tab_name' : 'Reports', 'browser' : false }
217                         content_params = {'no_xulG' : false, 'show_print_button' : false, show_nav_buttons : true }
218                         if(newtab)
219                                 xulG.new_tab(loc, params, content_params);
220                         else
221                                 xulG.set_tab(loc, params, content_params);
222                 }
223                 function find_patron(newtab) {
224                         if(newtab)
225                                 xulG.new_tab(urls.XUL_PATRON_DISPLAY,{},{});
226                         else
227                                 xulG.set_tab(urls.XUL_PATRON_DISPLAY,{},{});
228                 }
229                 
230                 function spawn_search(s) {
231                         var loc = urls.XUL_PATRON_DISPLAY;
232                         loc += '?doit=1&amp;query=' + window.escape(js2JSON(s));
233                         xulG.new_tab( loc, {}, {} );
234                 }
235                 function register_patron(newtab) {
236                         function spawn_editor(p) {
237                                 var url = urls.XUL_PATRON_EDIT;
238                                 var param_count = 0;
239                                 for (var i in p) {
240                                         if (param_count++ == 0) url += '?'; else url += '&amp;';
241                                         url += i + '=' + window.escape(p[i]);
242                                 }
243                                 var loc = urls.XUL_REMOTE_BROWSER + '?url=' + window.escape( url );
244                                 xulG.new_tab(loc, {}, { 'show_print_button' : true , 'tab_name' : 'Editing Related Patron' , 'passthru_content_params' : {'spawn_search' : function(s) { spawn_search(s); }, 'spawn_editor' : spawn_editor }});
245                         }
246                         
247                         var loc = urls.XUL_REMOTE_BROWSER  + '?url=' + window.escape( urls.XUL_PATRON_EDIT + '?ses=' + window.escape( ses() ) );
248                         var content_params = { 
249                                                      'show_print_button' : true , 
250                                                      'tab_name' : 'Register Patron' ,
251                                                      'passthru_content_params' : { 'spawn_search' : function(s) { spawn_search(s); },
252                                                                                     'spawn_editor' : spawn_editor }
253                                                  }
254                         if(newtab)
255                                 xulG.new_tab(loc, {}, content_params);
256                         else
257                                 xulG.set_tab(loc, {}, content_params);
258                 }
259                 // ]]>
260   </script>
261   <style type="text/css">
262 /*<![CDATA[*/
263   body {
264   font-family: "Trebuchet MS", Helvetica, Verdana, Arial, sans-serif;
265   }
266
267   hr {
268   border-style: solid;
269   border-color: black;
270   width: 180px;
271   }
272
273   a {
274   font-size: 85%;
275   font-weight: bold;
276   color: black;
277   text-decoration: none;
278   }
279
280   #alignment {
281         border-collapse: collapse;
282         border-style: none;
283         width: 100%;
284   }
285
286   #alignment td {
287         vertical-align: top;
288   }
289
290   .functionlist {
291         border-style: none;
292         margin-left: auto;
293         margin-right: auto;
294   }
295
296   .functionlist td {
297   text-align: left;
298         margin: 2px;
299         padding: 2px;
300   }
301
302   .functionalgroup {
303         text-align: center;
304   }
305
306   a img {
307         border-style: none;
308   }
309
310   .attribution {
311         font-size: 75%;
312   }
313
314   form {
315         margin: 0px;
316         padding: 0px;
317   }
318
319   .newtabimg {
320         float: right;
321         padding-left:4px;
322   }
323
324   .funcimg {
325         width: 48px;
326         height: 48px;
327   }
328
329   /*]]>*/
330   </style>
331   <style type="text/css">
332 /*<![CDATA[*/
333   body.c4 {margin-top: 0px; padding-top: 0px; background-image: url(skin/media/images/portal/background.png);}
334   td.c3 {border: 1px solid black; border-top: 0px; border-bottom: 0px;}
335   span.c2 {font-size:75%;}
336   div.c1 {text-align: center}
337   /*]]>*/
338   </style>
339 </head>
340
341 <body class="c4" onload="init();">
342   <div class="c1">
343     <img src="skin/media/images/portal/logo.png" height="121" width="396" alt="Evergreen logo" /><br />
344     &staff.client.portal.welcome;<span id="staffname"></span><br />
345     <br />
346   </div>
347
348   <table id="alignment">
349     <tr>
350       <td>
351         <div class="functionalgroup">
352           &staff.client.portal.circpatron;
353           <hr />
354
355           <table class="functionlist">
356             <tr>
357               <td height="50"><img src="skin/media/images/portal/forward.png" height="48" width="48"
358               onclick="try { checkout(false); } catch(E) { alert(E); }" alt=
359               "Check Out Items" /></td>
360
361               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
362               onclick="try { checkout(true); } catch(E) { alert(E); }" /><a href="#"
363               onclick=
364               "try { checkout(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.checkout;</a><br />
365               <a href="#" onclick=
366               "try { checkout(false); } catch(E) { alert(E); }; return false;"><span class="c2">
367               &staff.client.portal.retrievebc;</span></a></td>
368             </tr>
369
370             <tr>
371               <td height="50"><img src="skin/media/images/portal/back.png" height="48" width="48" onclick=
372               "try { checkin(false); } catch(E) { alert(E); }" alt=
373               "Check In Items" /></td>
374
375               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
376               onclick="try { checkin(true); } catch(E) { alert(E); }" /> <a href="#"
377               onclick=
378               "try { checkin(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.checkin;</a><br /></td>
379             </tr>
380
381             <tr>
382               <td height="50"><img src="skin/media/images/portal/registerpatron.png" height="48" width="48"
383               onclick="try { register_patron(false); } catch(E) { alert(E); }" alt=
384               "Register Patron" /></td>
385
386               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
387               onclick="try { register_patron(true); } catch(E) { alert(E); }" /> <a href=
388               "#" onclick=
389               "try { register_patron(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.patronreg;</a></td>
390             </tr>
391
392             <tr>
393               <td height="50"><img src="skin/media/images/portal/retreivepatron.png" height="48" width="48"
394               onclick="try { find_patron(false); } catch(E) { alert(E); }" alt=
395               "Search For Patron By Name" /></td>
396
397               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
398               onclick="try { find_patron(true); } catch(E) { alert(E); }" /> <a href="#"
399               onclick=
400               "try { find_patron(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.patronsearch;</a></td>
401             </tr>
402
403             <tr>
404               <td height="50"><img class="funcimg" src="skin/media/images/portal/holds.png" height="48"
405               width="48" onclick="try { hold_pull_list(false); } catch(E) { alert(E); }"
406               alt="Pull List for Hold Requests" /></td>
407
408               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
409               onclick="try { hold_pull_list(true); } catch(E) { alert(E); }" /> <a href=
410               "#" onclick=
411               "try { hold_pull_list(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.holdlist;</a></td>
412             </tr>
413 <!--
414             <tr>
415               <td height="50"><img src="skin/media/images/portal/map.PNG" alt="Locate Address In Map"
416               onclick="try { address_map(false); } catch(E) { alert(E); }" /></td>
417
418               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
419               onclick="try { address_map(true); } catch(E) { alert(E); }" /> <a href="#"
420               onclick=
421               "try { address_map(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.addrmap;</a></td>
422             </tr>
423 -->
424           </table>
425         </div>
426       </td>
427
428       <td class="c3">
429         <div class="functionalgroup">
430           &staff.client.portal.itemcataloging;
431           <hr />
432
433           <table class="functionlist">
434             <tr>
435               <td colspan="2" rowspan="1">
436                 <form action="#" onsubmit="return SearchOnSubmit();">
437                   <input id="quicksearch" onfocus="SearchOnFocus();" onblur=
438                   "SearchOnBlur();" /> <input value="Search" type="submit" />
439                 </form>
440               </td>
441             </tr>
442
443             <tr>
444               <td height="50"><img src="skin/media/images/portal/book.png" height="48" width="48" onclick=
445               "try { catalog(false); } catch(E) { alert(E); }" alt=
446               "Advanced Search" /></td>
447
448               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
449               onclick="try { catalog(true); } catch(E) { alert(E); }" /> <a href="#"
450               onclick=
451               "try { catalog(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.advsearch;</a></td>
452             </tr>
453
454             <tr>
455               <td height="50"><img src="skin/media/images/portal/book.png" height="48" width="48" onclick=
456               "try { copy_status(false); } catch(E) { alert(E); }" alt=
457               "Item Status / Display" /></td>
458
459               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
460               onclick="try { copy_status(true); } catch(E) { alert(E); }" /> <a href="#"
461               onclick=
462               "try { copy_status(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.itemstatus;</a></td>
463             </tr>
464
465             <tr>
466               <td height="50"><img src="skin/media/images/portal/batchimport.png" height="48" width="48"
467               onclick="try { MARC_batch_import(false); } catch(E) { alert(E); }" alt=
468               "MARC Batch Import / Export" /></td>
469
470               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
471               onclick="try { MARC_batch_import(true); } catch(E) { alert(E); }" />
472               <a href="#" onclick=
473               "try { MARC_batch_import(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.marcutil;</a></td>
474             </tr>
475
476             <tr>
477               <td height="50"><img src="skin/media/images/portal/z3950.png" height="48" width="48" onclick=
478               "try { z39_50(false); } catch(E) { alert(E); }" alt="Z39.50 Import" /></td>
479
480               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
481               onclick="try { z39_50(true); } catch(E) { alert(E); }" /> <a href="#"
482               onclick=
483               "try { z39_50(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.z3950;</a></td>
484             </tr>
485
486             <tr>
487               <td height="50"><img src="skin/media/images/portal/bucket.png" height="48" width="48" onclick=
488               "try { copy_buckets(false); } catch(E) { alert(E); }" alt=
489               "Copy Buckets" /></td>
490
491               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
492               onclick="try { copy_buckets(true); } catch(E) { alert(E); }" /> <a href="#"
493               onclick=
494               "try { copy_buckets(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.copybuckets;</a></td>
495             </tr>
496
497             <tr>
498               <td height="50"><img src="skin/media/images/portal/bucket.png" height="48" width="48" onclick=
499               "try { record_buckets(false); } catch(E) { alert(E); }" alt=
500               "Record Buckets" /></td>
501
502               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
503               onclick="try { record_buckets(true); } catch(E) { alert(E); }" /> <a href=
504               "index.html#" onclick=
505               "try { record_buckets(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.recordbuckets;</a></td>
506             </tr>
507           </table><br />
508         </div>
509       </td>
510
511       <td>
512         <div class="functionalgroup">
513           &staff.client.portal.admin;
514           <hr />
515
516           <table class="functionlist">
517             <tr>
518               <td height="50"><img src="skin/media/images/portal/helpdesk.png" height="48" width="48"
519               onclick="try { helpdesk(false); } catch(E) { alert(E); }" alt=
520               "Submit A Helpdesk Ticket" /></td>
521
522               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
523               onclick="try { helpdesk(true); } catch(E) { alert(E); }" /> <a href="#"
524               onclick="try { helpdesk(false); } catch(E) { alert(E); }">&staff.client.portal.helpdesk;</a></td>
525             </tr>
526
527             <tr>
528               <td height="50"><img src="skin/media/images/portal/reports.png" height="48" width="48"
529               onclick="try { local_admin_reports(false); } catch(E) { alert(E); }" alt=
530               "Reports" /></td>
531
532               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
533               onclick="try { local_admin_reports(true); } catch(E) { alert(E); }" />
534               <a href="#" onclick=
535               "try { local_admin_reports(false); } catch(E) { alert(E); }; return false;">
536               &staff.client.portal.reports;</a></td>
537             </tr>
538
539             <tr>
540               <td height="50"><img src="skin/media/images/portal/receipt_editor.png" height="48" width="48"
541               onclick="try { receipt_editor(false); } catch(E) { alert(E); }" alt=
542               "Edit Receipt Templates" /></td>
543
544               <td><img class="newtabimg" src="skin/media/images/portal/newtab2.PNG" alt="Open in a new tab"
545               onclick="try { receipt_editor(true); } catch(E) { alert(E); }" /> <a href=
546               "#" onclick=
547               "try { receipt_editor(false); } catch(E) { alert(E); }; return false;">&staff.client.portal.receipts;</a></td>
548             </tr>
549           </table>
550         </div>
551       </td>
552     </tr>
553   </table>
554
555   <div class="attribution c1">&staff.client.portal.copyright;<br />
556   &staff.client.portal.poweredby; <img src="skin/media/images/portal/eg_tiny_logo.jpg" alt="Evergreen logo" /></div>
557 </body>
558 </html>
559
560