Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -r78cf415a0c5ed341d97bebacb5fe638133aaa313 -r74df890abf231f37393ff4b5b3c02aba30a856cc Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -r78cf415a0c5ed341d97bebacb5fe638133aaa313 -r74df890abf231f37393ff4b5b3c02aba30a856cc Binary files differ Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -r78cf415a0c5ed341d97bebacb5fe638133aaa313 -r74df890abf231f37393ff4b5b3c02aba30a856cc --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 78cf415a0c5ed341d97bebacb5fe638133aaa313) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 74df890abf231f37393ff4b5b3c02aba30a856cc) @@ -1083,6 +1083,7 @@ var hub = new Array(); var target = null; var sequence = null; + var activityless = null; var hasBranches:Boolean = false; @@ -1105,6 +1106,11 @@ if(br[i].sequenceActivity.activityUIID == UIID){ sequence = br[i].sequenceActivity; } + + if(target != null && target.direction == BranchConnector.DIR_SINGLE) { + activityless = target; + break; + } } } @@ -1113,6 +1119,7 @@ branchObj.sequence = sequence; branchObj.hub = hub; branchObj.hasBranches = hasBranches; + branchObj.activityless = activityless; return branchObj; } Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as =================================================================== diff -u -r78cf415a0c5ed341d97bebacb5fe638133aaa313 -r74df890abf231f37393ff4b5b3c02aba30a856cc --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 78cf415a0c5ed341d97bebacb5fe638133aaa313) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/br/CanvasBranchView.as (.../CanvasBranchView.as) (revision 74df890abf231f37393ff4b5b3c02aba30a856cc) @@ -370,10 +370,12 @@ * @return Boolean - successfullit */ private function drawActivity(a:Activity, cm):Boolean { - if(this.defaultSequenceActivity.activityUIID != a.parentUIID) return false; + if(this.activity.activityUIID != cm.getCanvas().ddm.getActivityByUIID(a.parentUIID).parentUIID) + return false; var cbv = CanvasBranchView(this); var cbc = getController(); + var fromModuleTab:String = null; var _module = null; @@ -383,6 +385,7 @@ } Debugger.log('I am in drawActivity and Activity typeID :'+a.activityTypeID+' added to the cm.activitiesDisplayed hashtable :'+newActivity_mc,4,'drawActivity','CanvasBranchView'); + //take action depending on act type if(a.activityTypeID==Activity.TOOL_ACTIVITY_TYPE || a.isGroupActivity()){ Debugger.log('controller cbc :'+MonitorController(cbc), Debugger.CRITICAL, 'drawActivity','CanvasBranchView'); @@ -443,9 +446,9 @@ */ private function hideActivity(a:Activity, cm):Boolean { - if(this.defaultSequenceActivity.activityUIID != a.parentUIID) return false; - - + if(this.activity.activityUIID != cm.getCanvas().ddm.getActivityByUIID(a.parentUIID).parentUIID) + return false; + var cbv = CanvasBranchView(this); var cbc = getController(); @@ -469,7 +472,8 @@ * @return Boolean - successfull */ private function removeActivity(a:Activity, cm):Boolean{ - if(this.defaultSequenceActivity.activityUIID != a.parentUIID) return false; + if(this.activity.activityUIID != cm.getCanvas().ddm.getActivityByUIID(a.parentUIID).parentUIID) + return false; if(a.isBranchingActivity()) cm.activitiesDisplayed.get(a.activityUIID).branchView.removeMovieClip(); @@ -496,7 +500,7 @@ var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t, controller:cbc, _canvasBranchView:cbv}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); - Debugger.log('drawn a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'drawTransition','CanvasView'); + Debugger.log('drawn a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'drawTransition','CanvasBranchView'); var parentID = cm.getCanvas().ddm.getActivityByUIID(t.fromUIID).parentUIID; cm.moveActivitiesToBranchSequence(t.toUIID, cm.getCanvas().ddm.getActivityByUIID(parentID)); @@ -513,11 +517,6 @@ */ private function drawBranch(b:Branch, cm):Boolean{ - Debugger.log("branch: " + b, Debugger.CRITICAL, "drawBranch", "CanvasBranchView"); - Debugger.log("branch target : " + b.targetUIID, Debugger.CRITICAL, "drawBranch", "CanvasBranchView"); - - Debugger.log("sequence: " + b.sequenceActivity.activityUIID, Debugger.CRITICAL, "drawBranch", "CanvasBranchView"); - if(!isActivityOnLayer(cm.activitiesDisplayed.get(b.targetUIID), this.activityLayer)) if((b.direction == BranchConnector.DIR_SINGLE && b.targetUIID == activity.activityUIID)) continue; @@ -566,6 +565,7 @@ var newTransition_mc:MovieClip = transitionLayer.createChildAtDepth("CanvasTransition",DepthManager.kTop,{_transition:t, controller:cbc, _canvasBranchView:cbv, _visible:false}); cm.transitionsDisplayed.put(t.transitionUIID,newTransition_mc); + Debugger.log('drawn (hidden) a transition:'+t.transitionUIID+','+newTransition_mc,Debugger.GEN,'hideTransition','CanvasView'); return true; Index: lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as =================================================================== diff -u -r78cf415a0c5ed341d97bebacb5fe638133aaa313 -r74df890abf231f37393ff4b5b3c02aba30a856cc --- lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 78cf415a0c5ed341d97bebacb5fe638133aaa313) +++ lams_flash/src/central/flash/org/lamsfoundation/lams/authoring/cv/CanvasModel.as (.../CanvasModel.as) (revision 74df890abf231f37393ff4b5b3c02aba30a856cc) @@ -361,7 +361,7 @@ public function addParentToActivity(parentID, ca:Object, doRemoveParent:Boolean){ ca.activity.parentUIID = parentID; - Debugger.log('ParentId of '+ca.activity.activityUIID+ 'Is : '+ca.activity.parentUIID,Debugger.GEN,'addParentToActivity','CanvasModel'); + Debugger.log('ParentId of '+ca.activity.activityUIID+ ' ==> '+ca.activity.parentUIID,Debugger.GEN,'addParentToActivity','CanvasModel'); removeActivity(ca.activity.activityUIID); if(doRemoveParent) removeActivity(parentID); @@ -807,11 +807,6 @@ return new LFError(Dictionary.getValue('cv_trans_target_act_missing'),"addActivityToTransition",this); } - var branch = _cv.ddm.getBranchesForActivityUIID(toAct); - if(branch.target != null && branch.target.direction != BranchConnector.DIR_SINGLE) { - return new LFError("Can't create transition between activities in different branches", "addActivityToTransition", this); - } - //check there is not already a transition to or from this activity: var transitionsArray:Array = _cv.ddm.transitions.values(); @@ -832,8 +827,12 @@ } - var branchesArray:Array = _cv.ddm.branches.values(); + var branch = _cv.ddm.getBranchesForActivityUIID(toAct); + if(branch.target != null && branch.target.direction != BranchConnector.DIR_SINGLE) { + return new LFError("Can't create transition between activities in different branches", "addActivityToTransition", this); + } + var branchesArray:Array = _cv.ddm.branches.values(); for(var i=0; i 0) { + } else if(branchesSize > 0 && isLoopingLD(toAct.activityUIID, sequence.firstActivityUIID)) { return new LFError("Cannot create start-branch connection to Activity in a already connected Sequence.", "createBranchStartConnector", this); } else { var b = new Branch(_cv.ddm.newUIID(), BranchConnector.DIR_FROM_START, toAct.activityUIID, activeView.startHub.activity.activityUIID, activeView.defaultSequenceActivity, _cv.ddm.learningDesignID); @@ -930,12 +929,21 @@ } else if(_cv.ddm.getBranchesForActivityUIID(sequence.activityUIID).myBranches.length <= 0) { return new LFError("Cannot create end-branch connection to an unconnected Sequence.", "createBranchStartConnector", this); } else { - return new Branch(_cv.ddm.newUIID(), BranchConnector.DIR_TO_END, fromAct.activityUIID, activeView.endHub.activity.activityUIID, sequence, _cv.ddm.learningDesignID); - + Debugger.log("looping: " + isLoopingLD(fromAct, _cv.ddm.getActivityByUIID(sequence.firstActivityUIID)), Debugger.CRITICAL, "createBranchStartConnector", "CanvasModel"); + + var condition:Boolean = (sequence.firstActivityUIID != null && isLoopingLD(fromAct.activityUIID, sequence.firstActivityUIID)); + Debugger.log("condition: " + condition, Debugger.CRITICAL, "createBranchStartConnector", "CanvasModel"); + + if(condition || sequence.firstActivityUIID == fromAct.activityUIID) + return new Branch(_cv.ddm.newUIID(), BranchConnector.DIR_TO_END, fromAct.activityUIID, activeView.endHub.activity.activityUIID, sequence, _cv.ddm.learningDesignID); + else + return new LFError("Cannot create end-branch connection to an unconnected Sequence.", "createBranchStartConnector", this); } } private function createActivitylessBranch():Object{ + if(_cv.ddm.getBranchesForActivityUIID(activeView.startHub.activity.activityUIID).activityless != null) + return new LFError("Cannot add more than one Activityless branch.", null); var b = new Branch(_cv.ddm.newUIID(), BranchConnector.DIR_SINGLE, activeView.startHub.activity.activityUIID, null, activeView.defaultSequenceActivity, _cv.ddm.learningDesignID); b.sequenceActivity.isDefault = false; @@ -949,8 +957,11 @@ // move first activity var ca = _activitiesDisplayed.get(activityUIID); + Debugger.log("sequence uiid: " + sequence.activityUIID, Debugger.CRITICAL, "moveActivitiesToBranchSequence", "CanvasModel"); + Debugger.log("ca.activity.parentUIID: " + ca.activity.parentUIID, Debugger.CRITICAL, "moveActivitiesToBranchSequence", "CanvasModel"); + if(sequence.activityUIID != ca.activity.parentUIID) { - addParentToActivity(sequence.activityUIID, ca, true); + addParentToActivity(sequence.activityUIID, ca, false); } else { return true; }