Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java (.../ResourceConstants.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java (.../ResourceConstants.java) (revision f8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb) @@ -26,7 +26,8 @@ public class ResourceConstants { public static final String TOOL_SIGNATURE = "larsrc11"; public static final String RESOURCE_SERVICE = "resourceService"; - + public static final String TOOL_CONTENT_HANDLER_NAME = "resourceToolContentHandler"; + public static final int COMPLETED = 1; //resource type; Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java (.../Summary.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/Summary.java (.../Summary.java) (revision f8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb) @@ -58,6 +58,9 @@ private String url; private Long fileUuid; private Long fileVersionId; + private String fileName; + private String attachmentLocalUrl; + //true: initial group item, false, belong to some group. private boolean isInitGroup; @@ -81,6 +84,7 @@ this.itemTitle = item.getTitle(); this.username = item.getCreateBy() == null?"":item.getCreateBy().getLoginName(); this.url = item.getUrl(); + this.fileName = item.getFileName(); this.fileUuid = item.getFileUuid(); this.fileVersionId = item.getFileVersionId(); }else @@ -104,6 +108,7 @@ this.itemTitle = item.getTitle(); this.username = item.getCreateBy() == null?"":item.getCreateBy().getLoginName(); this.url = item.getUrl(); + this.fileName = item.getFileName(); this.fileUuid = item.getFileUuid(); this.fileVersionId = item.getFileVersionId(); }else @@ -190,5 +195,17 @@ public void setInitGroup(boolean isInitGroup) { this.isInitGroup = isInitGroup; } + public String getAttachmentLocalUrl() { + return attachmentLocalUrl; + } + public void setAttachmentLocalUrl(String attachmentLocalUrl) { + this.attachmentLocalUrl = attachmentLocalUrl; + } + public String getFileName() { + return fileName; + } + public void setFileName(String fileName) { + this.fileName = fileName; + } } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision f8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb) @@ -277,8 +277,7 @@ * @return * @throws ServletException */ - private ActionForward saveOrUpdateItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) - throws Exception { + private ActionForward saveOrUpdateItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ //get instructions: List instructionList = getInstructionsFromRequest(request); @@ -294,8 +293,13 @@ try { extractFormToResourceItem(request, instructionList, itemForm); } catch (Exception e) { - log.error("Uploading failed. The exception is " + e.toString()); - throw e; + //any upload exception will display as normal error message rather then throw exception directly + errors.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage(ResourceConstants.ERROR_MSG_UPLOAD_FAILED,e.getMessage())); + if(!errors.isEmpty()){ + this.addErrors(request,errors); + request.setAttribute(ResourceConstants.ATTR_INSTRUCTION_LIST,instructionList); + return findForward(itemForm.getItemType(),mapping); + } } //set session map ID so that itemlist.jsp can get sessionMAP request.setAttribute(ResourceConstants.ATTR_SESSION_MAP_ID, itemForm.getSessionMapID()); Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/servlet/ExportServlet.java (.../ExportServlet.java) (revision f8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb) @@ -25,6 +25,7 @@ package org.lamsfoundation.lams.tool.rsrc.web.servlet; +import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -43,9 +44,13 @@ import org.lamsfoundation.lams.tool.rsrc.service.IResourceService; import org.lamsfoundation.lams.tool.rsrc.service.ResourceApplicationException; import org.lamsfoundation.lams.tool.rsrc.service.ResourceServiceProxy; +import org.lamsfoundation.lams.tool.rsrc.util.ResourceToolContentHandler; +import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; import org.lamsfoundation.lams.web.util.AttributeNames; import org.lamsfoundation.lams.web.util.SessionMap; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; /** * Export portfolio servlet to export all shared resource into offline HTML @@ -62,6 +67,8 @@ private final String FILENAME = "shared_resources_main.html"; + private ResourceToolContentHandler handler; + public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) { // initial sessionMap @@ -117,6 +124,7 @@ List group = service.exportBySessionId(toolSessionID,true); + saveFileToLocal(group, directoryName); List groupList = new ArrayList(); if(group.size() > 0) @@ -144,10 +152,49 @@ throw new ResourceApplicationException(error); } List> groupList = service.exportByContentId(toolContentID); - + if(groupList != null) + for (List list : groupList) { + saveFileToLocal(list, directoryName); + } // put it into HTTPSession sessionMap.put(ResourceConstants.ATTR_TITLE, content.getTitle()); sessionMap.put(ResourceConstants.ATTR_SUMMARY_LIST, groupList); } + private void saveFileToLocal(List list, String directoryName) { + handler = getToolContentHandler(); + for (Summary summary : list) { + //for learning object, it just display "No offlice pakcage avaliable" information. + if(summary.getItemType() == ResourceConstants.RESOURCE_TYPE_LEARNING_OBJECT + || summary.getItemType() == ResourceConstants.RESOURCE_TYPE_URL) + continue; + try{ + int idx= 1; + String userName = summary.getUsername(); + String localDir; + while(true){ + localDir = FileUtil.getFullPath(directoryName,userName + "/" + idx); + File local = new File(localDir); + if(!local.exists()){ + local.mkdirs(); + break; + } + idx++; + } + summary.setAttachmentLocalUrl(userName + "/" + idx + "/" + summary.getFileName()); + handler.saveFile(summary.getFileUuid(), FileUtil.getFullPath(directoryName, summary.getAttachmentLocalUrl())); + } catch (Exception e) { + logger.error("Export forum topic attachment failed: " + e.toString()); + } + } + + } + + private ResourceToolContentHandler getToolContentHandler() { + if ( handler == null ) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext()); + handler = (ResourceToolContentHandler) wac.getBean(ResourceConstants.TOOL_CONTENT_HANDLER_NAME); + } + return handler; + } } Index: lams_tool_larsrc/web/common/messages.jsp =================================================================== diff -u -ra94fb5f2dbf4851004e8b0be5fb21218b55155f4 -rf8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb --- lams_tool_larsrc/web/common/messages.jsp (.../messages.jsp) (revision a94fb5f2dbf4851004e8b0be5fb21218b55155f4) +++ lams_tool_larsrc/web/common/messages.jsp (.../messages.jsp) (revision f8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb) @@ -1,6 +1,5 @@ <%-- Error Messages --%> -

 


Index: lams_tool_larsrc/web/pages/export/exportportfolio.jsp =================================================================== diff -u -rca73a51b45e6071a6a9edd5da8b0d61bf3a39929 -rf8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb --- lams_tool_larsrc/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision ca73a51b45e6071a6a9edd5da8b0d61bf3a39929) +++ lams_tool_larsrc/web/pages/export/exportportfolio.jsp (.../exportportfolio.jsp) (revision f8ab6c53122ad8a79807dbbb92c8ea9da96ad3eb) @@ -111,16 +111,10 @@ - - - - + - - - - +