2017-05-03 134 views
0

我使用的是Moodle 3.2.2,我在Moodle上傳Scorm課程的調度文件。一切工作正常,除了恢復課程。Moodle Scorm課程簡歷

我創建了像Scorm雲一樣的自己的調度文件。當我通過下載Scorm雲調度文件測試相同的課程其工作正常。但是我在Moodle的發送文件並沒有恢復過程。

注: 我使用iSpring Presenter創建SCORM課程。

這是我有文件的調度結構。

enter image description here

的dispatch.html代碼是

<html> 

<head> 
    <title></title> 
    <meta charset="utf-8" /> 
    <script src="configuration.js"></script> 
    <script src="utils.js"></script> 
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> 
    <script type="text/javascript"> 
    include_script(DispatchRoot + "/scripts/client-driver.js"); 
     include_script(DispatchRoot + "/scripts/client-loader.js"); 

    </script> 
</head> 
<frameset id="dispatch_frameset" rows="0,*" frameborder="0" framespacing="0" border="0" onload="DispatchStart('dispatch_course_frame')" 
      onunload="DispatchUnload()"> 
    <!-- We set the src to blank.html to avoid security warnings in IE6/IE7 when launching in HTTPS --> 
    <!--<frame id="dispatch_content_frame" name="dispatch_content_frame" src="blank.html" />--> 
    <frame id="dispatch_loading_frame" name="dispatch_loading_frame" src="blank.html" /> 
    <frame id="dispatch_course_frame" name="dispatch_course_frame"> 
</frameset> 
<noframes> 
    Your browser must be able to view frames for this content to display. 
</noframes> 

</html> 

客戶driver.js是一個文件,該文件有助於建立LMS和SCORM之間的通信。而client-loader.js文件則是通信發生的地方。我使用下面的代碼

var completionStatus = Getvalue("cmi.core.lesson_status"); 
      if (completionStatus == "not attempted") { 
       SetValue("cmi.core.lesson_status", "incomplete"); 
      } 
      SetValue("cmi.core.exit", "suspend"); 
      console.log(Getvalue("cmi.core.student_id")); 
      console.log(Getvalue("cmi.core.student_name")); 
      var entry = Getvalue("cmi.core.entry") 
      console.log(entry); 
      if (entry == "resume") { 
       var val = Getvalue("cmi.suspend_data"); 
       SetValue("cmi.suspend_data", val); 
      } 
      else { 
       SetValue("cmi.suspend_data", "2"); 
      } 

當用戶關閉的Moodle LMS窗口這段代碼執行

SetValue("cmi.core.exit", "suspend"); 
    api.LMSCommit(""); 
    api.LMSFinish(""); 

但下一次,我無法恢復過程。任何人都可以告訴我我做錯了嗎?如何從上一張幻燈片恢復課程。?

回答

0

我打算從一些真正的舊知識中挖掘出來,因此你需要驗證它。我相信Moodle的編碼方式;如果您設置了任何狀態,則可能會觸發SCO以「審閱」模式重新啓動,這將會擾亂您的cmi.core.entry。我必須在我的Content API庫中明確設置'不要狀態直到完成'選項來處理這個問題。不要混淆「完成」和「LMSFinish」。它或多或少的「學生完成了這個嘗試」。大多數SCORM 2004用戶在「未嘗試」時將SCO的狀態設置爲不完整。這說得通。有一個明顯的區別 - 在SCORM 1.2中,只有一種狀態可以通過,失敗,完成或不完整(未嘗試)。 檢查你的cmi.core.lesson_mode,看看我的理論在第二次發佈時是否正確。

作爲內容開發人員,我們可能已經做得更好,以暴露UI元素來打開「我已經完成」,就像您的作業開始。有些LMS系統甚至會將範圍內的「完成」按鈕放在TOC或課程查看器中。 這些術語經常使人們感到困惑,其中一些術語在SCORM 2004中提到。我相信Moodle放棄了他們的SCORM 2004運行時支持。

請記住,Moodle還允許在複審模式下針對SCO設置數據。在這種情況下,SCORM並沒有完​​全規定LMS應該做什麼,但Moodle選擇允許它繼續改變學生的嘗試。我的意見是這是一個「永無止境的嘗試」。我們可以辯論這是對/錯還是漠不關心 - 但最終SCORM 1.2版的白皮書主要是可選的與強制性的,並且他們沒有提出LMS應該做什麼或不應該做什麼。我們需要一個時間機器回到2001年。