9722a3981a1011f69991dfbca69d9c274352dc81
[Evergreen.git] / Open-ILS / web / vandelay / vandelay.xml
1 <!-- 
2 # Copyright (C) 2008  Georgia Public Library Service
3 # Bill Erickson <erickson@esilibrary.com>
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 -->
14
15 <!DOCTYPE html PUBLIC 
16         "-//W3C//DTD XHTML 1.0 Transitional//EN" 
17         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
18         <!--#include virtual="/opac/locale/${locale}/vandelay.dtd"-->
19 ]>
20
21 <html xmlns='http://www.w3.org/1999/xhtml'>
22     <head>
23         <title>&vandelay.vandelay;</title>
24         <link type='text/css' rel='stylesheet' href="/vandelay/vandelay.css"/>
25         <script type="text/javascript" djConfig="parseOnLoad: true,isDebug:false" src="/js/dojo/dojo/dojo.js"></script>
26         <script type="text/javascript" src='/js/dojo/openils/MarcXPathParser.js'></script>
27         <script type="text/javascript" src='/vandelay/vandelay.js'></script>
28     </head>
29     <body class="tundra tall">
30       <div dojoType="dijit.layout.LayoutContainer" orientation="vertical" class="tall">
31
32
33         <!-- navigation toolbar -->
34         <div dojoType="dijit.layout.ContentPane" layoutAlign='top' id="vl-nav-bar" style="visibility: hidden;">
35             <div dojoType="dijit.Toolbar" id='toolbar'>
36                 <div dojoType="dijit.form.Button" iconClass="dijitEditorIcon dijitEditorIconCopy" 
37                     onclick="displayGlobalDiv('vl-marc-upload-div');" showLabel="true">&vandelay.import.records;</div>
38                 <div dojoType="dijit.form.Button" iconClass="dijitEditorIcon dijitEditorIconCopy" 
39                     onclick="vlShowQueueSelect();" showLabel="true">&vandelay.inspect.queue;</div>
40
41                 <div dojoType="dijit.form.Button" iconClass="dijitEditorIcon dijitEditorIconCopy" 
42                      onclick="vlShowAttrEditor();" showLabel="true">&vandelay.edit.attributes;</div>
43             </div>
44         </div>
45
46         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id="vl-generic-progress" class='progress'>
47             <div dojoType="dijit.ProgressBar" style="width:300px" indeterminate="true"></div>
48         </div>
49         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id="vl-generic-progress-with-total" class='hidden progress'>
50             <div dojoType="dijit.ProgressBar" jsId='vlControlledProgressBar' style="width:300px"></div>
51         </div>
52
53         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id='vl-marc-upload-status-div' class='hidden'>
54             <h1>&vandelay.upload.status;</h1><br/>
55             <div id='vl-upload-status-uploading'><h3>&vandelay.uploading;</h3></div>
56             <div id='vl-upload-status-processing' class='hidden'>
57                 <h3>&vandelay.processing;<span id='vl-upload-status-count'/></h3>
58             </div>
59         </div>
60
61         <!-- MARC upload form -->
62         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id='vl-marc-upload-div' class='hidden'>
63             <h1>&vandelay.marc.file.upload;</h1><br/>
64             <form id="vl-marc-upload-form" enctype="multipart/form-data">
65                 <input type='hidden' name='ses' id='vl-ses-input'/>
66                 <table class='form_table'>
67                     <tr>
68                         <td>&vandelay.record.type;</td>
69                         <td colspan='4'>
70                             <select id='vl-record-type' dojoType='dijit.form.FilteringSelect' 
71                                     jsId='vlUploadRecordType' onchange='vlShowUploadForm();'>
72                                 <option value='bib' selected='selected'>&vandelay.bib.records;</option>
73                                 <option value='auth'>&vandelay.auth.records;</option>
74                             </select>
75                         </td>
76                     </tr>
77                     <tr>
78                         <td>&vandelay.create.upload.queue;</td>
79                         <td>
80                             <input type='text' dojoType='dijit.form.TextBox' id='vl-queue-name' size='32'></input>
81                         </td>
82                         <td>&vandelay.add.existing.queue;</td>
83                         <td>
84                             <select jsId='vlUploadQueueSelector' dojoType='dijit.form.FilteringSelect'>
85                             </select>
86                         </td>
87                     </tr>
88                     <tr>
89                         <td>&vandelay.auto.import.noncolliding;</td>
90                         <td colspan='4'>
91                             <input jsId='vlUploadQueueAutoImport' dojoType='dijit.form.CheckBox'/>
92                         </td>
93                     </tr>
94                     <tr>
95                         <td>
96                             <span id="vl-file-label">&vandelay.file.to.upload;</span>
97                         </td>
98                         <td id='vl-input-td' colspan='4'>
99                             <input size='48' type="file" name="marc_upload"/>
100                         </td>
101                     </tr>
102                     <tr>
103                         <td align='center' colspan='4'>
104                             <button dojoType="dijit.form.Button" onclick="batchUpload()">&vandelay.upload;</button>
105                         </td>
106                     </tr>
107                 </table>
108             </form>
109         </div>
110
111         <!-- record queue grid -->
112         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id='vl-queue-div' class='tall hidden'>
113             <h1>&vandelay.record.queue;</h1><br/>
114             <script>
115                 var vlQueueGridLayout;
116                 function resetVlQueueGridLayout() {
117                     vlQueueGridLayout = [{
118                         defaultCell: {styles: 'text-align: center;'},
119                         cells : [[
120                             {name: '&lt;input id="vl-queue-grid-row-selector" type="checkbox" onclick="vlToggleQueueGridSelect();"/>', 
121                                 get: vlQueueGridDrawSelectBox },
122                             {   name: '&vandelay.view.marc;', 
123                                 get: vlGetViewMARC, 
124                                 value:'&lt;a href="javascript:void(0);" onclick="vlLoadMARCHtml(RECID, false, '+
125                                     'function(){displayGlobalDiv(\'vl-queue-div\');});">&vandelay.view.marc;&lt;/a>'
126                             },
127                             {   name: '&vandelay.matches;', 
128                                 get: vlGetViewMatches,
129                                 value:'&lt;a href="javascript:void(0);" onclick="vlLoadMatchUI(RECID);">&vandelay.matches;&lt;/a>'
130                             },
131                             {name: '&vandelay.import.time;', field:'import_time', get:vlGetDateTimeField, selectableColumn:true}
132                         ]]
133                     }];
134                 }
135             </script>
136             <div id='vl-queue-div-grid' class='tall' dojoType="dijit.layout.ContentPane" layoutAlign='client'>
137
138                 <!-- column picker dialog -->
139                 <div dojoType="dijit.Dialog" jsId='vlQueueGridColumePickerDialog' title="Column Picker" execute="alert(2);">
140                     <table class='form_table'>
141                         <thead>
142                             <tr><th width='33%'>&vandelay.column;</th><th width='33%'>&vandelay.display;</th><th width='33%'>&vandelay.auto.width;</th></tr>
143                         </thead>
144                         <tbody>
145                             <tr>
146                                 <td colspan='3' align='center'>
147                                     <button jsId='vlQueueGridColumnPickerButton' 
148                                         onclick='vlQueueGridColumePickerDialog.hide();vlQueueGridColumePicker.update();' 
149                                         dojoType='dijit.form.Button'>&vandelay.done;</button>
150                                 </td>
151                             </tr>
152                         </tbody>
153                     </table>
154                 </div>
155
156                 <!-- queue grid navigation row -->
157                 <div dojoType="dijit.layout.ContentPane" layoutAlign='client'>
158                     <table width='100%' style='margin-bottom:0px;'>
159                         <tr>
160                             <td align='left'>
161                                 <button dojoType='dijit.form.Button' onclick='vlImportSelectedRecords();'>&vandelay.import.selected;</button>
162                                 <button dojoType='dijit.form.Button' onclick="
163                                     if(confirm('&vandelay.sure.to.delete.queue;')) {
164                                         vlDeleteQueue(currentType, currentQueueId, 
165                                             function() { displayGlobalDiv('vl-marc-upload-div'); });
166                                     }">&vandelay.delete.queue;</button>
167                             </td>
168                             <td align='middle'>
169                                 <style>.filter_td { padding-right: 5px; border-right: 2px solid #e8e1cf; } </style>
170                                 <table><tr>
171                                     <td class='filter_td'>
172                                         &vandelay.limit.to.collision.matches;
173                                         <input dojoType='dijit.form.CheckBox' jsId='vlQueueGridShowMatches'/>
174                                     </td>
175                                     <td class='filter_td' style='padding-left:5px;'>
176                                         &vandelay.limit.to.non.imported;
177                                         <input dojoType='dijit.form.CheckBox' jsId='vlQueueGridShowNonImport' checked='checked'/>
178                                     </td>
179                                     <td class='filter_td' style='padding-left:5px;'>
180                                         &vandelay.results.per.page; 
181                                         <select style='width:68px;' jsId='vlQueueDisplayLimit' dojoType='dijit.form.FilteringSelect' value='10'>
182                                             <option value='10'>10</option>
183                                             <option value='20'>20</option>
184                                             <option value='50'>50</option>
185                                             <option value='100'>100</option>
186                                         </select>
187                                     </td>
188                                     <td class='filter_td' style='padding-left:5px;'>
189                                         &vandelay.page; <input style='width:36px;' dojoType='dijit.form.TextBox' jsId='vlQueueDisplayPage' value='1'/>
190                                     </td>
191                                     <td style='padding-left:5px;'>
192                                         <button dojoType='dijit.form.Button' 
193                                             onclick='retrieveQueuedRecords(currentType, currentQueueId, handleRetrieveRecords)'>&vandelay.refresh;</button>
194                                     </td>
195                                 </tr></table>
196                             </td>
197                             <td align='right' valign='bottom'>
198                                 <span style='padding-right:4px;'>
199                                     <a href='javascript:void(0);' onclick='vlQueueGridPrevPage();'>&#171; &vandelay.prev.page;</a>
200                                 </span>
201                                 <span style='padding-right:10px;'>
202                                     <a href='javascript:void(0);' onclick='vlQueueGridNextPage();'>&vandelay.next.page; &#187;</a>
203                                 </span>
204                                 <span style='background:#e8e1cf;padding:3px 0px 0px 6px;-moz-border-radius:6px 0px 0px 0px;'>
205                                     <a href='javascript:void(0);' onclick='vlQueueGridColumePickerDialog.show();'>&vandelay.select.cols;</a>
206                                 </span>
207                             </td>
208                         </tr>
209                     </table>
210                 </div>
211
212                 <!-- Queue Grid -->
213                 <div class='' style='height:90%;' dojoType="dijit.layout.ContentPane" layoutAlign='client'>
214                     <div dojoType='dojox.Grid' jsId='vlQueueGrid'> </div>
215                 </div>
216             </div>
217         </div>
218
219         <!-- Grid of record matches -->
220         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id='vl-match-div' class='tall hidden'>
221             <script>
222                 var vlMatchGridLayout;
223                 function resetVlMatchGridLayout() {
224                     vlMatchGridLayout = [{
225                         defaultCell: {styles: 'text-align: center;'},
226                         cells : [[
227                             {
228                                 name: '&vandelay.overlay.target;', 
229                                 get: vlGetOverlayTargetSelector,
230                                 value: '&lt;input type="radio" name="overlay_target" '+
231                                     'onclick="vlHandleOverlayTargetSelected();" id="vl-overlay-target-ID"/>'
232                             },
233                             {name:'&vandelay.source.match.point;', field:'src_matchpoint'},
234                             {name:'&vandelay.dest.match.point;', field:'dest_matchpoint'},
235                             {name: '&vandelay.id;', field:'id'},
236                             {   name: '&vandelay.view.marc;', 
237                                 get: vlGetViewMARC, 
238                                 value:'&lt;a href="javascript:void(0);" onclick="vlLoadMARCHtml(RECID, '+
239                                     'true, function(){displayGlobalDiv(\'vl-match-div\');});">&vandelay.view.marc;&lt;/a>'
240                             },
241                             {name: '&vandelay.creator;', get: vlGetCreator},
242                             {name: '&vandelay.create.date;', field:'create_date', get: vlGetDateTimeField},
243                             {name: '&vandelay.last.edit.date;', field:'edit_date', get: vlGetDateTimeField},
244                             {name: '&vandelay.source;', field:'source'},
245                             {name: '&vandelay.tcn.source;', field:'tcn_source'},
246                             {name: '&vandelay.tcn.value;', field:'tcn_value'}
247                         ]]
248                     }];
249                 }
250             </script>
251             <h1>&vandelay.import.matches;</h1><br/>
252             <div>
253                 <button dojoType='dijit.form.Button' 
254                     onclick="displayGlobalDiv('vl-queue-div');">&#x2196; &vandelay.back.to.import.queue;</button>
255                 <span style='padding-left:20px;'>
256                     <input dojoType='dijit.form.CheckBox' jsId='vlOverlayTargetEnable' onclick='vlHandleOverlayTargetSelected'/> 
257                     &vandelay.overlay.selected.record;
258                 </span>
259             </div>
260             <div class='tall'>
261                 <div dojoType='dojox.Grid' jsId='vlMatchGrid'> </div>
262             </div>
263         </div>
264
265         <!-- MARC as HTML -->
266         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id='vl-marc-html-div' class='tall hidden'>
267             <h1>&vandelay.marc.record;</h1><br/>
268             <div>
269                 <button id='vl-marc-html-done-button' dojoType='dijit.form.Button'>&#x2196; &vandelay.return;</button>
270             </div>
271             <div>
272                 <style>#vl-marc-record-html td {padding:0px;}</style>
273                 <div id='vl-marc-record-html'> </div>
274             </div>
275         </div>
276
277         <!-- Form for choosing which queue to view -->
278         <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id='vl-queue-select-div' class='tall hidden'>
279             <h1>&vandelay.select.queue;</h1><br/>
280             <table class='form_table'>
281                 <tr>
282                     <td>&vandelay.queue.type;</td>
283                     <td>
284                         <select jsId='vlQueueSelectType' dojoType='dijit.form.FilteringSelect' onchange='vlShowQueueSelect();'>
285                             <option value='bib' selected='selected'>&vandelay.bib.records;</option>
286                             <option value='auth'>&vandelay.auth.records;</option>
287                         </select>
288                     </td>
289                 </tr>
290                 <tr>
291                     <td>&vandelay.queue;</td>
292                     <td>
293                         <select jsId='vlQueueSelectQueueList' dojoType='dijit.form.FilteringSelect'>
294                         </select>
295                     </td>
296                 </tr>
297                 <tr>
298                     <td colspan='2'>
299                         <button dojoType='dijit.form.Button' onclick='vlFetchQueueFromForm();'>&vandelay.retrieve.queue;</button>
300                     </td>
301                 </tr>
302             </table>
303         </div>
304
305         <!-- attribute editor  -->
306         <div dojoType="dijit.layout.ContentPane"  id="vl-attr-editor-div"
307                 class='hidden attr-editor-detail-content-pane' title='&vandelay.edit.attrs;' style='height:400px;' layoutAlign="client">
308
309             <div style='margin:8px;'>   
310               <div style='float: left; margin-top: 8px;'>
311                 <input dojoType="dijit.form.RadioButton" name="attrEditorGroup" value="bib" 
312                        id="aegB" onclick="setAttrEditorGroup('bib');" checked="checked"/>
313                 <label for="aegB" style="margin-right: 1em;">&vandelay.bib.attrs;</label>
314                 <input dojoType="dijit.form.RadioButton" name="attrEditorGroup" value="auth" 
315                        id="aegA" onclick="setAttrEditorGroup('auth');"/>
316                 <label for="aegA" style="margin-right: 1em;">&vandelay.auth.attrs;</label>
317               </div>
318                 <div dojoType="dijit.form.DropDownButton" id="vl-create-attr-editor-button">
319                     <span name="create">&vandelay.create.attr.def;</span>
320                     <div dojoType="dijit.TooltipDialog" execute="vlSaveAttrDefinition(arguments[0]);" id="attr-editor-dialog">
321                         <script type='dojo/connect' event='onOpen'>onAttrEditorOpen();</script>
322                         <script type='dojo/connect' event='onClose'>onAttrEditorClose();</script>
323                         <table class='dijitTooltipTable'>
324                             <tr>
325                                 <td><label for="code">&vandelay.code;:</label></td>
326                                 <td><input id='attr-editor-code' name="code" dojoType="dijit.form.TextBox"/></td>
327                             </tr>
328                             <tr>
329                                 <td><label for="description">&vandelay.descrip;:</label></td>
330                                 <td><input id='attr-editor-description' dojoType="dijit.form.TextBox" name="description"> </input></td>
331                             </tr>
332                             <tr>
333                                 <td><label for="amount">&vandelay.tags;:</label></td>
334                                 <td><input id="attr-editor-tags" dojoType="dijit.form.TextBox" name="tag"></input>
335                                 <div class="hidden" id="attr-editor-tags-tip">
336                                 <p>&vandelay.tooltip.tags;</p>
337                                 <p>&vandelay.for.example;:<code>120, 220, 300</code> or <code>120 220 330</code></p></div>
338                                 </td>
339                             </tr>
340
341                             <tr>
342                                 <td><label for="amount">&vandelay.subfields;:</label></td>
343                                 <td><input dojoType="dijit.form.TextBox" name="subfield" id="attr-editor-subfields"></input></td>
344                                 <div class="hidden" id="attr-editor-subfields-tip">
345                                 <p>&vandelay.tooltip.subfields;</p>
346                                 <p>&vandelay.for.example;: <code>a, b, j, x</code> or <code>a b j x</code></p></div>
347
348                             </tr>
349                             <tr>
350                                 <td><label for="ident">&vandelay.id.field;: </label></td>
351                                 <td>
352                                     <select dojoType="dijit.form.FilteringSelect" name="ident" id="attr-editor-identifier">
353                                         <option value='f' selected='selected'>&vandelay.false;</option>
354                                         <option value='t'>&vandelay.true;</option>
355                                     </select>
356                                 </td>
357                             </tr>
358                             <tr>
359                                 <td><label for="attr-editor-xpath">&vandelay.xpath.advanced;: </label></td>
360
361                                 <td><input dojoType="dijit.form.TextBox" id="attr-editor-xpath" name="xpath"></input></td>
362                             </tr>
363                             <tr>
364                                 <td><label for="attr-editor-remove">&vandelay.remove.advanced;: </label></td>
365
366                                 <td><input dojoType="dijit.form.TextBox" id="attr-editor-remove" name="remove"></input></td>
367                             </tr>
368                             <tr id="attr-editor-create-bar">
369                                 <td colspan='2' align='center'>
370                                     <button dojoType="dijit.form.Button" type="submit" 
371                                             id="attr-editor-create-button">&vandelay.create;</button>
372                                     <button type="button" dojoType="dijit.form.Button"
373                                             onclick="dijit.byId('attr-editor-dialog').onCancel();">&vandelay.cancel;</button>
374                                 </td>
375                             </tr>
376                             <tr id="attr-editor-update-bar">
377                                 <td colspan='2' align='center'>
378                                     <button dojoType="dijit.form.Button" type="submit" 
379                                             id="attr-editor-update-button">&vandelay.update;</button>
380                                     <button type="button" dojoType="dijit.form.Button"
381                                             onclick="dijit.byId('attr-editor-dialog').onCancel();">&vandelay.cancel;</button>
382                                     <button dojoType="dijit.form.Button" 
383                                             type="button" 
384                                             id="attr-editor-delete-button"
385                                             style="padding-left: 2em;"
386                                             onclick="if(confirm('&vandelay.sure.to.delete;')) { vlAttrDelete(); }">&vandelay.delete.record;</button>
387                                 </td>
388                             </tr>
389                         </table>
390
391                     </div>
392                 </div>
393
394             </div>
395             <script>
396                 var vlAttrGridLayout = [{
397                 cells : [[
398                 {name: '&vandelay.id;', field: 'id'},
399                 {name: '&vandelay.code;', field:'code', width:'auto'},
400                 {name: '&vandelay.descrip;', field: "description", width:'auto'}, 
401                 {name: '&vandelay.tag;', get:attrGridGetTag},
402                 {name: '&vandelay.subfield;', get: attrGridGetSubfield},
403                 {name: '&vandelay.identifier;', field:'ident'},
404                 {name: '&vandelay.xpath;', field:'xpath', width:'auto'},
405                 {name: '&vandelay.remove;', field:'remove', width:'auto'}
406                 ]]
407                 }];
408               </script>
409
410               <div class='tall'>
411                 <div dojoType='dojox.Grid' jsId='attrEditorGrid'> </div>
412               </div>
413
414         </div>
415
416         <!--
417         <div style='text-align:center;width:100%;' dojoType="dijit.layout.ContentPane" layoutAlign='bottom'>
418             &vandelay.powered.by.evergreen;
419         </div>
420         -->
421       </div>
422     </body>
423 </html>