diff --git a/mod/scorm/datamodels/aicc.js b/mod/scorm/datamodels/aicc.js
index 5e264501325..ac01030c63e 100644
--- a/mod/scorm/datamodels/aicc.js
+++ b/mod/scorm/datamodels/aicc.js
@@ -13,14 +13,15 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-var prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a="+scormid+"&scoid="+scoid+"&attempt="+attempt+"&mode="+viewmode+"¤torg="+currentorg+"&sesskey="+sesskey;
-var datamodelurl = cfgwwwroot + "/mod/scorm/datamodel.php";
-var datamodelurlparams = "id="+cmid+"&a="+scormid+"&sesskey="+sesskey+"&attempt="+attempt+"&scoid="+scoid;
-
//
// SCORM 1.2 API Implementation
//
function AICCapi() {
+
+ var prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a="+scormid+"&scoid="+scoid+"&attempt="+attempt+"&mode="+viewmode+"¤torg="+currentorg+"&sesskey="+sesskey;
+ var datamodelurl = cfgwwwroot + "/mod/scorm/datamodel.php";
+ var datamodelurlparams = "id="+cmid+"&a="+scormid+"&sesskey="+sesskey+"&attempt="+attempt+"&scoid="+scoid;
+
// Standard Data Type Definition
CMIString256 = '^.{0,255}$';
CMIString4096 = '^.{0,4096}$';
@@ -528,5 +529,3 @@ function AICCapi() {
this.LMSGetErrorString = LMSGetErrorString;
this.LMSGetDiagnostic = LMSGetDiagnostic;
}
-
-var API = new AICCapi();
diff --git a/mod/scorm/datamodels/aicc.js.php b/mod/scorm/datamodels/aicc.js.php
index 588def09e80..29b31846ae0 100644
--- a/mod/scorm/datamodels/aicc.js.php
+++ b/mod/scorm/datamodels/aicc.js.php
@@ -91,4 +91,6 @@ if ($count > 0) {
$cmiobj .= ' cmi.objectives._count = '.$count.";\n";
}
-echo js_writer::set_variable('cmiobj', $cmiobj);
\ No newline at end of file
+echo js_writer::set_variable('cmiobj', $cmiobj);
+
+echo 'var API = new AICCapi();';
\ No newline at end of file
diff --git a/mod/scorm/datamodels/scorm_12.js b/mod/scorm/datamodels/scorm_12.js
index dc061eddb9a..cbf5196d007 100644
--- a/mod/scorm/datamodels/scorm_12.js
+++ b/mod/scorm/datamodels/scorm_12.js
@@ -13,14 +13,15 @@
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-var prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a="+scormid+"&scoid="+scoid+"&attempt="+attempt+"&mode="+viewmode+"¤torg="+currentorg+"&sesskey="+sesskey;
-var datamodelurl = cfgwwwroot + "/mod/scorm/datamodel.php";
-var datamodelurlparams = "id="+cmid+"&a="+scormid+"&sesskey="+sesskey+"&attempt="+attempt+"&scoid="+scoid;
-
//
// SCORM 1.2 API Implementation
//
function SCORMapi1_2() {
+
+ var prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a="+scormid+"&scoid="+scoid+"&attempt="+attempt+"&mode="+viewmode+"¤torg="+currentorg+"&sesskey="+sesskey;
+ var datamodelurl = cfgwwwroot + "/mod/scorm/datamodel.php";
+ var datamodelurlparams = "id="+cmid+"&a="+scormid+"&sesskey="+sesskey+"&attempt="+attempt+"&scoid="+scoid;
+
// Standard Data Type Definition
CMIString256 = cmistring256;
CMIString4096 = cmistring4096;
@@ -633,6 +634,4 @@ function SCORMapi1_2() {
this.LMSGetLastError = LMSGetLastError;
this.LMSGetErrorString = LMSGetErrorString;
this.LMSGetDiagnostic = LMSGetDiagnostic;
-}
-
-var API = new SCORMapi1_2();
+}
\ No newline at end of file
diff --git a/mod/scorm/datamodels/scorm_12.js.php b/mod/scorm/datamodels/scorm_12.js.php
index 5981b725da1..ba96d304b07 100644
--- a/mod/scorm/datamodels/scorm_12.js.php
+++ b/mod/scorm/datamodels/scorm_12.js.php
@@ -89,6 +89,8 @@ $cmiint = scorm_reconstitute_array_element($scorm->version, $userdata, 'cmi.inte
echo js_writer::set_variable('cmiobj', $cmiobj);
echo js_writer::set_variable('cmiint', $cmiint);
+echo 'var API = new SCORMapi1_2();';
+
// pull in the debugging utilities
if (scorm_debugging($scorm)) {
include_once($CFG->dirroot.'/mod/scorm/datamodels/debug.js.php');
diff --git a/mod/scorm/datamodels/scorm_13.js b/mod/scorm/datamodels/scorm_13.js
index b8900521ee9..37a6faf5c7d 100644
--- a/mod/scorm/datamodels/scorm_13.js
+++ b/mod/scorm/datamodels/scorm_13.js
@@ -12,9 +12,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see .
-var prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a="+scormid+"&scoid="+scoid+"&attempt="+attempt+"&mode="+viewmode+"¤torg="+currentorg+"&sesskey="+sesskey;
-var datamodelurl = cfgwwwroot + "/mod/scorm/datamodel.php";
-var datamodelurlparams = "id="+cmid+"&a="+scormid+"&sesskey="+sesskey+"&attempt="+attempt+"&scoid="+scoid;
// Used need to debug cmi content (if you uncomment this, you must comment the definition inside SCORMapi1_3)
//var cmi = new Object();
@@ -23,6 +20,11 @@ var datamodelurlparams = "id="+cmid+"&a="+scormid+"&sesskey="+sesskey+"&attempt=
// SCORM 1.3 API Implementation
//
function SCORMapi1_3() {
+
+ var prerequrl = cfgwwwroot + "/mod/scorm/prereqs.php?a="+scormid+"&scoid="+scoid+"&attempt="+attempt+"&mode="+viewmode+"¤torg="+currentorg+"&sesskey="+sesskey;
+ var datamodelurl = cfgwwwroot + "/mod/scorm/datamodel.php";
+ var datamodelurlparams = "id="+cmid+"&a="+scormid+"&sesskey="+sesskey+"&attempt="+attempt+"&scoid="+scoid;
+
// Standard Data Type Definition
// language key has to be checked for language dependent strings
@@ -1225,5 +1227,3 @@ function SCORMapi1_3() {
this.GetDiagnostic = GetDiagnostic;
this.version = '1.0';
}
-
-var API_1484_11 = new SCORMapi1_3();
\ No newline at end of file
diff --git a/mod/scorm/datamodels/scorm_13.js.php b/mod/scorm/datamodels/scorm_13.js.php
index 8d117d4cd75..1522851db42 100644
--- a/mod/scorm/datamodels/scorm_13.js.php
+++ b/mod/scorm/datamodels/scorm_13.js.php
@@ -81,6 +81,8 @@ echo js_writer::set_variable('cmiint', $cmiint);
echo js_writer::set_variable('cmicommentsuser', $cmicommentsuser);
echo js_writer::set_variable('cmicommentslms', $cmicommentslms);
+echo 'var API_1484_11 = new SCORMapi1_3();';
+
// pull in the debugging utilities
if (scorm_debugging($scorm)) {
include_once($CFG->dirroot.'/mod/scorm/datamodels/debug.js.php');
diff --git a/mod/scorm/loaddatamodel.php b/mod/scorm/loaddatamodel.php
index c221c67f905..39c8554277f 100644
--- a/mod/scorm/loaddatamodel.php
+++ b/mod/scorm/loaddatamodel.php
@@ -104,27 +104,13 @@ header('Content-Type: text/javascript; charset=UTF-8');
$scorm->version = strtolower(clean_param($scorm->version, PARAM_SAFEDIR)); // Just to be safe.
if (file_exists($CFG->dirroot.'/mod/scorm/datamodels/'.$scorm->version.'.js.php')) {
include_once($CFG->dirroot.'/mod/scorm/datamodels/'.$scorm->version.'.js.php');
- echo js_writer::set_variable('api_url_static', '/mod/scorm/datamodels/'.$scorm->version.'.js');
} else {
include_once($CFG->dirroot.'/mod/scorm/datamodels/scorm_12.js.php');
- echo js_writer::set_variable('api_url_static', '/mod/scorm/datamodels/scorm_12.js');
}
// Set the start time of this SCO.
scorm_insert_track($USER->id, $scorm->id, $scoid, $attempt, 'x.start.time', time());
?>
-var pel_scorm_api = document.getElementById('scormapi-parent');
-var el_scorm_api = document.getElementById("external-scormapi-static");
-
-if(el_scorm_api){
- el_scorm_api.parentNode.removeChild(el_scorm_api);
-}
-el_scorm_api = document.createElement('script');
-el_scorm_api.setAttribute('id','external-scormapi-static');
-el_scorm_api.setAttribute('type','text/javascript');
-pel_scorm_api.appendChild(el_scorm_api);
-document.getElementById('external-scormapi-static').src = M.cfg.wwwroot + api_url_static;
-
var errorCode = "0";
function underscore(str) {
str = String(str).replace(/.N/g,".");
diff --git a/mod/scorm/player.php b/mod/scorm/player.php
index 9c9a8e6f24b..22ab1d32136 100644
--- a/mod/scorm/player.php
+++ b/mod/scorm/player.php
@@ -165,6 +165,13 @@ $PAGE->requires->data_for_js('scormplayerdata', Array('launch' => false,
'popupoptions' => $scorm->options), true);
$PAGE->requires->js('/mod/scorm/request.js', true);
$PAGE->requires->js('/lib/cookies.js', true);
+
+if (file_exists($CFG->dirroot.'/mod/scorm/datamodels/'.$scorm->version.'.js')) {
+ $PAGE->requires->js('/mod/scorm/datamodels/'.$scorm->version.'.js', true);
+} else {
+ $PAGE->requires->js('/mod/scorm/datamodels/scorm_12.js', true);
+}
+
echo $OUTPUT->header();
if (!empty($scorm->displayactivityname)) {
echo $OUTPUT->heading(format_string($scorm->name));