Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/EditOnFlyProcessor.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/service/EditOnFlyProcessor.java,v diff -u -r1.2 -r1.3 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/EditOnFlyProcessor.java 9 May 2007 01:03:36 -0000 1.2 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/EditOnFlyProcessor.java 7 Mar 2008 00:32:36 -0000 1.3 @@ -55,11 +55,11 @@ } /** Prepares to process children */ - public void startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { + public boolean startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { // Create a new current activity list, putting the old current one on the stack. activityListStack.push(currentActivityList); currentActivityList = new ArrayList(); - + return true; } /** Creates an ActivityPortfolio and sets up the list of its children. Doesn't create an entry if there are no children. */ Index: lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java,v diff -u -r1.26 -r1.27 --- lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java 20 Aug 2007 06:15:47 -0000 1.26 +++ lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java 7 Mar 2008 00:32:36 -0000 1.27 @@ -158,7 +158,9 @@ if(mode != null) req.setAttribute(AttributeNames.PARAM_MODE, mode); - + + req.setAttribute(AttributeNames.PARAM_EXPORT_PORTFOLIO_ENABLED, lesson.getLearnerExportAvailable() != null ? lesson.getLearnerExportAvailable(): Boolean.TRUE); + req.setAttribute(AttributeNames.PARAM_TITLE, lesson.getLessonName()); String serverUrl = Configuration.get(ConfigurationKeys.SERVER_URL); req.setAttribute("serverUrl", serverUrl); req.setAttribute(AttributeNames.PARAM_LESSON_ID,lessonId); Index: lams_central/src/java/org/lamsfoundation/lams/web/tag/HelpTag.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/web/tag/HelpTag.java,v diff -u -r1.13 -r1.14 --- lams_central/src/java/org/lamsfoundation/lams/web/tag/HelpTag.java 11 Feb 2008 04:22:58 -0000 1.13 +++ lams_central/src/java/org/lamsfoundation/lams/web/tag/HelpTag.java 7 Mar 2008 00:32:36 -0000 1.14 @@ -73,9 +73,15 @@ public int doStartTag() throws JspException { try { + int imgHeight = 25; + boolean div = true; + JspWriter writer = pageContext.getOut(); if (StringUtils.equals(style, "no-tabs")) { writer.println("
"); + } else if (StringUtils.equals(style, "small")) { + imgHeight = 18; + div = false; } else { writer.println("
"); } @@ -96,26 +102,30 @@ if(fullURL == null) return SKIP_BODY; - writer.println(""); + writer.println(""); } else if(page != null){ String fullURL = HelpUtil.constructPageURL(page, languageCode); - writer.println(""); + writer.println(""); } else { log.error("HelpTag unable to write out due to unspecified values."); - writer.println(""); + writer.println(""); } } catch (NullPointerException npe) { log.error("HelpTag unable to write out due to NullPointerException. Most likely a required paramater was unspecified or incorrect.", npe); // don't throw a JSPException as we want the system to still function. } - writer.println("
"); + if ( div ) + writer.println("
"); } catch (IOException e) { log.error("HelpTag unable to write out due to IOException.", e); Index: lams_central/web/learner.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/Attic/learner.jsp,v diff -u -r1.14 -r1.15 --- lams_central/web/learner.jsp 5 Jun 2007 05:53:07 -0000 1.14 +++ lams_central/web/learner.jsp 7 Mar 2008 00:32:36 -0000 1.15 @@ -8,7 +8,18 @@ - &mode="> + + + + + + &portfolioEnabled=&title=&mode="> + + + &portfolioEnabled=&title=&mode="> + + + <fmt:message key="title.learner.window"/> Index: lams_central/web/WEB-INF/web.xml =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/WEB-INF/Attic/web.xml,v diff -u -r1.31 -r1.32 --- lams_central/web/WEB-INF/web.xml 9 May 2007 01:05:11 -0000 1.31 +++ lams_central/web/WEB-INF/web.xml 7 Mar 2008 00:32:36 -0000 1.32 @@ -17,6 +17,7 @@ classpath:/org/lamsfoundation/lams/workspace/workspaceApplicationContext.xml classpath:/org/lamsfoundation/lams/web/webApplicationContext.xml classpath:/org/lamsfoundation/lams/integrationContext.xml + classpath:/org/lamsfoundation/lams/usermanagement/ldapContext.xml classpath:/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml classpath:/org/lamsfoundation/lams/learning/learningApplicationContext.xml @@ -153,26 +154,11 @@ - editLD - org.lamsfoundation.lams.authoring.web.EditOnFlyServlet - - - - storeLD - org.lamsfoundation.lams.authoring.web.StoreLDServlet - - - dumpWDDX org.lamsfoundation.lams.web.ReportWddxStructureServlet - storeTheme - org.lamsfoundation.lams.themes.web.StoreThemeServlet - - - SimpleUploader org.lamsfoundation.lams.web.LAMSUploadServlet @@ -217,8 +203,8 @@ - storeNotebookEntry - org.lamsfoundation.lams.notebook.web.StoreNBEntryServlet + updateCollapsedGroup + org.lamsfoundation.lams.web.UpdateCollapsedGroupServlet @@ -242,7 +228,42 @@ org.lamsfoundation.lams.web.FlashCrashDumpServlet + + editLD + org.lamsfoundation.lams.authoring.web.EditOnFlyServlet + + + LessonJoinServlet + org.lamsfoundation.lams.webservice.xml.LessonJoinServlet + + + + storeLD + org.lamsfoundation.lams.authoring.web.StoreLDServlet + + + + saveLessonOrder + org.lamsfoundation.lams.web.LessonOrderServlet + + + + storeTheme + org.lamsfoundation.lams.themes.web.StoreThemeServlet + + + + insertLearningDesign + org.lamsfoundation.lams.authoring.web.InsertLDServlet + + + + storeNotebookEntry + org.lamsfoundation.lams.notebook.web.StoreNBEntryServlet + + + action @@ -363,37 +384,53 @@ + dumpWDDX + /servlet/dumpWDDX + + + SimpleUploader + /fckeditor/editor/filemanager/upload/simpleuploader + + + updateCollapsedGroup + /servlet/updateCollapsedGroup + + + Connector + /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector + + + flashCrashDump + /servlet/flashCrashDump + + editLD /eof/authoring/editLearningDesign + LessonJoinServlet + /services/xml/LessonJoin/* + + storeLD /servlet/authoring/storeLearningDesignDetails - dumpWDDX - /servlet/dumpWDDX + saveLessonOrder + /servlet/saveLessonOrder storeTheme /themes/servlet/storeTheme - SimpleUploader - /fckeditor/editor/filemanager/upload/simpleuploader + insertLearningDesign + /servlet/authoring/insertLearningDesign storeNotebookEntry /servlet/notebook/storeNotebookEntry - - Connector - /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector - - - flashCrashDump - /servlet/flashCrashDump - 120 @@ -540,6 +577,7 @@ /download/ + LEARNER AUTHOR MONITOR GROUP MANAGER Index: lams_central/web/WEB-INF/tags/LearnerFlashEnabled.tag =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/WEB-INF/tags/Attic/LearnerFlashEnabled.tag,v diff -u -r1.1 -r1.2 --- lams_central/web/WEB-INF/tags/LearnerFlashEnabled.tag 5 Mar 2008 07:33:03 -0000 1.1 +++ lams_central/web/WEB-INF/tags/LearnerFlashEnabled.tag 7 Mar 2008 00:32:36 -0000 1.2 @@ -38,7 +38,7 @@ - true + true false Index: lams_central/web/WEB-INF/tags/ProgressOutput.tag =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/WEB-INF/tags/Attic/ProgressOutput.tag,v diff -u -r1.1 -r1.2 --- lams_central/web/WEB-INF/tags/ProgressOutput.tag 5 Mar 2008 07:33:03 -0000 1.1 +++ lams_central/web/WEB-INF/tags/ProgressOutput.tag 7 Mar 2008 00:32:36 -0000 1.2 @@ -38,6 +38,10 @@ <%@ taglib uri="tags-lams" prefix="lams" %>
  • + + + + @@ -53,7 +57,7 @@ - + @@ -63,7 +67,7 @@ -
      +
        Index: lams_central/web/css/defaultHTML.css =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/css/defaultHTML.css,v diff -u -r1.33 -r1.34 --- lams_central/web/css/defaultHTML.css 13 Feb 2008 00:37:31 -0000 1.33 +++ lams_central/web/css/defaultHTML.css 7 Mar 2008 00:32:36 -0000 1.34 @@ -78,6 +78,9 @@ margin-left:25px; } +span.h2font {color:#47bc23; + font-size:12px; } + h3 {color:#47bc23; font-size:12px; margin-left:10px; Index: lams_central/web/css/defaultHTML_learner.css =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/css/defaultHTML_learner.css,v diff -u -r1.17 -r1.18 --- lams_central/web/css/defaultHTML_learner.css 13 Feb 2008 00:37:31 -0000 1.17 +++ lams_central/web/css/defaultHTML_learner.css 7 Mar 2008 00:32:36 -0000 1.18 @@ -55,6 +55,8 @@ padding-top:10px; margin-bottom:5px; } +span.h2font {color:#47bc23; + font-size:14px; } h3 {color:#47bc23; font-size:13px; Index: lams_central/web/css/defaultHTML_rtl.css =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/css/defaultHTML_rtl.css,v diff -u -r1.19 -r1.20 --- lams_central/web/css/defaultHTML_rtl.css 13 Feb 2008 00:37:31 -0000 1.19 +++ lams_central/web/css/defaultHTML_rtl.css 7 Mar 2008 00:32:36 -0000 1.20 @@ -76,6 +76,10 @@ margin-right:25px; } +span.h2font {color:#47bc23; + font-size:12px; } + + h3 {color:#47bc23; font-size:12px; margin-right:10px; Index: lams_central/web/css/defaultHTML_rtl_learner.css =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/css/defaultHTML_rtl_learner.css,v diff -u -r1.10 -r1.11 --- lams_central/web/css/defaultHTML_rtl_learner.css 13 Feb 2008 00:37:31 -0000 1.10 +++ lams_central/web/css/defaultHTML_rtl_learner.css 7 Mar 2008 00:32:36 -0000 1.11 @@ -55,7 +55,10 @@ padding-top:10px; margin-bottom:5px; } +span.h2font {color:#47bc23; + font-size:14px; } + h3 {color:#47bc23; font-size:13px; margin-top:10px; Index: lams_central/web/css/ramsthemeHTML.css =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/css/Attic/ramsthemeHTML.css,v diff -u -r1.2 -r1.3 --- lams_central/web/css/ramsthemeHTML.css 10 May 2007 03:37:54 -0000 1.2 +++ lams_central/web/css/ramsthemeHTML.css 7 Mar 2008 00:32:36 -0000 1.3 @@ -23,6 +23,8 @@ h2 {color:#b9313d; } + +span.h2font {color:#b9313d; font-size:14px; } h3 {color:#f88431; } Index: lams_central/web/css/ramsthemeHTML_learner.css =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/css/Attic/ramsthemeHTML_learner.css,v diff -u -r1.1 -r1.2 --- lams_central/web/css/ramsthemeHTML_learner.css 20 Apr 2007 06:12:03 -0000 1.1 +++ lams_central/web/css/ramsthemeHTML_learner.css 7 Mar 2008 00:32:36 -0000 1.2 @@ -96,7 +96,9 @@ color:#b9313d; } -h2 {color:#f88431; } +h2 {color:#f88431; } + +span.h2font {color:#f88431; font-size:14px;} table.alternative-color th { background: url('../images/ramsthemecss/green_bg.jpg') repeat-x; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesignProcessor.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesignProcessor.java,v diff -u -r1.4 -r1.5 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesignProcessor.java 17 Jul 2007 01:33:31 -0000 1.4 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesignProcessor.java 7 Mar 2008 00:33:03 -0000 1.5 @@ -56,7 +56,7 @@ } /** A complex activity has been found. Do any processing needed at the start of the activity */ - public abstract void startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException ; + public abstract boolean startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException ; /** Do any processing needed at the end of a complex activity */ public abstract void endComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException ; @@ -97,26 +97,28 @@ protected void handleComplexActivity( Activity activity ) throws LearningDesignProcessorException { // ensure it is a real activity not a CGLIB proxy ComplexActivity complex = (ComplexActivity) activityDAO.getActivityByActivityId(activity.getActivityId(),SimpleActivity.class); - startComplexActivity(complex); + boolean processChildren = startComplexActivity(complex); - if ( activity.isSequenceActivity() ) { - // sequence is a funny one - the child activities are linked by transitions rather - // than ordered by order id - SequenceActivity sequenceActivity = (SequenceActivity) complex; - Activity child = sequenceActivity.getNextActivityByParent(new NullActivity()); - while ( ! child.isNull() ) { - handleActivity(child); - child = sequenceActivity.getNextActivityByParent(child); + if ( processChildren ) { + if ( activity.isSequenceActivity() ) { + // sequence is a funny one - the child activities are linked by transitions rather + // than ordered by order id + SequenceActivity sequenceActivity = (SequenceActivity) complex; + Activity child = sequenceActivity.getNextActivityByParent(new NullActivity()); + while ( ! child.isNull() ) { + handleActivity(child); + child = sequenceActivity.getNextActivityByParent(child); + } + + } else { + // work through all the child activities for this activity, in order id + Set children = new TreeSet(new ActivityOrderComparator()); + children.addAll(complex.getActivities()); + Iterator i=children.iterator(); + while ( i.hasNext() ) { + handleActivity((Activity)i.next()); + } } - - } else { - // work through all the child activities for this activity, in order id - Set children = new TreeSet(new ActivityOrderComparator()); - children.addAll(complex.getActivities()); - Iterator i=children.iterator(); - while ( i.hasNext() ) { - handleActivity((Activity)i.next()); - } } endComplexActivity(complex); Index: lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java,v diff -u -r1.19 -r1.20 --- lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java 21 Nov 2007 00:44:39 -0000 1.19 +++ lams_common/src/java/org/lamsfoundation/lams/web/util/AttributeNames.java 7 Mar 2008 00:33:03 -0000 1.20 @@ -63,6 +63,7 @@ public static final String PARAM_LESSON_ID = "lessonID"; public static final String PARAM_DIRECTORY_NAME = "directoryName"; public static final String PARAM_FILENAME = "filename"; + public static final String PARAM_EXPORT_PORTFOLIO_ENABLED = "portfolioEnabled"; public static final String PARAM_LIB = "library"; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java,v diff -u -r1.13 -r1.14 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 21 Nov 2007 00:45:21 -0000 1.13 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 7 Mar 2008 00:23:10 -0000 1.14 @@ -107,11 +107,11 @@ } /** Prepares to process children */ - public void startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { + public boolean startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { // Create a new current activity list, putting the old current one on the stack. activityListStack.push(currentPortfolioList); currentPortfolioList = new ArrayList(); - + return true; } /** Creates an ActivityPortfolio and sets up the list of its children. Doesn't create an entry if there are no children. */ Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java,v diff -u -r1.1 -r1.2 --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java 5 Mar 2008 07:29:03 -0000 1.1 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressBuilder.java 7 Mar 2008 00:23:10 -0000 1.2 @@ -38,6 +38,7 @@ import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignProcessorException; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.usermanagement.User; /** Creates a basic tree of the user's current progress - what is completed, urls to jump back to completed activities, etc */ @@ -51,7 +52,8 @@ ArrayList mainActivityList; ArrayStack activityListStack; ArrayList currentActivityList; - String forwardToLearnerURL; + String forceLearnerURL; + boolean previewMode; /** Create the builder. Supply all the data that will be needed to parse the design and build the portfolio entries. * @@ -80,30 +82,45 @@ this.currentActivityList = mainActivityList; this.activityListStack = new ArrayStack(5); - // setup the basic call to the learner screen, ready just to put the activity id on the end. Saves calculating it for every activity - this.forwardToLearnerURL = "/learning/learner.do?method=forwardToLearner" - +"&userID="+user.getUserId()+"lessonID="+progress.getLesson().getLessonId()+"&activityID="; + Lesson lesson = progress.getLesson(); + previewMode = lesson.isPreviewLesson(); + if ( previewMode) { + // setup the basic call to the learner screen, ready just to put the activity id on the end. Saves calculating it for every activity + this.forceLearnerURL = "learner.do?method=forceMoveRedirect&lessonID=" + +progress.getLesson().getLessonId()+"&destActivityID="; + } + } /** Prepares to process children */ - public void startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { + public boolean startComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { // Create a new current activity list, putting the old current one on the stack. activityListStack.push(currentActivityList); currentActivityList = new ArrayList(); + + if ( activity.isSequenceActivity() ) { + return ( progress.getProgressState(activity) != LearnerProgress.ACTIVITY_NOT_ATTEMPTED ); + } + return true; } + /** Creates an ActivityURL and sets up the list of its children. */ public void endComplexActivity(ComplexActivity activity) throws LearningDesignProcessorException { ActivityURL complexActivityURL = createActivityURL(activity); - if ( complexActivityURL.getStatus()!=LearnerProgress.ACTIVITY_NOT_ATTEMPTED && currentActivityList.size()>0 ) { + // don't want to show a branch if it isn't being done + if ( complexActivityURL.getStatus()!=LearnerProgress.ACTIVITY_NOT_ATTEMPTED || ! (activity.isSequenceActivity() + && activity.getParentActivity() != null && activity.getParentActivity().isBranchingActivity()) ) { complexActivityURL.setChildActivities(currentActivityList); + currentActivityList = (ArrayList) activityListStack.pop(); + currentActivityList.add(complexActivityURL); + } else { + currentActivityList = (ArrayList) activityListStack.pop(); } - currentActivityList = (ArrayList) activityListStack.pop(); - currentActivityList.add(complexActivityURL); } public void startSimpleActivity(SimpleActivity activity) throws LearningDesignProcessorException { @@ -133,7 +150,11 @@ log.error(error); throw new LearningDesignProcessorException(error); } - return LearningWebUtil.getActivityURL( activityMapping, progress, activity, false); + ActivityURL activityURL = LearningWebUtil.getActivityURL( activityMapping, progress, activity, false); + if ( activityURL.getStatus() == LearnerProgress.ACTIVITY_NOT_ATTEMPTED ) { + activityURL.setUrl( previewMode? forceLearnerURL+activity.getActivityId() : null); + } + return activityURL; } /** Get the list of all the activity progress DTOs, which in turn may contain other activity progress DTOs */ Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java,v diff -u -r1.14 -r1.15 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java 5 Mar 2008 07:29:03 -0000 1.14 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/ICoreLearnerService.java 7 Mar 2008 00:23:10 -0000 1.15 @@ -98,10 +98,10 @@ * Returns the current progress data, in the DTO format required by the jsp progress screen, of the User. * @param learnerId the Learner's userID * @param lessonId the Lesson to get progress from. - * @return progressList contains the learner's progress for the lesson. + * @return Array of two objects. [0] List, [1] Activity ID of the current activity * @throws LearnerServiceException in case of problems. */ - public List getStructuredActivityURLs(Integer learnerId, Long lessonId); + public Object[] getStructuredActivityURLs(Integer learnerId, Long lessonId); /** Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java,v diff -u -r1.76 -r1.77 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 5 Mar 2008 07:29:03 -0000 1.76 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 7 Mar 2008 00:23:10 -0000 1.77 @@ -364,14 +364,20 @@ /** * @see org.lamsfoundation.lams.learning.service.ICoreLearnerService#getStructuredProgressDTOs(java.lang.Long, java.lang.Long) */ - public List getStructuredActivityURLs(Integer learnerId, Long lessonId) { + public Object[] getStructuredActivityURLs(Integer learnerId, Long lessonId) { LearnerProgress progress = learnerProgressDAO.getLearnerProgressByLearner(learnerId, lessonId); Lesson lesson = progress.getLesson(); ProgressBuilder builder = new ProgressBuilder(progress, activityDAO, activityMapping); builder.parseLearningDesign(); - return builder.getActivityList(); + List list = builder.getActivityList(); + + Object[] retValue = new Object[2]; + retValue[0] = list; + retValue[1] = progress.getCurrentActivity() !=null ? progress.getCurrentActivity().getActivityId() : null; + + return retValue; } Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java,v diff -u -r1.41 -r1.42 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java 5 Mar 2008 07:29:02 -0000 1.41 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/LearnerAction.java 7 Mar 2008 00:23:10 -0000 1.42 @@ -499,13 +499,15 @@ Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID ); ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); - List progressList = learnerService.getStructuredActivityURLs(learnerId, lessonId); - request.setAttribute("progressList", progressList); + Object[] ret = learnerService.getStructuredActivityURLs(learnerId, lessonId);; + request.setAttribute("progressList", (List)ret[0]); + request.setAttribute("currentActivityID", ret[1]); + return mapping.findForward("displayProgress"); } /** - * Forces a move to a destination Activity in the learning sequence. + * Forces a move to a destination Activity in the learning sequence, returning a WDDX packet * * @param mapping An ActionMapping class that will be used by the Action class to tell * the ActionServlet where to send the end-user. @@ -524,11 +526,62 @@ HttpServletResponse response) throws IOException, ServletException { FlashMessage flashMessage = null; - - //initialize service object + ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); + Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); + + try { + forceMoveShared(request, learnerService,lessonId); + flashMessage = new FlashMessage("forceMove", activityMapping.getDisplayActivityAction(null)); + } catch (Exception e) { + flashMessage = handleException(e, "forceMove", learnerService); + } + + PrintWriter writer = response.getWriter(); + writer.println(flashMessage.serializeMessage()); + return null; + + } + + /** + * Forces a move to a destination Activity in the learning sequence, redirecting to the new + * page rather than returning a WDDX packet. + * + * @param mapping An ActionMapping class that will be used by the Action class to tell + * the ActionServlet where to send the end-user. + * @param form The ActionForm class that will contain any data submitted + * by the end-user via a form. + * @param request A standard Servlet HttpServletRequest class. + * @param response A standard Servlet HttpServletResponse class. + * @return An ActionForward class that will be returned to the ActionServlet indicating where + * the user is to go next. + * @throws IOException + * @throws ServletException + */ + public ActionForward forceMoveRedirect(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException { ICoreLearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + ActivityMapping activityMapping = LearnerServiceProxy.getActivityMapping(this.getServlet().getServletContext()); + Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); + + try { + forceMoveShared(request, learnerService,lessonId); + return redirectToURL(mapping, response, "/learning" + activityMapping.getDisplayActivityAction(lessonId)); + } catch (Exception e) { + log.error("Exception throw doing force move",e); + throw new ServletException(e); + } + } + /** + * @param request + * @return + */ + private void forceMoveShared(HttpServletRequest request, ICoreLearnerService learnerService, Long lessonId) { + //getting requested object according to coming parameters Integer learnerId = LearningWebUtil.getUserId(); @@ -552,35 +605,22 @@ toActivityId = null; } - //force complete - try { - long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); - - Activity fromActivity = null; - Activity toActivity = null; - - if(fromActivityId != null) - fromActivity = learnerService.getActivity(fromActivityId); - - if(toActivityId != null) - toActivity = learnerService.getActivity(toActivityId); - - learnerService.moveToActivity(learnerId, new Long(lessonId), fromActivity, toActivity); - - if ( log.isDebugEnabled() ) { - log.debug("Force move for learner "+learnerId+" lesson "+lessonId+". "); - } - flashMessage = new FlashMessage("forceMove", activityMapping.getDisplayActivityAction(null)); - } catch (Exception e) { - flashMessage = handleException(e, "forceMove", learnerService); - } - String message = flashMessage.serializeMessage(); - - PrintWriter writer = response.getWriter(); - writer.println(message); - return null; + + Activity fromActivity = null; + Activity toActivity = null; - } + if(fromActivityId != null) + fromActivity = learnerService.getActivity(fromActivityId); + + if(toActivityId != null) + toActivity = learnerService.getActivity(toActivityId); + + learnerService.moveToActivity(learnerId, lessonId, fromActivity, toActivity); + + if ( log.isDebugEnabled() ) { + log.debug("Force move for learner "+learnerId+" lesson "+lessonId+". "); + } + } /** * Get AuditService bean.