2017-05-03 133 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年。