Tabs are out.

Please don't use tabs in source code. Set your editor to 4 cc per tab.!
This commit is contained in:
stronk7 2005-05-16 23:41:58 +00:00
parent 87dddc1445
commit 5e5b6b7f19
16 changed files with 2799 additions and 2799 deletions

View file

@ -36,44 +36,44 @@
require_login($course->id, false, $cm); require_login($course->id, false, $cm);
if ($usertrack=scorm_get_tracks($scoid,$USER->id)) { if ($usertrack=scorm_get_tracks($scoid,$USER->id)) {
$userdata = $usertrack; $userdata = $usertrack;
} else { } else {
$userdata->status = ''; $userdata->status = '';
$userdata->scorre_raw = ''; $userdata->scorre_raw = '';
} }
$userdata->student_id = $USER->username; $userdata->student_id = $USER->username;
$userdata->student_name = $USER->lastname .', '. $USER->firstname; $userdata->student_name = $USER->lastname .', '. $USER->firstname;
$userdata->mode = 'normal'; $userdata->mode = 'normal';
if (isset($mode)) { if (isset($mode)) {
$userdata->mode = $mode; $userdata->mode = $mode;
} }
if ($sco = get_record('scorm_scoes','id',$scoid)) { if ($sco = get_record('scorm_scoes','id',$scoid)) {
$userdata->datafromlms = $sco->datafromlms; $userdata->datafromlms = $sco->datafromlms;
$userdata->masteryscore = $sco->masteryscore; $userdata->masteryscore = $sco->masteryscore;
$userdata->maxtimeallowed = $sco->maxtimeallowed; $userdata->maxtimeallowed = $sco->maxtimeallowed;
$userdata->timelimitaction = $sco->timelimitaction; $userdata->timelimitaction = $sco->timelimitaction;
if (!empty($sco->masteryscore)) { if (!empty($sco->masteryscore)) {
$userdata->credit = 'credit'; $userdata->credit = 'credit';
} else { } else {
$userdata->credit = 'no-credit'; $userdata->credit = 'no-credit';
} }
} else { } else {
error('Sco not found'); error('Sco not found');
} }
switch ($scorm->version) { switch ($scorm->version) {
case 'SCORM_1.2': case 'SCORM_1.2':
include_once ('datamodels/scorm1_2.js.php'); include_once ('datamodels/scorm1_2.js.php');
break; break;
case 'SCORM_1.3': case 'SCORM_1.3':
include_once ('datamodels/scorm1_3.js.php'); include_once ('datamodels/scorm1_3.js.php');
break; break;
case 'AICC': case 'AICC':
include_once ('datamodels/aicc.js.php'); include_once ('datamodels/aicc.js.php');
break; break;
default: default:
include_once ('datamodels/scorm1_2.js.php'); include_once ('datamodels/scorm1_2.js.php');
break; break;
} }
?> ?>

View file

@ -1,6 +1,6 @@
<?php <?php
if (empty($CFG->scorm_frameheight)) { if (empty($CFG->scorm_frameheight)) {
$CFG->scorm_frameheight = 600; $CFG->scorm_frameheight = 600;
} }
if (empty($CFG->scorm_framewidth)) { if (empty($CFG->scorm_framewidth)) {
$CFG->scorm_structurewidth = 800; $CFG->scorm_structurewidth = 800;
@ -33,7 +33,7 @@
<tr valign="top"> <tr valign="top">
<td align="right">scorm_framewidth:</td> <td align="right">scorm_framewidth:</td>
<td> <td>
<input type="text" name="scorm_framewidth" value="<?php echo $CFG->scorm_framewidth ?>" size="3" /> <input type="text" name="scorm_framewidth" value="<?php echo $CFG->scorm_framewidth ?>" size="3" />
</td> </td>
<td> <td>
<?php print_string("framewidth", "scorm") ?> <?php print_string("framewidth", "scorm") ?>
@ -42,7 +42,7 @@
<tr valign="top"> <tr valign="top">
<td align="right">scorm_frameheight:</td> <td align="right">scorm_frameheight:</td>
<td> <td>
<input type="text" name="scorm_frameheight" value="<?php echo $CFG->scorm_frameheight ?>" size="4" /> <input type="text" name="scorm_frameheight" value="<?php echo $CFG->scorm_frameheight ?>" size="4" />
</td> </td>
<td> <td>
<?php print_string("frameheight", "scorm") ?> <?php print_string("frameheight", "scorm") ?>
@ -50,7 +50,7 @@
</tr> </tr>
<tr> <tr>
<td colspan="3" align="center"> <td colspan="3" align="center">
<input type="submit" value="<?php print_string("savechanges") ?>" /> <input type="submit" value="<?php print_string("savechanges") ?>" />
</td> </td>
</tr> </tr>
</table> </table>

View file

@ -33,31 +33,31 @@
require_login($course->id, false, $cm); require_login($course->id, false, $cm);
if (confirm_sesskey() && (isset($SESSION->scorm_scoid))) { if (confirm_sesskey() && (isset($SESSION->scorm_scoid))) {
$scoid = $SESSION->scorm_scoid; $scoid = $SESSION->scorm_scoid;
$result = true; $result = true;
foreach ($_GET as $element => $value) { foreach ($_GET as $element => $value) {
if (substr($element,0,3) == 'cmi') { if (substr($element,0,3) == 'cmi') {
$element = str_replace('__','.',$element); $element = str_replace('__','.',$element);
$element = preg_replace('/_(\d+)/',".\$1",$element); $element = preg_replace('/_(\d+)/',".\$1",$element);
if ($track = get_record_select('scorm_scoes_track',"userid='$USER->id' AND scormid='$scorm->id' AND scoid='$scoid' AND element='$element'")) { if ($track = get_record_select('scorm_scoes_track',"userid='$USER->id' AND scormid='$scorm->id' AND scoid='$scoid' AND element='$element'")) {
$track->value = $value; $track->value = $value;
$result = update_record('scorm_scoes_track',$track) && $result; $result = update_record('scorm_scoes_track',$track) && $result;
} else { } else {
$track->userid = $USER->id; $track->userid = $USER->id;
$track->scormid = $scorm->id; $track->scormid = $scorm->id;
$track->scoid = $scoid; $track->scoid = $scoid;
$track->element = $element; $track->element = $element;
$track->value = $value; $track->value = $value;
$result = insert_record('scorm_scoes_track',$track) && $result; $result = insert_record('scorm_scoes_track',$track) && $result;
} }
//print_r($track); //print_r($track);
} }
} }
if ($result) { if ($result) {
echo "true\n0"; echo "true\n0";
} else { } else {
echo "false\n101"; echo "false\n101";
} }
} }
?> ?>

View file

@ -33,80 +33,80 @@ function SCORMapi1_3() {
text_range = '-1#1'; text_range = '-1#1';
// The SCORM 1.3 data model // The SCORM 1.3 data model
var datamodel = { var datamodel = {
'cmi._children':{'defaultvalue':cmi_children, 'mod':'r', 'writeerror':'402'}, 'cmi._children':{'defaultvalue':cmi_children, 'mod':'r', 'writeerror':'402'},
'cmi._version':{'defaultvalue':'3.4', 'mod':'r', 'writeerror':'402'}, 'cmi._version':{'defaultvalue':'3.4', 'mod':'r', 'writeerror':'402'},
'cmi.core._children':{'defaultvalue':core_children, 'mod':'r', 'writeerror':'402'}, 'cmi.core._children':{'defaultvalue':core_children, 'mod':'r', 'writeerror':'402'},
'cmi.core.student_id':{'defaultvalue':'<?php echo $user->username ?>', 'mod':'r', 'writeerror':'403'}, 'cmi.core.student_id':{'defaultvalue':'<?php echo $user->username ?>', 'mod':'r', 'writeerror':'403'},
'cmi.core.student_name':{'defaultvalue':'<?php echo $user->lastname.', '.$user->firstname ?>', 'mod':'r', 'writeerror':'403'}, 'cmi.core.student_name':{'defaultvalue':'<?php echo $user->lastname.', '.$user->firstname ?>', 'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_location':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'}, 'cmi.core.lesson_location':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'},
'cmi.core.credit':{'mod':'r', 'writeerror':'403'}, 'cmi.core.credit':{'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_status':{'format':CMIStatus, 'mod':'rw', 'writeerror':'405'}, 'cmi.core.lesson_status':{'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},
'cmi.core.entry':{'mod':'r', 'writeerror':'403'}, 'cmi.core.entry':{'mod':'r', 'writeerror':'403'},
'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'}, 'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},
'cmi.core.score.raw':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.core.score.raw':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.score.max':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.core.score.max':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.score.min':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.core.score.min':{'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.core.total_time':{'mod':'r', 'writeerror':'403'}, 'cmi.core.total_time':{'mod':'r', 'writeerror':'403'},
'cmi.core.lesson_mode':{'mod':'r', 'writeerror':'405'}, 'cmi.core.lesson_mode':{'mod':'r', 'writeerror':'405'},
'cmi.core.exit':{'format':CMIExit, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.core.exit':{'format':CMIExit, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.core.session_time':{'format':CMITimespan, 'mod':'w', 'defaultvalue':'00:00:00', 'readerror':'404', 'writeerror':'405'}, 'cmi.core.session_time':{'format':CMITimespan, 'mod':'w', 'defaultvalue':'00:00:00', 'readerror':'404', 'writeerror':'405'},
'cmi.suspend_data':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'}, 'cmi.suspend_data':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},
'cmi.launch_data':{'mod':'r', 'writeerror':'403'}, 'cmi.launch_data':{'mod':'r', 'writeerror':'403'},
'cmi.comments':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'}, 'cmi.comments':{'format':CMIString4096, 'mod':'rw', 'writeerror':'405'},
'cmi.comments_from_lms':{'mod':'r', 'writeerror':'403'}, 'cmi.comments_from_lms':{'mod':'r', 'writeerror':'403'},
'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'403'}, 'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'403'},
'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, 'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'rw', 'writeerror':'405'}, 'cmi.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'}, 'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},
'cmi.objectives.n.score.raw':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.objectives.n.score.raw':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score.min':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.objectives.n.score.min':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.score.max':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.objectives.n.score.max':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
'cmi.objectives.n.status':{'pattern':CMIIndex, 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'}, 'cmi.objectives.n.status':{'pattern':CMIIndex, 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},
'cmi.student_data._children':{'defaultvalue':student_data_children, 'mod':'r', 'writeerror':'403'}, 'cmi.student_data._children':{'defaultvalue':student_data_children, 'mod':'r', 'writeerror':'403'},
'cmi.student_data.mastery_score':{'mod':'r', 'writeerror':'403'}, 'cmi.student_data.mastery_score':{'mod':'r', 'writeerror':'403'},
'cmi.student_data.max_time_allowed':{'mod':'r', 'writeerror':'403'}, 'cmi.student_data.max_time_allowed':{'mod':'r', 'writeerror':'403'},
'cmi.student_data.time_limit_action':{'mod':'r', 'writeerror':'403'}, 'cmi.student_data.time_limit_action':{'mod':'r', 'writeerror':'403'},
'cmi.student_preference._children':{'defaultvalue':student_preference_children, 'mod':'r', 'writeerror':'403'}, 'cmi.student_preference._children':{'defaultvalue':student_preference_children, 'mod':'r', 'writeerror':'403'},
'cmi.student_preference.audio':{'format':CMISInteger, 'range':audio_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.student_preference.audio':{'format':CMISInteger, 'range':audio_range, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.language':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'}, 'cmi.student_preference.language':{'format':CMIString255, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.speed':{'format':CMISInteger, 'range':speed_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.student_preference.speed':{'format':CMISInteger, 'range':speed_range, 'mod':'rw', 'writeerror':'405'},
'cmi.student_preference.text':{'format':CMISInteger, 'range':text_range, 'mod':'rw', 'writeerror':'405'}, 'cmi.student_preference.text':{'format':CMISInteger, 'range':text_range, 'mod':'rw', 'writeerror':'405'},
'cmi.interactions._children':{'defaultvalue':interactions_children, 'mod':'r', 'writeerror':'403'}, 'cmi.interactions._children':{'defaultvalue':interactions_children, 'mod':'r', 'writeerror':'403'},
'cmi.interactions._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, 'cmi.interactions._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.objectives._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, 'cmi.interactions.n.objectives._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.objectives.n.id':{'pattern':CMIIndex, 'format':CMIIdentifier, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.time':{'pattern':CMIIndex, 'format':CMITime, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.time':{'pattern':CMIIndex, 'format':CMITime, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.type':{'pattern':CMIIndex, 'format':CMIType, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.type':{'pattern':CMIIndex, 'format':CMIType, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.correct_responses._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'}, 'cmi.interactions.n.correct_responses._count':{'pattern':CMIIndex, 'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
'cmi.interactions.n.correct_responses.n.pattern':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.correct_responses.n.pattern':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.weighting':{'pattern':CMIIndex, 'format':CMIDecimal, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.weighting':{'pattern':CMIIndex, 'format':CMIDecimal, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.student_response':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.student_response':{'pattern':CMIIndex, 'format':CMIFeedback, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.result':{'pattern':CMIIndex, 'format':CMIResult, 'mod':'w', 'readerror':'404', 'writeerror':'405'}, 'cmi.interactions.n.result':{'pattern':CMIIndex, 'format':CMIResult, 'mod':'w', 'readerror':'404', 'writeerror':'405'},
'cmi.interactions.n.latency':{'pattern':CMIIndex, 'format':CMITimespan, 'mod':'w', 'readerror':'404', 'writeerror':'405'} 'cmi.interactions.n.latency':{'pattern':CMIIndex, 'format':CMITimespan, 'mod':'w', 'readerror':'404', 'writeerror':'405'}
}; };
// //
// Datamodel inizialization // Datamodel inizialization
// //
var cmi = new Object(); var cmi = new Object();
cmi.core = new Object(); cmi.core = new Object();
cmi.core.score = new Object(); cmi.core.score = new Object();
cmi.objectives = new Object(); cmi.objectives = new Object();
cmi.student_data = new Object(); cmi.student_data = new Object();
cmi.student_preference = new Object(); cmi.student_preference = new Object();
cmi.interactions = new Object(); cmi.interactions = new Object();
var nav = new Object(); var nav = new Object();
for (element in datamodel) { for (element in datamodel) {
if (element.match(/\.n\./) == null) { if (element.match(/\.n\./) == null) {
//alert (element+' = '+eval('datamodel["'+element+'"].defaultvalue')); //alert (element+' = '+eval('datamodel["'+element+'"].defaultvalue'));
if ((typeof eval('datamodel["'+element+'"].defaultvalue')) != 'undefined') { if ((typeof eval('datamodel["'+element+'"].defaultvalue')) != 'undefined') {
eval(element+' = datamodel["'+element+'"].defaultvalue;'); eval(element+' = datamodel["'+element+'"].defaultvalue;');
} else { } else {
eval(element+' = "";'); eval(element+' = "";');
} }
//alert (element+' = '+eval(element)); //alert (element+' = '+eval(element));
} }
} }
// //
@ -117,12 +117,12 @@ function SCORMapi1_3() {
function Initialize (param) { function Initialize (param) {
if (param == "") { if (param == "") {
if (!Initialized) { if (!Initialized) {
Initialized = true; Initialized = true;
errorCode = "0"; errorCode = "0";
return "true"; return "true";
} else { } else {
errorCode = "101"; errorCode = "101";
} }
} else { } else {
errorCode = "201"; errorCode = "201";
} }
@ -130,131 +130,131 @@ function SCORMapi1_3() {
} }
function Terminate (param) { function Terminate (param) {
if (param == "") { if (param == "") {
if (Initialized) { if (Initialized) {
LMSCommit(""); LMSCommit("");
Initialized = false; Initialized = false;
errorCode = "0"; errorCode = "0";
return "true"; return "true";
} else { } else {
errorCode = "301"; errorCode = "301";
} }
} else { } else {
errorCode = "201"; errorCode = "201";
} }
} }
function GetValue (element) { function GetValue (element) {
if (Initialized) { if (Initialized) {
if (element !="") { if (element !="") {
expression = new RegExp(CMIIndex,'g'); expression = new RegExp(CMIIndex,'g');
element = element.replace(expression,'.n.'); element = element.replace(expression,'.n.');
if ((typeof eval('datamodel["'+element+'"]')) != "undefined") { if ((typeof eval('datamodel["'+element+'"]')) != "undefined") {
if (eval('datamodel["'+element+'"].mod') != 'w') { if (eval('datamodel["'+element+'"].mod') != 'w') {
errorCode = "0"; errorCode = "0";
return eval(element); return eval(element);
} else { } else {
errorCode = eval('datamodel["'+element+'"].readerror'); errorCode = eval('datamodel["'+element+'"].readerror');
} }
} else { } else {
errorCode = "401" errorCode = "401"
} }
} else { } else {
errorCode = "201"; errorCode = "201";
} }
} else { } else {
errorCode = "301"; errorCode = "301";
} }
return ""; return "";
} }
function SetValue (element,value) { function SetValue (element,value) {
if (Initialized) { if (Initialized) {
if (element != "") { if (element != "") {
expression = new RegExp(CMIIndex,'g'); expression = new RegExp(CMIIndex,'g');
elementmodel = element.replace(expression,'.n.'); elementmodel = element.replace(expression,'.n.');
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") { if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') { if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
expression.compile(eval('datamodel["'+elementmodel+'"].format')); expression.compile(eval('datamodel["'+elementmodel+'"].format'));
value = value+''; value = value+'';
matches = value.match(expression); matches = value.match(expression);
if (matches != null) { if (matches != null) {
//Create dynamic data model element //Create dynamic data model element
if (element != elementmodel) { if (element != elementmodel) {
elementIndexes = element.split('.'); elementIndexes = element.split('.');
subelement = 'cmi'; subelement = 'cmi';
for (i=1;i < elementIndexes.length-1;i++) { for (i=1;i < elementIndexes.length-1;i++) {
elementIndex = elementIndexes[i]; elementIndex = elementIndexes[i];
if (elementIndexes[i+1].match(/^\d+$/)) { if (elementIndexes[i+1].match(/^\d+$/)) {
//alert(eval(subelement+'.'+elementIndex+'._count')+1.0); //alert(eval(subelement+'.'+elementIndex+'._count')+1.0);
//if (elementIndexes[i+1] > eval(subelement+'.'+elementIndex+'._count')) { //if (elementIndexes[i+1] > eval(subelement+'.'+elementIndex+'._count')) {
// if (elementIndexes[i+1] == eval(subelement+'.'+elementIndex+'._count')) { //if (elementIndexes[i+1] == eval(subelement+'.'+elementIndex+'._count')) {
// eval(subelement+'.'+elementIndex+'._count')+1.0; // eval(subelement+'.'+elementIndex+'._count')+1.0;
// } // }
subelement = subelement.concat('.'+elementIndex+'_'+elementIndexes[i+1]); subelement = subelement.concat('.'+elementIndex+'_'+elementIndexes[i+1]);
i++; i++;
//} //}
} else { } else {
subelement = subelement.concat('.'+elementIndex); subelement = subelement.concat('.'+elementIndex);
} }
if ((typeof eval(subelement)) == "undefined") { if ((typeof eval(subelement)) == "undefined") {
eval(subelement+' = new Object();'); eval(subelement+' = new Object();');
/*if (elementIndexes[i].match(/^\d+$/)) { /*if (elementIndexes[i].match(/^\d+$/)) {
alert(subelement.substring(0,subelement.length-elementIndexes[i]-1)); alert(subelement.substring(0,subelement.length-elementIndexes[i]-1));
if ((typeof eval(subelement.substring(0,subelement.length-elementIndexes[i]-1))) == "undefined") { if ((typeof eval(subelement.substring(0,subelement.length-elementIndexes[i]-1))) == "undefined") {
// create new count // create new count
} }
} */ } */
} }
} }
element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]); element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]);
//alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value+'\nMatches: '+matches); //alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value+'\nMatches: '+matches);
} }
//Store data //Store data
if ((typeof eval('datamodel["'+elementmodel+'"].range')) != "undefined") { if ((typeof eval('datamodel["'+elementmodel+'"].range')) != "undefined") {
range = eval('datamodel["'+elementmodel+'"].range'); range = eval('datamodel["'+elementmodel+'"].range');
ranges = range.split('#'); ranges = range.split('#');
value = value+0.0; value = value+0.0;
if ((value >= ranges[0]) && (value <= ranges[1])) { if ((value >= ranges[0]) && (value <= ranges[1])) {
eval(element+'="'+value+'";'); eval(element+'="'+value+'";');
errorCode = "0"; errorCode = "0";
return "true"; return "true";
} else { } else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
} }
} else { } else {
eval(element+'="'+value+'";'); eval(element+'="'+value+'";');
errorCode = "0"; errorCode = "0";
return "true"; return "true";
} }
} else { } else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
} }
} else { } else {
errorCode = eval('datamodel["'+elementmodel+'"].writeerror'); errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
} }
} else { } else {
errorCode = "401" errorCode = "401"
} }
} else { } else {
errorCode = "201"; errorCode = "201";
} }
} else { } else {
errorCode = "301"; errorCode = "301";
} }
alert('LMSSetValue: '+element+'\nValue: '+value+'\nPattern: '+expression+'\nMatches: '+matches+'\nError Code: '+errorCode); alert('LMSSetValue: '+element+'\nValue: '+value+'\nPattern: '+expression+'\nMatches: '+matches+'\nError Code: '+errorCode);
return "false"; return "false";
} }
function Commit (param) { function Commit (param) {
if (param == "") { if (param == "") {
if (Initialized) { if (Initialized) {
errorCode = "0"; errorCode = "0";
return "true"; return "true";
} else { } else {
errorCode = "301"; errorCode = "301";
} }
} else { } else {
errorCode = "201"; errorCode = "201";
} }
@ -262,41 +262,41 @@ function SCORMapi1_3() {
} }
function GetLastError () { function GetLastError () {
return errorCode; return errorCode;
} }
function GetErrorString (param) { function GetErrorString (param) {
var errorString = new Array(); var errorString = new Array();
errorString["0"] = "No error"; errorString["0"] = "No error";
errorString["101"] = "General exception"; errorString["101"] = "General exception";
errorString["102"] = "General Inizialization Failure"; errorString["102"] = "General Inizialization Failure";
errorString["103"] = "Already Initialized"; errorString["103"] = "Already Initialized";
errorString["104"] = "Content Instance Terminated"; errorString["104"] = "Content Instance Terminated";
errorString["111"] = "General Termination Failure"; errorString["111"] = "General Termination Failure";
errorString["112"] = "Termination Before Inizialization"; errorString["112"] = "Termination Before Inizialization";
errorString["113"] = "Termination After Termination"; errorString["113"] = "Termination After Termination";
errorString["122"] = "Retrieve Data Before Initialization"; errorString["122"] = "Retrieve Data Before Initialization";
errorString["123"] = "Retrieve Data After Termination"; errorString["123"] = "Retrieve Data After Termination";
errorString["132"] = "Store Data Before Inizialization"; errorString["132"] = "Store Data Before Inizialization";
errorString["133"] = "Store Data After Termination"; errorString["133"] = "Store Data After Termination";
errorString["142"] = "Commit Before Inizialization"; errorString["142"] = "Commit Before Inizialization";
errorString["143"] = "Commit After Termination"; errorString["143"] = "Commit After Termination";
errorString["201"] = "General Argument Error"; errorString["201"] = "General Argument Error";
errorString["301"] = "General Get Failure"; errorString["301"] = "General Get Failure";
errorString["351"] = "General Set Failure"; errorString["351"] = "General Set Failure";
errorString["391"] = "General Commit Failure"; errorString["391"] = "General Commit Failure";
errorString["401"] = "Undefinited Data Model"; errorString["401"] = "Undefinited Data Model";
errorString["402"] = "Unimplemented Data Model Element"; errorString["402"] = "Unimplemented Data Model Element";
errorString["403"] = "Data Model Element Value Not Initialized"; errorString["403"] = "Data Model Element Value Not Initialized";
errorString["404"] = "Data Model Element Is Read Only"; errorString["404"] = "Data Model Element Is Read Only";
errorString["405"] = "Data Model Element Is Write Only"; errorString["405"] = "Data Model Element Is Write Only";
errorString["406"] = "Data Model Element Type Mismatch"; errorString["406"] = "Data Model Element Type Mismatch";
errorString["407"] = "Data Model Element Value Out Of Range"; errorString["407"] = "Data Model Element Value Out Of Range";
errorString["408"] = "Data Model Dependency Not Established"; errorString["408"] = "Data Model Dependency Not Established";
return errorString[param]; return errorString[param];
} }
function GetDiagnostic (param) { function GetDiagnostic (param) {
return SCORM_Call('GetDiagnostic',param); return SCORM_Call('GetDiagnostic',param);
} }
this.Initialize = Initialize; this.Initialize = Initialize;
@ -309,4 +309,4 @@ function SCORMapi1_3() {
this.GetDiagnostic = GetDiagnostic; this.GetDiagnostic = GetDiagnostic;
} }
var API_1484_11 = new SCORMapi1_3(); var API_1484_11 = new SCORMapi1_3();

View file

@ -23,8 +23,8 @@ function scorm_upgrade($oldversion) {
table_column("scorm_scoes", "", "organization", "VARCHAR", "255", "", "", "NOT NULL", "manifest"); table_column("scorm_scoes", "", "organization", "VARCHAR", "255", "", "", "NOT NULL", "manifest");
} }
if ($oldversion < 2004071900) { if ($oldversion < 2004071900) {
table_column("scorm", "", "maxgrade", "FLOAT", "3", "", "0", "NOT NULL", "reference"); table_column("scorm", "", "maxgrade", "FLOAT", "3", "", "0", "NOT NULL", "reference");
table_column("scorm", "", "grademethod", "TINYINT", "2", "", "0", "NOT NULL", "maxgrade"); table_column("scorm", "", "grademethod", "TINYINT", "2", "", "0", "NOT NULL", "maxgrade");
} }
if ($oldversion < 2004111200) { if ($oldversion < 2004111200) {
@ -42,57 +42,57 @@ function scorm_upgrade($oldversion) {
} }
if ($oldversion < 2005031300) { if ($oldversion < 2005031300) {
table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title"); table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title");
table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites"); table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites");
modify_database('',"ALTER TABLE prefix_scorm_scoes ADD timelimitaction SET('exit,message','exit,no message','continue,message','continue,no message') DEFAULT '' AFTER `maxtimeallowed`"); modify_database('',"ALTER TABLE prefix_scorm_scoes ADD timelimitaction SET('exit,message','exit,no message','continue,message','continue,no message') DEFAULT '' AFTER `maxtimeallowed`");
table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms"); table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms");
$oldscoes = get_records_select("scorm_scoes","1","id ASC");
modify_database('',"ALTER TABLE prefix_scorm_scoes CHANGE type scormtype SET('sco','asset') DEFAULT '' NOT NULL");
if(!empty($oldscoes)) {
foreach ($oldscoes as $sco) {
$sco->scormtype = $sco->type;
unset($sco->type);
update_record("scorm_scoes",$sco);
}
}
execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
id int(10) unsigned NOT NULL auto_increment,
userid int(10) unsigned NOT NULL default '0',
scormid int(10) NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
element varchar(255) NOT NULL default '',
value longtext NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element),
KEY userdata (userid, scormid, scoid),
KEY id (id)
) TYPE=MyISAM;",false);
$oldtrackingdata = get_records_select("scorm_sco_users","1","id ASC");
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
if(!empty($oldtrackingdata)) { $oldscoes = get_records_select("scorm_scoes","1","id ASC");
foreach ($oldtrackingdata as $oldtrack) { modify_database('',"ALTER TABLE prefix_scorm_scoes CHANGE type scormtype SET('sco','asset') DEFAULT '' NOT NULL");
$newtrack = ''; if(!empty($oldscoes)) {
$newtrack->userid = $oldtrack->userid; foreach ($oldscoes as $sco) {
$newtrack->scormid = $oldtrack->scormid; $sco->scormtype = $sco->type;
$newtrack->scoid = $oldtrack->scoid; unset($sco->type);
update_record("scorm_scoes",$sco);
foreach ( $oldelements as $element) { }
$newtrack->element = $element; }
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record("scorm_scoes_track",$newtrack,false);
}
}
}
modify_database('',"DROP TABLE prefix_scorm_sco_users"); execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
modify_database('',"INSERT INTO prefix_log_display VALUES ('scorm', 'review', 'resource', 'name')"); id int(10) unsigned NOT NULL auto_increment,
userid int(10) unsigned NOT NULL default '0',
scormid int(10) NOT NULL default '0',
scoid int(10) unsigned NOT NULL default '0',
element varchar(255) NOT NULL default '',
value longtext NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element),
KEY userdata (userid, scormid, scoid),
KEY id (id)
) TYPE=MyISAM;",false);
$oldtrackingdata = get_records_select("scorm_sco_users","1","id ASC");
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
if(!empty($oldtrackingdata)) {
foreach ($oldtrackingdata as $oldtrack) {
$newtrack = '';
$newtrack->userid = $oldtrack->userid;
$newtrack->scormid = $oldtrack->scormid;
$newtrack->scoid = $oldtrack->scoid;
foreach ( $oldelements as $element) {
$newtrack->element = $element;
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record("scorm_scoes_track",$newtrack,false);
}
}
}
modify_database('',"DROP TABLE prefix_scorm_sco_users");
modify_database('',"INSERT INTO prefix_log_display VALUES ('scorm', 'review', 'resource', 'name')");
} }
if ($oldversion < 2005040200) { if ($oldversion < 2005040200) {
@ -109,7 +109,7 @@ function scorm_upgrade($oldversion) {
execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes_track DROP INDEX userid"); execute_sql("ALTER TABLE {$CFG->prefix}scorm_scoes_track DROP INDEX userid");
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD UNIQUE track (userid,scormid,scoid,element);'); modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD UNIQUE track (userid,scormid,scoid,element);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD PRIMARY KEY id (id);'); modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD PRIMARY KEY id (id);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scormid (scormid);'); modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scormid (scormid);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX userid (userid);'); modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX userid (userid);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scoid (scoid);'); modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX scoid (scoid);');
modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX element (element);'); modify_database('','ALTER TABLE prefix_scorm_scoes_track ADD INDEX element (element);');
@ -123,9 +123,9 @@ function scorm_upgrade($oldversion) {
foreach ($scorms as $scorm) { foreach ($scorms as $scorm) {
if (strlen($scorm->datadir) == 14) { if (strlen($scorm->datadir) == 14) {
$basedir = $CFG->dataroot.'/'.$scorm->course; $basedir = $CFG->dataroot.'/'.$scorm->course;
$scormdir = '/moddata/scorm'; $scormdir = '/moddata/scorm';
rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id); rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id);
} }
} }
} }
execute_sql('ALTER TABLE `'.$CFG->prefix.'scorm` DROP `datadir`'); // Old field execute_sql('ALTER TABLE `'.$CFG->prefix.'scorm` DROP `datadir`'); // Old field
@ -136,17 +136,17 @@ function scorm_upgrade($oldversion) {
} }
if ($oldversion < 2005042700) { if ($oldversion < 2005042700) {
$trackingdata = get_records_select("scorm_scoes_track","1","id ASC"); $trackingdata = get_records_select("scorm_scoes_track","1","id ASC");
if (!empty($trackingdata)) { if (!empty($trackingdata)) {
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data'); $oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data'); $newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data');
foreach ($trackingdata as $track) { foreach ($trackingdata as $track) {
if (($pos = array_search($track->element,$oldelements)) !== false) { if (($pos = array_search($track->element,$oldelements)) !== false) {
$track->element = $newelements[$pos]; $track->element = $newelements[$pos];
update_record('scorm_scoes_track',$track); update_record('scorm_scoes_track',$track);
} }
} }
} }
} }
if ($oldversion < 2005042800) { if ($oldversion < 2005042800) {

View file

@ -42,57 +42,57 @@ function scorm_upgrade($oldversion) {
} }
if ($oldversion < 2005031300) { if ($oldversion < 2005031300) {
table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title"); table_column("scorm_scoes", "", "prerequisites", "VARCHAR", "200", "", "", "NOT NULL", "title");
table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites"); table_column("scorm_scoes", "", "maxtimeallowed", "VARCHAR", "13", "", "", "NOT NULL", "prerequisites");
table_column("scorm_scoes", "", "timelimitaction", "VARCHAR", "19", "", "", "NOT NULL", "maxtimeallowed"); table_column("scorm_scoes", "", "timelimitaction", "VARCHAR", "19", "", "", "NOT NULL", "maxtimeallowed");
table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms"); table_column("scorm_scoes", "", "masteryscore", "VARCHAR", "200", "", "", "NOT NULL", "datafromlms");
$oldscoes = get_records_select("scorm_scoes",null,"id ASC");
table_column("scorm_scoes", "type", "scormtype", "VARCHAR", "5", "", "", "NOT NULL");
if(!empty($oldscoes)) {
foreach ($oldscoes as $sco) {
$sco->scormtype = $sco->type;
unset($sco->type);
update_record("scorm_scoes",$sco);
}
}
execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
id SERIAL,
userid integer NOT NULL default '0',
scormid integer NOT NULL default '0',
scoid integer NOT NULL default '0',
element varchar(255) NOT NULL default '',
value text NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element)
);",true);
modify_database('','CREATE INDEX prefix_scorm_scoes_track_userdata_idx ON prefix_scorm_scoes_track (userid, scormid, scoid);');
$oldtracking = get_records_select('scorm_sco_users',null,'id ASC');
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
if(!empty($oldtrackings)) { $oldscoes = get_records_select("scorm_scoes",null,"id ASC");
foreach ($oldtrackings as $oldtrack) { table_column("scorm_scoes", "type", "scormtype", "VARCHAR", "5", "", "", "NOT NULL");
$newtrack = ''; if(!empty($oldscoes)) {
$newtrack->userid = $oldtrack->userid; foreach ($oldscoes as $sco) {
$newtrack->scormid = $oldtrack->scormid; $sco->scormtype = $sco->type;
$newtrack->scoid = $oldtrack->scoid; unset($sco->type);
update_record("scorm_scoes",$sco);
foreach ( $oldelements as $element) { }
$newtrack->element = $element; }
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record('scorm_scoes_track',$newtrack,false);
}
}
}
modify_database('',"DROP TABLE prefix_scorm_sco_users"); execute_sql("CREATE TABLE {$CFG->prefix}scorm_scoes_track (
modify_database('',"INSERT INTO prefix_log_display VALUES ('resource', 'review', 'resource', 'name')"); id SERIAL,
userid integer NOT NULL default '0',
scormid integer NOT NULL default '0',
scoid integer NOT NULL default '0',
element varchar(255) NOT NULL default '',
value text NOT NULL default '',
PRIMARY KEY (userid, scormid, scoid, element),
UNIQUE (userid, scormid, scoid, element)
);",true);
modify_database('','CREATE INDEX prefix_scorm_scoes_track_userdata_idx ON prefix_scorm_scoes_track (userid, scormid, scoid);');
$oldtracking = get_records_select('scorm_sco_users',null,'id ASC');
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
if(!empty($oldtrackings)) {
foreach ($oldtrackings as $oldtrack) {
$newtrack = '';
$newtrack->userid = $oldtrack->userid;
$newtrack->scormid = $oldtrack->scormid;
$newtrack->scoid = $oldtrack->scoid;
foreach ( $oldelements as $element) {
$newtrack->element = $element;
$newtrack->value = $oldtrack->$element;
if ($newtrack->value == NULL) {
$newtrack->value = '';
}
insert_record('scorm_scoes_track',$newtrack,false);
}
}
}
modify_database('',"DROP TABLE prefix_scorm_sco_users");
modify_database('',"INSERT INTO prefix_log_display VALUES ('resource', 'review', 'resource', 'name')");
} }
if ($oldversion < 2005040200) { if ($oldversion < 2005040200) {
@ -120,9 +120,9 @@ function scorm_upgrade($oldversion) {
foreach ($scorms as $scorm) { foreach ($scorms as $scorm) {
if (strlen($scorm->datadir) == 14) { if (strlen($scorm->datadir) == 14) {
$basedir = $CFG->dataroot.'/'.$scorm->course; $basedir = $CFG->dataroot.'/'.$scorm->course;
$scormdir = '/moddata/scorm'; $scormdir = '/moddata/scorm';
rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id); rename($basedir.$scormdir.$scorm->datadir,$basedir.$scormdir.'/'.$scorm->id);
} }
} }
} }
execute_sql('ALTER TABLE '.$CFG->prefix.'scorm DROP datadir'); // Old field execute_sql('ALTER TABLE '.$CFG->prefix.'scorm DROP datadir'); // Old field
@ -133,17 +133,17 @@ function scorm_upgrade($oldversion) {
} }
if ($oldversion < 2005042700) { if ($oldversion < 2005042700) {
$trackingdata = get_records_select("scorm_scoes_track",null,"id ASC"); $trackingdata = get_records_select("scorm_scoes_track",null,"id ASC");
if (!empty($trackingdata)) { if (!empty($trackingdata)) {
$oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data'); $oldelements = array ('cmi_core_lesson_location','cmi_core_lesson_status','cmi_core_exit','cmi_core_total_time','cmi_core_score_raw','cmi_suspend_data');
$newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data'); $newelements = array ('cmi.core.lesson_location','cmi.core.lesson_status','cmi.core.exit','cmi.core.total_time','cmi.core.score.raw','cmi.suspend_data');
foreach ($trackingdata as $track) { foreach ($trackingdata as $track) {
if (($pos = array_search($track->element,$oldelements)) !== false) { if (($pos = array_search($track->element,$oldelements)) !== false) {
$track->element = $newelements[$pos]; $track->element = $newelements[$pos];
update_record('scorm_scoes_track',$track); update_record('scorm_scoes_track',$track);
} }
} }
} }
} }
if ($oldversion < 2005042800) { if ($oldversion < 2005042800) {

File diff suppressed because it is too large Load diff

View file

@ -8,28 +8,28 @@
optional_variable($mode); // lesson mode optional_variable($mode); // lesson mode
if ($id) { if ($id) {
if (! $cm = get_record("course_modules", "id", $id)) { if (! $cm = get_record("course_modules", "id", $id)) {
error("Course Module ID was incorrect"); error("Course Module ID was incorrect");
} }
if (! $course = get_record("course", "id", $cm->course)) { if (! $course = get_record("course", "id", $cm->course)) {
error("Course is misconfigured"); error("Course is misconfigured");
} }
if (! $scorm = get_record("scorm", "id", $cm->instance)) { if (! $scorm = get_record("scorm", "id", $cm->instance)) {
error("Course module is incorrect"); error("Course module is incorrect");
} }
} else { } else {
if (! $scorm = get_record("scorm", "id", $a)) { if (! $scorm = get_record("scorm", "id", $a)) {
error("Course module is incorrect"); error("Course module is incorrect");
} }
if (! $course = get_record("course", "id", $scorm->course)) { if (! $course = get_record("course", "id", $scorm->course)) {
error("Course is misconfigured"); error("Course is misconfigured");
} }
if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) { if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) {
error("Course Module ID was incorrect"); error("Course Module ID was incorrect");
} }
} }
require_login($course->id, false, $cm); require_login($course->id, false, $cm);
@ -39,34 +39,34 @@
// //
// Direct sco request // Direct sco request
// //
if ($sco = get_record("scorm_scoes","id",$scoid)) { if ($sco = get_record("scorm_scoes","id",$scoid)) {
if ($sco->launch == '') { if ($sco->launch == '') {
// Search for the next launchable sco // Search for the next launchable sco
if ($scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>'' AND id>".$sco->id,"id ASC")) { if ($scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>'' AND id>".$sco->id,"id ASC")) {
$sco = current($scoes); $sco = current($scoes);
} }
} }
} }
} else { } else {
// //
// Search for first incomplete sco // Search for first incomplete sco
// //
if ( $scoes_track = get_records_select("scorm_scoes_track","userid=".$USER->id." AND element='cmi.core.lesson_status' AND scormid=".$scorm->id,"scoid ASC") ) { if ( $scoes_track = get_records_select("scorm_scoes_track","userid=".$USER->id." AND element='cmi.core.lesson_status' AND scormid=".$scorm->id,"scoid ASC") ) {
$sco_track = current($scoes_track); $sco_track = current($scoes_track);
while ((($sco_track->value == "completed") || ($sco_track->value == "passed") || ($sco_track->value == "failed")) && ($mode == "normal")) { while ((($sco_track->value == "completed") || ($sco_track->value == "passed") || ($sco_track->value == "failed")) && ($mode == "normal")) {
$sco_track = next($scoes_track); $sco_track = next($scoes_track);
} }
$sco = get_record("scorm_scoes","id",$sco_track->scoid); $sco = get_record("scorm_scoes","id",$sco_track->scoid);
} }
} }
// //
// If no sco was found get the first of SCORM package // If no sco was found get the first of SCORM package
// //
if (!isset($sco)) { if (!isset($sco)) {
$scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>''","id ASC"); $scoes = get_records_select("scorm_scoes","scorm=".$scorm->id." AND launch<>''","id ASC");
$sco = current($scoes); $sco = current($scoes);
} }
// //
@ -75,35 +75,35 @@
$connector = ''; $connector = '';
$version = substr($scorm->version,0,4); $version = substr($scorm->version,0,4);
if (!empty($sco->parameters) || ($version == 'AICC')) { if (!empty($sco->parameters) || ($version == 'AICC')) {
if (stripos($sco->launch,'?') !== false) { if (stripos($sco->launch,'?') !== false) {
$connector = '&'; $connector = '&';
} else { } else {
$connector = '?'; $connector = '?';
} }
} }
if (scorm_external_link($sco->launch)) { if (scorm_external_link($sco->launch)) {
if ($version == 'AICC') { if ($version == 'AICC') {
if (!empty($sco->parameters)) { if (!empty($sco->parameters)) {
$sco->parameters = '&'. $sco->parameters; $sco->parameters = '&'. $sco->parameters;
} }
$result = $sco->launch.$connector.'aicc_sid='.sesskey().'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco->parameters; $result = $sco->launch.$connector.'aicc_sid='.sesskey().'&aicc_url='.$CFG->wwwroot.'/mod/scorm/aicc.php'.$sco->parameters;
} else { } else {
$result = $sco->launch.$connector.$sco->parameters; $result = $sco->launch.$connector.$sco->parameters;
} }
} else { } else {
if ($CFG->slasharguments) { if ($CFG->slasharguments) {
$result = $CFG->wwwroot.'/file.php/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters; $result = $CFG->wwwroot.'/file.php/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
} else { } else {
$result = $CFG->wwwroot.'/file.php?file=/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters; $result = $CFG->wwwroot.'/file.php?file=/'.$scorm->course.'/moddata/scorm/'.$scorm->id.'/'.$sco->launch.$connector.$sco->parameters;
} }
} }
?> ?>
<html> <html>
<head> <head>
<title>LoadSCO</title> <title>LoadSCO</title>
<meta http-equiv="refresh" content="1;URL=<?php echo $result ?>" /> <meta http-equiv="refresh" content="1;URL=<?php echo $result ?>" />
</head> </head>
<body> <body>
&nbsp; &nbsp;
</body> </body>
</html> </html>

View file

@ -1,16 +1,16 @@
<?php <?php
require_once("$CFG->dirroot/mod/scorm/lib.php"); require_once("$CFG->dirroot/mod/scorm/lib.php");
if (empty($form->name)) { if (empty($form->name)) {
$form->name = ""; $form->name = "";
} }
if (empty($form->reference)) { if (empty($form->reference)) {
$form->reference = ""; $form->reference = "";
} }
if (empty($form->summary)) { if (empty($form->summary)) {
$form->summary = ""; $form->summary = "";
} }
if (empty($form->launch)) { if (empty($form->launch)) {
$form->launch = ""; $form->launch = "";
} }
if (empty($form->auto)) { if (empty($form->auto)) {
$form->auto = ""; $form->auto = "";
@ -55,100 +55,100 @@
var myRequest = NewHttpReq(); var myRequest = NewHttpReq();
result = DoRequest(myRequest,"<?php p($CFG->wwwroot) ?>/mod/scorm/validate.php","id=<?php p($form->course) ?>&reference="+filename+"<?php echo $sessionkey.$scormid.$datadir ?>"); result = DoRequest(myRequest,"<?php p($CFG->wwwroot) ?>/mod/scorm/validate.php","id=<?php p($form->course) ?>&reference="+filename+"<?php echo $sessionkey.$scormid.$datadir ?>");
//alert(result); //alert(result);
results = result.split('\n'); results = result.split('\n');
result = ''; result = '';
errorlogs = ''; errorlogs = '';
datadir = ''; datadir = '';
for (i=0;i<results.length;i++) { for (i=0;i<results.length;i++) {
element = results[i].split('='); element = results[i].split('=');
//alert(element); //alert(element);
switch(element[0]) { switch(element[0]) {
case 'result': case 'result':
result = element[1]; result = element[1];
break; break;
case 'launch': case 'launch':
launch = element[1]; launch = element[1];
break; break;
case 'datadir': case 'datadir':
datadir = element[1]; datadir = element[1];
break; break;
case 'pkgtype': case 'pkgtype':
pkgtype = element[1]; pkgtype = element[1];
break; break;
case 'errorlogs': case 'errorlogs':
i++; i++;
do { do {
errorlogs.concat(results[i]+'\n'); errorlogs.concat(results[i]+'\n');
i++; i++;
} while (i<results.lenght()); } while (i<results.lenght());
break; break;
} }
} }
if ((result == "found") || (result == "regular")) { if ((result == "found") || (result == "regular")) {
theform.datadir.value = datadir; theform.datadir.value = datadir;
theform.pkgtype.value = pkgtype; theform.pkgtype.value = pkgtype;
theform.launch.value = launch; theform.launch.value = launch;
if (launch == 0) { if (launch == 0) {
if ('<?php echo $scormid ?>' != '') { if ('<?php echo $scormid ?>' != '') {
return confirm('<?php print_string('trackingloose','scorm') ?>'); return confirm('<?php print_string('trackingloose','scorm') ?>');
} }
} }
return true; return true;
} else { } else {
result = '<?php print_string('validation','scorm') ?>: '+ result + '\n'; result = '<?php print_string('validation','scorm') ?>: '+ result + '\n';
if (errorlogs != '') { if (errorlogs != '') {
result.concat('<?php print_string('errorlogs','scorm') ?>:\n'+errorlogs); result.concat('<?php print_string('errorlogs','scorm') ?>:\n'+errorlogs);
} }
alert(result); alert(result);
return false; return false;
} }
} }
function checkmethod (grademethod,maxgrade) { function checkmethod (grademethod,maxgrade) {
if (grademethod.options[grademethod.selectedIndex].value == 0) { if (grademethod.options[grademethod.selectedIndex].value == 0) {
maxgrade.disabled=true; maxgrade.disabled=true;
} else { } else {
maxgrade.disabled=false; maxgrade.disabled=false;
} }
} }
</script> </script>
<form name="form" method="post" action="mod.php" onsubmit="return validate_scorm(document.form,document.form.reference.value);"> <form name="form" method="post" action="mod.php" onsubmit="return validate_scorm(document.form,document.form.reference.value);">
<table cellpadding="5"> <table cellpadding="5">
<tr valign="top"> <tr valign="top">
<td align="right"><b><?php print_string("name") ?>:</b></td> <td align="right"><b><?php print_string("name") ?>:</b></td>
<td> <td>
<input type="text" name="name" size="50" value="<?php p($form->name) ?>" alt="<?php print_string("name") ?>" /> <input type="text" name="name" size="50" value="<?php p($form->name) ?>" alt="<?php print_string("name") ?>" />
</td> </td>
</tr> </tr>
<?php <?php
$strfilename = get_string("coursepacket", "scorm"); $strfilename = get_string("coursepacket", "scorm");
$strchooseafile = get_string("chooseapacket", "scorm"); $strchooseafile = get_string("chooseapacket", "scorm");
?> ?>
<tr valign="top"> <tr valign="top">
<td align="right"><b><?php print_string("summary") ?>:</b><br /> <td align="right"><b><?php print_string("summary") ?>:</b><br />
<font size="1"> <font size="1">
<?php helpbutton("summary", get_string("summary"), "scorm", true, true) ?> <?php helpbutton("summary", get_string("summary"), "scorm", true, true) ?>
</font> </font>
</td> </td>
<td> <td>
<?php print_textarea($usehtmleditor, 10, 50, 680, 400, "summary", $form->summary); ?> <?php print_textarea($usehtmleditor, 10, 50, 680, 400, "summary", $form->summary); ?>
</td> </td>
</tr> </tr>
<tr valign="top"> <tr valign="top">
<td align="right" nowrap="nowrap"> <td align="right" nowrap="nowrap">
<b><?php echo $strfilename?>:</b> <b><?php echo $strfilename?>:</b>
</td> </td>
<td> <td>
<?php <?php
echo "<input name=\"reference\" size=\"50\" value=\"$form->reference\" alt=\"$strfilename\" />&nbsp;"; echo "<input name=\"reference\" size=\"50\" value=\"$form->reference\" alt=\"$strfilename\" />&nbsp;";
button_to_popup_window ("/files/index.php?id=$course->id&amp;choose=form.reference", button_to_popup_window ("/files/index.php?id=$course->id&amp;choose=form.reference",
"coursefiles", $strchooseafile, 500, 750, $strchooseafile); "coursefiles", $strchooseafile, 500, 750, $strchooseafile);
helpbutton("package", get_string("coursepacket", "scorm"), "scorm", true); helpbutton("package", get_string("coursepacket", "scorm"), "scorm", true);
?> ?>
</td> </td>
</tr> </tr>
<tr valign="top"> <tr valign="top">
<td align="right"><b><?php print_string("grademethod", "scorm") ?>:</b></td> <td align="right"><b><?php print_string("grademethod", "scorm") ?>:</b></td>
<td> <td>
@ -165,13 +165,13 @@
for ($i=100; $i>=1; $i--) { for ($i=100; $i>=1; $i--) {
$grades[$i] = $i; $grades[$i] = $i;
} }
$disabled = $form->grademethod=='0'; $disabled = $form->grademethod=='0';
choose_from_menu($grades, 'maxgrade', "$form->maxgrade", '','','0',false,$disabled); choose_from_menu($grades, 'maxgrade', "$form->maxgrade", '','','0',false,$disabled);
helpbutton('maxgrade', get_string('maximumgrade'), 'scorm'); helpbutton('maxgrade', get_string('maximumgrade'), 'scorm');
?> ?>
</td> </td>
</tr> </tr>
<tr> <tr>
<td align="right"><b><?php print_string("autocontinue","scorm") ?>:</b></td> <td align="right"><b><?php print_string("autocontinue","scorm") ?>:</b></td>
<td> <td>
<?php <?php
@ -181,9 +181,9 @@
choose_from_menu ($options, "auto", $form->auto,''); choose_from_menu ($options, "auto", $form->auto,'');
helpbutton("autocontinue", get_string("autocontinue", "scorm"), "scorm", true); helpbutton("autocontinue", get_string("autocontinue", "scorm"), "scorm", true);
?> ?>
</td> </td>
</tr> </tr>
<tr> <tr>
<td align="right"><b><?php print_string("enablebrowse","scorm") ?>:</b></td> <td align="right"><b><?php print_string("enablebrowse","scorm") ?>:</b></td>
<td> <td>
<?php <?php
@ -193,22 +193,22 @@
choose_from_menu ($options, "browsemode", $form->browsemode, ''); choose_from_menu ($options, "browsemode", $form->browsemode, '');
helpbutton("browsemode", get_string("browsemode", "scorm"), "scorm", true); helpbutton("browsemode", get_string("browsemode", "scorm"), "scorm", true);
?> ?>
</td> </td>
</tr> </tr>
<tr valign="top"> <tr valign="top">
<td align="right"><b><?php print_string("width","scorm") ?>:</b></td> <td align="right"><b><?php print_string("width","scorm") ?>:</b></td>
<td> <td>
<input type="text" name="width" value="<?php echo $form->width ?>" size="4" /> <input type="text" name="width" value="<?php echo $form->width ?>" size="4" />
<?php helpbutton("width", get_string("width", "scorm"), "scorm", true); ?> <?php helpbutton("width", get_string("width", "scorm"), "scorm", true); ?>
</td> </td>
</tr> </tr>
<tr valign="top"> <tr valign="top">
<td align="right"><b><?php print_string("height","scorm") ?>:</b></td> <td align="right"><b><?php print_string("height","scorm") ?>:</b></td>
<td> <td>
<input type="text" name="height" value="<?php echo $form->height ?>" size="4" /> <input type="text" name="height" value="<?php echo $form->height ?>" size="4" />
<?php helpbutton("height", get_string("height", "scorm"), "scorm", true); ?> <?php helpbutton("height", get_string("height", "scorm"), "scorm", true); ?>
</td> </td>
</tr> </tr>
</table> </table>
<input type="hidden" name="datadir" value="<?php p($form->datadir) ?>" /> <input type="hidden" name="datadir" value="<?php p($form->datadir) ?>" />
<input type="hidden" name="pkgtype" value="<?php p($form->pkgtype) ?>" /> <input type="hidden" name="pkgtype" value="<?php p($form->pkgtype) ?>" />
@ -223,7 +223,7 @@
<input type="hidden" name="instance" value="<?php p($form->instance) ?>" /> <input type="hidden" name="instance" value="<?php p($form->instance) ?>" />
<input type="hidden" name="mode" value="<?php p($form->mode) ?>" /> <input type="hidden" name="mode" value="<?php p($form->mode) ?>" />
<center> <center>
<input type="submit" value="<?php print_string('savechanges') ?>" /> <input type="submit" value="<?php print_string('savechanges') ?>" />
<input type="button" name="cancel" value="<?php print_string('cancel') ?>" onclick="document.location='view.php?id=<?php echo $form->course ?>'" /> <input type="button" name="cancel" value="<?php print_string('cancel') ?>" onclick="document.location='view.php?id=<?php echo $form->course ?>'" />
</center> </center>
</form> </form>

View file

@ -71,8 +71,8 @@
$scoidstring = '&scoid='.$scoid; $scoidstring = '&scoid='.$scoid;
} }
if (!empty($_POST['currentorg'])) { if (!empty($_POST['currentorg'])) {
$currentorg = $_POST['currentorg']; $currentorg = $_POST['currentorg'];
$currentorgstring = '&currentorg='.$currentorg; $currentorgstring = '&currentorg='.$currentorg;
} }
$strexpand = get_string('expcoll','scorm'); $strexpand = get_string('expcoll','scorm');
@ -85,33 +85,33 @@
//$bodyscripts = "onunload='SCOFinish();'"; //$bodyscripts = "onunload='SCOFinish();'";
$bodyscripts = ''; $bodyscripts = '';
print_header($pagetitle, "$course->fullname", print_header($pagetitle, "$course->fullname",
"$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>", "$navigation <a target='{$CFG->framename}' href='view.php?id=$cm->id'>".format_string($scorm->name,true)."</a>",
'', '', true, update_module_button($cm->id, $course->id, $strscorm),'',false,$bodyscripts); '', '', true, update_module_button($cm->id, $course->id, $strscorm),'',false,$bodyscripts);
?> ?>
<table width="100%"> <table width="100%">
<tr><td valign="top"> <tr><td valign="top">
<p><?php echo format_text($scorm->summary) ?></p> <p><?php echo format_text($scorm->summary) ?></p>
<p><?php echo $mode == 'browse' ? get_string('browsemode','scorm') : '&nbsp;'; ?></p> <p><?php echo $mode == 'browse' ? get_string('browsemode','scorm') : '&nbsp;'; ?></p>
<table class='generalbox' cellpadding='5' cellspacing='0'> <table class='generalbox' cellpadding='5' cellspacing='0'>
<tr> <tr>
<th> <th>
<div style='float: left;'><?php print_string('coursestruct','scorm') ?></div> <div style='float: left;'><?php print_string('coursestruct','scorm') ?></div>
<!--<div style='float:right;'> <!--<div style='float:right;'>
<a href='#' onClick='popup(main,popupimg);'><img id='popupimg' src="pix/popup.gif" alt="<?php echo $strpopup ?>" title="<?php echo $strpopup ?>"/></a> <a href='#' onClick='popup(main,popupimg);'><img id='popupimg' src="pix/popup.gif" alt="<?php echo $strpopup ?>" title="<?php echo $strpopup ?>"/></a>
</div> --> </div> -->
</th> </th>
</tr> </tr>
<!-- <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%"> --> <!-- <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%"> -->
<tr><td width="<?php echo $CFG->scorm_structurewidth ?>%"> <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%">
<?php <?php
$sco = scorm_display_structure($scorm,'scormlist',$currentorg,$scoid,$mode,true); $sco = scorm_display_structure($scorm,'scormlist',$currentorg,$scoid,$mode,true);
if ($mode == 'normal') { if ($mode == 'normal') {
if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) { if ($trackdata = scorm_get_tracks($USER->id,$sco->id)) {
if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) { if (($trackdata->status == 'completed') || ($trackdata->status == 'passed') || ($trackdata->status == 'failed')) {
$mode = 'review'; $mode = 'review';
} }
} }
} }
add_to_log($course->id, 'scorm', 'view', "playscorm.php?id=$cm->id&scoid=$sco->id", "$scorm->id"); add_to_log($course->id, 'scorm', 'view', "playscorm.php?id=$cm->id&scoid=$sco->id", "$scorm->id");
$scoidstring = '&scoid='.$sco->id; $scoidstring = '&scoid='.$sco->id;
@ -119,18 +119,18 @@
$SESSION->scorm_scoid = $sco->id; $SESSION->scorm_scoid = $sco->id;
?> ?>
</td></tr> </td></tr>
<tr><td align="center"> <tr><td align="center">
<form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top"> <form name="navform" method="post" action="playscorm.php?id=<?php echo $cm->id ?>" target="_top">
<input name="scoid" type="hidden" /> <input name="scoid" type="hidden" />
<input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" /> <input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
<input name="mode" type="hidden" value="<?php echo $mode ?>" /> <input name="mode" type="hidden" value="<?php echo $mode ?>" />
<input name="prev" type="<?php if (($sco->prev == 0) || ($sco->showprev == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('prev','scorm') ?>" onClick="prevSCO();" /> <input name="prev" type="<?php if (($sco->prev == 0) || ($sco->showprev == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('prev','scorm') ?>" onClick="prevSCO();" />
<input name="next" type="<?php if (($sco->next == 0) || ($sco->shownext == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('next','scorm') ?>" onClick="nextSCO();" /><br /> <input name="next" type="<?php if (($sco->next == 0) || ($sco->shownext == 1)) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('next','scorm') ?>" onClick="nextSCO();" /><br />
<input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" /> <input name="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
</form> </form>
</td></tr> </td></tr>
</table> </table>
</td> </td>
<td valign="top" width="<?php print $scorm->width ?>"> <td valign="top" width="<?php print $scorm->width ?>">
<iframe name="main" width="100%" height="<?php echo $scorm->height ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe> <iframe name="main" width="100%" height="<?php echo $scorm->height ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe>
@ -153,25 +153,25 @@
} }
} }
function popup(win,image) { function popup(win,image) {
win = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width ?>,height=<?php echo $scorm->height ?>,scrollbars=1"); win = window.open("loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>","","width=<?php echo $scorm->width ?>,height=<?php echo $scorm->height ?>,scrollbars=1");
image.src = "pix/popdown.gif"; image.src = "pix/popdown.gif";
return win; return win;
} }
function prevSCO() { function prevSCO() {
playSCO(<?php echo $sco->prev ?>); playSCO(<?php echo $sco->prev ?>);
} }
function nextSCO() { function nextSCO() {
playSCO(<?php echo $sco->next ?>); playSCO(<?php echo $sco->next ?>);
} }
function expandCollide(which,list) { function expandCollide(which,list) {
var nn=document.ids?true:false var nn=document.ids?true:false
var w3c=document.getElementById?true:false var w3c=document.getElementById?true:false
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all."; var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
var mid=w3c?").style":".style"; var mid=w3c?").style":".style";
if (eval(beg+list+mid+".display") != "none") { if (eval(beg+list+mid+".display") != "none") {
which.src = "pix/plus.gif"; which.src = "pix/plus.gif";

View file

@ -34,7 +34,7 @@
if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) { if (! $cm = get_coursemodule_from_instance("scorm", $scorm->id, $course->id)) {
error("Course Module ID was incorrect"); error("Course Module ID was incorrect");
} }
} }
require_login($course->id, false, $cm); require_login($course->id, false, $cm);
@ -58,22 +58,22 @@
$strscorm = get_string("modulename", "scorm"); $strscorm = get_string("modulename", "scorm");
$strreport = get_string("report", "scorm"); $strreport = get_string("report", "scorm");
$strname = get_string('name'); $strname = get_string('name');
if (!empty($id)) { if (!empty($id)) {
print_header("$course->shortname: ".format_string($scorm->name), "$course->fullname", print_header("$course->shortname: ".format_string($scorm->name), "$course->fullname",
"$navigation <a href=\"index.php?id=$course->id\">$strscorms</a> "$navigation <a href=\"index.php?id=$course->id\">$strscorms</a>
-> <a href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a> -> $strreport", -> <a href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a> -> $strreport",
"", "", true); "", "", true);
} else { } else {
print_header("$course->shortname: ".format_string($scorm->name), "$course->fullname", print_header("$course->shortname: ".format_string($scorm->name), "$course->fullname",
"$navigation <a href=\"index.php?id=$course->id\">$strscorms</a> "$navigation <a href=\"index.php?id=$course->id\">$strscorms</a>
-> <a href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a> -> <a href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a>
-> <a href=\"report.php?id=$cm->id\">$strreport</a> -> $sco->title", -> <a href=\"report.php?id=$cm->id\">$strreport</a> -> $sco->title",
"", "", true); "", "", true);
} }
print_heading(format_string($scorm->name)); print_heading(format_string($scorm->name));
} }
if (!empty($id)) { if (!empty($id)) {
if ($scoes = get_records_select("scorm_scoes","scorm='$scorm->id' ORDER BY id")) { if ($scoes = get_records_select("scorm_scoes","scorm='$scorm->id' ORDER BY id")) {
if ($scousers=get_records_select("scorm_scoes_track", "scormid='$scorm->id' GROUP BY userid,scormid", "", "userid,scormid")) { if ($scousers=get_records_select("scorm_scoes_track", "scormid='$scorm->id' GROUP BY userid,scormid", "", "userid,scormid")) {
$table->head = array('&nbsp;', $strname); $table->head = array('&nbsp;', $strname);
$table->align = array('center', 'left'); $table->align = array('center', 'left');
@ -81,88 +81,88 @@
$table->width = '100%'; $table->width = '100%';
$table->size = array(10, '*'); $table->size = array(10, '*');
foreach ($scoes as $sco) { foreach ($scoes as $sco) {
if ($sco->launch!='') { if ($sco->launch!='') {
$table->head[]=scorm_string_round($sco->title); $table->head[]=scorm_string_round($sco->title);
$table->align[] = 'center'; $table->align[] = 'center';
$table->wrap[] = 'nowrap'; $table->wrap[] = 'nowrap';
$table->size[] = '*'; $table->size[] = '*';
} }
} }
foreach ($scousers as $scouser) { foreach ($scousers as $scouser) {
if ($userdata = scorm_get_user_data($scouser->userid)) { if ($userdata = scorm_get_user_data($scouser->userid)) {
$row = ''; $row = '';
$row[] = print_user_picture($scouser->userid, $course->id, $userdata->picture, false, true); $row[] = print_user_picture($scouser->userid, $course->id, $userdata->picture, false, true);
$row[] = "<a href=\"$CFG->wwwroot/user/view.php?id=$scouser->userid&course=$course->id\">". $row[] = "<a href=\"$CFG->wwwroot/user/view.php?id=$scouser->userid&course=$course->id\">".
"$userdata->firstname $userdata->lastname</a>"; "$userdata->firstname $userdata->lastname</a>";
foreach ($scoes as $sco) { foreach ($scoes as $sco) {
if ($sco->launch!='') { if ($sco->launch!='') {
$anchorstart = ''; $anchorstart = '';
$anchorend = ''; $anchorend = '';
$scoreview = ''; $scoreview = '';
if ($trackdata = scorm_get_tracks($sco->id,$scouser->userid)) { if ($trackdata = scorm_get_tracks($sco->id,$scouser->userid)) {
if ($trackdata->score_raw != '') { if ($trackdata->score_raw != '') {
$scoreview = '<br />'.get_string('score','scorm').':&nbsp;'.$trackdata->score_raw; $scoreview = '<br />'.get_string('score','scorm').':&nbsp;'.$trackdata->score_raw;
} }
if ($trackdata->status == '') { if ($trackdata->status == '') {
$trackdata->status = 'notattempted'; $trackdata->status = 'notattempted';
} else { } else {
$anchorstart = '<a href="report.php?b='.$sco->id.'&user='.$scouser->userid.'" title="'.get_string('details','scorm').'">'; $anchorstart = '<a href="report.php?b='.$sco->id.'&user='.$scouser->userid.'" title="'.get_string('details','scorm').'">';
$anchorend = '</a>'; $anchorend = '</a>';
} }
} else { } else {
$trackdata->status = 'notattempted'; $trackdata->status = 'notattempted';
$trackdata->total_time = ''; $trackdata->total_time = '';
} }
$strstatus = get_string($trackdata->status,'scorm'); $strstatus = get_string($trackdata->status,'scorm');
$row[] = $anchorstart.'<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'. $row[] = $anchorstart.'<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'.
$strstatus.'">&nbsp;'.$trackdata->total_time.$scoreview.$anchorend; $strstatus.'">&nbsp;'.$trackdata->total_time.$scoreview.$anchorend;
} }
} }
$table->data[] = $row; $table->data[] = $row;
} }
} }
print_table($table); print_table($table);
} else { } else {
notice('No users to report'); notice('No users to report');
} }
} }
} else { } else {
if (!empty($user)) { if (!empty($user)) {
if ($userdata = scorm_get_user_data($user)) { if ($userdata = scorm_get_user_data($user)) {
print_simple_box_start('center'); print_simple_box_start('center');
print_heading(format_string($sco->title)); print_heading(format_string($sco->title));
echo '<div align="center">'."\n"; echo '<div align="center">'."\n";
print_user_picture($user, $course->id, $userdata->picture, false, false); print_user_picture($user, $course->id, $userdata->picture, false, false);
echo "<a href=\"$CFG->wwwroot/user/view.php?id=$user&course=$course->id\">". echo "<a href=\"$CFG->wwwroot/user/view.php?id=$user&course=$course->id\">".
"$userdata->firstname $userdata->lastname</a><br />"; "$userdata->firstname $userdata->lastname</a><br />";
$scoreview = ''; $scoreview = '';
if ($trackdata = scorm_get_tracks($sco->id,$user)) { if ($trackdata = scorm_get_tracks($sco->id,$user)) {
if ($trackdata->score_raw != '') { if ($trackdata->score_raw != '') {
$scoreview = get_string('score','scorm').':&nbsp;'.$trackdata->score_raw; $scoreview = get_string('score','scorm').':&nbsp;'.$trackdata->score_raw;
} }
if ($trackdata->status == '') { if ($trackdata->status == '') {
$trackdata->status = 'notattempted'; $trackdata->status = 'notattempted';
} }
} else { } else {
$trackdata->status = 'notattempted'; $trackdata->status = 'notattempted';
$trackdata->total_time = ''; $trackdata->total_time = '';
} }
$strstatus = get_string($trackdata->status,'scorm'); $strstatus = get_string($trackdata->status,'scorm');
echo '<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'. echo '<img src="pix/'.$trackdata->status.'.gif" alt="'.$strstatus.'" title="'.
$strstatus.'">&nbsp;'.$trackdata->total_time.'<br />'.$scoreview.'<br />'; $strstatus.'">&nbsp;'.$trackdata->total_time.'<br />'.$scoreview.'<br />';
echo '</div>'."\n"; echo '</div>'."\n";
//print_r($trackdata); //print_r($trackdata);
foreach($trackdata as $element => $value) { foreach($trackdata as $element => $value) {
if (substr($element,0,3) == 'cmi') { if (substr($element,0,3) == 'cmi') {
echo $element.' => '.$value.'<br />'; echo $element.' => '.$value.'<br />';
} }
} }
print_simple_box_end(); print_simple_box_end();
} }
} else { } else {
error('Missing script parameter'); error('Missing script parameter');
} }
} }
if (empty($noheader)) { if (empty($noheader)) {
print_footer($course); print_footer($course);

View file

@ -4,18 +4,18 @@ function NewHttpReq() {
httpReq = new XMLHttpRequest(); httpReq = new XMLHttpRequest();
} else { } else {
try { try {
httpReq = new ActiveXObject("Msxml2.XMLHTTP.4.0"); httpReq = new ActiveXObject("Msxml2.XMLHTTP.4.0");
} catch (e) { } catch (e) {
try { try {
httpReq = new ActiveXObject("Msxml2.XMLHTTP"); httpReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (ee) { } catch (ee) {
try { try {
httpReq = new ActiveXObject("Microsoft.XMLHTTP"); httpReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (eee) { } catch (eee) {
httpReq = false; httpReq = false;
} }
} }
} }
} }
return httpReq; return httpReq;
} }

View file

@ -95,7 +95,7 @@
for($i = 0; $i < sizeof($scoes); $i++) { for($i = 0; $i < sizeof($scoes); $i++) {
$sub_info = $scoes[$i]; $sub_info = $scoes[$i];
//We'll need this later!! //We'll need this later!!
$oldid = backup_todb($sub_info['#']['ID']['0']['#']); $oldid = backup_todb($sub_info['#']['ID']['0']['#']);
//Now, build the scorm_scoes record structure //Now, build the scorm_scoes record structure

View file

@ -10,61 +10,61 @@ if (confirm_sesskey()) {
$courseid = $_GET["id"]; $courseid = $_GET["id"];
$launch = 0; $launch = 0;
if (isset($_GET["instance"])) { if (isset($_GET["instance"])) {
$scormid = $_GET["instance"]; $scormid = $_GET["instance"];
if (is_file($CFG->dataroot.'/'.$courseid.'/'.$reference)) { if (is_file($CFG->dataroot.'/'.$courseid.'/'.$reference)) {
$fp = fopen($CFG->dataroot.'/'.$courseid.'/'.$reference,"r"); $fp = fopen($CFG->dataroot.'/'.$courseid.'/'.$reference,"r");
$fstat = fstat($fp); $fstat = fstat($fp);
fclose($fp); fclose($fp);
if ($scorm = get_record("scorm","id",$scormid)) { if ($scorm = get_record("scorm","id",$scormid)) {
$launch = $scorm->launch; $launch = $scorm->launch;
if ((($scorm->timemodified < $fstat["mtime"]) && ($scorm->reference == $reference)) || ($scorm->reference != $reference)) { if ((($scorm->timemodified < $fstat["mtime"]) && ($scorm->reference == $reference)) || ($scorm->reference != $reference)) {
// This is a new package // This is a new package
$launch = 0; $launch = 0;
} else { } else {
// Old package already validated // Old package already validated
$validation->result = 'found'; $validation->result = 'found';
if (strpos($scorm->version,'AICC') !== false) { if (strpos($scorm->version,'AICC') !== false) {
$validation->pkgtype = 'AICC'; $validation->pkgtype = 'AICC';
} else {
$validation->pkgtype = 'SCORM';
}
}
} else { } else {
$validation->result = 'badinstance'; $validation->pkgtype = 'SCORM';
$launch = -1; }
} }
} else {
$validation->result = 'badinstance';
$launch = -1;
}
} else { } else {
$validation->result = 'badreference'; $validation->result = 'badreference';
$launch = -1; $launch = -1;
} }
} }
//$launch = 0; //$launch = 0;
if ($launch == 0) { if ($launch == 0) {
// //
// Package must be validated // Package must be validated
// //
// Create a temporary directory to unzip package and validate package // Create a temporary directory to unzip package and validate package
$tempdir = ''; $tempdir = '';
$scormdir = ''; $scormdir = '';
if ($scormdir = make_upload_directory("$courseid/$CFG->moddata/scorm")) { if ($scormdir = make_upload_directory("$courseid/$CFG->moddata/scorm")) {
if ($tempdir = scorm_datadir($scormdir)) { if ($tempdir = scorm_datadir($scormdir)) {
copy ("$CFG->dataroot/$courseid/$reference", $tempdir."/".basename($reference)); copy ("$CFG->dataroot/$courseid/$reference", $tempdir."/".basename($reference));
$ext = strtolower(substr(basename($reference),strrpos(basename($reference),'.'))); $ext = strtolower(substr(basename($reference),strrpos(basename($reference),'.')));
if (($ext == '.zip') || ($ext == '.pif')) { if (($ext == '.zip') || ($ext == '.pif')) {
unzip_file($tempdir."/".basename($reference), $tempdir, false); unzip_file($tempdir."/".basename($reference), $tempdir, false);
$validation = scorm_validate($tempdir); $validation = scorm_validate($tempdir);
} else { } else {
$validation->result = "packagefile"; $validation->result = "packagefile";
} }
} else { } else {
$validation->result = "packagedir"; $validation->result = "packagedir";
} }
} else { } else {
$validation->result = "datadir"; $validation->result = "datadir";
} }
if (($validation->result != "regular") && ($validation->result != "found")) { if (($validation->result != "regular") && ($validation->result != "found")) {
$validation->result = get_string($validation->result,'scorm'); $validation->result = get_string($validation->result,'scorm');
if (is_dir($tempdir)) { if (is_dir($tempdir)) {
// Delete files and temporary directory // Delete files and temporary directory
scorm_delete_files($tempdir); scorm_delete_files($tempdir);
@ -82,19 +82,19 @@ if (confirm_sesskey()) {
echo 'result=' . $validation->result . "\n"; echo 'result=' . $validation->result . "\n";
echo 'launch=' . $launch . "\n"; echo 'launch=' . $launch . "\n";
if (isset($validation->pkgtype)) { if (isset($validation->pkgtype)) {
echo 'pkgtype=' . $validation->pkgtype . "\n"; echo 'pkgtype=' . $validation->pkgtype . "\n";
} }
if (isset($datadir)) { if (isset($datadir)) {
echo 'datadir=' . $datadir . "\n"; echo 'datadir=' . $datadir . "\n";
} }
if (isset($validation->errors[1])) { if (isset($validation->errors[1])) {
echo 'errorlogs='."\n"; echo 'errorlogs='."\n";
foreach($validation->errors as $error) { foreach($validation->errors as $error) {
echo get_string($error->type,"scorm",$error->data) . "\n"; echo get_string($error->type,"scorm",$error->data) . "\n";
} }
} }
/*if ($validation->pkgtype == 'AICC') { /*if ($validation->pkgtype == 'AICC') {
scorm_parse_aicc("$CFG->dataroot/$courseid/$CFG->moddata/scorm$datadir",$scormid); scorm_parse_aicc("$CFG->dataroot/$courseid/$CFG->moddata/scorm$datadir",$scormid);
}*/ }*/
} else { } else {
echo 'result=' . get_string('badrequest','scorm') . "\n"; echo 'result=' . get_string('badrequest','scorm') . "\n";

File diff suppressed because it is too large Load diff

View file

@ -37,12 +37,12 @@
require_login($course->id, false, $cm); require_login($course->id, false, $cm);
if (isset($SESSION->scorm_scoid)) { if (isset($SESSION->scorm_scoid)) {
unset($SESSION->scorm_scoid); unset($SESSION->scorm_scoid);
} }
$strscorms = get_string("modulenameplural", "scorm"); $strscorms = get_string("modulenameplural", "scorm");
$strscorm = get_string("modulename", "scorm"); $strscorm = get_string("modulename", "scorm");
if ($course->category) { if ($course->category) {
$navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id=$course->id\">$course->shortname</a> -> $navigation = "<a target=\"{$CFG->framename}\" href=\"../../course/view.php?id=$course->id\">$course->shortname</a> ->
<a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->"; <a target=\"{$CFG->framename}\" href=\"index.php?id=$course->id\">$strscorms</a> ->";
@ -59,81 +59,81 @@
// //
if (!$cm->visible and !isteacher($course->id)) { if (!$cm->visible and !isteacher($course->id)) {
print_header($pagetitle, "$course->fullname", "$navigation ".format_string($scorm->name), "", "", true, print_header($pagetitle, "$course->fullname", "$navigation ".format_string($scorm->name), "", "", true,
update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm)); update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
notice(get_string("activityiscurrentlyhidden")); notice(get_string("activityiscurrentlyhidden"));
} else { } else {
print_header($pagetitle, "$course->fullname","$navigation <a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a>", print_header($pagetitle, "$course->fullname","$navigation <a target=\"{$CFG->framename}\" href=\"view.php?id=$cm->id\">".format_string($scorm->name,true)."</a>",
"", "", true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm)); "", "", true, update_module_button($cm->id, $course->id, $strscorm), navmenu($course, $cm));
if (isteacher($course->id)) { if (isteacher($course->id)) {
if ($trackedusers = get_record('scorm_scoes_track', 'scormid', $scorm->id, '', '', '', '', 'count(distinct(userid)) as c')) { if ($trackedusers = get_record('scorm_scoes_track', 'scormid', $scorm->id, '', '', '', '', 'count(distinct(userid)) as c')) {
echo "<div class=\"reportlink\"><a target=\"{$CFG->framename}\" href=\"report.php?id=$cm->id\">".get_string("viewallreports","scorm",$trackedusers->c)."</a></div>"; echo "<div class=\"reportlink\"><a target=\"{$CFG->framename}\" href=\"report.php?id=$cm->id\">".get_string("viewallreports","scorm",$trackedusers->c)."</a></div>";
} else { } else {
echo "<div class=\"reportlink\">".get_string("noreports","scorm")."</div>"; echo "<div class=\"reportlink\">".get_string("noreports","scorm")."</div>";
} }
} }
// Print the main part of the page // Print the main part of the page
print_heading(format_string($scorm->name)); print_heading(format_string($scorm->name));
print_simple_box(format_text($scorm->summary), 'center', '70%', '', 5, 'generalbox', 'intro'); print_simple_box(format_text($scorm->summary), 'center', '70%', '', 5, 'generalbox', 'intro');
if (isguest()) { if (isguest()) {
print_heading(get_string("guestsno", "scorm")); print_heading(get_string("guestsno", "scorm"));
print_footer($course); print_footer($course);
exit; exit;
} }
echo "<br />"; echo "<br />";
$liststyle = "style=\"list-style-type:none;\""; $liststyle = "style=\"list-style-type:none;\"";
print_simple_box_start("center"); print_simple_box_start("center");
echo "<table>\n"; echo "<table>\n";
echo " <tr><th>".get_string("coursestruct","scorm")."</th></tr>\n"; echo " <tr><th>".get_string("coursestruct","scorm")."</th></tr>\n";
$organization = $scorm->launch; $organization = $scorm->launch;
if ($orgs = get_records_select_menu('scorm_scoes',"scorm='$scorm->id' AND organization='' AND launch=''",'id','id,title')) { if ($orgs = get_records_select_menu('scorm_scoes',"scorm='$scorm->id' AND organization='' AND launch=''",'id','id,title')) {
if (count($orgs) > 1) { if (count($orgs) > 1) {
if (isset($_POST['organization'])) { if (isset($_POST['organization'])) {
$organization = $_POST['organization']; $organization = $_POST['organization'];
} }
echo "<tr><td align='center'><form name='changeorg' method='post' action='view.php?id=$cm->id'>".get_string('organizations','scorm').": \n"; echo "<tr><td align='center'><form name='changeorg' method='post' action='view.php?id=$cm->id'>".get_string('organizations','scorm').": \n";
choose_from_menu($orgs, 'organization', "$organization", '','submit()'); choose_from_menu($orgs, 'organization', "$organization", '','submit()');
echo "</form></td></tr>\n"; echo "</form></td></tr>\n";
} }
} }
$orgidentifier = ''; $orgidentifier = '';
if ($org = get_record('scorm_scoes','id',$organization)) { if ($org = get_record('scorm_scoes','id',$organization)) {
if (($org->organization == '') && ($org->launch == '')) { if (($org->organization == '') && ($org->launch == '')) {
$orgidentifier = $org->identifier; $orgidentifier = $org->identifier;
} else { } else {
$orgidentifier = $org->organization; $orgidentifier = $org->organization;
} }
} }
echo " <tr><td nowrap=\"nowrap\">\n"; echo " <tr><td nowrap=\"nowrap\">\n";
$incomplete = scorm_display_structure($scorm,'scormlist',$orgidentifier); $incomplete = scorm_display_structure($scorm,'scormlist',$orgidentifier);
echo "</td></tr>\n"; echo "</td></tr>\n";
echo "</table>\n"; echo "</table>\n";
print_simple_box_end(); print_simple_box_end();
echo "<form name=\"theform\" method=\"post\" action=\"playscorm.php?id=$cm->id\">\n"; echo "<form name=\"theform\" method=\"post\" action=\"playscorm.php?id=$cm->id\">\n";
echo "<table align=\"center\">\n<tr>\n<td align=\"center\">"; echo "<table align=\"center\">\n<tr>\n<td align=\"center\">";
if ($scorm->browsemode == 1) { if ($scorm->browsemode == 1) {
print_string("mode","scorm"); print_string("mode","scorm");
echo ": <input type=\"radio\" id=\"b\" name=\"mode\" value=\"browse\" /><label for=\"b\">".get_string("browse","scorm")."</label>\n"; echo ": <input type=\"radio\" id=\"b\" name=\"mode\" value=\"browse\" /><label for=\"b\">".get_string("browse","scorm")."</label>\n";
if ($incomplete === true) { if ($incomplete === true) {
echo "<input type=\"radio\" id=\"n\" name=\"mode\" value=\"normal\" checked=\"checked\" /><label for=\"n\">".get_string("normal","scorm")."</label>\n"; echo "<input type=\"radio\" id=\"n\" name=\"mode\" value=\"normal\" checked=\"checked\" /><label for=\"n\">".get_string("normal","scorm")."</label>\n";
} else { } else {
echo "<input type=\"radio\" id=\"r\" name=\"mode\" value=\"review\" checked=\"checked\" /><label for=\"r\">".get_string("review","scorm")."</label>\n"; echo "<input type=\"radio\" id=\"r\" name=\"mode\" value=\"review\" checked=\"checked\" /><label for=\"r\">".get_string("review","scorm")."</label>\n";
} }
} else { } else {
if ($incomplete === true) { if ($incomplete === true) {
echo '<input type="hidden" name="mode" value="normal" />'."\n"; echo '<input type="hidden" name="mode" value="normal" />'."\n";
} else { } else {
echo '<input type="hidden" name="mode" value="review" />'."\n"; echo '<input type="hidden" name="mode" value="review" />'."\n";
} }
} }
echo "</td>\n</tr>\n<tr><td align=\"center\">"; echo "</td>\n</tr>\n<tr><td align=\"center\">";
echo '<input type="hidden" name="scoid" /> echo '<input type="hidden" name="scoid" />
<input type="hidden" name="currentorg" value="'.$orgidentifier.'" /> <input type="hidden" name="currentorg" value="'.$orgidentifier.'" />
<input type="submit" value="'.get_string("entercourse","scorm").'" />'; <input type="submit" value="'.get_string("entercourse","scorm").'" />';
echo "\n</td>\n</tr>\n</table>\n</form><br />"; echo "\n</td>\n</tr>\n</table>\n</form><br />";
?> ?>
<style type="text/css"> <style type="text/css">
.scormlist { .scormlist {
@ -143,27 +143,27 @@
<script language="javascript" type="text/javascript"> <script language="javascript" type="text/javascript">
<!-- <!--
function playSCO(scoid) { function playSCO(scoid) {
document.theform.scoid.value = scoid; document.theform.scoid.value = scoid;
document.theform.submit(); document.theform.submit();
} }
function expandCollide(which,list) { function expandCollide(which,list) {
var nn=document.ids?true:false var nn=document.ids?true:false
var w3c=document.getElementById?true:false var w3c=document.getElementById?true:false
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all."; var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
var mid=w3c?").style":".style"; var mid=w3c?").style":".style";
if (eval(beg+list+mid+".display") != "none") { if (eval(beg+list+mid+".display") != "none") {
which.src = "pix/plus.gif"; which.src = "pix/plus.gif";
eval(beg+list+mid+".display='none';"); eval(beg+list+mid+".display='none';");
} else { } else {
which.src = "pix/minus.gif"; which.src = "pix/minus.gif";
eval(beg+list+mid+".display='block';"); eval(beg+list+mid+".display='block';");
} }
} }
--> -->
</script> </script>
<?php <?php
print_footer($course); print_footer($course);
} }
?> ?>