7
|
1 <%@ page contentType="text/html; charset=UTF-8" %>
|
|
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
|
3 <%@page import="org.mpi.openmind.repository.bo.Entity"%>
|
|
4 <%@page import="de.mpiwg.itgroup.diva.jsp.JSPDigitalization"%>
|
|
5
|
|
6 <html>
|
|
7 <head>
|
|
8 <title>ismi - image server</title>
|
|
9
|
|
10
|
|
11 <link href="resources/css/bootstrap.css" type="text/css" rel="stylesheet" />
|
|
12 <link href="resources/css/bootstrap-responsive.min.css" type="text/css" rel="stylesheet">
|
|
13 <link href="resources/css/style.css" type="text/css" rel="stylesheet">
|
|
14 <link href="resources/css/diva.min.css" type="text/css" rel="stylesheet" />
|
|
15 <link href="resources/css/diva4ismi.css" type="text/css" rel="stylesheet" />
|
|
16
|
|
17 <script type="text/javascript" src="resources/js/jquery.min.js"></script>
|
|
18 <script type="text/javascript" src="resources/js/diva.min.js"></script>
|
|
19 <script type="text/javascript" src="resources/js/bootstrap.min.js"></script>
|
|
20 <script type="text/javascript" src="resources/js/typeahead.js"></script>
|
|
21 <script type="text/javascript" src="resources/js/diva4ismi.js"></script>
|
|
22
|
|
23 <jsp:useBean id="digiBean" class="de.mpiwg.itgroup.diva.jsp.JSPDigitalization" scope="session" />
|
|
24 <jsp:setProperty name="digiBean" property="request" value="${pageContext.request}" />
|
|
25 <jsp:setProperty name="digiBean" property="response" value="${pageContext.response}" />
|
|
26
|
|
27 <%digiBean.init();%>
|
|
28 <% if(!digiBean.hasLogin()){ %>
|
|
29 <jsp:forward page="../imageServer/displayDigiList.xhtml?login=true" />
|
|
30 <% } %>
|
|
31
|
|
32 <script type="text/javascript">
|
|
33 $(document).ready(function () {
|
|
34
|
|
35 $("#witness-edit").on('click', '.update-witness', function(ev){
|
|
36
|
|
37 var witnessId = $(this).data('witness');
|
|
38
|
|
39 var startPageInput = $( "#input-start-page-"+witnessId );
|
|
40 var endPageInput = $( "#input-end-page-"+witnessId );
|
|
41 var digiIdInput = $("#digi_id");
|
|
42
|
|
43 var data = {};
|
|
44 data["digi_id"] = digiIdInput[0].value;
|
|
45
|
|
46 data["witness"] = {};
|
|
47 data["witness"]["id"] = "" + witnessId;
|
|
48 data["witness"]["start_page"] = startPageInput[0].value;
|
|
49 data["witness"]["end_page"] = endPageInput[0].value;
|
|
50
|
|
51 var witnessLink = $("#witness-link-" + witnessId);
|
|
52 witnessLink.data('start', startPageInput[0].value);
|
|
53
|
|
54 $.ajax(
|
|
55 divaGlobal.rest_url + "/rest/witness/update?data=" + JSON.stringify(data), {
|
|
56 type: 'GET',
|
|
57 contentType: "application/json",
|
|
58 success: function(data, textStatus, jqXHR){
|
|
59 var state = data["state"];
|
|
60 if(state == "ok"){
|
|
61 alert('Executed successfully');
|
|
62 }else{
|
|
63 alert(data["message"]);
|
|
64 }
|
|
65 },
|
|
66 error: function(jqXHR, textStatus, errorThrown){
|
|
67 alert('Error: ' + textStatus);
|
|
68 }
|
|
69 });
|
|
70
|
|
71
|
|
72 });
|
|
73
|
|
74 /************************************************/
|
|
75
|
|
76 function getURLParams()
|
|
77 {
|
|
78 var urlParams = {},
|
|
79 match,
|
|
80 pl = /\+/g, // Regex for replacing addition symbol with a space
|
|
81 search = /([^&=]+)=?([^&]*)/g,
|
|
82 decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
|
|
83 query = window.location.search.substring(1);
|
|
84 while (match = search.exec(query))
|
|
85 {
|
|
86 urlParams[decode(match[1])] = decode(match[2]);
|
|
87 }
|
|
88
|
|
89 return urlParams;
|
|
90 }
|
|
91
|
|
92
|
|
93 $('#page-jump').on('keypress', function(ev)
|
|
94 {
|
|
95 if (ev.which == '13')
|
|
96 {
|
|
97 var dv = $('#diva-wrapper').data('diva');
|
|
98 var value = $(this).val();
|
|
99 var success = dv.gotoPageByNumber(value);
|
|
100
|
|
101 if (!success)
|
|
102 {
|
|
103 if (!$('#page-jump-group').hasClass('error'))
|
|
104 {
|
|
105 $('#page-jump-group').addClass('error');
|
|
106 $('#page-jump-controls').append('<span id="jump-error-help" class="help-inline">The page you specified is not valid.</span>');
|
|
107 }
|
|
108 }
|
|
109 else
|
|
110 {
|
|
111 if ($('#page-jump-group').hasClass('error'))
|
|
112 {
|
|
113 $('#page-jump-group').removeClass('error');
|
|
114 $('#jump-error-help').remove();
|
|
115 }
|
|
116 }
|
|
117
|
|
118 }
|
|
119 });
|
|
120
|
|
121 $('.go-to-witness-link').on('click', function(ev) {
|
|
122 var dv = $('#diva-wrapper').data('diva');
|
|
123 var start_page = $(this).data('start');
|
|
124 if(start_page){
|
|
125 dv.gotoPageByNumber(start_page);
|
|
126 ev.preventDefault();
|
|
127 }else{
|
|
128 alert("No page assigned to this witness.");
|
|
129 }
|
|
130
|
|
131 });
|
|
132
|
|
133 function modifyWitness(witness_id, key, value, successCallback, caller) {
|
|
134 var csrf = $("[name=csrfmiddlewaretoken]").val();
|
|
135 var witnessURL = "/witness/" + witness_id;
|
|
136 var data = {};
|
|
137 data[key] = value;
|
|
138
|
|
139 $.ajax(witnessURL, {
|
|
140 type: 'PATCH',
|
|
141 headers: {
|
|
142 'X-CSRFToken': csrf
|
|
143 },
|
|
144 data: JSON.stringify(data),
|
|
145 contentType: "application/json",
|
|
146 success: function(data, status, xhr)
|
|
147 {
|
|
148 // we'll need to operate on the button, so pass it back...
|
|
149 successCallback(data, caller);
|
|
150 }
|
|
151 });
|
|
152 }
|
|
153
|
|
154 function handlePageSwitch(idx, fn, divid)
|
|
155 {
|
|
156 // page number is what we're after, which is always
|
|
157 // page index + 1.
|
|
158 $('#current-page-idx').text(idx + 1);
|
|
159 $('#current-page-fn').text(fn);
|
|
160 }
|
|
161
|
|
162 function handleDocumentLoaded(idx, fn)
|
|
163 {
|
|
164 var witnesses = {};
|
|
165
|
|
166 // we could do this with an ajax request, but we have
|
|
167 // the variables already here, we just need to get them
|
|
168 // from Django and not JS.
|
|
169
|
|
170 var urlParams = getURLParams();
|
|
171 if (urlParams.hasOwnProperty('witness'))
|
|
172 {
|
|
173 urlWitness = parseInt(urlParams['witness'], 10);
|
|
174
|
|
175 // this won't be populated if the witness doesn't have a
|
|
176 // start page set.
|
|
177 if (witnesses.hasOwnProperty(urlWitness))
|
|
178 {
|
|
179 this.gotoPageByNumber(witnesses[urlWitness]);
|
|
180 }
|
|
181 }
|
|
182 }
|
|
183
|
|
184 $("#diva-wrapper").diva(
|
|
185 {
|
|
186 enableAutoHeight: true,
|
|
187 enableAutoTitle: false,
|
|
188 enableGotoPage: false,
|
|
189 fixedHeightGrid: false,
|
|
190 contained: true,
|
|
191 iipServerURL: divaGlobal.iipServerURL,
|
|
192 digiId: "<%=digiBean.getDigiId()%>",
|
|
193 objectData: divaGlobal.rest_url + "/rest/diva/proxy/json/<%=digiBean.getDigiLabel()%>",
|
|
194 imageDir: "/data7/srv/images/<%=digiBean.getDigiLabel()%>",
|
|
195 onSetCurrentPage : handlePageSwitch,
|
|
196 onDocumentLoaded : handleDocumentLoaded,
|
|
197 zoomLevel: 1,
|
|
198 canvasPlugin: {
|
|
199 proxyURL: divaGlobal.rest_url + "/rest/diva/proxy/image"
|
|
200 }
|
|
201 });
|
|
202 });
|
|
203
|
|
204
|
|
205 </script>
|
|
206 </head>
|
|
207
|
|
208 <body bgcolor=white>
|
|
209
|
|
210 <jsp:include page="header.jsp" />
|
|
211 <div class="custom-container">
|
|
212
|
|
213 <div class="row-fluid">
|
|
214 <div class="span4 page">
|
|
215 <div style="height: 800px; overflow: scroll;">
|
|
216
|
|
217
|
|
218 <input type='hidden' name='csrfmiddlewaretoken' value='psDBHsF5a1mttLSKeUgoUUVN3HL6f8Re' />
|
|
219
|
|
220 <c:if test="${digiBean.getDigi() != null}">
|
|
221
|
|
222 <input type="hidden" id="digi_id" value="${digiBean.getDigi().getId()}">
|
|
223
|
|
224 <div class="divaBackgroud">
|
|
225
|
|
226 <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -->
|
|
227
|
|
228 <h4><%=digiBean.getDigiLabel()%></h4>
|
|
229
|
|
230 <c:if test="${digiBean.getWitnessList().size() > 0}">
|
|
231 <span class="titlePanel">Titles in this Codex</span>
|
|
232
|
|
233 <table class="table table-bordered table-condensed divaPanel">
|
|
234 <thead>
|
|
235 <tr>
|
|
236 <th class="tableHead">Title</th>
|
|
237 <th class="tableHead">Folios</th>
|
|
238 </tr>
|
|
239 </thead>
|
|
240 <tbody>
|
|
241 <c:forEach var="witness" items="${digiBean.getWitnessList()}">
|
|
242 <tr>
|
|
243 <td class="tdTitle">
|
|
244 <c:out value="[${witness.id}] ${witness.title}"/>
|
|
245 <a target="_blank"
|
|
246 href="<c:out value='../search/displayTitle.xhtml?witnessId=${witness.id}#witnesses'/>">
|
|
247 <img src="../resources/images/display_32.png" alt="Display witness" width="20" height="20" >
|
|
248 </a>
|
|
249 <a target="_blank"
|
|
250 href="<c:out value='../browse/entityDetails.xhtml?eid=${witness.id}'/>">
|
|
251 <img src="../resources/images/network_32.png" alt="show witness"
|
|
252 width="20" height="20">
|
|
253 </a>
|
|
254 <c:if test="${digiBean.canEdit()}">
|
|
255 <a target="_blank"
|
|
256 href="<c:out value='../entry/createEntity.xhtml?eid=${witness.id}'/>">
|
|
257 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" >
|
|
258 </a>
|
|
259 </c:if>
|
|
260 </td>
|
|
261 <td class="columnCentered">
|
|
262 <a id="witness-link-${witness.id}" class="go-to-witness-link" data-start="${witness.startPage}" href="#">
|
|
263 <c:out value="${witness.folios}"/>
|
|
264 </a>
|
|
265 </td>
|
|
266 </tr>
|
|
267 </c:forEach>
|
|
268 </tbody>
|
|
269 </table>
|
|
270 </c:if>
|
|
271
|
|
272 <h4>Unknown titles in this Codex</h4>
|
|
273 <c:forEach var="witness" items="${digiBean.getUnknownList()}">
|
|
274 <a id="witness-link-${witness.id}" class="go-to-witness-link" data-start="${witness.startPage}" href="#">
|
|
275 <c:out value="${witness.folios}"/>
|
|
276 </a>
|
|
277 </c:forEach>
|
|
278
|
|
279 <!-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -->
|
|
280
|
|
281 <h4>Edit Folio/Image Correspondence</h4>
|
|
282
|
|
283
|
|
284 <div id="page-jump-group" class="control-group">
|
|
285 <label for="page-jump" class="control-label">Go to page: </label>
|
|
286 <div class="controls" id="page-jump-controls">
|
|
287 <input id="page-jump" type="text" class="form-control">
|
|
288 </div>
|
|
289 </div>
|
|
290
|
|
291 <p>
|
|
292 <strong>Current Page Index:</strong> <span id="current-page-idx"></span>
|
|
293 </p>
|
|
294 <p>
|
|
295 <strong>Page Filename:</strong> <span id="current-page-fn"></span>
|
|
296 </p>
|
|
297
|
|
298 <table>
|
|
299 <tr>
|
|
300 <td>
|
|
301 <span class="titlePanel">[${digiBean.getDigi().getId()}] Digitalization</span>
|
|
302 <c:if test="${digiBean.canEdit()}">
|
|
303 <a href="<c:out value='../entry/createEntity.xhtml?eid=${digiBean.getDigi().getId()}'/>">
|
|
304 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit digitalization" >
|
|
305 </a>
|
|
306 </c:if>
|
|
307 <table class="divaPanel">
|
|
308 <tr>
|
|
309 <td class="tdTitle">Name</td>
|
|
310 <td class="tdContent"><c:out value="${digiBean.getName()}"></c:out> </td>
|
|
311 </tr>
|
|
312 <tr>
|
|
313 <td class="tdTitle">Number of files</td>
|
|
314 <td class="tdContent"><c:out value="${digiBean.getNumFiles()}"></c:out> </td>
|
|
315 </tr>
|
|
316 </table>
|
|
317 </td>
|
|
318 </tr>
|
|
319 <tr>
|
|
320 <td>
|
|
321 <c:if test="${digiBean.getCodex() == null}">
|
|
322 <span class="titlePanel">Codex not yet assigned!</span>
|
|
323 </c:if>
|
|
324
|
|
325 <c:if test="${digiBean.getCodex() != null}">
|
|
326 <span class="titlePanel">[${digiBean.getCodex().getId()}] Codex</span>
|
|
327 <c:if test="${digiBean.canEdit()}">
|
|
328 <a href="<c:out value='../entry/createEntity.xhtml?eid=${digiBean.getCodex().getId()}'/>">
|
|
329 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" >
|
|
330 </a>
|
|
331 </c:if>
|
|
332 <table class="divaPanel">
|
|
333 <tr>
|
|
334 <td class="tdTitle">Own Value</td>
|
|
335 <td class="tdTitle"><c:out value="${digiBean.getCodex().getOv()}"></c:out> </td>
|
|
336 </tr>
|
|
337 <tr>
|
|
338 <td class="tdTitle">Shelf Mark</td>
|
|
339 <td class="tdContent"><c:out value="${digiBean.getCodex().getIdentifier()}"></c:out> </td>
|
|
340 </tr>
|
|
341 <tr>
|
|
342 <td class="tdTitle">Collection</td>
|
|
343 <td class="tdContent"><c:out value="${digiBean.getCodex().getCollection()}"></c:out> </td>
|
|
344 </tr>
|
|
345 <tr>
|
|
346 <td class="tdTitle">Repository</td>
|
|
347 <td class="tdContent"><c:out value="${digiBean.getCodex().getRepository()}"></c:out> </td>
|
|
348 </tr>
|
|
349 <tr>
|
|
350 <td class="tdTitle">City</td>
|
|
351 <td class="tdContent"><c:out value="${digiBean.getCodex().getCity()}"></c:out> </td>
|
|
352 </tr>
|
|
353 <tr>
|
|
354 <td class="tdTitle">Country</td>
|
|
355 <td class="tdContent"><c:out value="${digiBean.getCodex().getCountry()}"></c:out> </td>
|
|
356 </tr>
|
|
357 </table>
|
|
358
|
|
359 <c:if test="${digiBean.getWitnessList().size() > 0}">
|
|
360 <span class="titlePanel">Witnesses in Codex</span>
|
|
361 <table id="witness-edit" class="table table-bordered table-condensed divaPanel">
|
|
362 <thead>
|
|
363 <tr>
|
|
364 <th></th>
|
|
365 <th class="tableHead">Start</th>
|
|
366 <th class="tableHead">End</th>
|
|
367 </tr>
|
|
368 </thead>
|
|
369 <tbody>
|
|
370 <c:forEach var="witness" items="${digiBean.getWitnessList()}">
|
|
371 <tr>
|
|
372 <td>
|
|
373 <table class="witnessTableDetail">
|
|
374 <tr>
|
|
375 <td class="tdTitle">
|
|
376 <c:out value="[${witness.id}]"/>
|
|
377 </td>
|
|
378 </tr>
|
|
379 <tr>
|
|
380 <td class="tdTitle">
|
|
381 <c:out value="${witness.title}"/>
|
|
382 </td>
|
|
383 </tr>
|
|
384 <tr>
|
|
385 <td class="tdTitle">
|
|
386 <c:out value="Folios: ${witness.folios}"/>
|
|
387 </td>
|
|
388 </tr>
|
|
389 <tr>
|
|
390 <td >
|
|
391 <a href="<c:out value='../browse/entityDetails.xhtml?eid=${witness.id}'/>">
|
|
392 <img src="../resources/images/network_32.png" alt="show witness"
|
|
393 width="20" height="20">
|
|
394 </a>
|
|
395 <c:if test="${digiBean.canEdit()}">
|
|
396 <a href="<c:out value='../entry/createEntity.xhtml?eid=${witness.id}'/>">
|
|
397 <img src="../resources/css/xp/css-images/edit.gif" alt="Edit codex" >
|
|
398 </a>
|
|
399 </c:if>
|
|
400 </td>
|
|
401 </tr>
|
|
402 </table>
|
|
403 </td>
|
|
404
|
|
405 <td class="columnCentered">
|
|
406 <input
|
|
407 id="input-start-page-<c:out value="${witness.id}"/>"
|
|
408 data-witness="<c:out value="${witness.id}"/>"
|
|
409 type="text"
|
|
410 readonly="readonly"
|
|
411 value="<c:out value="${witness.startPage}"/>" class="inputPageNumber">
|
|
412 <c:if test="${digiBean.canEdit()}">
|
|
413 <button class="set-start-set ismi-button" data-witness="<c:out value="${witness.id}"/>">Set Start</button>
|
|
414 <button class="set-start-reset ismi-button" data-witness="<c:out value="${witness.id}"/>">Reset Start</button>
|
|
415 </c:if>
|
|
416 </td>
|
|
417
|
|
418 <td class="columnCentered">
|
|
419 <input
|
|
420 id="input-end-page-<c:out value="${witness.id}"/>"
|
|
421 data-witness="<c:out value="${witness.id}"/>"
|
|
422 type="text"
|
|
423 readonly="readonly"
|
|
424 value="<c:out value="${witness.endPage}"/>" class="inputPageNumber">
|
|
425 <c:if test="${digiBean.canEdit()}">
|
|
426 <button class="set-end-set ismi-button" data-witness="<c:out value="${witness.id}"/>">Set Start</button>
|
|
427 <button class="set-end-reset ismi-button" data-witness="<c:out value="${witness.id}"/>">Reset Start</button>
|
|
428 </c:if>
|
|
429 </td>
|
|
430 <c:if test="${digiBean.canEdit()}">
|
|
431 <td class="columnCentered">
|
|
432 <button class="update-witness ismi-button" data-witness="<c:out value="${witness.id}"/>">Update</button>
|
|
433 </td>
|
|
434 </c:if>
|
|
435 </tr>
|
|
436 </c:forEach>
|
|
437 </tbody>
|
|
438 </table>
|
|
439 </c:if>
|
|
440
|
|
441 </c:if>
|
|
442
|
|
443 </td>
|
|
444 </tr>
|
|
445 </table>
|
|
446 </div>
|
|
447 </c:if>
|
|
448
|
|
449
|
|
450 </div>
|
|
451 </div>
|
|
452 <div class="span8">
|
|
453 <input type='hidden' name='csrfmiddlewaretoken' value='psDBHsF5a1mttLSKeUgoUUVN3HL6f8Re' />
|
|
454 <div id="diva-wrapper"></div>
|
|
455 </div>
|
|
456 </div>
|
|
457 </div>
|
|
458
|
|
459
|
|
460 </body>
|
|
461 </html>
|