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.52.2.10 -r1.52.2.11 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java 6 Jun 2016 08:44:29 -0000 1.52.2.10 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java 7 Jun 2016 09:00:40 -0000 1.52.2.11 @@ -21,7 +21,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.learning.web.action; import java.io.IOException; @@ -44,6 +43,7 @@ import org.lamsfoundation.lams.learning.web.bean.ActivityURL; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; +import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.usermanagement.User; @@ -230,6 +230,46 @@ } /** + * Forces a move to a destination Activity in the learning sequence, redirecting to the new page rather. + */ + public ActionForward forceMoveRedirect(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException { + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + + Long fromActivityId = WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_ACTIVITY_ID, true); + Long toActivityId = WebUtil.readLongParam(request, AttributeNames.PARAM_DEST_ACTIVITY_ID, true); + + Activity fromActivity = null; + Activity toActivity = null; + + if (fromActivityId != null) { + fromActivity = learnerService.getActivity(fromActivityId); + } + + if (toActivityId != null) { + toActivity = learnerService.getActivity(toActivityId); + } + + Integer learnerId = LearningWebUtil.getUserId(); + Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + learnerService.moveToActivity(learnerId, lessonId, fromActivity, toActivity); + + if (LearnerAction.log.isDebugEnabled()) { + LearnerAction.log.debug("Force move for learner " + learnerId + " lesson " + lessonId + ". "); + } + + String url = null; + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); + if (!toActivity.isFloating()) { + url = "/learning" + activityMapping.getDisplayActivityAction(lessonId); + } else { + url = activityMapping.getActivityURL(toActivity); + } + + return redirectToURL(mapping, response, url); + } + + /** * Converts an activity in learner progress to a JSON object. */ private JSONObject activityProgressToJSON(ActivityURL activity, Long currentActivityId, Long lessonId,