Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java =================================================================== diff -u -r0a50c865925ec0818895cbc9c4ce3b6e0beefa9c -r936afcc05958171399ef80d72ea8234c7a67e268 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java (.../PortfolioBuilder.java) (revision 0a50c865925ec0818895cbc9c4ce3b6e0beefa9c) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java (.../PortfolioBuilder.java) (revision 936afcc05958171399ef80d72ea8234c7a67e268) @@ -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); }