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.
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.
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"-->
21 <html xmlns='http://www.w3.org/1999/xhtml'>
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>
29 <body class="tundra tall">
30 <div dojoType="dijit.layout.LayoutContainer" orientation="vertical" class="tall">
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>
41 <div dojoType="dijit.form.Button" iconClass="dijitEditorIcon dijitEditorIconCopy"
42 onclick="vlShowAttrEditor();" showLabel="true">&vandelay.edit.attributes;</div>
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>
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>
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>
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'>
68 <td>&vandelay.record.type;</td>
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>
78 <td>&vandelay.create.upload.queue;</td>
80 <input type='text' dojoType='dijit.form.TextBox' id='vl-queue-name' size='32'></input>
82 <td>&vandelay.add.existing.queue;</td>
84 <select jsId='vlUploadQueueSelector' dojoType='dijit.form.FilteringSelect'>
89 <td>&vandelay.auto.import.noncolliding;</td>
91 <input jsId='vlUploadQueueAutoImport' dojoType='dijit.form.CheckBox'/>
96 <span id="vl-file-label">&vandelay.file.to.upload;</span>
98 <td id='vl-input-td' colspan='4'>
99 <input size='48' type="file" name="marc_upload"/>
103 <td align='center' colspan='4'>
104 <button dojoType="dijit.form.Button" onclick="batchUpload()">&vandelay.upload;</button>
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/>
115 var vlQueueGridLayout;
116 function resetVlQueueGridLayout() {
117 vlQueueGridLayout = [{
118 defaultCell: {styles: 'text-align: center;'},
120 {name: '<input id="vl-queue-grid-row-selector" type="checkbox" onclick="vlToggleQueueGridSelect();"/>',
121 get: vlQueueGridDrawSelectBox },
122 { name: '&vandelay.view.marc;',
124 value:'<a href="javascript:void(0);" onclick="vlLoadMARCHtml(RECID, false, '+
125 'function(){displayGlobalDiv(\'vl-queue-div\');});">&vandelay.view.marc;</a>'
127 { name: '&vandelay.matches;',
128 get: vlGetViewMatches,
129 value:'<a href="javascript:void(0);" onclick="vlLoadMatchUI(RECID);">&vandelay.matches;</a>'
131 {name: '&vandelay.import.time;', field:'import_time', get:vlGetDateTimeField, selectableColumn:true}
136 <div id='vl-queue-div-grid' class='tall' dojoType="dijit.layout.ContentPane" layoutAlign='client'>
138 <!-- column picker dialog -->
139 <div dojoType="dijit.Dialog" jsId='vlQueueGridColumePickerDialog' title="Column Picker" execute="alert(2);">
140 <table class='form_table'>
142 <tr><th width='33%'>&vandelay.column;</th><th width='33%'>&vandelay.display;</th><th width='33%'>&vandelay.auto.width;</th></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>
156 <!-- queue grid navigation row -->
157 <div dojoType="dijit.layout.ContentPane" layoutAlign='client'>
158 <table width='100%' style='margin-bottom:0px;'>
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>
169 <style>.filter_td { padding-right: 5px; border-right: 2px solid #e8e1cf; } </style>
171 <td class='filter_td'>
172 &vandelay.limit.to.collision.matches;
173 <input dojoType='dijit.form.CheckBox' jsId='vlQueueGridShowMatches'/>
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'/>
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>
188 <td class='filter_td' style='padding-left:5px;'>
189 &vandelay.page; <input style='width:36px;' dojoType='dijit.form.TextBox' jsId='vlQueueDisplayPage' value='1'/>
191 <td style='padding-left:5px;'>
192 <button dojoType='dijit.form.Button'
193 onclick='retrieveQueuedRecords(currentType, currentQueueId, handleRetrieveRecords)'>&vandelay.refresh;</button>
197 <td align='right' valign='bottom'>
198 <span style='padding-right:4px;'>
199 <a href='javascript:void(0);' onclick='vlQueueGridPrevPage();'>« &vandelay.prev.page;</a>
201 <span style='padding-right:10px;'>
202 <a href='javascript:void(0);' onclick='vlQueueGridNextPage();'>&vandelay.next.page; »</a>
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>
213 <div class='' style='height:87%;' dojoType="dijit.layout.ContentPane" layoutAlign='client'>
214 <div dojoType='dojox.Grid' jsId='vlQueueGrid'> </div>
219 <!-- Grid of record matches -->
220 <div dojoType="dijit.layout.ContentPane" layoutAlign='client' id='vl-match-div' class='tall hidden'>
222 var vlMatchGridLayout;
223 function resetVlMatchGridLayout() {
224 vlMatchGridLayout = [{
225 defaultCell: {styles: 'text-align: center;'},
228 name: '&vandelay.overlay.target;',
229 get: vlGetOverlayTargetSelector,
230 value: '<input type="radio" name="overlay_target" '+
231 'onclick="vlHandleOverlayTargetSelected();" id="vl-overlay-target-ID"/>'
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;',
238 value:'<a href="javascript:void(0);" onclick="vlLoadMARCHtml(RECID, '+
239 'true, function(){displayGlobalDiv(\'vl-match-div\');});">&vandelay.view.marc;</a>'
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'}
251 <h1>&vandelay.import.matches;</h1><br/>
253 <button dojoType='dijit.form.Button'
254 onclick="displayGlobalDiv('vl-queue-div');">↖ &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;
261 <div dojoType='dojox.Grid' jsId='vlMatchGrid'> </div>
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/>
269 <button id='vl-marc-html-done-button' dojoType='dijit.form.Button'>↖ &vandelay.return;</button>
272 <style>#vl-marc-record-html td {padding:0px;}</style>
273 <div id='vl-marc-record-html'> </div>
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'>
282 <td>&vandelay.queue.type;</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>
291 <td>&vandelay.queue;</td>
293 <select jsId='vlQueueSelectQueueList' dojoType='dijit.form.FilteringSelect'>
299 <button dojoType='dijit.form.Button' onclick='vlFetchQueueFromForm();'>&vandelay.retrieve.queue;</button>
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">
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>
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'>
325 <td><label for="code">&vandelay.code;:</label></td>
326 <td><input id='attr-editor-code' name="code" dojoType="dijit.form.TextBox"/></td>
329 <td><label for="description">&vandelay.descrip;:</label></td>
330 <td><input id='attr-editor-description' dojoType="dijit.form.TextBox" name="description"> </input></td>
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>
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>
350 <td><label for="ident">&vandelay.id.field;: </label></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>
359 <td><label for="attr-editor-xpath">&vandelay.xpath.advanced;: </label></td>
361 <td><input dojoType="dijit.form.TextBox" id="attr-editor-xpath" name="xpath"></input></td>
364 <td><label for="attr-editor-remove">&vandelay.remove.advanced;: </label></td>
366 <td><input dojoType="dijit.form.TextBox" id="attr-editor-remove" name="remove"></input></td>
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>
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"
384 id="attr-editor-delete-button"
385 style="padding-left: 2em;"
386 onclick="if(confirm('&vandelay.sure.to.delete;')) { vlAttrDelete(); }">&vandelay.delete.record;</button>
396 var vlAttrGridLayout = [{
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'}
411 <div dojoType='dojox.Grid' jsId='attrEditorGrid'> </div>
417 <div style='text-align:center;width:100%;' dojoType="dijit.layout.ContentPane" layoutAlign='bottom'>
418 &vandelay.powered.by.evergreen;