<%@ 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.webtools.RightsAndRoles" %> <%@ page import="org.crosswire.community.projects.ntmss.data.ProjectManagement" %> <%@ page import="org.crosswire.community.projects.ntmss.data.DocumentGroup" %> <%@ page import="org.crosswire.community.projects.ntmss.data.Transcription" %> <%@ page import="org.crosswire.xml.XMLBlock" %> <%@ page import="org.crosswire.webtools.RightsAndRoles.UserGroup" %> <%@ page import="org.crosswire.webtools.*" %> <%@ page import="org.crosswire.webtools.annotation.*" %> <%! @Description(value = "Create a new or update an existing document group.", name = "documentgroup/put") public static class MyParameters extends Parameters { protected ProjectManagement.Project project = null; protected long userID = -1; @Description(value = "Document Group ID, supply to edit an existing document group; otherwise, do not include when adding a new document group", defaultValue = "null - create new document group", example = "1") public Integer documentGroupID = null; @Description(value = "Name of the document group", example = "My Liturgical Mss") public String name; @Description(value = "Description of the document group", example = "Mss which are interesting for my Liturgical research") public String description; @Description(value = "Project ID for which to retrieve document groups", example = "1") public Integer projectID; @Description(value = "Project Name for which to retrieve document groups", example = "ECM Matthew") public String projectName; @Description(value = "internal") public String userGroupName; @Override protected void afterLoad() { if (projectName == null) projectName = userGroupName; projectName = Transcription.assureUnicode(projectName); name = Transcription.assureUnicode(name); description = Transcription.assureUnicode(description); } @Override protected void customValidation() { if (getUser() == null) { addError(-5, "Must be logged in to edit document groups."); return; } if (documentGroupID == null) { if (name == null) { addError(-6, "Must specify {name} when creating a new document group."); } } if (projectID != null || projectName != null) { project = projectID != null ? ProjectManagement.getProject(projectID) : ProjectManagement.getProject(projectName); if (project == null) { addError(-7, "Project not found."); return; } } } } %> <% MyParameters params = new MyParameters().loadFromRequest(request, response, false); if (params.getErrors().size() == 0) { // TODO: really? we allow saving as owned by a different user than the current user? // Remove this if possible String userName = request.getParameter("userName"); if (userName == null) userName = params.getUser().getUserName(); do { String role = "VMR Administrator"; boolean admin = params.getUser().hasRole(role); DocumentGroup orig = null; DocumentGroup inst = null; if (params.documentGroupID == null) { inst = new DocumentGroup(); } else { orig = DocumentGroup.getDocumentGroup(params.documentGroupID); if (orig == null) { params.addError(-8, "Couldn't find DocumentGroup ID: " + params.documentGroupID); break; } if (!admin && !userName.equals(orig.getUserID())) { params.addError(-9, "No permission to edit document groups for other users. Must be have role: " + role + "."); break; } inst = (DocumentGroup)orig.clone(); } if (params.name != null) inst.setName(params.name); if (params.description != null) inst.setDescription(params.description); inst.setUserID(userName); if (params.project != null) inst.setGroupID(params.project.getProjectName()); if (orig != null) { inst.save(orig); } else { inst = inst.saveNew(); } Serializer.output(response, out, params, XMLBlock.createXMLBlock("")); return; } while (false); } else params.format = "html"; Serializer.reportErrors(request, response, out, params, true); %>