%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %>
<%@ page import="org.crosswire.utils.Sessions" %>
<%@ page import="org.crosswire.community.RightsAndRoles" %>
<%@ page import="org.crosswire.community.projects.ntmss.data.Document" %>
<%@ page import="org.crosswire.community.projects.ntmss.data.Page" %>
<%
int docID = -1; try {docID = Integer.parseInt(request.getParameter("docID"));} catch (Exception e){}
int pageID = -1; try {pageID = Integer.parseInt(request.getParameter("pageID"));} catch (Exception e){}
int pageIDEnd = pageID; try {pageIDEnd = Integer.parseInt(request.getParameter("pageIDEnd"));} catch (Exception e){}
int toPageID = -1; try {toPageID = Integer.parseInt(request.getParameter("toPageID"));} catch (Exception e){}
boolean indexing = "true".equals(request.getParameter("indexing"));
boolean transcription = "true".equals(request.getParameter("transcription"));
boolean folio = "true".equals(request.getParameter("folio"));
boolean copy = "true".equals(request.getParameter("copy"));
String userName = Sessions.getSessionStringValue(request, "userName");
if (docID > -1 && pageID > -1 && toPageID > -1) {
response.setContentType("text/xml");
Document doc = Document.getDocument(docID);
if (doc == null) {
%>
<%
return;
}
String role = "VMR Administrator";
// let's check to see if we're a privileged user
boolean permission = RightsAndRoles.hasRole(request, response, role) || (userName != null && userName.equals(doc.getUserID()));
// ---------------------------------------------
// we check permissions here instead of at the top because folio editing can be done by anyone logged in
if (!permission) {
%>
<%
return;
}
int count = 1;
Page fromLastPage = Page.getPage(docID, pageID);
for (; fromLastPage.getPageID() < pageIDEnd; fromLastPage = fromLastPage.getNextPage(),++count);
Page toLastPage = Page.getPage(docID, toPageID);
for (int i = 1; i < count; toLastPage = toLastPage.getNextPage(),++i);
boolean forward = toPageID > pageID;
// if were going forward, we need to do last pages first or we will clobber ourself if we overlap
// if we're going backward, we need to start with the first page id.
Page fromPage = (forward) ? fromLastPage : Page.getPage(docID, pageID);
Page toPage = (forward) ? toLastPage : Page.getPage(docID, toPageID);
%>
<%
for (; count > 0; --count) {
if (fromPage == null) {
%>
<%
break;
}
Page fromOrig = (Page)fromPage.clone();
if (toPage != null) {
Page toOrig = (Page)toPage.clone();
if (folio) {
toPage.setFolioNumber(fromPage.getFolioNumber());
fromPage.setFolioNumber("");
}
if (indexing) {
toPage.saveBiblicalContent(fromPage.getBiblicalContent(), fromPage.getIndexerID());
fromPage.deleteBiblicalContent();
}
if (transcription) {
doc.setTranscriptionPage(toPage.getPageID(), doc.getTranscriptionPage(fromPage.getPageID()));
if (!copy) doc.removeTranscriptionPage(fromPage.getPageID());
}
toPage.save(toOrig);
if (!copy) fromPage.save(fromOrig);
%>
<%
}
else {
toPage = new Page();
toPage.setDocumentID(docID);
toPage.setPageID(toPageID);
if (folio) {
toPage.setFolioNumber(fromPage.getFolioNumber());
fromPage.setFolioNumber("");
}
if (indexing) {
toPage.saveBiblicalContent(fromPage.getBiblicalContent(), fromPage.getIndexerID());
fromPage.deleteBiblicalContent();
}
toPage.saveNew();
if (!copy) fromPage.save(fromOrig);
if (transcription) {
doc.setTranscriptionPage(toPage.getPageID(), doc.getTranscriptionPage(fromPage.getPageID()));
if (!copy) doc.removeTranscriptionPage(fromPage.getPageID());
}
%>
<%
}
// if we're moving page data forward, we're working in reverse from the back so we don't clobber our data while writing
fromPage = (forward) ? fromPage.getPreviousPage() : fromPage.getNextPage();
toPage = (forward) ? toPage.getPreviousPage() : toPage.getNextPage();
}
%>
<%
return;
}
%>
manuscript/movepage
Move page data for a manuscript
Parameters
| docID | manuscript id of the source page, e.g., 10046 |
| pageID | page id of the source page, e.g., 10 |
| pageIDEnd | (optional) if specifying a range, the last page id to move, e.g., 30 |
| toPageID | destination page id |
| indexing | true|(false) - move indexing |
| transcription | true|(false) - move transcription |
| folio | true|(false) - move folio numbering |
| copy | true|(false) - leave source data in place after writing to destination |