Index: lams_learning/conf/xdoclet/struts-forms.xml
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ActivityAction.java (.../ActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -re2f253930f8168e89432857e3492f8aecb09c633 -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java (.../BranchingActivityAction.java) (revision e2f253930f8168e89432857e3492f8aecb09c633)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/BranchingActivityAction.java (.../BranchingActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java (.../ChooseActivityAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/ChooseActivityAction.java (.../ChooseActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java (.../CompleteActivityAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/CompleteActivityAction.java (.../CompleteActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -r0b15f95c45e3f984eb6b422bb035fb6d9f824e82 -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision 0b15f95c45e3f984eb6b422bb035fb6d9f824e82)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayActivityAction.java (.../DisplayActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayOptionsActivityAction.java (.../DisplayOptionsActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayParallelActivityAction.java (.../DisplayParallelActivityAction.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayParallelActivityAction.java (.../DisplayParallelActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java (.../DisplayToolActivityAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java (.../DisplayToolActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java (.../GateAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java (.../GateAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LessonCompleteActivityAction.java (.../LessonCompleteActivityAction.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LessonCompleteActivityAction.java (.../LessonCompleteActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java (.../LoadToolActivityAction.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LoadToolActivityAction.java (.../LoadToolActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -r83a60b6d3abdd08250edce24a25a78263cd6b984 -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/SequenceActivityAction.java (.../SequenceActivityAction.java) (revision 83a60b6d3abdd08250edce24a25a78263cd6b984)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/SequenceActivityAction.java (.../SequenceActivityAction.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMappingStrategy.java (.../ActivityMappingStrategy.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMappingStrategy.java (.../ActivityMappingStrategy.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/LearningWebUtil.java (.../LearningWebUtil.java) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -r9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6 -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 9481bb9c6f8c0e4d6fbed6b230a41c77feda64c6)
+++ lams_learning/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -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
===================================================================
diff -u -rdd42ee56aadaa0f237dd0766a197cb418f182b7e -r5863520d75343b47f77b05ad3bd7045a9a39af49
--- lams_learning/web/layout/branchingWaitLayout.jsp (.../branchingWaitLayout.jsp) (revision dd42ee56aadaa0f237dd0766a197cb418f182b7e)
+++ lams_learning/web/layout/branchingWaitLayout.jsp (.../branchingWaitLayout.jsp) (revision 5863520d75343b47f77b05ad3bd7045a9a39af49)
@@ -33,7 +33,7 @@
- /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