1

我正在使用 Moodle 3.2.2 并在 Moodle 中上传 Scorm 课程调度文件。一切正常,除了恢复课程。

我创建了自己的调度文件,就像 Scorm 云一样。当我通过下载 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("");

但是下次我无法恢复课程。谁能告诉我我做错了什么?如何从最后一张幻灯片恢复课程。?

4

1 回答 1

1

我将从一些真正的旧知识中挖掘出来,所以你需要验证它。我相信 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 年。

于 2017-05-03T15:41:04.150 回答