Index: lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as =================================================================== diff -u -rb03ef46730a3909a403990d0520c4e504d1e6591 -r89e2580281adde34cc34e58d3c92e588e03cee0e --- lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision b03ef46730a3909a403990d0520c4e504d1e6591) +++ lams_central/src/flash/org/lamsfoundation/lams/monitoring/mv/MonitorController.as (.../MonitorController.as) (revision 89e2580281adde34cc34e58d3c92e588e03cee0e) @@ -29,7 +29,10 @@ import org.lamsfoundation.lams.monitoring.*; import org.lamsfoundation.lams.monitoring.mv.*; import org.lamsfoundation.lams.monitoring.mv.tabviews.*; -import org.lamsfoundation.lams.authoring.Activity; +import org.lamsfoundation.lams.authoring.Activity; +import org.lamsfoundation.lams.authoring.cv.ICanvasActivity; +import org.lamsfoundation.lams.authoring.cv.CanvasParallelActivity; + import mx.utils.* import mx.controls.* import mx.behaviors.* @@ -41,12 +44,12 @@ * Controller for the sequence library */ class MonitorController extends AbstractController { + private var _monitorModel:MonitorModel; private var _monitorController:MonitorController; private var _app:Application; - private var _isBusy:Boolean; + private var _isBusy:Boolean; - /** * Constructor * @@ -62,7 +65,6 @@ } public function activityClick(act:Object, forObj:String):Void{ - //if (ca.activityTypeID==Activity.PARALLEL_ACTIVITY_TYPE){ if (forObj == "LearnerIcon"){ _monitorModel.isDragging = true; act.startDrag(false); @@ -71,51 +73,153 @@ }else { _monitorModel.selectedItem = act; } - } + } + /** + * Returns the parent that is an member activity of the canvas (ICanvasActivity) + * + * @usage + * @param path dropTarget path + * @return path to activity movieclip + */ + + private function findParentActivity(path:Object):Object { + if(path instanceof ICanvasActivity) + return path; + else if(path == ApplicationParent.root) + return null; + else + return findParentActivity(path._parent); + } + + /** + * Returns the child of a complex activity that matches with the dropTarget + * + * @usage + * @param children array of children movieclips + * @param target dropTarget path + * @return the matching activity object or null if not found + */ + private function matchChildActivity(children:Array, target:Object):Object { + for(var i=0; i currentActOrder){ - - var URLToSend:String = _root.monitoringURL+"forceComplete&lessonID="+_root.lessonID+"&learnerID="+act.Learner.getLearnerId()+"&activityID="+indexArray[i-1].activity.activityID - var ref = this; - var fnOk:Function = Proxy.create(ref,reloadProgress, ref, URLToSend); - var fnCancel:Function = Proxy.create(ref,activitySnapBack, act); - LFMessage.showMessageConfirm(Dictionary.getValue('al_confirm_forcecomplete_toactivity',[act.Learner.getFullName(), indexArray[i].activity.title]), fnOk,fnCancel); - - }else if (actHitOrder == currentActOrder ){ - activitySnapBack(act) - }else if (actHitOrder < currentActOrder){ - activitySnapBack(act) - var msg:String = Dictionary.getValue('al_error_forcecomplete_invalidactivity',[act.Learner.getFullName(), indexArray[i].activity.title]) ; - LFMessage.showMessageAlert(msg); - } - - hasHit = true; + var dropTarget:Object = findParentActivity(eval(act._droptarget)); + var cActivity = indexArray[i]; + if(dropTarget != null) { + if(dropTarget.activity.parentUIID != null && cActivity.children != null) + cActivity = matchChildActivity(cActivity.children, dropTarget); + + hasHit = (cActivity == dropTarget) ? checkHit(cActivity, act, indexArray) : hasHit; } } @@ -164,15 +268,6 @@ } } - private function checkLearnerCurrentActivity(arr:Array, actUIID:Number):Number{ - for (var i=0; i