我正在使用Moodle 3.2.2,我在Moodle上传Scorm课程调度文件。一切都很好,除了恢复课程。
我创建了自己的调度文件,就像Scorm cloud一样。当我通过下载Scorm云调度文件测试相同的课程时,其工作正常。但我在Moodle的发送文件并未恢复该课程。
注意: 我使用iSpring Presenter创建SCORM课程。
这是我拥有的文件的调度结构。
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>
client-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 :(得分:1)
我将从一些真正的旧知识中挖掘出来,所以要记住你需要验证它。我相信Moodle的编码方式;如果您设置任何状态,它可能会触发SCO在“查看”模式下重新启动,这将使您的cmi.core.entry陷入困境。我必须在我的内容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年。