Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -r725717c8db7287e639f58135c179133d18e85adb -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 725717c8db7287e639f58135c179133d18e85adb) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -243,7 +243,8 @@ Integer activityTypeId, Transition transitionTo, Transition transitionFrom, - String languageFile) { + String languageFile, + Boolean stopAfterActivity) { this.activityId = activityId; this.activityUIID = id; this.description = description; @@ -265,7 +266,7 @@ this.languageFile = languageFile; this.readOnly = false; this.initialised = false; - this.stopAfterActivity = false; + this.stopAfterActivity = stopAfterActivity; } /** default constructor */ public Activity() { @@ -1005,6 +1006,7 @@ newActivity.setOrderId(this.getOrderId()); newActivity.setReadOnly(this.getReadOnly()); + newActivity.setStopAfterActivity(this.isStopAfterActivity()); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java =================================================================== diff -u -rd66ffc2bf657d1fe25183aa727b110ed42048d59 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java (.../BranchingActivity.java) (revision d66ffc2bf657d1fe25183aa727b110ed42048d59) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java (.../BranchingActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -72,6 +72,7 @@ Integer startYcoord, Integer endXcoord, Integer endYcoord, + Boolean stopAfterActivity, Set activities, SystemTool systemTool) { super(activityId, @@ -93,6 +94,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, activities); super.activityStrategy = new BranchingActivityStrategy(this); this.systemTool = systemTool; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java =================================================================== diff -u -rd66ffc2bf657d1fe25183aa727b110ed42048d59 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java (.../ChosenBranchingActivity.java) (revision d66ffc2bf657d1fe25183aa727b110ed42048d59) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java (.../ChosenBranchingActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -63,6 +63,7 @@ Integer startYcoord, Integer endXcoord, Integer endYcoord, + Boolean stopAfterActivity, Set activities, SystemTool systemTool) { super(activityId, @@ -88,6 +89,7 @@ startYcoord, endXcoord, endYcoord, + stopAfterActivity, activities, systemTool); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java =================================================================== diff -u -ra7351da17f548464a76295a73e9cc17450a6ff39 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision a7351da17f548464a76295a73e9cc17450a6ff39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -68,11 +68,12 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Set activities) { super(activityId, id, description, title, xcoord, ycoord, orderId, defineLater, createDateTime, learningLibrary, parentActivity, libraryActivity,parentUIID,learningDesign, grouping, - activityTypeId, transitionTo,transitionFrom, languageFile); + activityTypeId, transitionTo,transitionFrom, languageFile, stopAfterActivity); this.activities = activities; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java =================================================================== diff -u -r6fd5ff2bd3a176db44a0ce35295c9b1acd593e10 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision 6fd5ff2bd3a176db44a0ce35295c9b1acd593e10) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -80,6 +80,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Integer gateActivityLevelId, Set waitingLearners, SystemTool sysTool) @@ -102,7 +103,8 @@ activityTypeId, transitionTo, transitionFrom, - languageFile); + languageFile, + stopAfterActivity); this.gateActivityLevelId = gateActivityLevelId; this.waitingLearners = waitingLearners; this.systemTool = sysTool; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java =================================================================== diff -u -rd66ffc2bf657d1fe25183aa727b110ed42048d59 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java (.../GroupBranchingActivity.java) (revision d66ffc2bf657d1fe25183aa727b110ed42048d59) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java (.../GroupBranchingActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -63,6 +63,7 @@ Integer startYcoord, Integer endXcoord, Integer endYcoord, + Boolean stopAfterActivity, Set activities, SystemTool systemTool) { super(activityId, @@ -88,6 +89,7 @@ startYcoord, endXcoord, endYcoord, + stopAfterActivity, activities, systemTool); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java =================================================================== diff -u -r6fd5ff2bd3a176db44a0ce35295c9b1acd593e10 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 6fd5ff2bd3a176db44a0ce35295c9b1acd593e10) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -70,6 +70,7 @@ Integer grouping_ui_id, Integer create_grouping_ui_id, String languageFile, + Boolean stopAfterActivity, SystemTool sysTool) { super(activityId, @@ -90,7 +91,8 @@ activityTypeId, transitionTo, transitionFrom, - languageFile); + languageFile, + stopAfterActivity); this.createGrouping = createGrouping; this.createGroupingUIID = create_grouping_ui_id; this.systemTool = sysTool; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -66,6 +66,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Set activities, Integer maxNumberOfOptions, Integer minNumberOfOptions, @@ -89,6 +90,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, activities); this.maxNumberOfOptions = maxNumberOfOptions; this.minNumberOfOptions = minNumberOfOptions; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -56,6 +56,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Set activities) { super(activityId, id, @@ -76,6 +77,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, activities); super.activityStrategy = new ParallelActivityStrategy(this); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -59,6 +59,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Integer gateActivityLevelId, Set waitingLearners, SystemTool sysTool) @@ -82,6 +83,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, gateActivityLevelId, waitingLearners, sysTool); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java =================================================================== diff -u -rf07be6df99f4f8ffb45221f7c4c7ffdf2f24525e -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision f07be6df99f4f8ffb45221f7c4c7ffdf2f24525e) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -105,6 +105,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Integer gateActivityLevelId, Long gateStartTimeOffset, Long gateEndTimeOffset, @@ -129,6 +130,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, gateActivityLevelId, waitingLearners, sysTool); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java =================================================================== diff -u -rd66ffc2bf657d1fe25183aa727b110ed42048d59 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision d66ffc2bf657d1fe25183aa727b110ed42048d59) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -68,6 +68,7 @@ Transition transitionFrom, String languageFile, SortedSet activities, + Boolean stopAfterActivity, Set branchEntries) { super(activityId, id, @@ -88,6 +89,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, activities); super.activityStrategy = new SequenceActivityStrategy(this); this.branchEntries = branchEntries; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java (.../SimpleActivity.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java (.../SimpleActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -56,7 +56,8 @@ Grouping grouping, Integer activityTypeId, Transition transitionTo, Transition transitionFrom, - String languageFile){ + String languageFile, + Boolean stopAfterActivity){ super(activityId, id, description, @@ -75,7 +76,8 @@ activityTypeId, transitionTo, transitionFrom, - languageFile); + languageFile, + stopAfterActivity); } /** default constructor */ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java =================================================================== diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -58,6 +58,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Integer gateActivityLevelId, Set waitingLearners, SystemTool sysTool) { @@ -80,6 +81,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, gateActivityLevelId, waitingLearners, sysTool); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java (.../SystemGateActivity.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java (.../SystemGateActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -58,6 +58,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Integer gateActivityLevelId, Set waitingLearners, SystemTool sysTool) { @@ -80,6 +81,7 @@ transitionTo, transitionFrom, languageFile, + stopAfterActivity, gateActivityLevelId, waitingLearners, sysTool); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java =================================================================== diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -80,6 +80,7 @@ Transition transitionTo, Transition transitionFrom, String languageFile, + Boolean stopAfterActivity, Tool tool, Long toolContentId) { @@ -101,7 +102,8 @@ activityTypeId, transitionTo, transitionFrom, - languageFile); + languageFile, + stopAfterActivity); this.tool = tool; this.toolContentId = toolContentId; super.simpleActivityStrategy = new ToolActivityStrategy(this); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java =================================================================== diff -u -rd66ffc2bf657d1fe25183aa727b110ed42048d59 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (.../ToolBranchingActivity.java) (revision d66ffc2bf657d1fe25183aa727b110ed42048d59) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (.../ToolBranchingActivity.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -63,6 +63,7 @@ Integer startYcoord, Integer endXcoord, Integer endYcoord, + Boolean stopAfterActivity, Set activities, SystemTool systemTool) { super(activityId, @@ -88,6 +89,7 @@ startYcoord, endXcoord, endYcoord, + stopAfterActivity, activities, systemTool); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java =================================================================== diff -u -ra47f62d9ef96db1cddec04678d6d828f37c23d81 -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java (.../PortfolioBuilder.java) (revision a47f62d9ef96db1cddec04678d6d828f37c23d81) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java (.../PortfolioBuilder.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -116,22 +116,26 @@ /** Creates an ActivityPortfolio and sets up the list of its children. Doesn't create an entry if there are no children. */ public void endComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { + ActivityPortfolio complexPortfolio = null; - if ( currentPortfolioList.size()>0 ) { + if ( currentPortfolioList.size()>0 || accessMode == ToolAccessMode.TEACHER) { complexPortfolio = createActivityPortfolio(activity); + + if ( currentPortfolioList.size()>0 ) { complexPortfolio.setChildPortfolios(currentPortfolioList); - } + } - if ( activity.isSystemToolActivity() ) { - String exportURL = getExportURLForSystemTool(activity); - complexPortfolio = complexPortfolio == null ? createActivityPortfolio(activity) : complexPortfolio; - complexPortfolio.setExportUrl(exportURL); - // if there isn't a url, we assume we just want a heading - complexPortfolio.setHeadingNoPage(exportURL == null); - } else { - // sequence, parallel, etc - complexPortfolio.setHeadingNoPage(true); + if ( activity.isSystemToolActivity() ) { + String exportURL = getExportURLForSystemTool(activity); + complexPortfolio = complexPortfolio == null ? createActivityPortfolio(activity) : complexPortfolio; + complexPortfolio.setExportUrl(exportURL); + // if there isn't a url, we assume we just want a heading + complexPortfolio.setHeadingNoPage(exportURL == null); + } else { + // sequence, parallel, etc + complexPortfolio.setHeadingNoPage(true); + } } currentPortfolioList = (ArrayList) activityListStack.pop(); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java =================================================================== diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r2c26811b29dbe08f4d569c720f86b25925260fc0 --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java (.../ProgressEngine.java) (revision 2c26811b29dbe08f4d569c720f86b25925260fc0) @@ -86,19 +86,25 @@ LearnerProgress.ACTIVITY_COMPLETED, activityDAO); completedActivityList.add(completedActivity.getActivityId()); - Transition transition = completedActivity.getTransitionFrom(); - if (transition != null) - return progressCompletedActivity(learner, - completedActivity, - learnerProgress, - transition, - completedActivityList); - else - return progressParentActivity(learner, - completedActivity, - learnerProgress, - completedActivityList); + if ( completedActivity.isStopAfterActivity() ) { + // special case - terminate the lesson here. + populateCurrentCompletedActivityList(learnerProgress, completedActivityList); + return setLessonComplete(learnerProgress); + } else { + Transition transition = completedActivity.getTransitionFrom(); + if (transition != null) + return progressCompletedActivity(learner, + completedActivity, + learnerProgress, + transition, + completedActivityList); + else + return progressParentActivity(learner, + completedActivity, + learnerProgress, + completedActivityList); + } } /** @@ -329,13 +335,24 @@ } //lesson is meant to be completed if there is no transition and no parent. else { - learnerProgress.setCurrentActivity(null); - learnerProgress.setLessonComplete(true); + learnerProgress = setLessonComplete(learnerProgress); } return learnerProgress; } + /** + * Set the lesson to complete for this learner. + * + * @param learnerProgress + * @return updated learnerProgress + */ + private LearnerProgress setLessonComplete(LearnerProgress learnerProgress) { + learnerProgress.setCurrentActivity(null); + learnerProgress.setLessonComplete(true); + return learnerProgress; + } + /** * The helper method to setup the completed activity list since the last * transition.