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));