<%@ 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

docIDmanuscript id of the source page, e.g., 10046
pageIDpage id of the source page, e.g., 10
pageIDEnd(optional) if specifying a range, the last page id to move, e.g., 30
toPageIDdestination page id
indexingtrue|(false) - move indexing
transcriptiontrue|(false) - move transcription
foliotrue|(false) - move folio numbering
copytrue|(false) - leave source data in place after writing to destination