Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java,v diff -u -r1.63 -r1.64 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 19 Jul 2007 01:15:34 -0000 1.63 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 19 Jul 2007 07:10:05 -0000 1.64 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java,v diff -u -r1.5 -r1.6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java 17 Jul 2007 01:33:31 -0000 1.5 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java 19 Jul 2007 07:10:05 -0000 1.6 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java 17 Jul 2007 01:33:31 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java 19 Jul 2007 07:10:06 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java,v diff -u -r1.25 -r1.26 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java 4 Jul 2007 03:35:01 -0000 1.25 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java 19 Jul 2007 07:10:06 -0000 1.26 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java,v diff -u -r1.20 -r1.21 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java 17 Jul 2007 04:34:35 -0000 1.20 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java 19 Jul 2007 07:10:05 -0000 1.21 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java 17 Jul 2007 01:33:31 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java 19 Jul 2007 07:10:05 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java,v diff -u -r1.22 -r1.23 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java 17 Jul 2007 04:34:35 -0000 1.22 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java 19 Jul 2007 07:10:05 -0000 1.23 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java,v diff -u -r1.25 -r1.26 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java 17 Sep 2006 06:14:16 -0000 1.25 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java 19 Jul 2007 07:10:05 -0000 1.26 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java,v diff -u -r1.24 -r1.25 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java 17 Sep 2006 06:14:16 -0000 1.24 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java 19 Jul 2007 07:10:06 -0000 1.25 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java,v diff -u -r1.21 -r1.22 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java 17 Sep 2006 06:14:16 -0000 1.21 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java 19 Jul 2007 07:10:05 -0000 1.22 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java,v diff -u -r1.29 -r1.30 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java 7 Nov 2006 04:59:04 -0000 1.29 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java 19 Jul 2007 07:10:06 -0000 1.30 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java,v diff -u -r1.28 -r1.29 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java 17 Jul 2007 01:33:31 -0000 1.28 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java 19 Jul 2007 07:10:05 -0000 1.29 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java,v diff -u -r1.15 -r1.16 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java 17 Sep 2006 06:14:16 -0000 1.15 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java 19 Jul 2007 07:10:05 -0000 1.16 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java,v diff -u -r1.21 -r1.22 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java 17 Sep 2006 06:14:16 -0000 1.21 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java 19 Jul 2007 07:10:05 -0000 1.22 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java 9 May 2007 01:07:24 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java 19 Jul 2007 07:10:05 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java,v diff -u -r1.28 -r1.29 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java 9 May 2007 01:07:24 -0000 1.28 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java 19 Jul 2007 07:10:06 -0000 1.29 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java 17 Jul 2007 01:33:31 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java 19 Jul 2007 07:10:06 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java,v diff -u -r1.9 -r1.10 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 17 Jul 2007 05:36:29 -0000 1.9 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 19 Jul 2007 07:09:47 -0000 1.10 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java,v diff -u -r1.26 -r1.27 --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java 28 Jun 2007 06:49:59 -0000 1.26 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java 19 Jul 2007 07:09:47 -0000 1.27 @@ -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.