Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf3e61ae90d8b2e951ff3d0fda1185720e839c8e3 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java (.../ChooseActivityAction.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java (.../ChooseActivityAction.java) (revision f3e61ae90d8b2e951ff3d0fda1185720e839c8e3) @@ -33,6 +33,7 @@ import org.lamsfoundation.lams.learning.service.ICoreLearnerService; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; +import org.lamsfoundation.lams.learning.web.form.ActivityForm; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; @@ -87,8 +88,16 @@ // need to do the choose first as the chooseActivity changes the progress details setupProgressString(actionForm, request); - - ActionForward forward = actionMappings.getActivityForward(activity, progress, true); + + ActivityForm activityForm = (ActivityForm) actionForm; + ActionForward forward = null; + + if(activityForm.getInFrame()) + // escape child frame and open url in parent frame + forward = actionMappings.getRedirectForward(progress, true); + else + forward = actionMappings.getActivityForward(activity, progress, true); + return forward; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf3e61ae90d8b2e951ff3d0fda1185720e839c8e3 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision f3e61ae90d8b2e951ff3d0fda1185720e839c8e3) @@ -118,6 +118,11 @@ setupProgressString(form, request); String forward = "displayOptions"; + + // set frame flag if last run activity was Parallel Activity + if(learnerProgress.getCurrentActivity().isParallelActivity()) + form.setInFrame(true); + return mapping.findForward(forward); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/form/ActivityForm.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf3e61ae90d8b2e951ff3d0fda1185720e839c8e3 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/form/ActivityForm.java (.../ActivityForm.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/form/ActivityForm.java (.../ActivityForm.java) (revision f3e61ae90d8b2e951ff3d0fda1185720e839c8e3) @@ -56,6 +56,8 @@ /** Lesson to which this activity belongs. Id comes from the learner progress */ private Long lessonID; + private boolean inFrame; + /** * Method reset * @param mapping @@ -100,4 +102,12 @@ public void setLessonID(Long lessonID) { this.lessonID = lessonID; } + + public boolean getInFrame() { + return inFrame; + } + + public void setInFrame(boolean inFrame) { + this.inFrame = inFrame; + } } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -rf3e61ae90d8b2e951ff3d0fda1185720e839c8e3 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision f3e61ae90d8b2e951ff3d0fda1185720e839c8e3) @@ -150,12 +150,7 @@ { // if previous activity was a parallel activity then we need to // clear frames. - String strutsAction = "/requestDisplay.do"; - String activityURL = this.getActivityURL(progress.getNextActivity()); - strutsAction += "?url=" + activityURL; - actionForward = strutsActionToForward(strutsAction, - null, - redirect); + this.getRedirectForward(progress, redirect); } else { @@ -174,6 +169,20 @@ } return actionForward; } + + public ActionForward getRedirectForward(LearnerProgress progress, boolean redirect) { + ActionForward actionForward = null; + + String strutsAction = "/requestDisplay.do"; + String activityURL = this.getActivityURL(progress.getNextActivity()); + strutsAction += "?url=" + activityURL; + + actionForward = strutsActionToForward(strutsAction, + null, + redirect); + return actionForward; + + } /** * Generates an ActivityURL for an Activity using it's progress. The URL is for Index: lams_learning/web/optionsActivity.jsp =================================================================== diff -u -r2abd967a284225b79e09d8cac9341d6cacc3e86e -rf3e61ae90d8b2e951ff3d0fda1185720e839c8e3 --- lams_learning/web/optionsActivity.jsp (.../optionsActivity.jsp) (revision 2abd967a284225b79e09d8cac9341d6cacc3e86e) +++ lams_learning/web/optionsActivity.jsp (.../optionsActivity.jsp) (revision f3e61ae90d8b2e951ff3d0fda1185720e839c8e3) @@ -57,7 +57,8 @@ - + " /> +