Index: lams_learning/conf/language/ApplicationResources.properties =================================================================== diff -u -r5aff7aa069793bc34e60b304e69e9e9fceb996f5 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 5aff7aa069793bc34e60b304e69e9e9fceb996f5) +++ lams_learning/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -11,15 +11,24 @@ exit.heading=You have exited from this Lesson. # Message for the "You have exited" screen exit.message=You can resume this lesson using the Resume button. +# Text for all "Next" buttons in learning. +label.next.button=Next +# Text for all "Finish" buttons in learning. +label.finish.button=Finish +# Message displayed in a parallel activity window when one activity is finished but the other one isn't finished. message.activity.parallel.partialComplete=You have to complete the other task before progressing to the next activity.... +# Message displayed in a parallel activity window if the user's browser can't support frames. message.activity.parallel.noFrames=Your browser does not handle frames! + +# Message displayed in the optional activity window if the user tries to click Choose without selecting an activity from the list. message.activity.options.noActivitySelected=Please select an activity from the list +# Message displayed in the optional activity window to let the learner know how many activities they need to complete to finish the optional activity message.activity.options.activityCount=You must complete at least {0} of these {1} activities. +# General instructions displayed in the optional activity window message.activity.options.note=Note: Once you finish any of the above activities you can revisit them by using the progress bar on the left. - +# Optional activity window Choose button label.activity.options.choose=Choose -label.activity.finish=Finish label.synch.gate.title=Synch Gate label.synch.gate.message=You have stopped at a gate. You cannot continue until all of your group/class reach this point. label.permission.gate.title=Permission Gate @@ -28,14 +37,21 @@ label.schedule.gate.open.message=Schedule Gate will be opened at: label.schedule.gate.close.message=Schedule Gate will be closed at: label.gate.waiting.learners={0} out of {1} are waiting in front of the gate. -label.gate.refresh.message=Click Next if you are told that the gate is open. This page will refresh automatically in 1 minute. -label.gate.next.button=Next +label.gate.refresh.message=Click Next if you are told that the gate is open. This page will refresh automatically in 1 minute. +# Message displayed when a closed gate is encountered during a preview. +label.gate.preview.message=As this is a preview, clicking Next will go to the next activity. Normally the learner would have to wait until the gate is opened. # Heading for the two "grouping" pages label.view.groups.title=Groups # Message displayed to learner who is waiting for chosen grouping to occur -message.view.groups.wait=Some of your following tasks require a group. You cannot continue until the groups have been selected. Click Next if you are told that the groups have been created. This page will refresh automatically in 5 minutes. +label.view.view.groups.wait.message=Some of your following tasks require a group. You cannot continue until the groups have been selected. Click Next if you are told that the groups have been created. This page will refresh automatically in 5 minutes. +# Message displayed when a chosen grouping is encountered during a preview. +label.grouping.preview.message=As this is a preview, clicking Next will do an automatic grouping. Normally the learner would have to wait until the grouping is done. +# Heading for page used in Preview when an activity is set to define later. +label.preview.definelater.title=Activity is set to Define Later +label.preview.definelater.message=The next activity ({0}) is set to define later. Normally a staff member would set the content for the activity before the learner's can access the activity. For the purposes of preview, the default content for the activity will be displayed. + # Export Portfolio internal system error error.system.exportPortfolio=An internal error has occurred with the Export Portfolio Functionality. If reporting this error, please report:
{0} # Export Portfolio system error in the learner module Index: lams_learning/conf/xdoclet/struts-forms.xml =================================================================== diff -u -r57e83f8443e586e862dae836429599459eade2c0 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision 57e83f8443e586e862dae836429599459eade2c0) +++ lams_learning/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -1,4 +1,5 @@ + @@ -8,5 +9,6 @@ + Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java =================================================================== diff -u -r4f63e229406635f45a2a98726c9c47e554210e01 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision 4f63e229406635f45a2a98726c9c47e554210e01) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ILearnerService.java (.../ILearnerService.java) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -83,12 +83,13 @@ public LearnerProgress getProgressById(Long progressId); /** - * Return the current progress data against progress id. + * Return the current progress data for a user for a lesson * Returns a DTO suitable to send to Flash. - * @param progressId + * @param lesson id + * @param learner id * @return */ - public LearnerProgressDTO getProgressDTOById(Long progressId); + public LearnerProgressDTO getProgressDTOByLessonId(Long lessonId, Integer learnerId); /** * Marks an activity as attempted. Called when a user selects an OptionsActivity. @@ -197,9 +198,10 @@ * @param lessonId lesson id * @param groupingActivityId the activity that has create grouping. * @param learnerId the learner who triggers the grouping. + * @param forceGrouping if forceGrouping==true and the lesson is a preview lesson then the groupings is done irrespective of the grouping type * @return true if grouping done, false if waiting for grouping to occur */ - public boolean performGrouping(Long lessonId, Long groupingActivityId, Integer learnerId); + public boolean performGrouping(Long lessonId, Long groupingActivityId, Integer learnerId, boolean forceGrouping); /** @@ -210,8 +212,10 @@ * @param gateid the gate that current learner is facing. It could be * synch gate, schedule gate or permission gate. * @param knocker the learner who wants to go through the gate. + * @param forceGate if forceGate==true and the lesson is a preview lesson then the gate is opened straight away. + * @return true if the gate is now open */ - public boolean knockGate(Long lessonId, Long gateActivityId, User knocker); + public boolean knockGate(Long lessonId, Long gateActivityId, User knocker, boolean forceGate); /** * Check up the gate status to go through the gate. This also updates the gate. @@ -223,6 +227,8 @@ * Don't supply the actual gate from the cached web version * as it might be out of date or not attached to the session * @param knocker the learner who wants to go through the gate. + * @param forceGate if forceGate==true and the lesson is a preview lesson then the gate is opened straight away. + * @return true if the gate is now open */ - public boolean knockGate(Long lessonId, GateActivity gateActivity, User knocker); + public boolean knockGate(Long lessonId, GateActivity gateActivity, User knocker, boolean forceGate); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -r4f63e229406635f45a2a98726c9c47e554210e01 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 4f63e229406635f45a2a98726c9c47e554210e01) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -255,7 +255,8 @@ } createToolSessionsIfNecessary(learnerProgress); - return learnerProgress; + lessonService.cacheLessonUser(lesson, learner); + return learnerProgress; } @@ -281,11 +282,11 @@ } /** - * @see org.lamsfoundation.lams.learning.service.ILearnerService#getProgressDTOById(java.lang.Long) + * @see org.lamsfoundation.lams.learning.service.ILearnerService#getProgressDTOByLessonId(java.lang.Long, org.lamsfoundation.lams.usermanagement.User) */ - public LearnerProgressDTO getProgressDTOById(Long progressId) + public LearnerProgressDTO getProgressDTOByLessonId(Long lessonId, Integer learnerId) { - return learnerProgressDAO.getLearnerProgress(progressId).getLearnerProgressData(); + return learnerProgressDAO.getLearnerProgressByLearner(learnerId, lessonId).getLearnerProgressData(); } /** @@ -410,7 +411,7 @@ * @throws LearnerServiceException * @see org.lamsfoundation.lams.learning.service.ILearnerService#performGrouping(java.lang.Long, java.lang.Long, java.lang.Integer) */ - public boolean performGrouping(Long lessonId, Long groupingActivityId, Integer learnerId) throws LearnerServiceException + public boolean performGrouping(Long lessonId, Long groupingActivityId, Integer learnerId, boolean forceGrouping) throws LearnerServiceException { GroupingActivity groupingActivity = (GroupingActivity) activityDAO.getActivityByActivityId(groupingActivityId, GroupingActivity.class); User learner = userManagementService.getUserById(learnerId); @@ -419,12 +420,28 @@ try { if ( groupingActivity != null && groupingActivity.getCreateGrouping()!=null && learner != null ) { Grouping grouping = groupingActivity.getCreateGrouping(); + if ( grouping.isRandomGrouping() ) { + // normal and preview cases for random grouping lessonService.performGrouping(lessonId, groupingActivity, learner); groupingDone = true; - } else { + + } else if ( forceGrouping ) { + // preview case for chosen grouping + Lesson lesson = getLesson(lessonId); + if ( lesson.isPreviewLesson() ) { + ArrayList learnerList = new ArrayList(); + learnerList.add(learner); + lessonService.performGrouping(groupingActivity, (String)null, learnerList); + groupingDone = true; + } + } + + if ( ! groupingDone ) { + // normal case for chosen grouping groupingDone = grouping.doesLearnerExist(learner); } + } else { String error = "Grouping activity "+groupingActivityId+" learner "+learnerId+" does not exist. Cannot perform grouping."; log.error(error); @@ -440,10 +457,10 @@ /** * @see org.lamsfoundation.lams.learning.service.ILearnerService#knockGate(java.lang.Long, java.lang.Long, org.lamsfoundation.lams.usermanagement.User) */ - public boolean knockGate(Long lessonId, Long gateActivityId, User knocker) { + public boolean knockGate(Long lessonId, Long gateActivityId, User knocker, boolean forceGate) { GateActivity gate = (GateActivity) activityDAO.getActivityByActivityId(gateActivityId, GateActivity.class); if ( gate != null ) { - return knockGate(lessonId, gate,knocker); + return knockGate(lessonId, gate,knocker, forceGate); } String error = "Gate activity "+gateActivityId+" does not exist. Cannot knock on gate."; @@ -453,17 +470,25 @@ /** * @see org.lamsfoundation.lams.learning.service.ILearnerService#knockGate(java.lang.Long, org.lamsfoundation.lams.learningdesign.GateActivity, org.lamsfoundation.lams.usermanagement.User) */ - public boolean knockGate(Long lessonId, GateActivity gate, User knocker) + public boolean knockGate(Long lessonId, GateActivity gate, User knocker, boolean forceGate) { //get all learners who have started the lesson List lessonLearners = getActiveLearnersByLesson(lessonId); - - boolean gateOpen = false; - //knock the gate. - if(gate.shouldOpenGateFor(knocker,lessonLearners)) - gateOpen = true; - else - gateOpen = false; + + boolean gateOpen = false; + + if ( forceGate ) { + Lesson lesson = getLesson(lessonId); + if ( lesson.isPreviewLesson() ) { + // special case for preview - if forceGate is true then brute force open the gate + gateOpen = gate.forceGateOpen(); + } + } + + if ( ! gateOpen ) { + // normal case - knock the gate. + gateOpen = gate.shouldOpenGateFor(knocker,lessonLearners); + } //update gate including updating the waiting list and gate status in //the database. Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java =================================================================== diff -u -r5aff7aa069793bc34e60b304e69e9e9fceb996f5 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java (.../DisplayToolActivityAction.java) (revision 5aff7aa069793bc34e60b304e69e9e9fceb996f5) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/DisplayToolActivityAction.java (.../DisplayToolActivityAction.java) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -37,18 +37,24 @@ import org.lamsfoundation.lams.lesson.LearnerProgress; /** - * Action class to forward the user to a Tool. + * Action class to forward the user to a Tool. If it is in preview and the define + * later flag is set on the activity, then go to the tool page via a special message + * page. * * @author daveg * * XDoclet definition: * * @struts:action path="/DisplayToolActivity" name="activityForm" * validate="false" scope="request" - * + * @struts:action-forward name="previewDefineLater" path=".previewDefineLater" */ public class DisplayToolActivityAction extends ActivityAction { + public static final String DEFINE_LATER = "previewDefineLater"; + public static final String PARAM_ACTIVITY_TITLE = "activityTitle"; + public static final String PARAM_ACTIVITY_URL = "activityURL"; + /** * Gets a tool activity from the request (attribute) and uses a redirect * to forward the user to the tool. @@ -74,14 +80,20 @@ ToolActivity toolActivity = (ToolActivity)activity; String url = actionMappings.getLearnerToolURL(learnerProgress.getLesson(), toolActivity, learnerProgress.getUser()); - try - { - response.sendRedirect(url); + + if ( toolActivity.getDefineLater() && learnerProgress.getLesson().isPreviewLesson() ) { + // preview define later + request.setAttribute(PARAM_ACTIVITY_TITLE, activity.getTitle()); + request.setAttribute(PARAM_ACTIVITY_URL, url); + return mapping.findForward("previewDefineLater"); + } else { + // normal case + try { + response.sendRedirect(url); + } catch (java.io.IOException e) { + return mapping.findForward(ActivityMapping.ERROR); + } } - catch (java.io.IOException e) - { - return mapping.findForward(ActivityMapping.ERROR); - } return null; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java =================================================================== diff -u -r2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java (.../GateAction.java) (revision 2bfd4245ec82b86c782db4a9be15f24c3e9a6ccc) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GateAction.java (.../GateAction.java) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -43,6 +43,7 @@ import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; import org.lamsfoundation.lams.learningdesign.SynchGateActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; @@ -56,6 +57,11 @@ *

Learner will progress to the next activity if the gate is open. Otherwise, * the learner should see the waiting page.

* + *

Has a special override key - if the parameter force is set and the + * lesson is a preview lesson, then the gate will be opened straight away. This + * allows the author to see gate shut initially but override it and open it + * rather than being held up by the gate.

+ * * @author Jacky Fang * @since 2005-4-7 * @version 1.1 @@ -91,6 +97,9 @@ private static final String VIEW_SCHEDULE_GATE = "scheduleGate"; private static final String VIEW_SYNCH_GATE = "synchGate"; + /** Input parameter. Boolean value */ + public static final String PARAM_FORCE_GATE_OPEN = "force"; + //--------------------------------------------------------------------- // Struts Dispatch Method //--------------------------------------------------------------------- @@ -115,13 +124,15 @@ //validate pre-condition. validateLearnerProgress(learnerProgress); + boolean forceGate = WebUtil.readBooleanParam(request,PARAM_FORCE_GATE_OPEN,false); + //initialize service object ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); Integer totalNumActiveLearners = learnerService.getCountActiveLearnersByLesson(learnerProgress.getLesson().getLessonId()); //knock the gate boolean gateOpen = learnerService.knockGate(learnerProgress.getLesson().getLessonId(), learnerProgress.getNextActivity().getActivityId(), - learnerProgress.getUser()); + learnerProgress.getUser(),forceGate); // if the gate is open, let the learner go to the next activity ( updating the cached learner progress on the way ) // pass only the ids in to completeActivity, so that the service level looks up the objects. // if we reuse our cached entries, hibernate may throw session errors (if the objects are CGLIB entities). @@ -139,7 +150,7 @@ else { learnerProgress = learnerService.getProgressById(learnerProgress.getLearnerProgressId()); LearningWebUtil.setLearnerProgress(learnerProgress); - return findViewByGateType(mapping, (DynaActionForm)form, learnerProgress.getCurrentActivity(), totalNumActiveLearners); + return findViewByGateType(mapping, (DynaActionForm)form, learnerProgress.getCurrentActivity(), totalNumActiveLearners, learnerProgress.getLesson().isPreviewLesson()); } } @@ -185,11 +196,13 @@ private ActionForward findViewByGateType(ActionMapping mapping, DynaActionForm gateForm, Activity gate, - Integer totalNumActiveLearners) + Integer totalNumActiveLearners, + boolean isPreviewLesson) { //dispatch the view according to the type of the gate. if ( gate != null ) { gateForm.set("totalLearners",totalNumActiveLearners); + gateForm.set("previewLesson",isPreviewLesson); if(gate.isSynchGate()) return viewSynchGate(mapping,gateForm,(SynchGateActivity)gate); else if(gate.isScheduleGate()) Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java =================================================================== diff -u -rdf5800a31c32417e062928bfca21c1b2c2ed1472 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision df5800a31c32417e062928bfca21c1b2c2ed1472) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -36,6 +36,7 @@ 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.ILearnerService; import org.lamsfoundation.lams.learning.service.LearnerServiceException; import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; @@ -45,6 +46,7 @@ import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -55,6 +57,9 @@ * (random grouping) and allows the learner to view the result of the grouping. *

* + *

Has a special override key - if the parameter force is set and the + * lesson is a preview lesson, any chosen grouping will be overridden. + *

* @author Jacky Fang * @since 2005-3-29 * @version 1.1 @@ -78,6 +83,9 @@ public class GroupingAction extends LamsDispatchAction { + /** Input parameter. Boolean value */ + public static final String PARAM_FORCE_GROUPING = "force"; + //--------------------------------------------------------------------- // Instance variables //--------------------------------------------------------------------- @@ -99,6 +107,8 @@ //--------------------------------------------------------------------- /** * Perform the grouping for the users who are currently running the lesson. + * If force is set to true, then we should be in preview mode, and we want to + * override the chosen grouping to make it group straight away. * * @param mapping * @param form @@ -117,17 +127,21 @@ LearnerProgress learnerProgress = LearningWebUtil.getLearnerProgressByID(request, getServlet().getServletContext()); validateLearnerProgress(learnerProgress); - + + boolean forceGroup = WebUtil.readBooleanParam(request,PARAM_FORCE_GROUPING,false); + //initialize service object ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); boolean groupingDone = learnerService.performGrouping(learnerProgress.getLesson().getLessonId(), learnerProgress.getNextActivity().getActivityId(), - LearningWebUtil.getUserId()); + LearningWebUtil.getUserId(),forceGroup); LearningWebUtil.putActivityInRequest(request, learnerProgress.getNextActivity(), learnerService); LearningWebUtil.setLessonId(learnerProgress.getLesson().getLessonId()); + DynaActionForm groupForm = (DynaActionForm)form; + groupForm.set("previewLesson",learnerProgress.getLesson().isPreviewLesson()); return mapping.findForward(groupingDone ? VIEW_GROUP : WAIT_GROUP); } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== diff -u -r29e550368d14fc56c421abeabad9215d043fa77e -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision 29e550368d14fc56c421abeabad9215d043fa77e) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java (.../LearnerAction.java) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -310,10 +310,16 @@ //SessionBean sessionBean = LearningWebUtil.getSessionBean(request,getServlet().getServletContext()); + Integer learnerId = LearningWebUtil.getUserId(); ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - long learnerProgressId = WebUtil.readLongParam(request,LearningWebUtil.PARAM_PROGRESS_ID); - LearnerProgressDTO learnerProgress = learnerService.getProgressDTOById(new Long(learnerProgressId)); + Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID,true); + if ( lessonId == null ) { + // temporary code until Flash gets updated to send the lessonID parameter + lessonId = WebUtil.readLongParam(request,LearningWebUtil.PARAM_PROGRESS_ID); + } + LearnerProgressDTO learnerProgress = learnerService.getProgressDTOByLessonId(lessonId, learnerId); + message = new FlashMessage("getFlashProgressData",learnerProgress); } catch (Exception e ) { Index: lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java =================================================================== diff -u -r4f63e229406635f45a2a98726c9c47e554210e01 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision 4f63e229406635f45a2a98726c9c47e554210e01) +++ lams_learning/test/java/org/lamsfoundation/lams/learning/service/TestLearnerService.java (.../TestLearnerService.java) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -337,7 +337,7 @@ assertTrue("verify the existance of test user",!randomGrouping.doesLearnerExist(testUser)); - learnerService.performGrouping(Test_Lesson_ID,randomGroupingActivity.getActivityId(),testUser.getUserId()); + learnerService.performGrouping(Test_Lesson_ID,randomGroupingActivity.getActivityId(),testUser.getUserId(),false); assertTrue("verify the existance of test user",randomGrouping.doesLearnerExist(testUser)); } @@ -347,7 +347,7 @@ //get sync gate GateActivity synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); - boolean gateOpen = learnerService.knockGate(Test_Lesson_ID, synchGate.getActivityId(),testUser); + boolean gateOpen = learnerService.knockGate(Test_Lesson_ID, synchGate.getActivityId(),testUser,false); assertTrue("gate is closed",!gateOpen); synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); @@ -362,7 +362,7 @@ //get sync gate GateActivity synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); - boolean gateOpen = learnerService.knockGate(Test_Lesson_ID, synchGate.getActivityId(),testUser2); + boolean gateOpen = learnerService.knockGate(Test_Lesson_ID, synchGate.getActivityId(),testUser2,false); assertTrue("gate is closed",gateOpen); synchGate = (GateActivity)learnerService.getActivity(new Long(TEST_SYNCHGATE_ACTIVITY_ID)); Index: lams_learning/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u -r5aff7aa069793bc34e60b304e69e9e9fceb996f5 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 5aff7aa069793bc34e60b304e69e9e9fceb996f5) +++ lams_learning/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -27,6 +27,7 @@ /> + @@ -36,6 +37,7 @@ + @@ -124,6 +126,11 @@ unknown="false" validate="false" > + + + - - - - - - -
- - - -
+ + + + +  +&force=true + + + +  + + + + + + + Index: lams_learning/web/grouping/show.jsp =================================================================== diff -u -rdf5800a31c32417e062928bfca21c1b2c2ed1472 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/web/grouping/show.jsp (.../show.jsp) (revision df5800a31c32417e062928bfca21c1b2c2ed1472) +++ lams_learning/web/grouping/show.jsp (.../show.jsp) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -52,7 +52,7 @@   - + Index: lams_learning/web/grouping/wait.jsp =================================================================== diff -u -r4f63e229406635f45a2a98726c9c47e554210e01 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/web/grouping/wait.jsp (.../wait.jsp) (revision 4f63e229406635f45a2a98726c9c47e554210e01) +++ lams_learning/web/grouping/wait.jsp (.../wait.jsp) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -28,15 +28,27 @@
+ +

- + + + + &force=true + + + + + + + Index: lams_learning/web/optionsActivity.jsp =================================================================== diff -u -re182e8855b819d6198fb714a61246f2714caee87 -ra0722fe03d763f9da5efc82987034d929e6a23a1 --- lams_learning/web/optionsActivity.jsp (.../optionsActivity.jsp) (revision e182e8855b819d6198fb714a61246f2714caee87) +++ lams_learning/web/optionsActivity.jsp (.../optionsActivity.jsp) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -149,7 +149,7 @@ Index: lams_learning/web/previewDefineLater.jsp =================================================================== diff -u --- lams_learning/web/previewDefineLater.jsp (revision 0) +++ lams_learning/web/previewDefineLater.jsp (revision a0722fe03d763f9da5efc82987034d929e6a23a1) @@ -0,0 +1,43 @@ + <%-- + Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + License Information: http://lamsfoundation.org/licensing/lams/2.0/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA + + http://www.gnu.org/licenses/gpl.txt + --%> + + <%@ taglib uri="tags-html" prefix="html" %> + <%@ taglib uri="tags-bean" prefix="bean" %> + <%@ taglib uri="tags-logic" prefix="logic" %> + <%@ taglib uri="tags-core" prefix="c" %> + <%@ taglib uri="tags-fmt" prefix="fmt" %> + + + + + + + + + + + \ No newline at end of file
 
 
- - + +
  - "> + ">

+ + + +
+ +