Index: lams_learning/conf/xdoclet/struts-forms.xml =================================================================== RCS file: /usr/local/cvsroot/lams_learning/conf/xdoclet/struts-forms.xml,v diff -u -r1.11 -r1.12 --- lams_learning/conf/xdoclet/struts-forms.xml 28 Jun 2007 06:50:15 -0000 1.11 +++ lams_learning/conf/xdoclet/struts-forms.xml 12 Jul 2007 00:59:36 -0000 1.12 @@ -1,6 +1,10 @@ - + + + + + @@ -12,6 +16,9 @@ + + + @@ -29,5 +36,9 @@ - + + + + + Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java,v diff -u -r1.27 -r1.28 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java 28 Jun 2007 06:49:58 -0000 1.27 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java 12 Jul 2007 00:59:02 -0000 1.28 @@ -24,30 +24,9 @@ /* $$Id$$ */ package org.lamsfoundation.lams.learning.web.action; -import java.io.UnsupportedEncodingException; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.struts.action.ActionForm; -import org.apache.struts.action.ActionForward; -import org.apache.struts.action.ActionMapping; -import org.lamsfoundation.lams.learning.progress.ProgressException; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; -import org.lamsfoundation.lams.learning.service.LearnerServiceException; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; -import org.lamsfoundation.lams.learning.web.form.ActivityForm; -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.LearningDesign; -import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.Lesson; -import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsAction; -import org.lamsfoundation.lams.web.util.AttributeNames; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; /** * Base class for all activity action classes. Each subclass should call @@ -66,80 +45,5 @@ return learnerService; } - /** Setup the progress string and the lesson id in the actionForm */ - public ActionForward setupProgressString(ActionForm actionForm, HttpServletRequest request) { - - LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgress(request,getLearnerService()); - - ActivityForm activityForm = (ActivityForm) actionForm; - - // Calculate the progress summary. On join this method gets called twice, and we - // only want to calculate once - String progressSummary = activityForm.getProgressSummary(); - if ( progressSummary == null ) { - progressSummary = getProgressSummary(learnerProgress); - activityForm.setProgressSummary(progressSummary); - } - - Lesson currentLesson = learnerProgress.getLesson(); - if(currentLesson != null){ - activityForm.setLessonID(currentLesson.getLessonId()); - - LearningDesign currentDesign = currentLesson.getLearningDesign(); - if(currentDesign != null) - activityForm.setVersion(currentDesign.getDesignVersion()); - } - - - if(log.isDebugEnabled()) - log.debug("Entering activity: progress summary is "+activityForm.getProgressSummary()); - - return null; - } - private String getProgressSummary(LearnerProgress learnerProgress) { - StringBuffer progressSummary = new StringBuffer(100); - if ( learnerProgress == null ) { - progressSummary.append("attempted=&completed=¤t="); - progressSummary.append("&lessonID="); - Lesson currentLesson = learnerProgress.getLesson(); - if(currentLesson != null){ - progressSummary.append(currentLesson.getLessonId()); - } - } else { - progressSummary.append("attempted="); - boolean first = true; - for (Object obj : learnerProgress.getAttemptedActivities()) { - Activity activity = (Activity ) obj; - if ( ! first ) { - progressSummary.append("_"); - } else { - first = false; - } - progressSummary.append(activity.getActivityId()); - } - - progressSummary.append("&completed="); - first = true; - for ( Object obj : learnerProgress.getCompletedActivities() ) { - Activity activity = (Activity ) obj; - if ( ! first ) { - progressSummary.append("_"); - } else { - first = false; - } - progressSummary.append(activity.getActivityId()); - } - - progressSummary.append("¤t="); - Activity currentActivity = learnerProgress.getCurrentActivity(); - if ( currentActivity != null ) { - progressSummary.append(currentActivity.getActivityId()); - } - - } - return progressSummary.toString(); - } - - } \ No newline at end of file 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.3 -r1.4 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java 3 Jul 2007 02:05:39 -0000 1.3 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java 12 Jul 2007 00:59:02 -0000 1.4 @@ -49,7 +49,7 @@ * * XDoclet definition: * - * @struts:action path="/branching" + * @struts:action path="/Branching" * name="BranchingForm" * parameter="method" * validate="false" @@ -118,6 +118,8 @@ } forward = mapping.findForward("displayBranchingWait"); + LearningWebUtil.setupProgressInRequest(groupForm, request, learnerProgress); + } else { // forward to the sequence activity. if ( log.isDebugEnabled() ) { @@ -127,10 +129,10 @@ // Set the branch as the current part of the sequence and display it learnerProgress = learnerService.chooseActivity(learnerId, learnerProgress.getLesson().getLessonId(), branch); forward = actionMappings.getActivityForward(branch, learnerProgress, true); + LearningWebUtil.putLearnerProgressInRequest(request,learnerProgress); } } - - LearningWebUtil.putLearnerProgressInRequest(request,learnerProgress); + return forward; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java,v diff -u -r1.15 -r1.16 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java 28 Jun 2007 06:49:58 -0000 1.15 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java 12 Jul 2007 00:59:02 -0000 1.16 @@ -31,6 +31,7 @@ import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; +import org.lamsfoundation.lams.learning.web.form.ActivityForm; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learningdesign.Activity; @@ -84,10 +85,8 @@ progress = learnerService.joinLesson(learnerId, lesson.getLessonId()); } - LearningWebUtil.putLearnerProgressInRequest(request,progress); - // need to do the choose first as the chooseActivity / joinLesson changes the progress details - setupProgressString(actionForm, request); + LearningWebUtil.setupProgressInRequest((ActivityForm)actionForm, request, progress); ActionForward forward = actionMappings.getActivityForward(activity, progress, true); return forward; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java,v diff -u -r1.16 -r1.17 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java 28 Jun 2007 06:49:58 -0000 1.16 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java 12 Jul 2007 00:59:02 -0000 1.17 @@ -25,26 +25,22 @@ package org.lamsfoundation.lams.learning.web.action; import java.io.IOException; -import java.io.UnsupportedEncodingException; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.lamsfoundation.lams.learning.progress.ProgressException; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceException; +import org.lamsfoundation.lams.learning.web.form.ActivityForm; 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.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.util.WebUtil; -import org.lamsfoundation.lams.web.util.AttributeNames; /** * @author daveg @@ -96,7 +92,7 @@ return mapping.findForward("error"); } - setupProgressString(actionForm, request); + LearningWebUtil.setupProgressInRequest((ActivityForm)actionForm, request, progress); return forward; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java,v diff -u -r1.19 -r1.20 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java 18 May 2007 07:19:57 -0000 1.19 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java 12 Jul 2007 00:59:02 -0000 1.20 @@ -35,6 +35,7 @@ import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; +import org.lamsfoundation.lams.learning.web.form.ActivityForm; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -95,15 +96,14 @@ lessonId = WebUtil.readLongParam(request,"progressId"); } LearnerProgress learnerProgress = learnerService.getProgress(learnerId, lessonId); - LearningWebUtil.putLearnerProgressInRequest(request, learnerProgress); // Normally this is used to display the initial page, so initialDisplay=true. But if called from the // special handling for completed activities (ie close window) then we need to set it to false. boolean displayParallelFrames = WebUtil.readBooleanParam(request, PARAM_INITIAL_DISPLAY, true); ActivityMapping actionMappings = LearnerServiceProxy.getActivityMapping(getServlet().getServletContext()); ActionForward forward =actionMappings.getProgressForward(learnerProgress,false,displayParallelFrames,request,learnerService); - setupProgressString(actionForm, request); + LearningWebUtil.setupProgressInRequest((ActivityForm)actionForm, request, learnerProgress); if(log.isDebugEnabled()) log.debug(forward); 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.18 -r1.19 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java 28 Jun 2007 06:49:58 -0000 1.18 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java 12 Jul 2007 00:59:02 -0000 1.19 @@ -117,7 +117,7 @@ this.saveToken(request); - setupProgressString(form, request); + LearningWebUtil.setupProgressInRequest(form, request, learnerProgress); String forward = "displayOptions"; return mapping.findForward(forward); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayParallelActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayParallelActivityAction.java,v diff -u -r1.10 -r1.11 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayParallelActivityAction.java 17 Sep 2006 06:17:57 -0000 1.10 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayParallelActivityAction.java 12 Jul 2007 00:59:02 -0000 1.11 @@ -31,12 +31,12 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.learning.service.ICoreLearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; import org.lamsfoundation.lams.learning.web.bean.ActivityURL; import org.lamsfoundation.lams.learning.web.form.ActivityForm; import org.lamsfoundation.lams.learningdesign.*; -import org.lamsfoundation.lams.lesson.*; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learning.web.util.ParallelActivityMappingStrategy; @@ -64,15 +64,15 @@ HttpServletRequest request, HttpServletResponse response) { - setupProgressString(actionForm, request); ActivityForm form = (ActivityForm)actionForm; + ICoreLearnerService learnerService = getLearnerService(); ActivityMapping actionMappings = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); actionMappings.setActivityMappingStrategy(new ParallelActivityMappingStrategy()); - Activity activity = LearningWebUtil.getActivityFromRequest(request, getLearnerService()); + Activity activity = LearningWebUtil.getActivityFromRequest(request, learnerService); if (!(activity instanceof ParallelActivity)) { log.error(className+": activity not ParallelActivity "+activity.getActivityId()); return mapping.findForward(ActivityMapping.ERROR); @@ -98,6 +98,8 @@ } form.setActivityURLs(activityURLs); + LearningWebUtil.setupProgressInRequest((ActivityForm)actionForm, request, LearningWebUtil.getLearnerProgress(request, learnerService)); + return mapping.findForward("displayParallel"); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java,v diff -u -r1.13 -r1.14 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java 28 Jun 2007 06:49:58 -0000 1.13 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java 12 Jul 2007 00:59:02 -0000 1.14 @@ -31,6 +31,7 @@ import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; +import org.lamsfoundation.lams.learning.web.form.ActivityForm; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; import org.lamsfoundation.lams.learningdesign.Activity; @@ -59,20 +60,21 @@ HttpServletRequest request, HttpServletResponse response) { - setupProgressString(actionForm, request); - //ActivityForm form = (ActivityForm)actionForm; ActivityMapping actionMappings = LearningWebUtil.getActivityMapping(this.getServlet().getServletContext()); ICoreLearnerService learnerService = getLearnerService(); LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgress(request, learnerService); Activity activity = LearningWebUtil.getActivityFromRequest(request, learnerService); + if (!(activity instanceof ToolActivity)) { log.error(className+": activity not ToolActivity"); return mapping.findForward(ActivityMapping.ERROR); } + LearningWebUtil.setupProgressInRequest((ActivityForm)actionForm, request, learnerProgress); + ToolActivity toolActivity = (ToolActivity)activity; String url = actionMappings.getLearnerToolURL(learnerProgress.getLesson(), toolActivity, learnerProgress.getUser()); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java,v diff -u -r1.16 -r1.17 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java 28 Jun 2007 06:49:58 -0000 1.16 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java 12 Jul 2007 00:59:02 -0000 1.17 @@ -49,8 +49,6 @@ import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.util.AttributeNames; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; /** @@ -133,28 +131,32 @@ User learner = LearningWebUtil.getUser(learnerService); Lesson lesson = learnerService.getLesson(lessonId); - if ( activity != null ) { + // don't use LearningWebUtil.getLearnerProgress(request, learnerService) as it may try to get the lesson + // from the activity and the activity may be null (if this was a system stop gate). + LearnerProgress learnerProgress = (LearnerProgress)request.getAttribute(ActivityAction.LEARNER_PROGRESS_REQUEST_ATTRIBUTE); + if ( learnerProgress == null ) { + learnerProgress = learnerService.getProgress(learner.getUserId(), lessonId); + } + + if ( activity != null ) { Integer totalNumActiveLearners = learnerService.getCountActiveLearnersByLesson(lesson.getLessonId()); //knock the gate boolean gateOpen = learnerService.knockGate(activityId,learner,forceGate); //if the gate is closed, ask the learner to wait ( updating the cached learner progress on the way ) if ( ! gateOpen) { - return findViewByGateType(mapping, (DynaActionForm)form, activity, totalNumActiveLearners, lesson); + ActionForward forward = findViewByGateType(mapping, (DynaActionForm)form, activity, totalNumActiveLearners, lesson); + LearningWebUtil.setupProgressInRequest((DynaActionForm)form, request, learnerProgress); + return forward; } } // gate is open, so let the learner go to the next activity ( updating the cached learner progress on the way ) - // don't use LearningWebUtil.getLearnerProgress(request, learnerService) as it may try to get the lesson - // from the activity and the activity may be null (if this was a system stop gate). - LearnerProgress learnerProgress = (LearnerProgress)request.getAttribute(ActivityAction.LEARNER_PROGRESS_REQUEST_ATTRIBUTE); - if ( learnerProgress == null ) { - learnerProgress = learnerService.getProgress(learner.getUserId(), lessonId); - } return LearningWebUtil.completeActivity(request, response, actionMappings, learnerProgress, activity, learner.getUserId(), learnerService, true); + } //--------------------------------------------------------------------- Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java,v diff -u -r1.27 -r1.28 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java 28 Jun 2007 06:49:58 -0000 1.27 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java 12 Jul 2007 00:59:02 -0000 1.28 @@ -47,13 +47,10 @@ import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; -import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.util.AttributeNames; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; /** @@ -151,7 +148,9 @@ groupForm.set("previewLesson",learnerProgress.getLesson().isPreviewLesson()); groupForm.set("title", activity.getTitle()); - if ( groupingDone ) { + LearningWebUtil.setupProgressInRequest(groupForm, request, learnerProgress); + + if ( groupingDone ) { request.setAttribute(FINISHED_BUTTON, Boolean.TRUE); return mapping.findForward(VIEW_GROUP); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LessonCompleteActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LessonCompleteActivityAction.java,v diff -u -r1.2 -r1.3 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LessonCompleteActivityAction.java 17 Sep 2006 06:17:57 -0000 1.2 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LessonCompleteActivityAction.java 12 Jul 2007 00:59:02 -0000 1.3 @@ -30,6 +30,8 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.learning.web.form.ActivityForm; +import org.lamsfoundation.lams.learning.web.util.LearningWebUtil; @@ -62,8 +64,7 @@ HttpServletRequest request, HttpServletResponse response) { - - setupProgressString(actionForm, request); + LearningWebUtil.setupProgressInRequest((ActivityForm)actionForm, request, LearningWebUtil.getLearnerProgress(request, getLearnerService())); return mapping.findForward("lessonComplete"); } } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java,v diff -u -r1.14 -r1.15 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java 28 Jun 2007 06:49:58 -0000 1.14 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java 12 Jul 2007 00:59:02 -0000 1.15 @@ -69,7 +69,6 @@ HttpServletRequest request, HttpServletResponse response) { - setupProgressString(actionForm, request); ActivityForm form = (ActivityForm)actionForm; ActivityMapping actionMappings = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); @@ -100,6 +99,7 @@ return mapping.findForward(ActivityMapping.ERROR); } + LearningWebUtil.setupProgressInRequest(form, request, learnerProgress); return mapping.findForward("displayTool"); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/SequenceActivityAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/SequenceActivityAction.java,v diff -u -r1.3 -r1.4 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/SequenceActivityAction.java 29 Jun 2007 07:29:16 -0000 1.3 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/SequenceActivityAction.java 12 Jul 2007 00:59:02 -0000 1.4 @@ -24,26 +24,17 @@ /* $$Id$$ */ package org.lamsfoundation.lams.learning.web.action; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.apache.struts.action.DynaActionForm; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; -import org.lamsfoundation.lams.learning.web.bean.ActivityURL; import org.lamsfoundation.lams.learning.web.form.ActivityForm; -import org.lamsfoundation.lams.learning.web.form.OptionsActivityForm; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.NullActivity; -import org.lamsfoundation.lams.learningdesign.OptionsActivity; import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.learning.web.util.ActivityMapping; @@ -102,11 +93,10 @@ request.setAttribute(AttributeNames.PARAM_TITLE, activity.getTitle()); request.setAttribute(AttributeNames.PARAM_LESSON_ID, learnerProgress.getLesson().getLessonId()); request.setAttribute(AttributeNames.PARAM_LEARNER_PROGRESS_ID, learnerProgress.getLearnerProgressId()); - setupProgressString(form, request); forward = mapping.findForward("empty"); } - LearningWebUtil.putLearnerProgressInRequest(request,learnerProgress); + LearningWebUtil.setupProgressInRequest(form, request, learnerProgress); return forward; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMappingStrategy.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMappingStrategy.java,v diff -u -r1.16 -r1.17 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMappingStrategy.java 28 Jun 2007 06:49:58 -0000 1.16 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMappingStrategy.java 12 Jul 2007 00:59:02 -0000 1.17 @@ -26,6 +26,7 @@ import java.io.Serializable; +import org.apache.log4j.Logger; import org.lamsfoundation.lams.learningdesign.Activity; /** @@ -34,7 +35,10 @@ */ public class ActivityMappingStrategy implements Serializable { + private static Logger log = Logger.getLogger(ActivityMappingStrategy.class); + private static final String PROGRESS_BROKEN_ACTION = "/progressBroken.do"; + /** * Returns the struts action used to display the specified activity. * @param activity, Activity to be displayed @@ -53,12 +57,13 @@ else if (activity.isOptionsActivity()) strutsAction = "/DisplayOptionsActivity.do"; else if (activity.isBranchingActivity()){ - strutsAction = "/LoadToolActivity.do"; + strutsAction = "/Branching.do?method=performBranching"; } else if ( activity.isSequenceActivity() ) { strutsAction = "/SequenceActivity.do"; } else { - // unexpected type, try the tool loading page - that will work for system tools - strutsAction = "/LoadToolActivity.do"; + // unexpected type + log.error("Unexpected complex activity type "+activity); + strutsAction = PROGRESS_BROKEN_ACTION; } } else // should be a simple activity - can handle tool, gates and grouping 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.19 -r1.20 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java 28 Jun 2007 06:49:58 -0000 1.19 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java 12 Jul 2007 00:59:02 -0000 1.20 @@ -33,10 +33,13 @@ import org.apache.log4j.Logger; import org.apache.struts.action.ActionForward; +import org.apache.struts.action.DynaActionForm; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceException; import org.lamsfoundation.lams.learning.web.action.ActivityAction; +import org.lamsfoundation.lams.learning.web.form.ActivityForm; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.usermanagement.User; @@ -232,5 +235,106 @@ return (ActivityMapping)wac.getBean("activityMapping"); } + /** Setup the progress string, version and lesson id in the activityForm. */ + public static void setupProgressInRequest(ActivityForm activityForm, HttpServletRequest request, LearnerProgress learnerProgress) { + + putLearnerProgressInRequest(request, learnerProgress); + + // Calculate the progress summary. On join this method gets called twice, and we + // only want to calculate once + String progressSummary = activityForm.getProgressSummary(); + if ( progressSummary == null ) { + progressSummary = getProgressSummary(learnerProgress); + activityForm.setProgressSummary(progressSummary); + } + + Lesson currentLesson = learnerProgress.getLesson(); + if(currentLesson != null){ + activityForm.setLessonID(currentLesson.getLessonId()); + + LearningDesign currentDesign = currentLesson.getLearningDesign(); + if(currentDesign != null) + activityForm.setVersion(currentDesign.getDesignVersion()); + } + + + if(log.isDebugEnabled()) + log.debug("Entering activity: progress summary is "+activityForm.getProgressSummary()); + + } + + /** Setup the progress string, version and lesson id in the actionForm. The values will go in the map with the + * keys "progressSummary", "lessonID", "version". */ + public static void setupProgressInRequest(DynaActionForm actionForm, HttpServletRequest request, LearnerProgress learnerProgress) { + + putLearnerProgressInRequest(request, learnerProgress); + // Calculate the progress summary. On join this method gets called twice, and we + // only want to calculate once + String progressSummary = (String) actionForm.get("progressSummary"); + if ( progressSummary == null ) { + progressSummary = getProgressSummary(learnerProgress); + actionForm.set("progressSummary",progressSummary); + } + + Lesson currentLesson = learnerProgress.getLesson(); + if(currentLesson != null){ + actionForm.set("lessonID",currentLesson.getLessonId()); + + LearningDesign currentDesign = currentLesson.getLearningDesign(); + if(currentDesign != null) + actionForm.set("version",currentDesign.getDesignVersion()); + } + + + if(log.isDebugEnabled()) + log.debug("Entering activity: progress summary is "+actionForm.get("progressSummary")); + + } + + private static String getProgressSummary(LearnerProgress learnerProgress) { + StringBuffer progressSummary = new StringBuffer(100); + if ( learnerProgress == null ) { + progressSummary.append("attempted=&completed=¤t="); + progressSummary.append("&lessonID="); + Lesson currentLesson = learnerProgress.getLesson(); + if(currentLesson != null){ + progressSummary.append(currentLesson.getLessonId()); + } + } else { + progressSummary.append("attempted="); + boolean first = true; + for (Object obj : learnerProgress.getAttemptedActivities()) { + Activity activity = (Activity ) obj; + if ( ! first ) { + progressSummary.append("_"); + } else { + first = false; + } + progressSummary.append(activity.getActivityId()); + } + + progressSummary.append("&completed="); + first = true; + for ( Object obj : learnerProgress.getCompletedActivities() ) { + Activity activity = (Activity ) obj; + if ( ! first ) { + progressSummary.append("_"); + } else { + first = false; + } + progressSummary.append(activity.getActivityId()); + } + + progressSummary.append("¤t="); + Activity currentActivity = learnerProgress.getCurrentActivity(); + if ( currentActivity != null ) { + progressSummary.append(currentActivity.getActivityId()); + } + + } + return progressSummary.toString(); + } + + } Index: lams_learning/web/WEB-INF/struts/struts-config.xml =================================================================== RCS file: /usr/local/cvsroot/lams_learning/web/WEB-INF/struts/Attic/struts-config.xml,v diff -u -r1.35 -r1.36 --- lams_learning/web/WEB-INF/struts/struts-config.xml 9 May 2007 00:59:43 -0000 1.35 +++ lams_learning/web/WEB-INF/struts/struts-config.xml 12 Jul 2007 00:59:27 -0000 1.36 @@ -26,9 +26,13 @@ type="org.lamsfoundation.lams.learning.web.form.OptionsActivityForm" /> - + + + + + @@ -40,6 +44,9 @@ + + + @@ -50,6 +57,19 @@ + + + + + + + + + + + + + @@ -109,17 +129,17 @@ /> + + + + + + <%@ taglib uri="tags-lams" prefix="lams" %> - /branching.do?method=performBranching&type=${BranchingForm.map.type}&activityID=${BranchingForm.map.activityID}&progressID=${BranchingForm.map.progressID} + /Branching.do?type=${BranchingForm.map.type}&activityID=${BranchingForm.map.activityID}&progressID=${BranchingForm.map.progressID} Index: lams_learning/web/layout/branchingWaitLayout.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_learning/web/layout/branchingWaitLayout.jsp,v diff -u -r1.1 -r1.2 --- lams_learning/web/layout/branchingWaitLayout.jsp 28 Jun 2007 06:50:42 -0000 1.1 +++ lams_learning/web/layout/branchingWaitLayout.jsp 12 Jul 2007 00:59:27 -0000 1.2 @@ -33,7 +33,7 @@ <fmt:message key="${label.branching.title}"/> - /branching.do?method=performBranching&type=${BranchingForm.map.type}&activityID=${BranchingForm.map.activityID}&progressID=${BranchingForm.map.progressID} + /Branching.do?method=performBranching&type=${BranchingForm.map.type}&activityID=${BranchingForm.map.activityID}&progressID=${BranchingForm.map.progressID} &force=true