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