Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -r9b4a3799f9589dbda9a792e10a4ebd649db1e3db -rf4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 9b4a3799f9589dbda9a792e10a4ebd649db1e3db) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision f4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e) @@ -445,10 +445,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 -r9b4a3799f9589dbda9a792e10a4ebd649db1e3db -rf4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/DisplayOptionsActivityController.java (.../DisplayOptionsActivityController.java) (revision 9b4a3799f9589dbda9a792e10a4ebd649db1e3db) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/DisplayOptionsActivityController.java (.../DisplayOptionsActivityController.java) (revision f4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e) @@ -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; @@ -71,7 +72,7 @@ HttpServletResponse response) { LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgress(request, learnerService); - Activity activity = LearningWebUtil.getActivityFromRequest(request, learnerService); + var activity = LearningWebUtil.getActivityFromRequest(request, learnerService); if (!(activity instanceof OptionsActivity)) { log.error("activity not OptionsActivity " + activity.getActivityId()); return "error"; @@ -82,14 +83,30 @@ 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 = LearningWebUtil.getActivityURL(activityMapping, learnerProgress, i.next(), false, + Activity optionsChildActivity = i.next(); + ActivityURL activityURL = LearningWebUtil.getActivityURL(activityMapping, 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 = LearningWebUtil.getActivityURL(activityMapping, + 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 -r9b4a3799f9589dbda9a792e10a4ebd649db1e3db -rf4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/SequenceActivityController.java (.../SequenceActivityController.java) (revision 9b4a3799f9589dbda9a792e10a4ebd649db1e3db) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/controller/SequenceActivityController.java (.../SequenceActivityController.java) (revision f4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e) @@ -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.springframework.beans.factory.annotation.Autowired; @@ -76,14 +75,22 @@ String forward = null; 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); - forward = activityMapping.getActivityForward(firstActivityInSequence, learnerProgress, true); - return forward; + firstIncompletedActivity, true); + return activityMapping.getActivityForward(firstIncompletedActivity, learnerProgress, true); + } else { // No activities exist in the sequence, so go to the next activity. return LearningWebUtil.completeActivity(request, response, activityMapping, learnerProgress, activity, Index: lams_learning/web/optionsActivity.jsp =================================================================== diff -u -r54007f98ca71e0073f19c5db78536437123287c6 -rf4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e --- lams_learning/web/optionsActivity.jsp (.../optionsActivity.jsp) (revision 54007f98ca71e0073f19c5db78536437123287c6) +++ lams_learning/web/optionsActivity.jsp (.../optionsActivity.jsp) (revision f4e0bfe05f14ecc966f26ecb6eed46c9a8c59e1e) @@ -18,36 +18,23 @@ http://www.gnu.org/licenses/gpl.txt --%> - - <%@ include file="/common/taglibs.jsp"%> +<% + if (request.getAttribute("activity") instanceof org.lamsfoundation.lams.learningdesign.OptionsWithSequencesActivity) { + request.setAttribute("isOptionsWithSequencesActivity", "true"); + } +%> + - - <fmt:message key="learner.title" /> - - + <fmt:message key="learner.title" /> - - - - - - - - <% - if (request.getAttribute("activity") instanceof org.lamsfoundation.lams.learningdesign.OptionsWithSequencesActivity) { - request.setAttribute("isOptionsWithSequencesActivity", "true"); - } - %> - - + + + + - -
@@ -109,30 +96,55 @@ + - -
-
-
+
+ + + + +
+ -
- + + +
+ + +
+ + + + + + + + + + +
+ + + +
+
+
+
+
+
+
+ + +
+ +
+
+
+
@@ -163,18 +175,7 @@
- - - - @@ -229,8 +230,8 @@ -
- - + +
+