Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java =================================================================== diff -u -r326782acda142b33013dcb8a4b57ef62a5669914 -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java (.../ResourceConstants.java) (revision 326782acda142b33013dcb8a4b57ef62a5669914) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/ResourceConstants.java (.../ResourceConstants.java) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -122,6 +122,8 @@ public static final String ATTR_ALLOW_COMMENTS = "allowComments"; + public static final String ATTR_ALLOW_RATING = "allowRating"; + public static final String ATTR_COMPLETED_SUFFICIENT_TO_FINISH = "hasCompletedMinNumber"; // error message keys Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/ResourceItemDTO.java =================================================================== diff -u -raa971e902329c8ae01eae531db29bbc1a595f4ff -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/ResourceItemDTO.java (.../ResourceItemDTO.java) (revision aa971e902329c8ae01eae531db29bbc1a595f4ff) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/dto/ResourceItemDTO.java (.../ResourceItemDTO.java) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -56,9 +56,6 @@ // true: initial group item, false, belong to some group. private boolean isInitGroup; - public ResourceItemDTO() { - } - /** * Contruction method for monitoring summary function. * Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/LearningController.java =================================================================== diff -u -r326782acda142b33013dcb8a4b57ef62a5669914 -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/LearningController.java (.../LearningController.java) (revision 326782acda142b33013dcb8a4b57ef62a5669914) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/LearningController.java (.../LearningController.java) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -57,6 +57,7 @@ import org.lamsfoundation.lams.tool.rsrc.util.ResourceItemComparator; import org.lamsfoundation.lams.tool.rsrc.web.form.ReflectionForm; import org.lamsfoundation.lams.tool.rsrc.web.form.ResourceItemForm; +import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.MessageService; @@ -85,6 +86,9 @@ private IResourceService resourceService; @Autowired + private ILamsToolService toolService; + + @Autowired @Qualifier("resourceMessageService") private MessageService messageService; @@ -100,16 +104,37 @@ @RequestMapping("/addfile") private String addfile(ResourceItemForm resourceItemForm, HttpServletRequest request) { resourceItemForm.setMode(WebUtil.readStrParam(request, AttributeNames.ATTR_MODE)); - resourceItemForm.setSessionMapID(WebUtil.readStrParam(request, ResourceConstants.ATTR_SESSION_MAP_ID)); + String sessionMapID = WebUtil.readStrParam(request, ResourceConstants.ATTR_SESSION_MAP_ID); + resourceItemForm.setSessionMapID(sessionMapID); resourceItemForm.setTmpFileUploadId(FileUtil.generateTmpFileUploadId()); + HttpSession ss = SessionManager.getSession(); + // get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + Long sessionId = (Long) sessionMap.get(ResourceConstants.ATTR_TOOL_SESSION_ID); + request.setAttribute(AttributeNames.ATTR_LEARNER_CONTENT_FOLDER, + toolService.getLearnerContentFolder(sessionId, user.getUserID().longValue())); + return "pages/learning/addfile"; } @RequestMapping("/addurl") private String addurl(ResourceItemForm resourceItemForm, HttpServletRequest request) { resourceItemForm.setMode(WebUtil.readStrParam(request, AttributeNames.ATTR_MODE)); - resourceItemForm.setSessionMapID(WebUtil.readStrParam(request, ResourceConstants.ATTR_SESSION_MAP_ID)); + String sessionMapID = WebUtil.readStrParam(request, ResourceConstants.ATTR_SESSION_MAP_ID); + resourceItemForm.setSessionMapID(sessionMapID); + + HttpSession ss = SessionManager.getSession(); + // get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + Long sessionId = (Long) sessionMap.get(ResourceConstants.ATTR_TOOL_SESSION_ID); + request.setAttribute(AttributeNames.ATTR_LEARNER_CONTENT_FOLDER, + toolService.getLearnerContentFolder(sessionId, user.getUserID().longValue())); + return "pages/learning/addurl"; } Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/ViewItemController.java =================================================================== diff -u -r326782acda142b33013dcb8a4b57ef62a5669914 -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/ViewItemController.java (.../ViewItemController.java) (revision 326782acda142b33013dcb8a4b57ef62a5669914) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/controller/ViewItemController.java (.../ViewItemController.java) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -27,6 +27,7 @@ import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; import java.util.regex.Pattern; @@ -48,21 +49,46 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; @Controller public class ViewItemController { @Autowired private IResourceService resourceService; /** - * Display main frame to display item content. - * - * @throws UnsupportedEncodingException + * Display main frame to display item content in monitoring */ @SuppressWarnings("unchecked") @RequestMapping("/reviewItem") - private String reviewItem(HttpServletRequest request) throws UnsupportedEncodingException { + public String reviewItem(HttpServletRequest request) throws UnsupportedEncodingException { + String sessionMapID = WebUtil.readStrParam(request, ResourceConstants.ATTR_SESSION_MAP_ID, true); + SessionMap sessionMap = (SessionMap) request.getSession() + .getAttribute(sessionMapID); + sessionMap.put(AttributeNames.ATTR_MODE, ToolAccessMode.TEACHER); + ResourceItem item = getResourceItem(request, sessionMap, ToolAccessMode.TEACHER.toString()); + if (item == null) { + return "error"; + } + + Long itemUid = NumberUtils.createLong(request.getParameter(ResourceConstants.PARAM_RESOURCE_ITEM_UID)); + request.setAttribute(ResourceConstants.PARAM_RESOURCE_ITEM_UID, itemUid); + String idStr = request.getParameter(ResourceConstants.ATTR_TOOL_SESSION_ID); + Long sessionId = NumberUtils.createLong(idStr); + request.setAttribute(ResourceConstants.ATTR_TOOL_SESSION_ID, sessionId); + request.setAttribute(ResourceConstants.ATTR_SESSION_MAP_ID, sessionMapID); + + return "pages/itemreview/mainframe"; + } + + /** + * Display single item content + */ + @SuppressWarnings("unchecked") + @RequestMapping("/itemReviewContent") + public String getItemReviewContent(HttpServletRequest request) throws UnsupportedEncodingException { + SessionMap sessionMap = null; String sessionMapID = WebUtil.readStrParam(request, ResourceConstants.ATTR_SESSION_MAP_ID, true); if (sessionMapID == null) { @@ -73,17 +99,19 @@ sessionMap = (SessionMap) request.getSession().getAttribute(sessionMapID); } - String mode = request.getParameter(AttributeNames.ATTR_MODE); + ToolAccessMode toolAccessMode = (ToolAccessMode) sessionMap.get(AttributeNames.ATTR_MODE); + String mode = toolAccessMode.toString(); ResourceItem item = getResourceItem(request, sessionMap, mode); String idStr = request.getParameter(ResourceConstants.ATTR_TOOL_SESSION_ID); - Long sessionId = NumberUtils.createLong(idStr); + Long sessionId = null; // mark this item access flag if it is learner if (ToolAccessMode.LEARNER.toString().equals(mode)) { + sessionId = NumberUtils.createLong(idStr); HttpSession ss = SessionManager.getSession(); // get back login user DTO UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); - resourceService.setItemAccess(item.getUid(), new Long(user.getUserID().intValue()), sessionId); + resourceService.setItemAccess(item.getUid(), user.getUserID().longValue(), sessionId); } if (item == null) { @@ -99,8 +127,10 @@ } request.setAttribute(ResourceConstants.ATTR_IS_DOWNLOAD, item.getType() == ResourceConstants.RESOURCE_TYPE_FILE); - + request.setAttribute(ResourceConstants.ATTR_RESOURCE_INSTRUCTION, item.getInstructions()); request.setAttribute(ResourceConstants.ATTR_ALLOW_COMMENTS, item.isAllowComments()); + request.setAttribute(ResourceConstants.ATTR_ALLOW_RATING, item.isAllowRating()); + request.setAttribute("ratingDTO", item.getRatingDTO()); // these attribute will be use to instruction navigator page request.setAttribute(AttributeNames.ATTR_MODE, mode); @@ -110,28 +140,31 @@ request.setAttribute(ResourceConstants.ATTR_TOOL_SESSION_ID, sessionId); request.setAttribute(ResourceConstants.ATTR_SESSION_MAP_ID, sessionMapID); - return "pages/itemreview/mainframe"; + return "pages/itemreview/itemContent"; } - /** - * Return next instruction to page - */ - @RequestMapping("/nextInstruction") - private String nextInstruction(HttpServletRequest request) { - String mode = request.getParameter(AttributeNames.ATTR_MODE); + @RequestMapping("/completeItem") + public void completeItem(@RequestParam String mode, @RequestParam String sessionMapID, @RequestParam Long itemUid, + HttpSession session) { + SessionMap sessionMap = (SessionMap) session.getAttribute(sessionMapID); - String sessionMapID = WebUtil.readStrParam(request, ResourceConstants.ATTR_SESSION_MAP_ID); - SessionMap sesionMap = (SessionMap) request.getSession() - .getAttribute(sessionMapID); + HttpSession ss = SessionManager.getSession(); - ResourceItem item = getResourceItem(request, sesionMap, mode); - if (item == null) { - return "error"; + // get back login user DTO + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + + Long sessionId = (Long) sessionMap.get(ResourceConstants.ATTR_TOOL_SESSION_ID); + resourceService.setItemComplete(itemUid, user.getUserID().longValue(), sessionId); + + // set resource item complete tag + Set resourceItemList = getResourceItemList(sessionMap); + for (ResourceItem item : resourceItemList) { + if (item.getUid().equals(itemUid)) { + item.setComplete(true); + break; + } } - request.setAttribute(ResourceConstants.ATTR_SESSION_MAP_ID, sessionMapID); - request.setAttribute(ResourceConstants.ATTR_RESOURCE_INSTRUCTION, item.getInstructions()); - return "pages/itemreview/instructionsnav"; } // ************************************************************************************* @@ -149,10 +182,19 @@ // authoring: does not save item yet, so only has ItemList from session and identity by Index List resourceList = new ArrayList<>(getResourceItemList(sessionMap)); item = resourceList.get(itemIdx); - } else { + } else if ("teacher".equals(mode)) { Long itemUid = NumberUtils.createLong(request.getParameter(ResourceConstants.PARAM_RESOURCE_ITEM_UID)); // get back the resource and item list and display them on page item = resourceService.getResourceItemByUid(itemUid); + } else { + Long itemUid = NumberUtils.createLong(request.getParameter(ResourceConstants.PARAM_RESOURCE_ITEM_UID)); + Set resourceItems = getResourceItemList(sessionMap); + for (ResourceItem resourceItem : resourceItems) { + if (resourceItem.getUid().equals(itemUid)) { + item = resourceItem; + break; + } + } } return item; } @@ -180,18 +222,14 @@ } /** - * List save current resource items. - * - * @param request - * @return + * List current resource items. */ - private SortedSet getResourceItemList(SessionMap sessionMap) { + private Set getResourceItemList(SessionMap sessionMap) { SortedSet list = (SortedSet) sessionMap.get(ResourceConstants.ATTR_RESOURCE_ITEM_LIST); if (list == null) { list = new TreeSet<>(new ResourceItemComparator()); sessionMap.put(ResourceConstants.ATTR_RESOURCE_ITEM_LIST, list); } return list; } - -} +} \ No newline at end of file Index: lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/form/ResourceForm.java =================================================================== diff -u -r0a46648d9547d3fca73e1931d4e628be7e1acd7b -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/form/ResourceForm.java (.../ResourceForm.java) (revision 0a46648d9547d3fca73e1931d4e628be7e1acd7b) +++ lams_tool_larsrc/src/java/org/lamsfoundation/lams/tool/rsrc/web/form/ResourceForm.java (.../ResourceForm.java) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -111,5 +111,4 @@ public void setContentFolderID(String contentFolderID) { this.contentFolderID = contentFolderID; } - -} +} \ No newline at end of file Index: lams_tool_larsrc/web/pages/authoring/parts/addfile.jsp =================================================================== diff -u -raa971e902329c8ae01eae531db29bbc1a595f4ff -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/web/pages/authoring/parts/addfile.jsp (.../addfile.jsp) (revision aa971e902329c8ae01eae531db29bbc1a595f4ff) +++ lams_tool_larsrc/web/pages/authoring/parts/addfile.jsp (.../addfile.jsp) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -26,7 +26,7 @@ $( "#resourceItemForm" ).validate({ - ignore: [], + ignore: 'hidden, div.cke_editable', errorClass: "text-danger", wrapper: "span", rules: { Index: lams_tool_larsrc/web/pages/authoring/parts/addurl.jsp =================================================================== diff -u -raa971e902329c8ae01eae531db29bbc1a595f4ff -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/web/pages/authoring/parts/addurl.jsp (.../addurl.jsp) (revision aa971e902329c8ae01eae531db29bbc1a595f4ff) +++ lams_tool_larsrc/web/pages/authoring/parts/addurl.jsp (.../addurl.jsp) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -9,6 +9,7 @@ $('#title').focus(); }); $( "#resourceItemForm" ).validate({ + ignore: 'hidden, div.cke_editable', errorClass: "text-danger", wrapper: "span", rules: { Fisheye: Tag 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 refers to a dead (removed) revision in file `lams_tool_larsrc/web/pages/itemreview/initnav.jsp'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 refers to a dead (removed) revision in file `lams_tool_larsrc/web/pages/itemreview/instructionsnav.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_larsrc/web/pages/itemreview/itemContent.jsp =================================================================== diff -u --- lams_tool_larsrc/web/pages/itemreview/itemContent.jsp (revision 0) +++ lams_tool_larsrc/web/pages/itemreview/itemContent.jsp (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -0,0 +1,101 @@ + +<%-- +Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) +License Information: http://lamsfoundation.org/licensing/lams/2.0/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + + http://www.gnu.org/licenses/gpl.txt +--%> + +<%@ include file="/common/taglibs.jsp" %> +<%@ page import="org.lamsfoundation.lams.tool.rsrc.ResourceConstants"%> + + + + + + + +
+ +
+ +
+
+ + + + + + + + + + +
+ + +

+
+
+
+
\ No newline at end of file Index: lams_tool_larsrc/web/pages/itemreview/mainframe.jsp =================================================================== diff -u -rba64868d96bcde6a6de9afca8b58a32bd25085ff -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/web/pages/itemreview/mainframe.jsp (.../mainframe.jsp) (revision ba64868d96bcde6a6de9afca8b58a32bd25085ff) +++ lams_tool_larsrc/web/pages/itemreview/mainframe.jsp (.../mainframe.jsp) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -1,76 +1,34 @@ -<%-- -Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) -License Information: http://lamsfoundation.org/licensing/lams/2.0/ - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License version 2 as - published by the Free Software Foundation. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 - USA - - http://www.gnu.org/licenses/gpl.txt ---%> -<%@ include file="/common/taglibs.jsp" %> -<%@ page import="org.lamsfoundation.lams.tool.rsrc.ResourceConstants"%> - -?mode=${mode}&itemIndex=${itemIndex}&itemUid=${itemUid}&toolSessionID=${toolSessionID}&sessionMapID=${sessionMapID} - - +<%@ include file="/common/taglibs.jsp"%> + <fmt:message key="label.learning.title" /> <%@ include file="/common/header.jsp"%> - + + + + + - - -
-
-
-
- - - - -
- - -

-
-
-
-
+ + +
+ - -
+ \ No newline at end of file Fisheye: Tag 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 refers to a dead (removed) revision in file `lams_tool_larsrc/web/pages/itemreview/openurl.jsp'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_tool_larsrc/web/pages/learning/addfile.jsp =================================================================== diff -u -r586c8780429a9489900952ef8ed3156ea0aac464 -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/web/pages/learning/addfile.jsp (.../addfile.jsp) (revision 586c8780429a9489900952ef8ed3156ea0aac464) +++ lams_tool_larsrc/web/pages/learning/addfile.jsp (.../addfile.jsp) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -25,17 +25,16 @@ : - +
+ + +
+
-
- - -
- -
+
  @@ -72,6 +71,7 @@ $('#resourceItemForm').submit(submitResourceForm) .validate({ + ignore: 'hidden, div.cke_editable', errorClass: "text-danger", wrapper: "span", rules: { Index: lams_tool_larsrc/web/pages/learning/addurl.jsp =================================================================== diff -u -rba64868d96bcde6a6de9afca8b58a32bd25085ff -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/web/pages/learning/addurl.jsp (.../addurl.jsp) (revision ba64868d96bcde6a6de9afca8b58a32bd25085ff) +++ lams_tool_larsrc/web/pages/learning/addurl.jsp (.../addurl.jsp) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -26,8 +26,8 @@
- - + +
@@ -49,6 +49,7 @@ $('#resourceItemForm').submit(submitResourceForm); $('#resourceItemForm').validate({ + ignore: 'hidden, div.cke_editable', errorClass: "text-danger", wrapper: "span", rules: { @@ -73,5 +74,4 @@
-
- + \ No newline at end of file Index: lams_tool_larsrc/web/pages/learning/learning.jsp =================================================================== diff -u -r586c8780429a9489900952ef8ed3156ea0aac464 -r0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10 --- lams_tool_larsrc/web/pages/learning/learning.jsp (.../learning.jsp) (revision 586c8780429a9489900952ef8ed3156ea0aac464) +++ lams_tool_larsrc/web/pages/learning/learning.jsp (.../learning.jsp) (revision 0c5d2aefd17a667d8222d8f1bb8b05aa4034ed10) @@ -1,5 +1,4 @@ - <%-- If you change this file, remember to update the copy made for CNG-36 --%> @@ -9,8 +8,33 @@ <fmt:message key="label.learning.title" /> <%@ include file="/common/header.jsp"%> + + <%-- param has higher level for request attribute --%> @@ -29,7 +53,7 @@ - + @@ -43,35 +67,50 @@ - - - + + + - + - @@ -186,9 +267,7 @@ -
- -
+
@@ -225,62 +304,45 @@
- - - - - - - - - - - - - - - - - - -
- - - - - - -
- - - - - () - - - - " - id="delete${status.index}" onclick="hideItem(${item.uid})"> - - - - - - - - - - - -
- -
-
-
- +
+
+ + + +
+ + + + + + + + + + + + + " + onclick="hideItem(${item.uid})"> + +
+
+ +
+
+ @@ -315,8 +377,8 @@ -