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.16 -r1.17 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 3 Nov 2008 03:28:02 -0000 1.16 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 13 Jan 2009 06:58:40 -0000 1.17 @@ -37,6 +37,7 @@ import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.CompetenceMapping; import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.learningdesign.FloatingActivity; import org.lamsfoundation.lams.learningdesign.ISystemToolActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.LearningDesignProcessor; @@ -240,6 +241,10 @@ } } + + public void startFloatingActivity(FloatingActivity activity) throws LearningDesignProcessorException {} + + public void endFloatingActivity(FloatingActivity activity) throws LearningDesignProcessorException {} /** * A system tool may be a simple or a complex activity, so the logic is in a method called by both Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java,v diff -u -r1.3 -r1.4 --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java 3 Jun 2008 00:42:14 -0000 1.3 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java 13 Jan 2009 06:58:40 -0000 1.4 @@ -34,6 +34,7 @@ import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.learningdesign.FloatingActivity; import org.lamsfoundation.lams.learningdesign.LearningDesignProcessor; import org.lamsfoundation.lams.learningdesign.SimpleActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; @@ -55,6 +56,7 @@ ArrayList currentActivityList; String forceLearnerURL; boolean previewMode; + boolean isFloating; /** Create the builder. Supply all the data that will be needed to parse the design and build the portfolio entries. * @@ -81,15 +83,17 @@ this.mainActivityList = new ArrayList(); this.currentActivityList = mainActivityList; + this.activityListStack = new ArrayStack(5); Lesson lesson = progress.getLesson(); previewMode = lesson.isPreviewLesson(); - if ( previewMode) { + isFloating = false; + //if ( previewMode ) { // setup the basic call to the learner screen, ready just to put the activity id on the end. Saves calculating it for every activity this.forceLearnerURL = "learner.do?method=forceMoveRedirect&lessonID=" +progress.getLesson().getLessonId()+"&destActivityID="; - } + //} } @@ -102,7 +106,9 @@ if ( activity.isSequenceActivity() ) { return ( progress.getProgressState(activity) != LearnerProgress.ACTIVITY_NOT_ATTEMPTED ); - } + } else if ( activity.isFloatingActivity() ) { + isFloating = true; + } return true; } @@ -136,6 +142,8 @@ complexActivityURL.setChildActivities(currentActivityList); currentActivityList = (ArrayList) activityListStack.pop(); currentActivityList.add(complexActivityURL); + + if(activity.isFloatingActivity()) isFloating = false; } } @@ -150,7 +158,7 @@ currentActivityList.add(p); } - + /** * Creates a progress object with properties activityId, activityName, activityDescription and progress status. * @@ -166,17 +174,18 @@ log.error(error); throw new LearningDesignProcessorException(error); } - ActivityURL activityURL = LearningWebUtil.getActivityURL( activityMapping, progress, activity, false); - if ( activityURL.getStatus() == LearnerProgress.ACTIVITY_NOT_ATTEMPTED ) { - activityURL.setUrl( previewMode? forceLearnerURL+activity.getActivityId() : null); + ActivityURL activityURL = LearningWebUtil.getActivityURL( activityMapping, progress, activity, false, isFloating); + if ( activityURL.getStatus() == LearnerProgress.ACTIVITY_NOT_ATTEMPTED && isFloating) { + activityURL.setUrl( (previewMode || isFloating) ? forceLearnerURL+activity.getActivityId() : null); } + if (activity.isFloatingActivity()) { + activityURL.setUrl(null); + } return activityURL; } /** Get the list of all the activity progress DTOs, which in turn may contain other activity progress DTOs */ public ArrayList getActivityList() { return mainActivityList; } - - } 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.30 -r1.31 --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java 3 Mar 2008 04:40:35 -0000 1.30 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java 13 Jan 2009 06:58:40 -0000 1.31 @@ -96,6 +96,9 @@ } populateCurrentCompletedActivityList(learnerProgress, completedActivityList); return setLessonComplete(learnerProgress, LearnerProgress.LESSON_IN_DESIGN_COMPLETE); + } else if ( completedActivity.isFloating() ) { + // special case - floating activity + return learnerProgress; } else { Transition transition = completedActivity.getTransitionFrom(); if (transition != null) @@ -300,6 +303,7 @@ parent.getActivityTypeId()+" has been found"); //move to next activity within parent if not all children are completed. + ComplexActivity complexParent = (ComplexActivity) activityDAO.getActivityByActivityId(parent.getActivityId(),ComplexActivity.class); if (! learnerProgress.getCompletedActivities().contains(complexParent) && !complexParent.areChildrenCompleted(learnerProgress)) { Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java,v diff -u -r1.89 -r1.90 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 29 Oct 2008 05:34:52 -0000 1.89 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 13 Jan 2009 06:58:40 -0000 1.90 @@ -381,10 +381,9 @@ ProgressBuilder builder = new ProgressBuilder(progress, activityDAO, activityMapping); builder.parseLearningDesign(); - List list = builder.getActivityList(); Object[] retValue = new Object[2]; - retValue[0] = list; + retValue[0] = (List) builder.getActivityList();; retValue[1] = progress.getCurrentActivity() != null ? progress.getCurrentActivity().getActivityId() : null; return retValue; @@ -434,7 +433,8 @@ if (toActivity != null) { progress.setProgressState(toActivity, LearnerProgress.ACTIVITY_ATTEMPTED, activityDAO); - progress.setCurrentActivity(toActivity); + if(!toActivity.isFloating()) + progress.setCurrentActivity(toActivity); progress.setNextActivity(toActivity); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java,v diff -u -r1.7 -r1.8 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java 18 Feb 2008 05:17:31 -0000 1.7 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java 13 Jan 2009 06:58:40 -0000 1.8 @@ -133,7 +133,7 @@ while (i.hasNext()) { Activity nextBranch = (Activity)i.next(); ActivityURL activityURL = LearningWebUtil.getActivityURL( actionMappings, learnerProgress, - nextBranch, branch != null && branch.equals(nextBranch)); + nextBranch, branch != null && branch.equals(nextBranch), false); if ( activityURL.isComplete() ) { completedCount++; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java,v diff -u -r1.21 -r1.22 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java 16 Jul 2008 06:09:42 -0000 1.21 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java 13 Jan 2009 06:58:40 -0000 1.22 @@ -90,7 +90,7 @@ Iterator i = subActivities.iterator(); int completedCount = 0; while (i.hasNext()) { - ActivityURL activityURL = LearningWebUtil.getActivityURL( actionMappings, learnerProgress, (Activity)i.next(), false); + ActivityURL activityURL = LearningWebUtil.getActivityURL( actionMappings, learnerProgress, (Activity)i.next(), false, false); if ( activityURL.isComplete() ) { completedCount++; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/ActivityURL.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/ActivityURL.java,v diff -u -r1.9 -r1.10 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/ActivityURL.java 5 Mar 2008 07:29:03 -0000 1.9 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/bean/ActivityURL.java 13 Jan 2009 06:58:40 -0000 1.10 @@ -44,6 +44,7 @@ private String title; private String description; private boolean complete; + private boolean floating; private byte status; private boolean defaultURL; private List childActivities; @@ -55,6 +56,7 @@ { this.activityId = activityId; this.url = url; + this.floating = false; } public boolean isComplete() { @@ -63,6 +65,15 @@ public void setComplete(boolean complete) { this.complete = complete; } + public boolean isFloating() { + return floating; + } + public boolean getFloating() { + return floating; + } + public void setFloating(boolean floating) { + this.floating = floating; + } public String getTitle() { return title; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java,v diff -u -r1.23 -r1.24 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java 17 Mar 2008 03:39:15 -0000 1.23 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java 13 Jan 2009 06:58:40 -0000 1.24 @@ -225,6 +225,9 @@ progress = learnerService.completeActivity(learnerId, currentActivity,progress); } + if ( progress == null ) + return actionMappings.getCloseForward(currentActivity, lesson.getLessonId()); + LearningWebUtil.putActivityInRequest(request, progress.getNextActivity(), learnerService); LearningWebUtil.putLearnerProgressInRequest(request,progress); return actionMappings.getProgressForward(progress, redirect, false, request, learnerService); @@ -339,7 +342,7 @@ return progressSummary.toString(); } - public static ActivityURL getActivityURL( ActivityMapping activityMapping, LearnerProgress learnerProgress, Activity activity, boolean defaultURL) { + public static ActivityURL getActivityURL( ActivityMapping activityMapping, LearnerProgress learnerProgress, Activity activity, boolean defaultURL, boolean isFloating) { ActivityURL activityURL = new ActivityURL(); String url = activityMapping.getActivityURL(activity); activityURL.setUrl(url); @@ -352,7 +355,7 @@ if ( status == LearnerProgress.ACTIVITY_COMPLETED) { activityURL.setComplete(true); } - + activityURL.setFloating(isFloating); activityURL.setDefaultURL(defaultURL); return activityURL; } Index: lams_learning/web/progress.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_learning/web/Attic/progress.jsp,v diff -u -r1.3 -r1.4 --- lams_learning/web/progress.jsp 24 Apr 2008 01:07:33 -0000 1.3 +++ lams_learning/web/progress.jsp 13 Jan 2009 06:58:40 -0000 1.4 @@ -44,7 +44,9 @@
    - + +

     

    +
Index: lams_learning/web/WEB-INF/tags/ProgressOutput.tag =================================================================== RCS file: /usr/local/cvsroot/lams_learning/web/WEB-INF/tags/Attic/ProgressOutput.tag,v diff -u -r1.2 -r1.3 --- lams_learning/web/WEB-INF/tags/ProgressOutput.tag 7 Mar 2008 00:33:37 -0000 1.2 +++ lams_learning/web/WEB-INF/tags/ProgressOutput.tag 13 Jan 2009 06:58:40 -0000 1.3 @@ -58,7 +58,19 @@ - + + + + + + + + + + + + + ${activity.title}