Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java,v diff -u -r1.4 -r1.5 --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java 13 Jan 2009 06:58:40 -0000 1.4 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java 15 Jan 2009 07:54:29 -0000 1.5 @@ -175,7 +175,7 @@ throw new LearningDesignProcessorException(error); } ActivityURL activityURL = LearningWebUtil.getActivityURL( activityMapping, progress, activity, false, isFloating); - if ( activityURL.getStatus() == LearnerProgress.ACTIVITY_NOT_ATTEMPTED && isFloating) { + if ( activityURL.getStatus() == LearnerProgress.ACTIVITY_NOT_ATTEMPTED) { activityURL.setUrl( (previewMode || isFloating) ? forceLearnerURL+activity.getActivityId() : null); } if (activity.isFloatingActivity()) { Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java,v diff -u -r1.90 -r1.91 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 13 Jan 2009 06:58:40 -0000 1.90 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 15 Jan 2009 07:54:29 -0000 1.91 @@ -410,6 +410,7 @@ } progressEngine.setActivityAttempted(progress, activity); + progress.setCurrentActivity(activity); progress.setNextActivity(activity); @@ -431,14 +432,17 @@ progress.setProgressState(fromActivity, LearnerProgress.ACTIVITY_ATTEMPTED, activityDAO); } - if (toActivity != null) { - progress.setProgressState(toActivity, LearnerProgress.ACTIVITY_ATTEMPTED, activityDAO); - if(!toActivity.isFloating()) - progress.setCurrentActivity(toActivity); - progress.setNextActivity(toActivity); + progress.setProgressState(toActivity, LearnerProgress.ACTIVITY_ATTEMPTED, activityDAO); + toActivity.setReadOnly(true); + + if(!toActivity.isFloating()) { + progress.setCurrentActivity(toActivity); + progress.setNextActivity(toActivity); } + learnerProgressDAO.updateLearnerProgress(progress); + activityDAO.update(toActivity); return progress; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java,v diff -u -r1.42 -r1.43 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java 7 Mar 2008 00:23:10 -0000 1.42 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java 15 Jan 2009 07:54:29 -0000 1.43 @@ -531,7 +531,13 @@ Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); try { - forceMoveShared(request, learnerService,lessonId); + String url; + Activity targetActivity = forceMoveShared(request, learnerService, lessonId); + + if(!targetActivity.isFloating()) url = activityMapping.getDisplayActivityAction(null); + else url = activityMapping.getActivityURL(targetActivity); + + //TODO: update for moving to Floating Activity in Flash Learner flashMessage = new FlashMessage("forceMove", activityMapping.getDisplayActivityAction(null)); } catch (Exception e) { flashMessage = handleException(e, "forceMove", learnerService); @@ -568,8 +574,13 @@ Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); try { - forceMoveShared(request, learnerService,lessonId); - return redirectToURL(mapping, response, "/learning" + activityMapping.getDisplayActivityAction(lessonId)); + String url; + Activity targetActivity = forceMoveShared(request, learnerService,lessonId); + + if(!targetActivity.isFloating()) url = "/learning" + activityMapping.getDisplayActivityAction(lessonId); + else url = activityMapping.getActivityURL(targetActivity); + + return redirectToURL(mapping, response, url); } catch (Exception e) { log.error("Exception throw doing force move",e); throw new ServletException(e); @@ -578,9 +589,9 @@ /** * @param request - * @return + * @return targetActivity The activity we are moving to. */ - private void forceMoveShared(HttpServletRequest request, ICoreLearnerService learnerService, Long lessonId) { + private Activity forceMoveShared(HttpServletRequest request, ICoreLearnerService learnerService, Long lessonId) { //getting requested object according to coming parameters Integer learnerId = LearningWebUtil.getUserId(); @@ -614,12 +625,14 @@ if(toActivityId != null) toActivity = learnerService.getActivity(toActivityId); - + learnerService.moveToActivity(learnerId, lessonId, fromActivity, toActivity); if ( log.isDebugEnabled() ) { log.debug("Force move for learner "+learnerId+" lesson "+lessonId+". "); } + + return toActivity; } /**