Index: lams_central/src/flash/org/lamsfoundation/lams/learner/ls/Lesson.as =================================================================== diff -u -r49e27afd23a5b873d800bb0bd341cc0a400f47d8 -r244ec27716e8da930e492c3cc7be65da0433c7fb --- lams_central/src/flash/org/lamsfoundation/lams/learner/ls/Lesson.as (.../Lesson.as) (revision 49e27afd23a5b873d800bb0bd341cc0a400f47d8) +++ lams_central/src/flash/org/lamsfoundation/lams/learner/ls/Lesson.as (.../Lesson.as) (revision 244ec27716e8da930e492c3cc7be65da0433c7fb) @@ -26,6 +26,7 @@ import org.lamsfoundation.lams.learner.lb.*; import org.lamsfoundation.lams.common.util.*; import org.lamsfoundation.lams.common.Progress; +import org.lamsfoundation.lams.common.ui.Cursor; import org.lamsfoundation.lams.authoring.DesignDataModel; import mx.managers.*; @@ -46,6 +47,13 @@ private var _instance:Lesson; private var _className:String = "Lesson"; + private var _finishedDesign:Boolean = false; + + private static var LOAD_CHECK_INTERVAL:Number = 50; + private static var LOAD_CHECK_TIMEOUT_COUNT:Number = 600; + + private var _loadCheckCount = 0; + private var _loadCheckIntervalID:Number; private var dispatchEvent:Function; public var addEventListener:Function; @@ -124,7 +132,7 @@ // get Learning Design for lesson openLearningDesign(); - + return true; } @@ -173,19 +181,22 @@ private function storeLessonData(dto:Object){ lessonModel.populateFromDTO(dto); joinLesson(); + } private function startLesson(pkt:Object){ trace('received message back from server aftering joining lesson...'); - // check was successful join - getFlashProgress(); - // set lesson as active lessonModel.setActive(); trace('pktobject value: '+String(pkt)); getURL(_root.serverURL + 'learning'+String(pkt)+'?lessonID='+lessonModel.getLessonID(),'contentFrame'); + + // check was successful join + getFlashProgress(); + + } public function moveToActivity(fromAct, toAct){ @@ -206,6 +217,35 @@ } private function getFlashProgress():Void{ + Debugger.log('Loading flash progress.',Debugger.CRITICAL,'getFlashProgress','Lesson'); + + if(!finishedDesign) { + // first time through set interval for method polling + if(!_loadCheckIntervalID) { + _loadCheckIntervalID = setInterval(Proxy.create(this, getFlashProgress), LOAD_CHECK_INTERVAL); + } else { + _loadCheckCount++; + Debugger.log('Waiting (' + _loadCheckCount + ') for data to load...',Debugger.CRITICAL,'getFlashProgress','Lesson'); + + // if design loaded + if(finishedDesign) { + clearInterval(_loadCheckIntervalID); + + callFlashProgress(); + + } else if(_loadCheckCount >= LOAD_CHECK_TIMEOUT_COUNT) { + Debugger.log('Reached timeout waiting for data to load.',Debugger.CRITICAL,'getFlashProgress','Lesson'); + clearInterval(_loadCheckIntervalID); + } + } + } else { + callFlashProgress(); + clearInterval(_loadCheckIntervalID); + } + + } + + private function callFlashProgress():Void { var callback:Function = Proxy.create(this,saveProgressData); var lessonId:Number = lessonModel.ID; Application.getInstance().getComms().getRequest('learning/learner.do?method=getFlashProgressData&lessonID='+String(lessonId), callback, false); @@ -245,8 +285,9 @@ private function openLearningDesign(){ trace('opening learning design...'); + finishedDesign = false; + var designId:Number = lessonModel.learningDesignID; - var callback:Function = Proxy.create(this,saveDataDesignModel); Application.getInstance().getComms().getRequest('authoring/author.do?method=getLearningDesignDetails&learningDesignID='+designId,callback, false); @@ -256,13 +297,15 @@ private function saveDataDesignModel(learningDesignDTO:Object){ trace('returning learning design...'); trace('saving model data...'); + if(learningDesignDTO instanceof LFError) { + Cursor.showCursor(Application.C_DEFAULT); + learningDesignDTO.showErrorAlert(); + } else { + var model:DesignDataModel = new DesignDataModel(); + model.setDesign(learningDesignDTO); + lessonModel.setLearningDesignModel(model); + } - var model:DesignDataModel = new DesignDataModel(); - model.setDesign(learningDesignDTO); - lessonModel.setLearningDesignModel(model); - - // activite Progress movie - } public function getLessonID():Number { @@ -340,6 +383,14 @@ public function get y():Number{ return lessonModel.y; + } + + public function set finishedDesign(a:Boolean){ + _finishedDesign = a; + } + + public function get finishedDesign():Boolean{ + return _finishedDesign; } function get className():String { Index: lams_central/src/flash/org/lamsfoundation/lams/learner/ls/LessonView.as =================================================================== diff -u -rcdc46d9b4d7e33b90389d96465ed33ee8b6372e2 -r244ec27716e8da930e492c3cc7be65da0433c7fb --- lams_central/src/flash/org/lamsfoundation/lams/learner/ls/LessonView.as (.../LessonView.as) (revision cdc46d9b4d7e33b90389d96465ed33ee8b6372e2) +++ lams_central/src/flash/org/lamsfoundation/lams/learner/ls/LessonView.as (.../LessonView.as) (revision 244ec27716e8da930e492c3cc7be65da0433c7fb) @@ -160,6 +160,7 @@ break; case 'DESIGNMODEL' : trace('updating design model for lesson..'); + lm.getLesson().finishedDesign = true; break; case 'PROGRESS' : Debugger.log('progress data receieved for user..' + lm.progressData.getUserName(),Debugger.CRITICAL,'update','org.lamsfoundation.lams.LessonView'); Index: lams_learning/web/lams_learner.swf =================================================================== diff -u -rcdc46d9b4d7e33b90389d96465ed33ee8b6372e2 -r244ec27716e8da930e492c3cc7be65da0433c7fb Binary files differ