Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/util/ImageGalleryUtils.java =================================================================== diff -u --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/util/ImageGalleryUtils.java (revision 0) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/util/ImageGalleryUtils.java (revision c022c18db5de76344466905b76929dd951481994) @@ -0,0 +1,113 @@ +package org.lamsfoundation.lams.tool.imageGallery.util; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; +import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageGalleryItemForm; +import org.lamsfoundation.lams.tool.imageGallery.web.form.MultipleImagesForm; +import org.lamsfoundation.lams.util.FileValidatorUtil; + +public class ImageGalleryUtils { + /** + * Validate imageGallery item. + * + * @param itemForm + * @return + */ + public static ActionErrors validateImageGalleryItem(ImageGalleryItemForm itemForm, boolean largeFile) { + ActionErrors errors = new ActionErrors(); + + // validate file size + FileValidatorUtil.validateFileSize(itemForm.getFile(), largeFile, errors); + // for edit validate: file already exist + if (!itemForm.isHasFile() + && ((itemForm.getFile() == null) || StringUtils.isEmpty(itemForm.getFile().getFileName()))) { + errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_FILE_BLANK)); + } + + // check for allowed format : gif, png, jpg + if (itemForm.getFile() != null) { + String contentType = itemForm.getFile().getContentType(); + if (isContentTypeForbidden(contentType)) { + errors.add(ActionMessages.GLOBAL_MESSAGE, + new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT)); + } + } + + return errors; + } + + /** + * Validate imageGallery item. + * + * @param multipleForm + * @return + */ + public static ActionErrors validateMultipleImages(MultipleImagesForm multipleForm, boolean largeFile) { + ActionErrors errors = new ActionErrors(); + + List fileList = createFileListFromMultipleForm(multipleForm); + + // validate files size + for (FormFile file : fileList) { + FileValidatorUtil.validateFileSize(file, largeFile, errors); + + // check for allowed format : gif, png, jpg + String contentType = file.getContentType(); + if (isContentTypeForbidden(contentType)) { + errors.add(ActionMessages.GLOBAL_MESSAGE, + new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT_FOR, file.getFileName())); + } + } + + return errors; + } + + /** + * Create file list from multiple form. + * + * @param multipleForm + * @return + */ + public static List createFileListFromMultipleForm(MultipleImagesForm multipleForm) { + + List fileList = new ArrayList(); + if (multipleForm.getFile1() != null && !StringUtils.isEmpty(multipleForm.getFile1().getFileName())) { + fileList.add(multipleForm.getFile1()); + } + if (multipleForm.getFile2() != null && !StringUtils.isEmpty(multipleForm.getFile2().getFileName())) { + fileList.add(multipleForm.getFile2()); + } + if (multipleForm.getFile3() != null && !StringUtils.isEmpty(multipleForm.getFile3().getFileName())) { + fileList.add(multipleForm.getFile3()); + } + if (multipleForm.getFile4() != null && !StringUtils.isEmpty(multipleForm.getFile4().getFileName())) { + fileList.add(multipleForm.getFile4()); + } + if (multipleForm.getFile5() != null && !StringUtils.isEmpty(multipleForm.getFile5().getFileName())) { + fileList.add(multipleForm.getFile5()); + } + + return fileList; + } + + /** + * Checks if the format is allowed. + * + * @param contentType + * @return + */ + private static boolean isContentTypeForbidden(String contentType) { + boolean isContentTypeForbidden = StringUtils.isEmpty(contentType) || !(contentType.equals("image/gif") + || contentType.equals("image/png") || contentType.equals("image/jpg") + || contentType.equals("image/jpeg") || contentType.equals("image/pjpeg")); + + return isContentTypeForbidden; + } +} Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java =================================================================== diff -u -rc72da0246725fd4cfada33dcf5b0ab90d1c3f3d4 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision c72da0246725fd4cfada33dcf5b0ab90d1c3f3d4) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision c022c18db5de76344466905b76929dd951481994) @@ -61,11 +61,11 @@ import org.lamsfoundation.lams.tool.imageGallery.service.ImageGalleryException; import org.lamsfoundation.lams.tool.imageGallery.service.UploadImageGalleryFileException; import org.lamsfoundation.lams.tool.imageGallery.util.ImageGalleryItemComparator; +import org.lamsfoundation.lams.tool.imageGallery.util.ImageGalleryUtils; import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageGalleryForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageGalleryItemForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.MultipleImagesForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.util.FileValidatorUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -173,7 +173,7 @@ imageGalleryForm.setContentFolderID(contentFolderID); // initial Session Map - SessionMap sessionMap = new SessionMap(); + SessionMap sessionMap = new SessionMap(); request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); imageGalleryForm.setSessionMapID(sessionMap.getSessionID()); @@ -245,7 +245,7 @@ private ActionForward initPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException { String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); ImageGalleryForm existForm = (ImageGalleryForm) sessionMap.get(ImageGalleryConstants.ATTR_IMAGE_GALLERY_FORM); ImageGalleryForm imageGalleryForm = (ImageGalleryForm) form; @@ -278,7 +278,7 @@ ImageGalleryForm imageGalleryForm = (ImageGalleryForm) (form); // get back sessionMAP - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageGalleryForm.getSessionMapID()); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageGalleryForm.getSessionMapID()); ToolAccessMode mode = getAccessMode(request); @@ -344,11 +344,11 @@ // ************************* Handle imageGallery items ******************* // Handle imageGallery items - Set itemList = new LinkedHashSet(); - SortedSet imageList = getImageList(sessionMap); - Iterator iter = imageList.iterator(); + Set itemList = new LinkedHashSet(); + SortedSet imageList = getImageList(sessionMap); + Iterator iter = imageList.iterator(); while (iter.hasNext()) { - ImageGalleryItem item = (ImageGalleryItem) iter.next(); + ImageGalleryItem item = iter.next(); if (item != null) { // This flushs user UID info to message if this user is a new user. item.setCreateBy(imageGalleryUser); @@ -357,20 +357,20 @@ } imageGalleryPO.setImageGalleryItems(itemList); // delete instructino file from database. - List delImageGalleryItemList = getDeletedImageGalleryItemList(sessionMap); + List delImageGalleryItemList = getDeletedImageGalleryItemList(sessionMap); iter = delImageGalleryItemList.iterator(); while (iter.hasNext()) { - ImageGalleryItem item = (ImageGalleryItem) iter.next(); + ImageGalleryItem item = iter.next(); iter.remove(); if (item.getUid() != null) { service.deleteImageGalleryItem(item.getUid()); } } // handle imageGallery item attachment file: - List delItemAttList = getDeletedItemAttachmentList(sessionMap); + List delItemAttList = getDeletedItemAttachmentList(sessionMap); iter = delItemAttList.iterator(); while (iter.hasNext()) { - ImageGalleryItem delAtt = (ImageGalleryItem) iter.next(); + ImageGalleryItem delAtt = iter.next(); iter.remove(); } // ********************************************** @@ -379,9 +379,10 @@ // ************************* Handle rating criterias ******************* if (mode.isAuthor()) { - List oldCriterias = (List) sessionMap.get(AttributeNames.ATTR_RATING_CRITERIAS); - - service.saveRatingCriterias(request, oldCriterias, contentId); + List oldCriterias = (List) sessionMap + .get(AttributeNames.ATTR_RATING_CRITERIAS); + + service.saveRatingCriterias(request, oldCriterias, contentId); } imageGalleryForm.setImageGallery(imageGalleryPO); @@ -428,7 +429,7 @@ // get back sessionMAP String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); int itemIdx = NumberUtils.stringToInt(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_INDEX), -1); ImageGalleryItem item = null; @@ -477,24 +478,23 @@ HttpServletResponse response) { ImageGalleryItemForm itemForm = (ImageGalleryItemForm) form; - ActionErrors errors = validateImageGalleryItem(itemForm); + ActionErrors errors = ImageGalleryUtils.validateImageGalleryItem(itemForm, true); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("image"); - } - try { - extractFormToImageGalleryItem(request, itemForm); + if (errors.isEmpty()) { + extractFormToImageGalleryItem(request, itemForm); + } } catch (Exception e) { // any upload exception will display as normal error message rather then throw exception directly errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_UPLOAD_FAILED, e.getMessage())); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("image"); - } } + + if (!errors.isEmpty()) { + this.addErrors(request, errors); + return mapping.findForward("image"); + } + // set session map ID so that itemlist.jsp can get sessionMAP request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, itemForm.getSessionMapID()); // return null to close this window @@ -532,7 +532,7 @@ private ActionForward switchItem(ActionMapping mapping, HttpServletRequest request, boolean up) { // get back sessionMAP String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); int imageIdx = NumberUtils.stringToInt(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_INDEX), -1); if (imageIdx != -1) { @@ -593,24 +593,23 @@ HttpServletResponse response) { MultipleImagesForm multipleForm = (MultipleImagesForm) form; - ActionErrors errors = validateMultipleImages(multipleForm); + ActionErrors errors = ImageGalleryUtils.validateMultipleImages(multipleForm, true); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("images"); - } - try { - extractMultipleFormToImageGalleryItems(request, multipleForm); + if (errors.isEmpty()) { + extractMultipleFormToImageGalleryItems(request, multipleForm); + } } catch (Exception e) { // any upload exception will display as normal error message rather then throw exception directly errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_UPLOAD_FAILED, e.getMessage())); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("images"); - } } + + if (!errors.isEmpty()) { + this.addErrors(request, errors); + return mapping.findForward("images"); + } + // set session map ID so that itemlist.jsp can get sessionMAP request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, multipleForm.getSessionMapID()); // return null to close this window @@ -632,7 +631,7 @@ // get back sessionMAP String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); int itemIdx = NumberUtils.stringToInt(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_INDEX), -1); if (itemIdx != -1) { @@ -642,7 +641,7 @@ imageGalleryList.clear(); imageGalleryList.addAll(rList); // add to delList - List delList = getDeletedImageGalleryItemList(sessionMap); + List delList = getDeletedImageGalleryItemList(sessionMap); delList.add(item); } @@ -668,7 +667,7 @@ * @param request * @return */ - private SortedSet getImageList(SessionMap sessionMap) { + private SortedSet getImageList(SessionMap sessionMap) { SortedSet list = (SortedSet) sessionMap .get(ImageGalleryConstants.ATTR_IMAGE_LIST); if (list == null) { @@ -684,7 +683,7 @@ * @param request * @return */ - private List getDeletedImageGalleryItemList(SessionMap sessionMap) { + private List getDeletedImageGalleryItemList(SessionMap sessionMap) { return getListFromSession(sessionMap, ImageGalleryConstants.ATTR_DELETED_IMAGE_LIST); } @@ -696,7 +695,7 @@ * @param request * @return */ - private List getDeletedItemAttachmentList(SessionMap sessionMap) { + private List getDeletedItemAttachmentList(SessionMap sessionMap) { return getListFromSession(sessionMap, ImageGalleryConstants.ATTR_DELETED_IMAGE_ATTACHMENT_LIST); } @@ -707,10 +706,10 @@ * @param name * @return */ - private List getListFromSession(SessionMap sessionMap, String name) { - List list = (List) sessionMap.get(name); + private List getListFromSession(SessionMap sessionMap, String name) { + List list = (List) sessionMap.get(name); if (list == null) { - list = new ArrayList(); + list = new ArrayList(); sessionMap.put(name, list); } return list; @@ -757,7 +756,7 @@ * persisting this imageGallery item. */ - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageForm.getSessionMapID()); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageForm.getSessionMapID()); // check whether it is "edit(old item)" or "add(new item)" SortedSet imageList = getImageList(sessionMap); int imageIdx = NumberUtils.stringToInt(imageForm.getImageIndex(), -1); @@ -804,7 +803,7 @@ } // put it after "upload" to ensure deleted file added into list only no exception happens during upload if (hasOld) { - List delAtt = getDeletedItemAttachmentList(sessionMap); + List delAtt = getDeletedItemAttachmentList(sessionMap); delAtt.add(delImage); } } @@ -833,11 +832,11 @@ private void extractMultipleFormToImageGalleryItems(HttpServletRequest request, MultipleImagesForm multipleForm) throws Exception { - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(multipleForm.getSessionMapID()); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(multipleForm.getSessionMapID()); // check whether it is "edit(old item)" or "add(new item)" SortedSet imageList = getImageList(sessionMap); - List fileList = createFileListFromMultipleForm(multipleForm); + List fileList = ImageGalleryUtils.createFileListFromMultipleForm(multipleForm); for (FormFile file : fileList) { ImageGalleryItem image = new ImageGalleryItem(); image.setCreateDate(new Timestamp(new Date().getTime())); @@ -891,103 +890,6 @@ } /** - * Validate imageGallery item. - * - * @param itemForm - * @return - */ - private ActionErrors validateImageGalleryItem(ImageGalleryItemForm itemForm) { - ActionErrors errors = new ActionErrors(); - - // validate file size - FileValidatorUtil.validateFileSize(itemForm.getFile(), true, errors); - // for edit validate: file already exist - if (!itemForm.isHasFile() - && ((itemForm.getFile() == null) || StringUtils.isEmpty(itemForm.getFile().getFileName()))) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_FILE_BLANK)); - } - - // check for allowed format : gif, png, jpg - if (itemForm.getFile() != null) { - String contentType = itemForm.getFile().getContentType(); - if (isContentTypeForbidden(contentType)) { - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT)); - } - } - - return errors; - } - - /** - * Validate imageGallery item. - * - * @param multipleForm - * @return - */ - private ActionErrors validateMultipleImages(MultipleImagesForm multipleForm) { - ActionErrors errors = new ActionErrors(); - - List fileList = createFileListFromMultipleForm(multipleForm); - - // validate files size - for (FormFile file : fileList) { - FileValidatorUtil.validateFileSize(file, true, errors); - - // check for allowed format : gif, png, jpg - String contentType = file.getContentType(); - if (isContentTypeForbidden(contentType)) { - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT_FOR, file.getFileName())); - } - } - - return errors; - } - - /** - * Create file list from multiple form. - * - * @param multipleForm - * @return - */ - private List createFileListFromMultipleForm(MultipleImagesForm multipleForm) { - - List fileList = new ArrayList(); - if (multipleForm.getFile1() != null && !StringUtils.isEmpty(multipleForm.getFile1().getFileName())) { - fileList.add(multipleForm.getFile1()); - } - if (multipleForm.getFile2() != null && !StringUtils.isEmpty(multipleForm.getFile2().getFileName())) { - fileList.add(multipleForm.getFile2()); - } - if (multipleForm.getFile3() != null && !StringUtils.isEmpty(multipleForm.getFile3().getFileName())) { - fileList.add(multipleForm.getFile3()); - } - if (multipleForm.getFile4() != null && !StringUtils.isEmpty(multipleForm.getFile4().getFileName())) { - fileList.add(multipleForm.getFile4()); - } - if (multipleForm.getFile5() != null && !StringUtils.isEmpty(multipleForm.getFile5().getFileName())) { - fileList.add(multipleForm.getFile5()); - } - - return fileList; - } - - /** - * Checks if the format is allowed. - * - * @param contentType - * @return - */ - private boolean isContentTypeForbidden(String contentType) { - boolean isContentTypeForbidden = StringUtils.isEmpty(contentType) || !(contentType.equals("image/gif") - || contentType.equals("image/png") || contentType.equals("image/jpg") - || contentType.equals("image/jpeg") || contentType.equals("image/pjpeg")); - - return isContentTypeForbidden; - } - - /** * Get ToolAccessMode from HttpRequest parameters. Default value is AUTHOR mode. * * @param request Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java =================================================================== diff -u -r67dcb9996bea686f86b32184b900f6aa36fd11f0 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision 67dcb9996bea686f86b32184b900f6aa36fd11f0) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/LearningAction.java (.../LearningAction.java) (revision c022c18db5de76344466905b76929dd951481994) @@ -24,13 +24,14 @@ package org.lamsfoundation.lams.tool.imageGallery.web.action; +import java.io.IOException; import java.sql.Timestamp; -import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import java.util.TreeSet; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -65,12 +66,12 @@ import org.lamsfoundation.lams.tool.imageGallery.service.ImageGalleryException; import org.lamsfoundation.lams.tool.imageGallery.service.UploadImageGalleryFileException; import org.lamsfoundation.lams.tool.imageGallery.util.ImageGalleryItemComparator; +import org.lamsfoundation.lams.tool.imageGallery.util.ImageGalleryUtils; import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageGalleryItemForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageRatingForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.MultipleImagesForm; import org.lamsfoundation.lams.tool.imageGallery.web.form.ReflectionForm; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.util.FileValidatorUtil; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -88,7 +89,7 @@ @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { + HttpServletResponse response) throws IOException { String param = mapping.getParameter(); // -----------------------ImageGallery Learner function --------------------------- @@ -274,10 +275,9 @@ // get back SessionMap String sessionMapID = request.getParameter(ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - // get mode and ToolSessionID from sessionMAP - ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); + // get toolSessionID from sessionMAP Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); IImageGalleryService service = getImageGalleryService(); @@ -324,38 +324,35 @@ * @param request * @param response * @return + * @throws IOException */ private ActionForward saveNewImage(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { + HttpServletResponse response) throws IOException { ImageGalleryItemForm itemForm = (ImageGalleryItemForm) form; - ActionErrors errors = validateImageGalleryItem(itemForm); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(itemForm.getSessionMapID()); + ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); + + //validate form + boolean isLargeFilesAllowed = mode.isTeacher(); + ActionErrors errors = ImageGalleryUtils.validateImageGalleryItem(itemForm, isLargeFilesAllowed); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("image"); - } - try { - extractFormToImageGalleryItem(request, itemForm); + if (errors.isEmpty()) { + extractFormToImageGalleryItem(request, itemForm); + } } catch (Exception e) { // any upload exception will display as normal error message rather then throw exception directly errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_UPLOAD_FAILED, e.getMessage())); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("image"); - } } - // redirect - String sessionMapID = itemForm.getSessionMapID(); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); - request.setAttribute(AttributeNames.ATTR_MODE, mode); - Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); - request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); + if (!errors.isEmpty()) { + ServletOutputStream outputStream = response.getOutputStream(); + outputStream.print(errors.get().next().toString()); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } - return mapping.findForward(ImageGalleryConstants.SUCCESS); + return null; } /** @@ -385,38 +382,35 @@ * @param request * @param response * @return + * @throws IOException */ private ActionForward saveMultipleImages(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { + HttpServletResponse response) throws IOException { MultipleImagesForm multipleForm = (MultipleImagesForm) form; - ActionErrors errors = validateMultipleImages(multipleForm); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(multipleForm.getSessionMapID()); + ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); + + //validate form + boolean isLargeFilesAllowed = mode.isTeacher(); + ActionErrors errors = ImageGalleryUtils.validateMultipleImages(multipleForm, isLargeFilesAllowed); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("images"); - } - try { - extractMultipleFormToImageGalleryItems(request, multipleForm); + if (errors.isEmpty()) { + extractMultipleFormToImageGalleryItems(request, multipleForm); + } } catch (Exception e) { // any upload exception will display as normal error message rather then throw exception directly errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_UPLOAD_FAILED, e.getMessage())); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("images"); - } } - // redirect - String sessionMapID = multipleForm.getSessionMapID(); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); - request.setAttribute(AttributeNames.ATTR_MODE, mode); - Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); - request.setAttribute(AttributeNames.PARAM_TOOL_SESSION_ID, sessionId); + if (!errors.isEmpty()) { + ServletOutputStream outputStream = response.getOutputStream(); + outputStream.print(errors.get().next().toString()); + response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); + } - return mapping.findForward(ImageGalleryConstants.SUCCESS); + return null; } /** @@ -434,7 +428,7 @@ Long imageUid = new Long(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_UID)); String sessionMapID = request.getParameter(ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); @@ -529,7 +523,7 @@ private ActionForward vote(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); IImageGalleryService service = getImageGalleryService(); Long imageUid = new Long(request.getParameter(ImageGalleryConstants.PARAM_IMAGE_UID)); @@ -578,7 +572,7 @@ // get the existing reflection entry IImageGalleryService submitFilesService = getImageGalleryService(); - SessionMap map = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap map = (SessionMap) request.getSession().getAttribute(sessionMapID); Long toolSessionID = (Long) map.get(AttributeNames.PARAM_TOOL_SESSION_ID); NotebookEntry entry = submitFilesService.getEntry(toolSessionID, CoreNotebookConstants.NOTEBOOK_TOOL, ImageGalleryConstants.TOOL_SIGNATURE, user.getUserID()); @@ -605,7 +599,7 @@ Integer userId = refForm.getUserID(); String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); Long sessionId = (Long) sessionMap.get(AttributeNames.PARAM_TOOL_SESSION_ID); IImageGalleryService service = getImageGalleryService(); @@ -672,11 +666,24 @@ */ private void extractFormToImageGalleryItem(HttpServletRequest request, ImageGalleryItemForm imageForm) throws Exception { - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageForm.getSessionMapID()); IImageGalleryService service = getImageGalleryService(); - Long sessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); - ImageGallery imageGallery = service.getImageGalleryBySessionId(sessionId); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageForm.getSessionMapID()); + ToolAccessMode mode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); + + ImageGallery imageGallery; + Long toolSessionId = null; + ImageGalleryUser user = null; + if (mode.isLearner()) { + toolSessionId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_SESSION_ID); + imageGallery = service.getImageGalleryBySessionId(toolSessionId); + user = getCurrentUser(service, toolSessionId); + // monitor + } else { + Long contentId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_CONTENT_ID); + imageGallery = service.getImageGalleryByContentId(contentId); + } + ImageGalleryItem image = new ImageGalleryItem(); image.setCreateDate(new Timestamp(new Date().getTime())); @@ -701,12 +708,14 @@ title = imageLocalized + " " + nextConsecutiveImageTitle; } image.setTitle(title); - - ImageGalleryUser imageGalleryUser = getCurrentUser(service, sessionId); - image.setCreateBy(imageGalleryUser); + + image.setCreateBy(user); image.setDescription(imageForm.getDescription()); image.setCreateByAuthor(false); image.setHide(false); + if (mode.isTeacher()) { + image.setCreateByAuthor(true); + } // setting SequenceId Set imageList = imageGallery.getImageGalleryItems(); @@ -725,8 +734,8 @@ service.saveOrUpdateImageGalleryItem(image); // notify teachers - if (imageGallery.isNotifyTeachersOnImageSumbit()) { - service.notifyTeachersOnImageSumbit(sessionId, imageGalleryUser); + if (mode.isLearner() && imageGallery.isNotifyTeachersOnImageSumbit()) { + service.notifyTeachersOnImageSumbit(toolSessionId, user); } } @@ -740,7 +749,7 @@ private void extractMultipleFormToImageGalleryItems(HttpServletRequest request, MultipleImagesForm multipleForm) throws Exception { - List fileList = createFileListFromMultipleForm(multipleForm); + List fileList = ImageGalleryUtils.createFileListFromMultipleForm(multipleForm); for (FormFile file : fileList) { ImageGalleryItemForm imageForm = new ImageGalleryItemForm(); imageForm.setSessionMapID(multipleForm.getSessionMapID()); @@ -751,100 +760,4 @@ } } - /** - * Validate imageGallery item. - * - * @param itemForm - * @return - */ - private ActionErrors validateImageGalleryItem(ImageGalleryItemForm itemForm) { - ActionErrors errors = new ActionErrors(); - - // validate file size - FileValidatorUtil.validateFileSize(itemForm.getFile(), false, errors); - // for edit validate: file already exist - if (itemForm.getFile() == null || StringUtils.isEmpty(itemForm.getFile().getFileName())) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_FILE_BLANK)); - } - - // check for allowed format : gif, png, jpg - if (itemForm.getFile() != null) { - String contentType = itemForm.getFile().getContentType(); - if (isContentTypeForbidden(contentType)) { - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT)); - } - } - - return errors; - } - - /** - * Validate imageGallery items. - * - * @param multipleForm - * @return - */ - private ActionErrors validateMultipleImages(MultipleImagesForm multipleForm) { - ActionErrors errors = new ActionErrors(); - - List fileList = createFileListFromMultipleForm(multipleForm); - - // validate files size - for (FormFile file : fileList) { - FileValidatorUtil.validateFileSize(file, false, errors); - - // check for allowed format : gif, png, jpg - String contentType = file.getContentType(); - if (isContentTypeForbidden(contentType)) { - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT_FOR, file.getFileName())); - } - } - - return errors; - } - - /** - * Create file list from multiple form. - * - * @param multipleForm - * @return - */ - private List createFileListFromMultipleForm(MultipleImagesForm multipleForm) { - - List fileList = new ArrayList(); - if (multipleForm.getFile1() != null && !StringUtils.isEmpty(multipleForm.getFile1().getFileName())) { - fileList.add(multipleForm.getFile1()); - } - if (multipleForm.getFile2() != null && !StringUtils.isEmpty(multipleForm.getFile2().getFileName())) { - fileList.add(multipleForm.getFile2()); - } - if (multipleForm.getFile3() != null && !StringUtils.isEmpty(multipleForm.getFile3().getFileName())) { - fileList.add(multipleForm.getFile3()); - } - if (multipleForm.getFile4() != null && !StringUtils.isEmpty(multipleForm.getFile4().getFileName())) { - fileList.add(multipleForm.getFile4()); - } - if (multipleForm.getFile5() != null && !StringUtils.isEmpty(multipleForm.getFile5().getFileName())) { - fileList.add(multipleForm.getFile5()); - } - - return fileList; - } - - /** - * Checks if the format is allowed. - * - * @param contentType - * @return - */ - private boolean isContentTypeForbidden(String contentType) { - boolean isContentTypeForbidden = StringUtils.isEmpty(contentType) || !(contentType.equals("image/gif") - || contentType.equals("image/png") || contentType.equals("image/jpg") - || contentType.equals("image/jpeg") || contentType.equals("image/pjpeg")); - - return isContentTypeForbidden; - } - } Index: lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/MonitoringAction.java =================================================================== diff -u -rf8b98e45847fcee40188af4c9db5d13e1bd61e25 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision f8b98e45847fcee40188af4c9db5d13e1bd61e25) +++ lams_tool_images/src/java/org/lamsfoundation/lams/tool/imageGallery/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision c022c18db5de76344466905b76929dd951481994) @@ -25,32 +25,26 @@ package org.lamsfoundation.lams.tool.imageGallery.web.action; import java.io.IOException; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; import org.apache.struts.action.Action; -import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.apache.struts.action.ActionMessage; -import org.apache.struts.action.ActionMessages; -import org.apache.struts.upload.FormFile; +import org.apache.struts.action.ActionRedirect; import org.lamsfoundation.lams.notebook.model.NotebookEntry; import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; import org.lamsfoundation.lams.rating.dto.ItemRatingDTO; +import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.imageGallery.ImageGalleryConstants; import org.lamsfoundation.lams.tool.imageGallery.dto.ReflectDTO; import org.lamsfoundation.lams.tool.imageGallery.dto.Summary; @@ -60,14 +54,8 @@ import org.lamsfoundation.lams.tool.imageGallery.model.ImageGallerySession; import org.lamsfoundation.lams.tool.imageGallery.model.ImageGalleryUser; import org.lamsfoundation.lams.tool.imageGallery.service.IImageGalleryService; -import org.lamsfoundation.lams.tool.imageGallery.service.ImageGalleryException; -import org.lamsfoundation.lams.tool.imageGallery.service.UploadImageGalleryFileException; import org.lamsfoundation.lams.tool.imageGallery.web.form.ImageGalleryItemForm; -import org.lamsfoundation.lams.tool.imageGallery.web.form.MultipleImagesForm; -import org.lamsfoundation.lams.usermanagement.dto.UserDTO; -import org.lamsfoundation.lams.util.FileValidatorUtil; import org.lamsfoundation.lams.util.WebUtil; -import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; import org.springframework.web.context.WebApplicationContext; @@ -86,18 +74,6 @@ if (param.equals("summary")) { return summary(mapping, form, request, response); } - if (param.equals("newImageInit")) { - return newImageInit(mapping, form, request, response); - } - if (param.equals("saveNewImage")) { - return saveNewImage(mapping, form, request, response); - } - if (param.equals("initMultipleImages")) { - return initMultipleImages(mapping, form, request, response); - } - if (param.equals("saveMultipleImages")) { - return saveMultipleImages(mapping, form, request, response); - } if (param.equals("imageSummary")) { return imageSummary(mapping, form, request, response); } @@ -120,7 +96,7 @@ private ActionForward summary(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // initial Session Map - SessionMap sessionMap = new SessionMap(); + SessionMap sessionMap = new SessionMap(); request.getSession().setAttribute(sessionMap.getSessionID(), sessionMap); request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); // save contentFolderID into session @@ -143,6 +119,7 @@ sessionMap.put(ImageGalleryConstants.ATTR_IMAGE_GALLERY, imageGallery); sessionMap.put(ImageGalleryConstants.ATTR_TOOL_CONTENT_ID, contentId); sessionMap.put(ImageGalleryConstants.ATTR_REFLECT_LIST, reflectList); + sessionMap.put(AttributeNames.ATTR_MODE, ToolAccessMode.TEACHER); //rating stuff boolean isCommentsEnabled = service.isCommentsEnabled(contentId); sessionMap.put(ImageGalleryConstants.ATTR_IS_COMMENTS_ENABLED, isCommentsEnabled); @@ -151,116 +128,6 @@ } /** - * Initial page for addding new imageGallery item. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward newImageInit(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - String sessionMapID = request.getParameter(ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - return mapping.findForward(ImageGalleryConstants.SUCCESS); - } - - /** - * Save imageGallery item into database. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward saveNewImage(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - ImageGalleryItemForm itemForm = (ImageGalleryItemForm) form; - String sessionMapID = itemForm.getSessionMapID(); - request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); - - ActionErrors errors = validateImageGalleryItem(itemForm); - - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("image"); - } - - try { - extractFormToImageGalleryItem(request, itemForm); - } catch (Exception e) { - // any upload exception will display as normal error message rather then throw exception directly - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_UPLOAD_FAILED, e.getMessage())); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("image"); - } - } - - //redirect - return mapping.findForward(ImageGalleryConstants.SUCCESS); - } - - /** - * Initial page for addding new imageGallery item. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward initMultipleImages(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - String sessionMapID = request.getParameter(ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); - request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); - return mapping.findForward(ImageGalleryConstants.SUCCESS); - } - - /** - * Save imageGallery item into database. - * - * @param mapping - * @param form - * @param request - * @param response - * @return - */ - private ActionForward saveMultipleImages(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) { - MultipleImagesForm multipleForm = (MultipleImagesForm) form; - String sessionMapID = multipleForm.getSessionMapID(); - request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); - - ActionErrors errors = validateMultipleImages(multipleForm); - - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("images"); - } - - try { - extractMultipleFormToImageGalleryItems(request, multipleForm); - } catch (Exception e) { - // any upload exception will display as normal error message rather then throw exception directly - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_UPLOAD_FAILED, e.getMessage())); - if (!errors.isEmpty()) { - this.addErrors(request, errors); - return mapping.findForward("images"); - } - } - - //redirect - return mapping.findForward(ImageGalleryConstants.SUCCESS); - } - - /** * Display edit page for existed imageGallery item. * * @param mapping @@ -274,7 +141,7 @@ // get back sessionMAP String sessionMapID = WebUtil.readStrParam(request, ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); Long contentId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_CONTENT_ID); ImageGallery imageGallery = (ImageGallery) sessionMap.get(ImageGalleryConstants.ATTR_IMAGE_GALLERY); @@ -316,19 +183,38 @@ */ private ActionForward updateImage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - + IImageGalleryService service = getImageGalleryService(); + // get back sessionMAP ImageGalleryItemForm imageForm = (ImageGalleryItemForm) form; String sessionMapID = imageForm.getSessionMapID(); request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageForm.getSessionMapID()); + Long contentId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_CONTENT_ID); + ImageGallery imageGallery = service.getImageGalleryByContentId(contentId); - try { - extractFormToImageGalleryItem(request, imageForm); - } catch (UploadImageGalleryFileException e) { - // UploadImageGalleryFileException will no occur here, only in case when new image gallery item is creating + int imageUid = NumberUtils.stringToInt(imageForm.getImageUid(), -1); + ImageGalleryItem image = service.getImageGalleryItemByUid(new Long(imageUid)); + + String title = imageForm.getTitle(); + if (StringUtils.isBlank(title)) { + Long nextConsecutiveImageTitle = imageGallery.getNextImageTitle(); + imageGallery.setNextImageTitle(nextConsecutiveImageTitle + 1); + service.saveOrUpdateImageGallery(imageGallery); + String imageLocalized = getImageGalleryService().getLocalisedMessage("label.authoring.image", null); + title = imageLocalized + " " + nextConsecutiveImageTitle; } + image.setTitle(title); - return mapping.findForward(ImageGalleryConstants.SUCCESS); + image.setDescription(imageForm.getDescription()); + image.setHide(false); + service.saveOrUpdateImageGalleryItem(image); + + ActionRedirect redirect = new ActionRedirect(mapping.findForwardConfig(ImageGalleryConstants.SUCCESS)); + redirect.addParameter(ImageGalleryConstants.ATTR_TOOL_CONTENT_ID, contentId); + String contentFolderID = (String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID); + redirect.addParameter(AttributeNames.PARAM_CONTENT_FOLDER_ID, contentFolderID); + return redirect; } private ActionForward showitem(ActionMapping mapping, ActionForm form, HttpServletRequest request, @@ -339,7 +225,7 @@ // get back SessionMap String sessionMapID = request.getParameter(ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); // update session value @@ -366,7 +252,7 @@ // get back SessionMap String sessionMapID = request.getParameter(ImageGalleryConstants.ATTR_SESSION_MAP_ID); - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); + SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); request.setAttribute(ImageGalleryConstants.ATTR_SESSION_MAP_ID, sessionMap.getSessionID()); // update session value @@ -421,196 +307,4 @@ return (IImageGalleryService) wac.getBean(ImageGalleryConstants.IMAGE_GALLERY_SERVICE); } - /** - * Extract web form content to imageGallery item. - * - * @param request - * @param imageForm - * @throws UploadImageGalleryFileException - * @throws ImageGalleryException - */ - private void extractFormToImageGalleryItem(HttpServletRequest request, ImageGalleryItemForm imageForm) - throws UploadImageGalleryFileException { - - SessionMap sessionMap = (SessionMap) request.getSession().getAttribute(imageForm.getSessionMapID()); - IImageGalleryService service = getImageGalleryService(); - Long contentId = (Long) sessionMap.get(ImageGalleryConstants.ATTR_TOOL_CONTENT_ID); - ImageGallery imageGallery = service.getImageGalleryByContentId(contentId); - - int imageUid = NumberUtils.stringToInt(imageForm.getImageUid(), -1); - ImageGalleryItem image = null; - if (imageUid == -1) { // add - image = new ImageGalleryItem(); - image.setCreateDate(new Timestamp(new Date().getTime())); - - //setting SequenceId - Set imageList = imageGallery.getImageGalleryItems(); - int maxSeq = 0; - for (ImageGalleryItem dbImage : imageList) { - if (dbImage.getSequenceId() > maxSeq) { - maxSeq = dbImage.getSequenceId(); - } - } - image.setSequenceId(maxSeq + 1); - - // upload ImageGalleryItem file - // and setting file properties' fields: item.setFileUuid(); item.setFileVersionId(); item.setFileType(); - // item.setFileName(); - if (imageForm.getFile() != null) { - try { - service.uploadImageGalleryItemFile(image, imageForm.getFile()); - } catch (UploadImageGalleryFileException e) { - // remove new image! - throw e; - } - } - - HttpSession ss = SessionManager.getSession(); - // get back login user DTO - UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - ImageGalleryUser imageGalleryUser = service.getUserByIDAndContent(new Long(user.getUserID().intValue()), - imageGallery.getContentId()); - image.setCreateBy(imageGalleryUser); - image.setCreateByAuthor(true); - - imageList.add(image); - imageGallery.setImageGalleryItems(imageList); - service.saveOrUpdateImageGallery(imageGallery); - - } else { // edit - image = service.getImageGalleryItemByUid(new Long(imageUid)); - } - - String title = imageForm.getTitle(); - if (StringUtils.isBlank(title)) { - Long nextConsecutiveImageTitle = imageGallery.getNextImageTitle(); - imageGallery.setNextImageTitle(nextConsecutiveImageTitle + 1); - service.saveOrUpdateImageGallery(imageGallery); - String imageLocalized = getImageGalleryService().getLocalisedMessage("label.authoring.image", null); - title = imageLocalized + " " + nextConsecutiveImageTitle; - } - image.setTitle(title); - - image.setDescription(imageForm.getDescription()); - image.setHide(false); - service.saveOrUpdateImageGalleryItem(image); - } - - /** - * Extract web form content to imageGallery items. - * - * @param request - * @param multipleForm - * @throws ImageGalleryException - */ - private void extractMultipleFormToImageGalleryItems(HttpServletRequest request, MultipleImagesForm multipleForm) - throws Exception { - - List fileList = createFileListFromMultipleForm(multipleForm); - for (FormFile file : fileList) { - ImageGalleryItemForm imageForm = new ImageGalleryItemForm(); - imageForm.setSessionMapID(multipleForm.getSessionMapID()); - imageForm.setTitle(""); - imageForm.setDescription(""); - imageForm.setFile(file); - extractFormToImageGalleryItem(request, imageForm); - } - } - - /** - * Validate imageGallery item. - * - * @param itemForm - * @return - */ - private ActionErrors validateImageGalleryItem(ImageGalleryItemForm itemForm) { - ActionErrors errors = new ActionErrors(); - - // validate file size - FileValidatorUtil.validateFileSize(itemForm.getFile(), true, errors); - // for edit validate: file already exist - if ((itemForm.getFile() == null) || StringUtils.isEmpty(itemForm.getFile().getFileName())) { - errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(ImageGalleryConstants.ERROR_MSG_FILE_BLANK)); - } - - // check for allowed format : gif, png, jpg - if (itemForm.getFile() != null) { - String contentType = itemForm.getFile().getContentType(); - if (isContentTypeForbidden(contentType)) { - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT)); - } - } - - return errors; - } - - /** - * Validate imageGallery items. - * - * @param multipleForm - * @return - */ - private ActionErrors validateMultipleImages(MultipleImagesForm multipleForm) { - ActionErrors errors = new ActionErrors(); - - List fileList = createFileListFromMultipleForm(multipleForm); - - // validate files size - for (FormFile file : fileList) { - FileValidatorUtil.validateFileSize(file, true, errors); - - // check for allowed format : gif, png, jpg - String contentType = file.getContentType(); - if (isContentTypeForbidden(contentType)) { - errors.add(ActionMessages.GLOBAL_MESSAGE, - new ActionMessage(ImageGalleryConstants.ERROR_MSG_NOT_ALLOWED_FORMAT_FOR, file.getFileName())); - } - } - - return errors; - } - - /** - * Create file list from multiple form. - * - * @param multipleForm - * @return - */ - private List createFileListFromMultipleForm(MultipleImagesForm multipleForm) { - - List fileList = new ArrayList(); - if (multipleForm.getFile1() != null && !StringUtils.isEmpty(multipleForm.getFile1().getFileName())) { - fileList.add(multipleForm.getFile1()); - } - if (multipleForm.getFile2() != null && !StringUtils.isEmpty(multipleForm.getFile2().getFileName())) { - fileList.add(multipleForm.getFile2()); - } - if (multipleForm.getFile3() != null && !StringUtils.isEmpty(multipleForm.getFile3().getFileName())) { - fileList.add(multipleForm.getFile3()); - } - if (multipleForm.getFile4() != null && !StringUtils.isEmpty(multipleForm.getFile4().getFileName())) { - fileList.add(multipleForm.getFile4()); - } - if (multipleForm.getFile5() != null && !StringUtils.isEmpty(multipleForm.getFile5().getFileName())) { - fileList.add(multipleForm.getFile5()); - } - - return fileList; - } - - /** - * Checks if the format is allowed. - * - * @param contentType - * @return - */ - private boolean isContentTypeForbidden(String contentType) { - boolean isContentTypeForbidden = StringUtils.isEmpty(contentType) || !(contentType.equals("image/gif") - || contentType.equals("image/png") || contentType.equals("image/jpg") - || contentType.equals("image/jpeg") || contentType.equals("image/pjpeg")); - - return isContentTypeForbidden; - } - } Index: lams_tool_images/web/WEB-INF/struts-config.xml =================================================================== diff -u -r14c269dab2fd9de7863a2074fd5ee1561215d066 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision 14c269dab2fd9de7863a2074fd5ee1561215d066) +++ lams_tool_images/web/WEB-INF/struts-config.xml (.../struts-config.xml) (revision c022c18db5de76344466905b76929dd951481994) @@ -186,8 +186,6 @@ name="imageGalleryItemForm" scope="request" validate="false"> - - - - - - - - - - - - - - - - - - - + - + <%@ include file="/common/tabbedheader.jsp"%> - - + - - - Index: lams_tool_images/web/pages/authoring/parts/addimage.jsp =================================================================== diff -u -rf8b98e45847fcee40188af4c9db5d13e1bd61e25 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/web/pages/authoring/parts/addimage.jsp (.../addimage.jsp) (revision f8b98e45847fcee40188af4c9db5d13e1bd61e25) +++ lams_tool_images/web/pages/authoring/parts/addimage.jsp (.../addimage.jsp) (revision c022c18db5de76344466905b76929dd951481994) @@ -17,7 +17,6 @@ -
<%@ include file="/common/messages.jsp"%> @@ -59,7 +58,6 @@ -
Index: lams_tool_images/web/pages/authoring/parts/addmultipleimages.jsp =================================================================== diff -u -r67dcb9996bea686f86b32184b900f6aa36fd11f0 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/web/pages/authoring/parts/addmultipleimages.jsp (.../addmultipleimages.jsp) (revision 67dcb9996bea686f86b32184b900f6aa36fd11f0) +++ lams_tool_images/web/pages/authoring/parts/addmultipleimages.jsp (.../addmultipleimages.jsp) (revision c022c18db5de76344466905b76929dd951481994) @@ -14,8 +14,7 @@ ');" class="btn btn-default btn-xs pull-right"> - - + Index: lams_tool_images/web/pages/authoring/parts/imagefile.jsp =================================================================== diff -u -r67dcb9996bea686f86b32184b900f6aa36fd11f0 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/web/pages/authoring/parts/imagefile.jsp (.../imagefile.jsp) (revision 67dcb9996bea686f86b32184b900f6aa36fd11f0) +++ lams_tool_images/web/pages/authoring/parts/imagefile.jsp (.../imagefile.jsp) (revision c022c18db5de76344466905b76929dd951481994) @@ -3,8 +3,8 @@ <%@ page import="org.lamsfoundation.lams.util.ConfigurationKeys" %> <%@ page import="org.lamsfoundation.lams.util.FileValidatorUtil" %> <%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE))%> - + Index: lams_tool_images/web/pages/learning/learning.jsp =================================================================== diff -u -rf8b98e45847fcee40188af4c9db5d13e1bd61e25 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision f8b98e45847fcee40188af4c9db5d13e1bd61e25) +++ lams_tool_images/web/pages/learning/learning.jsp (.../learning.jsp) (revision c022c18db5de76344466905b76929dd951481994) @@ -155,7 +155,6 @@ } function loadImageData(imageUid) { - $("#image-info").load( "", { @@ -166,7 +165,6 @@ } - Index: lams_tool_images/web/pages/learning/parts/addimage.jsp =================================================================== diff -u -r67dcb9996bea686f86b32184b900f6aa36fd11f0 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/web/pages/learning/parts/addimage.jsp (.../addimage.jsp) (revision 67dcb9996bea686f86b32184b900f6aa36fd11f0) +++ lams_tool_images/web/pages/learning/parts/addimage.jsp (.../addimage.jsp) (revision c022c18db5de76344466905b76929dd951481994) @@ -1,12 +1,20 @@ + <%@ include file="/common/taglibs.jsp"%> <%@ page import="org.lamsfoundation.lams.util.Configuration" %> <%@ page import="org.lamsfoundation.lams.util.ConfigurationKeys" %> <%@ page import="org.lamsfoundation.lams.util.FileValidatorUtil" %> -<%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE)%> -<%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE))%> + + + + <%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE)%> + <%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE))%> + + + <%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE)%> + <%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE))%> + + - - @@ -16,11 +24,8 @@ <script type="text/javascript" src="${lams}includes/javascript/upload.js"></script> <script type="text/javascript"> - - - $(document).ready(function(){ + $(document).ready(function(){ document.getElementById("imageTitle").focus(); - }); function submitImage(){ @@ -61,7 +66,6 @@ formData.append('file', file, file.name); $('#uploadButtons').hide(); $('#itemAttachmentArea_Busy').show(); - } $.ajax({ @@ -76,7 +80,7 @@ error: function(jqXHR, textStatus, errorMessage) { $('#uploadButtons').show(); $('#itemAttachmentArea_Busy').hide(); - alert(errorMessage); + alert(jqXHR.responseText); } }); } @@ -135,6 +139,7 @@ <fmt:message key="label.authoring.basic.add.image" /> </a> </div> + </div> <div id="footer"></div> <!--closes footer--> Index: lams_tool_images/web/pages/learning/parts/addmultipleimages.jsp =================================================================== diff -u -r67dcb9996bea686f86b32184b900f6aa36fd11f0 -rc022c18db5de76344466905b76929dd951481994 --- lams_tool_images/web/pages/learning/parts/addmultipleimages.jsp (.../addmultipleimages.jsp) (revision 67dcb9996bea686f86b32184b900f6aa36fd11f0) +++ lams_tool_images/web/pages/learning/parts/addmultipleimages.jsp (.../addmultipleimages.jsp) (revision c022c18db5de76344466905b76929dd951481994) @@ -1,18 +1,28 @@ +<!DOCTYPE html> <%@ include file="/common/taglibs.jsp"%> <%@ page import="org.lamsfoundation.lams.util.Configuration" %> <%@ page import="org.lamsfoundation.lams.util.ConfigurationKeys" %> <%@ page import="org.lamsfoundation.lams.util.FileValidatorUtil" %> -<c:set var="UPLOAD_FILE_MAX_SIZE"><%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE)%></c:set> -<c:set var="UPLOAD_FILE_MAX_SIZE_AS_USER_STRING"><%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE))%></c:set> -<!DOCTYPE html> +<c:set var="sessionMap" value="${sessionScope[sessionMapID]}"/> +<c:choose> + <c:when test="${sessionMap.mode == 'teacher'}"> + <c:set var="UPLOAD_FILE_MAX_SIZE"><%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE)%></c:set> + <c:set var="UPLOAD_FILE_MAX_SIZE_AS_USER_STRING"><%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_LARGE_MAX_SIZE))%></c:set> + </c:when> + <c:otherwise> + <c:set var="UPLOAD_FILE_MAX_SIZE"><%=Configuration.get(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE)%></c:set> + <c:set var="UPLOAD_FILE_MAX_SIZE_AS_USER_STRING"><%=FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE))%></c:set> + </c:otherwise> +</c:choose> + <lams:html> <lams:head> <title> <fmt:message key="label.learning.title" /> <%@ include file="/common/header.jsp"%> - +