Index: lams_tool_larsrc/conf/xdoclet/struts-actions.xml =================================================================== diff -u -r6c690985b6e09c8097ee965deaac72752fd3c97f -r00546fef27c802810d1b2ac3d621f9c3e2d64cb0 --- lams_tool_larsrc/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 6c690985b6e09c8097ee965deaac72752fd3c97f) +++ lams_tool_larsrc/conf/xdoclet/struts-actions.xml (.../struts-actions.xml) (revision 00546fef27c802810d1b2ac3d621f9c3e2d64cb0) @@ -8,13 +8,22 @@ validate="false"> + + + + - + IVersiondNode by given package id and path. + * @param packageId + * @param relPathString + * @return + * @throws ResourceApplicationException + */ IVersionedNode getFileNode(Long packageId, String relPathString) throws ResourceApplicationException ; - + + /** + * Get Resource by toolContentID. + * @param contentId + * @return + */ Resource getResourceByContentId(Long contentId); - + /** + * Get a cloned copy of tool default tool content (Resource) and assign the toolContentId of that copy as the + * given contentId + * @param contentId + * @return + * @throws ResourceApplicationException + */ Resource getDefaultContent(Long contentId) throws ResourceApplicationException; - + + /** + * Get list of resource items by given resourceUid. These resource items must be created by author. + * @param resourceUid + * @return + */ List getAuthoredItems(Long resourceUid); - + /** + * Upload instruciton file into repository. + * @param file + * @param type + * @return + * @throws UploadResourceFileException + */ ResourceAttachment uploadInstructionFile(FormFile file, String type) throws UploadResourceFileException; - + + /** + * Upload resource item file to repository. i.e., single file, websize zip file, or learning object zip file. + * @param item + * @param file + * @throws UploadResourceFileException + */ void uploadResourceItemFile(ResourceItem item, FormFile file) throws UploadResourceFileException; //********** for user methods ************* + /** + * Create a new user in database. + */ void createUser(ResourceUser resourceUser); - ResourceUser getUserByID(Long long1); + /** + * Get user by given userID. + * @param long1 + * @return + */ + ResourceUser getUserByID(Long userID); //********** Repository methods *********************** + /** + * Delete file from repository. + */ void deleteFromRepository(Long fileUuid, Long fileVersionId) throws ResourceApplicationException ; + /** + * Save or update resource into database. + * @param Resource + */ void saveOrUpdateResource(Resource Resource); - + /** + * Delete reource attachment(i.e., offline/online instruction file) from database. This method does not + * delete the file from repository. + * + * @param attachmentUid + */ void deleteResourceAttachment(Long attachmentUid); - + /** + * Delete resoruce item from database. + * @param uid + */ void deleteResourceItem(Long uid); /** @@ -73,10 +131,23 @@ * @return */ List getResourceItemsBySessionId(Long sessionId); + /** + * Get resource which is relative with the special toolSession. + * @param sessionId + * @return + */ Resource getResourceBySessionId(Long sessionId); - + /** + * Get resource toolSession by toolSessionId + * @param sessionId + * @return + */ ResourceSession getResourceSessionBySessionId(Long sessionId); + /** + * Save or update resource session. + * @param resSession + */ void saveOrUpdateResourceSession(ResourceSession resSession); void retrieveComplete(List resourceItemList, ResourceUser user); Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java =================================================================== diff -u -r229b7cbba0b3121880c4dc69818e46d6589fd31e -r00546fef27c802810d1b2ac3d621f9c3e2d64cb0 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 229b7cbba0b3121880c4dc69818e46d6589fd31e) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/service/ResourceServiceImpl.java (.../ResourceServiceImpl.java) (revision 00546fef27c802810d1b2ac3d621f9c3e2d64cb0) @@ -208,7 +208,6 @@ //save default content by given ID. Resource content = new Resource(); content = Resource.newInstance(defaultContent,contentId,resourceToolContentHandler); - //TODO: does it need replicate the content's resource items? return content; } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java =================================================================== diff -u -r1f1955db444fd1c243fe1904ee8cc1b48e30c8ff -r00546fef27c802810d1b2ac3d621f9c3e2d64cb0 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 1f1955db444fd1c243fe1904ee8cc1b48e30c8ff) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/AuthoringAction.java (.../AuthoringAction.java) (revision 00546fef27c802810d1b2ac3d621f9c3e2d64cb0) @@ -94,10 +94,14 @@ String param = mapping.getParameter(); //-----------------------Resource Author function --------------------------- - request.getSession().setAttribute(AttributeNames.ATTR_MODE,ToolAccessMode.AUTHOR); if(param.equals("start")){ + request.getSession().setAttribute(AttributeNames.ATTR_MODE,ToolAccessMode.AUTHOR); return start(mapping, form, request, response); } + if (param.equals("definelater")) { + request.getSession().setAttribute(AttributeNames.ATTR_MODE,ToolAccessMode.TEACHER); + return start(mapping, form, request, response); + } if (param.equals("initPage")) { return initPage(mapping, form, request, response); } @@ -147,14 +151,30 @@ return mapping.findForward(ResourceConstants.ERROR); } - - + /** + * Remove resource item attachment, such as single file, learning object ect. It is a ajax call and just temporarily + * remove from page, all permenant change will happen only when user sumbit this resource item again. + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ private ActionForward removeItemAttachment(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { request.setAttribute("itemAttachment", null); return mapping.findForward(ResourceConstants.SUCCESS); } - + /** + * Remove resource item from HttpSession list and update page display. As authoring rule, all persist only happen when + * user submit whole page. So this remove is just impact HttpSession values. + * @param mapping + * @param form + * @param request + * @param response + * @return + */ private ActionForward removeItem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { int itemIdx = NumberUtils.stringToInt(request.getParameter(ResourceConstants.PARAM_ITEM_INDEX),-1); if(itemIdx != -1){ @@ -165,7 +185,15 @@ } return mapping.findForward(ResourceConstants.SUCCESS); } - + + /** + * Display edit page for existed resource item. + * @param mapping + * @param form + * @param request + * @param response + * @return + */ private ActionForward editItemInit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { int itemIdx = NumberUtils.stringToInt(request.getParameter(ResourceConstants.PARAM_ITEM_INDEX),-1); ResourceItem item = null; @@ -178,6 +206,14 @@ } return findForward(item==null?-1:item.getType(),mapping); } + /** + * Display empty page for new resource item. + * @param mapping + * @param form + * @param request + * @param response + * @return + */ private ActionForward newItemlInit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { short type = (short) NumberUtils.stringToInt(request.getParameter(ITEM_TYPE)); List instructionList = new ArrayList(INIT_INSTRUCTION_COUNT); @@ -230,7 +266,14 @@ return mapping.findForward(ResourceConstants.SUCCESS); } - + /** + * Ajax call, will add one more input line for new resource item instruction. + * @param mapping + * @param form + * @param request + * @param response + * @return + */ private ActionForward newInstruction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { int count = NumberUtils.stringToInt(request.getParameter(INSTRUCTION_ITEM_COUNT),0); List instructionList = new ArrayList(++count); @@ -244,6 +287,14 @@ request.setAttribute(ResourceConstants.ATTR_INSTRUCTION_LIST,instructionList); return mapping.findForward(ResourceConstants.SUCCESS); } + /** + * Ajax call, remove the given line of instruction of resource item. + * @param mapping + * @param form + * @param request + * @param response + * @return + */ private ActionForward removeInstruction(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { int count = NumberUtils.stringToInt(request.getParameter(INSTRUCTION_ITEM_COUNT),0); int removeIdx = NumberUtils.stringToInt(request.getParameter("removeIdx"),-1); @@ -260,9 +311,7 @@ request.setAttribute(ResourceConstants.ATTR_INSTRUCTION_LIST,instructionList); return mapping.findForward(ResourceConstants.SUCCESS); } - //****************************************************************************************************************** - // Resource Author functions - //****************************************************************************************************************** + /** * Read resource data from database and put them into HttpSession. It will redirect to init.do directly after this * method run successfully. @@ -317,11 +366,21 @@ } - + /** + * Display same entire authoring page content from HttpSession variable. + * @param mapping + * @param form + * @param request + * @param response + * @return + */ private ActionForward initPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - - return mapping.findForward(ResourceConstants.SUCCESS); + ToolAccessMode mode = (ToolAccessMode) request.getSession().getAttribute(AttributeNames.ATTR_MODE); + if(mode.isAuthor()) + return mapping.findForward(ResourceConstants.SUCCESS); + else + return mapping.findForward(ResourceConstants.DEFINE_LATER); } /** * This method will persist all inforamtion in this authoring page, include all resource item, information etc. @@ -335,7 +394,8 @@ private ActionForward updateContent(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ResourceForm resourceForm = (ResourceForm)(form); - + ToolAccessMode mode = (ToolAccessMode) request.getSession().getAttribute(AttributeNames.ATTR_MODE); + Resource resource = resourceForm.getResource(); try { IResourceService service = getResourceService(); @@ -360,10 +420,15 @@ resourcePO.setCreated(new Timestamp(new Date().getTime())); resourcePO.setUpdated(new Timestamp(new Date().getTime())); }else{ - Long uid = resourcePO.getUid(); - PropertyUtils.copyProperties(resourcePO,resource); - //get back UID - resourcePO.setUid(uid); + if(mode.isAuthor()){ + Long uid = resourcePO.getUid(); + PropertyUtils.copyProperties(resourcePO,resource); + //get back UID + resourcePO.setUid(uid); + }else{ //if it is Teacher, then just update basic tab content (definelater) + resourcePO.setInstructions(resource.getInstructions()); + resourcePO.setTitle(resource.getTitle()); + } resourcePO.setUpdated(new Timestamp(new Date().getTime())); } resourcePO.setCreatedBy(resourceUser); @@ -461,7 +526,6 @@ ActionMessages messages = new ActionMessages(); messages.add(ActionMessages.GLOBAL_MESSAGE,new ActionMessage("authoring.save.success")); this.addMessages(request,messages); - ToolAccessMode mode = (ToolAccessMode) request.getSession().getAttribute(AttributeNames.ATTR_MODE); if(mode.isAuthor()) return mapping.findForward("author"); else @@ -587,6 +651,7 @@ } /** + * General method to delete file (online or offline) * @param mapping * @param request * @param response @@ -641,6 +706,9 @@ //************************************************************************************* // Private method //************************************************************************************* + /** + * Return ResourceService bean. + */ private IResourceService getResourceService() { WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet().getServletContext()); return (IResourceService) wac.getBean(ResourceConstants.RESOURCE_SERVICE); @@ -705,6 +773,7 @@ /** + * Get resource items instruction from HttpRequest * @param request */ private List getInstructionsFromRequest(HttpServletRequest request) { @@ -733,6 +802,12 @@ } return instructionList; } + /** + * Get back relative ActionForward from request. + * @param type + * @param mapping + * @return + */ private ActionForward findForward(short type, ActionMapping mapping) { ActionForward forward; switch (type) { @@ -791,7 +866,7 @@ } /** - * + * Extract web from content to resource item. * @param request * @param instructionList * @param itemForm @@ -885,6 +960,7 @@ } /** + * Vaidate resource item regards to their type (url/file/learning object/website zip file) * @param itemForm * @return */ Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/MonitoringAction.java =================================================================== diff -u -r6f9ce8030c9939df344a3aa7f5894116491a90d8 -r00546fef27c802810d1b2ac3d621f9c3e2d64cb0 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 6f9ce8030c9939df344a3aa7f5894116491a90d8) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 00546fef27c802810d1b2ac3d621f9c3e2d64cb0) @@ -67,9 +67,11 @@ return hideitem(mapping, form, request, response); } + return mapping.findForward(ResourceConstants.ERROR); } + private ActionForward hideitem(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Long itemUid = WebUtil.readLongParam(request, ResourceConstants.PARAM_RESOURCE_ITEM_UID); Index: lams_tool_larsrc/web/pages/authoring/definelater.jsp =================================================================== diff -u --- lams_tool_larsrc/web/pages/authoring/definelater.jsp (revision 0) +++ lams_tool_larsrc/web/pages/authoring/definelater.jsp (revision 00546fef27c802810d1b2ac3d621f9c3e2d64cb0) @@ -0,0 +1,101 @@ +<%@ include file="/common/taglibs.jsp" %> +<%@ page import="java.util.HashSet" %> +<%@ page import="java.util.Set" %> + <% + + Set tabs = new HashSet(); + tabs.add("label.authoring.heading.basic"); + pageContext.setAttribute("tabs", tabs); + + %> + + + + <fmt:message key="label.author.title"/> + + <%@ include file="/common/header.jsp" %> + <%@ include file="/common/fckeditorheader.jsp" %> + + + + + + + + + + + + + +

+ + + + +
+ + + + +
+ <%@ include file="/common/messages.jsp" %> +
+ + + + + + + +

+ + + + + + +

+
+ + + +
+ +
Index: lams_tool_larsrc/web/pages/learning/learning.jsp =================================================================== diff -u -rfb406a57261a31898b62f3c808ffccb853089336 -r00546fef27c802810d1b2ac3d621f9c3e2d64cb0 --- lams_tool_larsrc/web/pages/learning/learning.jsp (.../learning.jsp) (revision fb406a57261a31898b62f3c808ffccb853089336) +++ lams_tool_larsrc/web/pages/learning/learning.jsp (.../learning.jsp) (revision 00546fef27c802810d1b2ac3d621f9c3e2d64cb0) @@ -50,7 +50,7 @@

- + ${resource.title}

${resource.instructions}