Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -rbd4fa408454e7389b4e60bc68f2488de88eff663 -r9825c35880ec88587666a5cf32a6fad2de9b3bab --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision bd4fa408454e7389b4e60bc68f2488de88eff663) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 9825c35880ec88587666a5cf32a6fad2de9b3bab) @@ -404,10 +404,6 @@ return builder.getActivityList(); } - /** - * @see org.lamsfoundation.lams.learning.service.ICoreLearnerService#chooseActivity(org.lamsfoundation.lams.usermanagement.User, - * java.lang.Long, org.lamsfoundation.lams.learningdesign.Activity) - */ @Override public LearnerProgress chooseActivity(Integer learnerId, Long lessonId, Activity activity, Boolean clearCompletedFlag) { Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/DisplayOptionsActivityController.java =================================================================== diff -u -rbe74862925361d836bef1df4c5959105c9695a87 -r9825c35880ec88587666a5cf32a6fad2de9b3bab --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/DisplayOptionsActivityController.java (.../DisplayOptionsActivityController.java) (revision be74862925361d836bef1df4c5959105c9695a87) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/DisplayOptionsActivityController.java (.../DisplayOptionsActivityController.java) (revision 9825c35880ec88587666a5cf32a6fad2de9b3bab) @@ -38,6 +38,7 @@ import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.OptionsActivity; +import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.learningdesign.dto.ActivityPositionDTO; import org.lamsfoundation.lams.learningdesign.dto.ActivityURL; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -85,13 +86,29 @@ form.setActivityID(activity.getActivityId()); List activityURLs = new ArrayList<>(); - Set subActivities = optionsActivity.getActivities(); - Iterator i = subActivities.iterator(); + Set optionsChildActivities = optionsActivity.getActivities(); + Iterator i = optionsChildActivities.iterator(); int completedCount = 0; while (i.hasNext()) { - ActivityURL activityURL = activityMapping.getActivityURL(learnerProgress, i.next(), false, false); + Activity optionsChildActivity = i.next(); + ActivityURL activityURL = activityMapping.getActivityURL(learnerProgress, optionsChildActivity, false, false); + if (activityURL.isComplete()) { completedCount++; + + //create list of activityURLs of all children activities + if (optionsChildActivity instanceof SequenceActivity) { + activityURL.setUrl(null); + + List childActivities = new ArrayList<>(); + Set sequenceChildActivities = ((SequenceActivity) optionsChildActivity).getActivities(); + for (Activity sequenceChildActivity : sequenceChildActivities) { + ActivityURL sequenceActivityURL = activityMapping.getActivityURL(learnerProgress, + sequenceChildActivity, false, false); + childActivities.add(sequenceActivityURL); + } + activityURL.setChildActivities(childActivities); + } } activityURLs.add(activityURL); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/SequenceActivityController.java =================================================================== diff -u -rbe74862925361d836bef1df4c5959105c9695a87 -r9825c35880ec88587666a5cf32a6fad2de9b3bab --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/SequenceActivityController.java (.../SequenceActivityController.java) (revision be74862925361d836bef1df4c5959105c9695a87) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/SequenceActivityController.java (.../SequenceActivityController.java) (revision 9825c35880ec88587666a5cf32a6fad2de9b3bab) @@ -34,7 +34,6 @@ 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.learningdesign.NullActivity; import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.util.WebUtil; @@ -79,13 +78,21 @@ } SequenceActivity sequenceActivity = (SequenceActivity) activity; - Activity firstActivityInSequence = sequenceActivity.getNextActivityByParent(new NullActivity()); - if ((firstActivityInSequence != null) && !firstActivityInSequence.isNull()) { - // Set the first activity as the current activity and display it + Activity firstIncompletedActivity = null; + // getActivities is ordered by order id + for (Activity activityIter : sequenceActivity.getActivities()) { + if (!learnerProgress.getCompletedActivities().containsKey(activityIter)) { + firstIncompletedActivity = activityIter; + break; + } + } + + if (firstIncompletedActivity != null) { + // Set the first incompleted activity as the current activity and display it learnerProgress = learnerService.chooseActivity(learnerId, learnerProgress.getLesson().getLessonId(), - firstActivityInSequence, true); - return activityMapping.getActivityForward(firstActivityInSequence, learnerProgress, true); + firstIncompletedActivity, true); + return activityMapping.getActivityForward(firstIncompletedActivity, learnerProgress, true); } else { // No activities exist in the sequence, so go to the next activity.