Index: lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/LearningController.java =================================================================== diff -u -rc975422008a65f765d147629720d7eb8c10f63a0 -r823ba78870fd8a68449d8d86d5aa5d3c5a5fab96 --- lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/LearningController.java (.../LearningController.java) (revision c975422008a65f765d147629720d7eb8c10f63a0) +++ lams_tool_sbmt/src/java/org/lamsfoundation/lams/tool/sbmt/web/controller/LearningController.java (.../LearningController.java) (revision 823ba78870fd8a68449d8d86d5aa5d3c5a5fab96) @@ -125,28 +125,70 @@ UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); userID = user.getUserID(); } + // this must before getFileUploadByUser() method becuase getCurrentLearner() + // will create session user if it does not exist. + SubmitUser learner = getCurrentLearner(toolSessionID, submitFilesService); SubmitFilesSession session = submitFilesService.getSessionById(toolSessionID); SubmitFilesContent content = session.getContent(); + // support for leader select feature + SubmitUser groupLeader = content.isUseSelectLeaderToolOuput() + ? submitFilesService.checkLeaderSelectToolForSessionLeader(learner, toolSessionID) + : null; - // this must before getFileUploadByUser() method becuase getCurrentLearner() - // will create session user if it does not exist. - SubmitUser learner = getCurrentLearner(toolSessionID, submitFilesService); + sessionMap.put(AttributeNames.PARAM_MODE, mode); + sessionMap.put(SbmtConstants.ATTR_TITLE, content.getTitle()); + sessionMap.put(SbmtConstants.ATTR_INSTRUCTION, content.getInstruction()); + + // if content in use, return special page. + if (content.isDefineLater()) { + return "learner/definelater"; + } + + if (content.isUseSelectLeaderToolOuput() && !mode.isTeacher()) { + + // forwards to the leaderSelection page + if (groupLeader == null) { + request.setAttribute("groupUsers", submitFilesService.getUsersBySession(toolSessionID)); + request.setAttribute(SbmtConstants.PARAM_WAITING_MESSAGE_KEY, "label.waiting.for.leader"); + return "learner/waitforleader"; + } + + // forwards to the waitForLeader pages + boolean isNonLeader = !userID.equals(groupLeader.getUserID()); + + if (isNonLeader && !learner.isFinished()) { + List filesUploadedByLeader = submitFilesService + .getFilesUploadedByUser(groupLeader.getUserID(), toolSessionID, request.getLocale(), false); + + if (filesUploadedByLeader == null) { + request.setAttribute(SbmtConstants.PARAM_WAITING_MESSAGE_KEY, + "label.waiting.for.leader.launch.time.limit"); + request.setAttribute("groupUsers", submitFilesService.getUsersBySession(toolSessionID)); + return "learner/waitforleader"; + } + + //if the time is up and leader hasn't submitted response - show waitForLeaderFinish page + if (!groupLeader.isFinished()) { + request.setAttribute(SbmtConstants.PARAM_WAITING_MESSAGE_KEY, "label.waiting.for.leader.finish"); + request.setAttribute("groupUsers", submitFilesService.getUsersBySession(toolSessionID)); + return "learner/waitforleader"; + } + } + } + List filesUploaded = submitFilesService.getFilesUploadedByUser(userID, toolSessionID, request.getLocale(), false); // check whehter finish lock is on/off boolean lock = content.isLockOnFinished() && learner.isFinished(); - sessionMap.put(AttributeNames.PARAM_MODE, mode); sessionMap.put(AttributeNames.PARAM_TOOL_SESSION_ID, toolSessionID); sessionMap.put(SbmtConstants.ATTR_FINISH_LOCK, lock); sessionMap.put(SbmtConstants.ATTR_LOCK_ON_FINISH, content.isLockOnFinished()); sessionMap.put(SbmtConstants.ATTR_USE_SEL_LEADER, content.isUseSelectLeaderToolOuput()); sessionMap.put(SbmtConstants.ATTR_REFLECTION_ON, content.isReflectOnActivity()); sessionMap.put(SbmtConstants.ATTR_REFLECTION_INSTRUCTION, content.getReflectInstructions()); - sessionMap.put(SbmtConstants.ATTR_TITLE, content.getTitle()); - sessionMap.put(SbmtConstants.ATTR_INSTRUCTION, content.getInstruction()); sessionMap.put(SbmtConstants.ATTR_IS_MAX_LIMIT_UPLOAD_ENABLED, content.isLimitUpload()); sessionMap.put(SbmtConstants.ATTR_MAX_LIMIT_UPLOAD_NUMBER, content.getLimitUploadNumber()); sessionMap.put(SbmtConstants.ATTR_MIN_LIMIT_UPLOAD_NUMBER, content.getMinLimitUploadNumber()); @@ -157,11 +199,6 @@ FileValidatorUtil.formatSize(Configuration.getAsInt(ConfigurationKeys.UPLOAD_FILE_MAX_SIZE))); setLearnerDTO(request, sessionMap, learner, filesUploaded, mode); - // if content in use, return special page. - if (content.isDefineLater()) { - return "learner/definelater"; - } - // set contentInUse flag to true! content.setContentInUse(true); content.setDefineLater(false); @@ -198,49 +235,12 @@ IEventNotificationService.DELIVERY_METHOD_MAIL); } - // support for leader select feature - SubmitUser groupLeader = content.isUseSelectLeaderToolOuput() - ? submitFilesService.checkLeaderSelectToolForSessionLeader(learner, toolSessionID) - : null; - - if (content.isUseSelectLeaderToolOuput() && !mode.isTeacher()) { - - // forwards to the leaderSelection page - if (groupLeader == null) { - request.setAttribute("groupUsers", submitFilesService.getUsersBySession(toolSessionID)); - request.setAttribute(SbmtConstants.PARAM_WAITING_MESSAGE_KEY, "label.waiting.for.leader"); - return "learner/waitforleader"; - } - - // forwards to the waitForLeader pages - boolean isNonLeader = !userID.equals(groupLeader.getUserID()); - - if (isNonLeader && !learner.isFinished()) { - List filesUploadedByLeader = submitFilesService - .getFilesUploadedByUser(groupLeader.getUserID(), toolSessionID, request.getLocale(), false); - - if (filesUploadedByLeader == null) { - request.setAttribute(SbmtConstants.PARAM_WAITING_MESSAGE_KEY, - "label.waiting.for.leader.launch.time.limit"); - request.setAttribute("groupUsers", submitFilesService.getUsersBySession(toolSessionID)); - return "learner/waitforleader"; - } - - //if the time is up and leader hasn't submitted response - show waitForLeaderFinish page - if (!groupLeader.isFinished()) { - request.setAttribute(SbmtConstants.PARAM_WAITING_MESSAGE_KEY, "label.waiting.for.leader.finish"); - request.setAttribute("groupUsers", submitFilesService.getUsersBySession(toolSessionID)); - return "learner/waitforleader"; - } - } - + if (content.isUseSelectLeaderToolOuput() && groupLeader.isFinished() && !mode.isTeacher()) { // check if leader has submitted all answers - if (groupLeader.isFinished()) { - submitFilesService.copyLearnerContent(groupLeader, learner); - filesUploaded = submitFilesService.getFilesUploadedByUser(learner.getUserID(), learner.getSessionID(), - request.getLocale(), false); - setLearnerDTO(request, sessionMap, learner, filesUploaded, mode); - } + submitFilesService.copyLearnerContent(groupLeader, learner); + filesUploaded = submitFilesService.getFilesUploadedByUser(learner.getUserID(), learner.getSessionID(), + request.getLocale(), false); + setLearnerDTO(request, sessionMap, learner, filesUploaded, mode); } sessionMap.put(SbmtConstants.ATTR_GROUP_LEADER, groupLeader);