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.14 -r1.15 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 7 Mar 2008 00:23:10 -0000 1.14 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java 27 May 2008 02:01:28 -0000 1.15 @@ -108,9 +108,15 @@ /** Prepares to process children */ 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(); + // Create a new current activity list, putting the old current one on the stack. + // An exception to this is when we reach a branching activity in learner mode. The children are added to the current list. + boolean flattenLearnerBranching = (activity.isBranchingActivity() || (activity.isSequenceActivity() + && activity.getParentActivity().isBranchingActivity())) && accessMode == ToolAccessMode.LEARNER; + + if (!flattenLearnerBranching) { + activityListStack.push(currentPortfolioList); + currentPortfolioList = new ArrayList(); + } return true; } @@ -119,11 +125,14 @@ ActivityPortfolio complexPortfolio = null; + boolean flattenLearnerBranching = (activity.isBranchingActivity() || (activity.isSequenceActivity() + && activity.getParentActivity().isBranchingActivity())) && accessMode == ToolAccessMode.LEARNER; + if ( currentPortfolioList.size()>0 || accessMode == ToolAccessMode.TEACHER) { complexPortfolio = createActivityPortfolio(activity); if ( currentPortfolioList.size()>0 ) { - complexPortfolio.setChildPortfolios(currentPortfolioList); + complexPortfolio.setChildPortfolios(currentPortfolioList); } if ( activity.isSystemToolActivity() ) { @@ -138,8 +147,11 @@ } } - currentPortfolioList = (ArrayList) activityListStack.pop(); - if ( complexPortfolio != null ) + if (!flattenLearnerBranching) { + currentPortfolioList = (ArrayList) activityListStack.pop(); + } + + if ( complexPortfolio != null && !flattenLearnerBranching) currentPortfolioList.add(complexPortfolio); }