mirror of
https://github.com/moodle/moodle.git
synced 2025-08-02 23:59:41 +02:00
Added sco frame size
Completed compliance for scorm 1.2
This commit is contained in:
parent
b3df3a0d71
commit
5f18d4e79a
10 changed files with 175 additions and 82 deletions
|
@ -1,8 +1,12 @@
|
|||
<?php
|
||||
if (empty($CFG->scorm_frameheight)) {
|
||||
$CFG->scorm_frameheight = 640;
|
||||
$CFG->scorm_frameheight = 600;
|
||||
}
|
||||
if (empty($CFG->scorm_framewidth)) {
|
||||
$CFG->scorm_structurewidth = 800;
|
||||
}
|
||||
?>
|
||||
|
||||
<form method="post" action="module.php" name="form">
|
||||
<input type="hidden" name="sesskey" value="<?php echo $USER->sesskey ?>">
|
||||
|
||||
|
@ -26,6 +30,15 @@
|
|||
<?php print_string("validationtype", "scorm") ?>
|
||||
</td>
|
||||
</tr> -->
|
||||
<tr valign="top">
|
||||
<td align="right">scorm_framewidth:</td>
|
||||
<td>
|
||||
<input type="text" name="scorm_framewidth" value="<?php echo $CFG->scorm_framewidth ?>" size="3" />
|
||||
</td>
|
||||
<td>
|
||||
<?php print_string("framewidth", "scorm") ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right">scorm_frameheight:</td>
|
||||
<td>
|
||||
|
|
|
@ -22,16 +22,16 @@ function SCORMapi1_2() {
|
|||
CMITimespan = '^([0-9]{2,4}):([0-9]{2}):([0-9]{2})(\.[0-9]{1,2})?$';
|
||||
CMIInteger = '^\\d+$';
|
||||
CMISInteger = '^-?([0-9]+)$';
|
||||
//CMIDecimal = '^([0-9]{0,3})?(\.[0-9]{1,2})?$';
|
||||
CMIDecimal = '^([0-9]{0,3})(\.[0-9]{1,2})?$';
|
||||
CMIIdentifier = '^\\w{0,255}$';
|
||||
CMIFeedback = CMIString255; // This must be redefined
|
||||
CMIIndex = '.(\\d+).';
|
||||
CMIIndex = '[._](\\d+).';
|
||||
// Vocabulary Data Type Definition
|
||||
CMIStatus = '^passed|completed|failed|incomplete|browsed|not attempted$';
|
||||
CMIExit = '^time-out|suspend|logout|$';
|
||||
CMIType = '^true-false|choice|fill-in|matching|performance|sequencing|likert|numeric$';
|
||||
CMIResult = '^correct|wrong|unanticipated|neutral|[0-9]?(\.[0-9]{1,2})?$';
|
||||
NAVEvent = '^previous|continue$';
|
||||
// Children lists
|
||||
cmi_children = 'core, suspend_data, launch_data, comments, objectives, student_data, student_preference, interactions';
|
||||
core_children = 'student_id, student_name, lesson_location, credit, lesson_status, entry, score, total_time, lesson_mode, exit, session_time';
|
||||
|
@ -53,8 +53,8 @@ function SCORMapi1_2() {
|
|||
'cmi.core.student_id':{'defaultvalue':'<?php echo $userdata->student_id ?>', 'mod':'r', 'writeerror':'403'},
|
||||
'cmi.core.student_name':{'defaultvalue':'<?php echo $userdata->student_name ?>', 'mod':'r', 'writeerror':'403'},
|
||||
'cmi.core.lesson_location':{'defaultvalue':'<?php echo isset($userdata->{'cmi.core.lesson_location'})?$userdata->{'cmi.core.lesson_location'}:'' ?>', 'format':CMIString255, 'mod':'rw', 'writeerror':'405'},
|
||||
//'cmi.core.credit':{'defaultvalue':'<?php echo $userdata->credit ?>', 'mod':'r', 'writeerror':'403'},
|
||||
'cmi.core.credit':{'defaultvalue':'credit', 'mod':'r', 'writeerror':'403'},
|
||||
'cmi.core.credit':{'defaultvalue':'<?php echo $userdata->credit ?>', 'mod':'r', 'writeerror':'403'},
|
||||
//'cmi.core.credit':{'defaultvalue':'credit', 'mod':'r', 'writeerror':'403'},
|
||||
'cmi.core.lesson_status':{'defaultvalue':'<?php echo isset($userdata->{'cmi.core.lesson_status'})?$userdata->{'cmi.core.lesson_status'}:'' ?>', 'format':CMIStatus, 'mod':'rw', 'writeerror':'405'},
|
||||
'cmi.core.entry':{'defaultvalue':'<?php echo $userdata->entry ?>', 'mod':'r', 'writeerror':'403'},
|
||||
'cmi.core.score._children':{'defaultvalue':score_children, 'mod':'r', 'writeerror':'402'},
|
||||
|
@ -72,10 +72,10 @@ function SCORMapi1_2() {
|
|||
'cmi.objectives._children':{'defaultvalue':objectives_children, 'mod':'r', 'writeerror':'403'},
|
||||
'cmi.objectives._count':{'mod':'r', 'defaultvalue':'0', 'writeerror':'402'},
|
||||
'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.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.max':{'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
|
||||
'cmi.objectives.n.score._children':{'pattern':CMIIndex, 'mod':'r', 'writeerror':'402'},
|
||||
'cmi.objectives.n.score.raw':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
|
||||
'cmi.objectives.n.score.min':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, 'mod':'rw', 'writeerror':'405'},
|
||||
'cmi.objectives.n.score.max':{'defaultvalue':'', 'pattern':CMIIndex, 'format':CMIDecimal, 'range':score_range, '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.mastery_score':{'defaultvalue':'<?php echo $userdata->masteryscore ?>', 'mod':'r', 'writeerror':'403'},
|
||||
|
@ -98,7 +98,8 @@ function SCORMapi1_2() {
|
|||
'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.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'},
|
||||
'nav.event':{'defaultvalue':'', 'format':NAVEvent, 'mod':'w', 'readerror':'404', 'writeerror':'405'}
|
||||
};
|
||||
//
|
||||
// Datamodel inizialization
|
||||
|
@ -110,7 +111,10 @@ function SCORMapi1_2() {
|
|||
cmi.student_data = new Object();
|
||||
cmi.student_preference = new Object();
|
||||
cmi.interactions = new Object();
|
||||
|
||||
// Navigation Object
|
||||
var nav = new Object();
|
||||
|
||||
for (element in datamodel) {
|
||||
if (element.match(/\.n\./) == null) {
|
||||
//alert (element+' = '+eval('datamodel["'+element+'"].defaultvalue'));
|
||||
|
@ -123,6 +127,32 @@ function SCORMapi1_2() {
|
|||
}
|
||||
}
|
||||
|
||||
<?php
|
||||
$count = 0;
|
||||
$objectives = '';
|
||||
foreach($userdata as $element => $value){
|
||||
if (substr($element,0,14) == 'cmi.objectives') {
|
||||
preg_match('/.(\d+)./',$element,$matches);
|
||||
$element = preg_replace('/.(\d+)./',"_\$1.",$element);
|
||||
if ($matches[1] == $count) {
|
||||
$count++;
|
||||
$end = strpos($element,$matches[1])+strlen($matches[1]);
|
||||
$subelement = substr($element,0,$end);
|
||||
echo ' '.$subelement." = new Object();\n";
|
||||
echo ' '.$subelement.".score = new Object();\n";
|
||||
echo ' '.$subelement.".score._children = score_children;\n";
|
||||
echo ' '.$subelement.".score.raw = '';\n";
|
||||
echo ' '.$subelement.".score.min = '';\n";
|
||||
echo ' '.$subelement.".score.max = '';\n";
|
||||
}
|
||||
echo ' '.$element.' = \''.$value."';\n";
|
||||
}
|
||||
}
|
||||
if ($count > 0) {
|
||||
echo ' cmi.objectives._count = '.$count.";\n";
|
||||
}
|
||||
?>
|
||||
|
||||
if (cmi.core.lesson_status == '') {
|
||||
cmi.core.lesson_status = 'not attempted';
|
||||
}
|
||||
|
@ -151,7 +181,19 @@ function SCORMapi1_2() {
|
|||
if (param == "") {
|
||||
if (Initialized) {
|
||||
Initialized = false;
|
||||
return StoreData(cmi,true);
|
||||
result = StoreData(cmi,true);
|
||||
if (nav.event != '') {
|
||||
if (nav.event == 'continue') {
|
||||
setTimeout('top.nextSCO();',500);
|
||||
} else {
|
||||
setTimeout('top.prevSCO();',500);
|
||||
}
|
||||
} else {
|
||||
if (<?php echo $scorm->auto ?> == 1) {
|
||||
setTimeout('top.nextSCO();',500);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
errorCode = "301";
|
||||
}
|
||||
|
@ -168,14 +210,12 @@ function SCORMapi1_2() {
|
|||
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
|
||||
if (eval('datamodel["'+elementmodel+'"].mod') != 'w') {
|
||||
element = element.replace(expression, "_$1.");
|
||||
//alert ('Element: '+element);
|
||||
elementIndexes = element.split('.');
|
||||
subelement = 'cmi';
|
||||
i = 1;
|
||||
while ((i < elementIndexes.length) && (typeof eval(subelement) != "undefined")) {
|
||||
subelement += '.'+elementIndexes[i++];
|
||||
}
|
||||
//alert ('Element: '+subelement);
|
||||
if (subelement == element) {
|
||||
errorCode = "0";
|
||||
return eval(element);
|
||||
|
@ -200,7 +240,6 @@ function SCORMapi1_2() {
|
|||
function LMSSetValue (element,value) {
|
||||
if (Initialized) {
|
||||
if (element != "") {
|
||||
//alert('LMSSetValue: '+element+'\nValue: '+value);
|
||||
expression = new RegExp(CMIIndex,'g');
|
||||
elementmodel = element.replace(expression,'.n.');
|
||||
if ((typeof eval('datamodel["'+elementmodel+'"]')) != "undefined") {
|
||||
|
@ -212,21 +251,15 @@ function SCORMapi1_2() {
|
|||
//Create dynamic data model element
|
||||
if (element != elementmodel) {
|
||||
elementIndexes = element.split('.');
|
||||
//alert('Indexes: '+elementIndexes);
|
||||
subelement = 'cmi';
|
||||
for (i=1;i < elementIndexes.length-1;i++) {
|
||||
elementIndex = elementIndexes[i];
|
||||
//alert('Current: '+elementIndex+' Next: '+elementIndexes[i+1]);
|
||||
if (elementIndexes[i+1].match(/^\d+$/)) {
|
||||
|
||||
if ((typeof eval(subelement+'.'+elementIndex)) == "undefined") {
|
||||
eval(subelement+'.'+elementIndex+' = new Object();');
|
||||
eval(subelement+'.'+elementIndex+'._count = 0;');
|
||||
//alert('Object: '+subelement+'.'+elementIndex);
|
||||
}
|
||||
//alert ('Count:'+eval(subelement+'.'+elementIndex+'._count'));
|
||||
if (elementIndexes[i+1] == eval(subelement+'.'+elementIndex+'._count')) {
|
||||
//alert('Index:'+elementIndexes[i+1]);
|
||||
eval(subelement+'.'+elementIndex+'._count++;');
|
||||
}
|
||||
if (elementIndexes[i+1] > eval(subelement+'.'+elementIndex+'._count')) {
|
||||
|
@ -237,12 +270,11 @@ function SCORMapi1_2() {
|
|||
} else {
|
||||
subelement = subelement.concat('.'+elementIndex);
|
||||
}
|
||||
//alert('Subelement: '+subelement);
|
||||
if ((typeof eval(subelement)) == "undefined") {
|
||||
eval(subelement+' = new Object();');
|
||||
if (element.substr(0,14) == 'cmi.objectives') {
|
||||
if (subelement.substr(0,14) == 'cmi.objectives') {
|
||||
eval(subelement+'.score = new Object();');
|
||||
eval(subelement+'.score._children = "raw,min,max";');
|
||||
eval(subelement+'.score._children = score_children;');
|
||||
eval(subelement+'.score.raw = "";');
|
||||
eval(subelement+'.score.min = "";');
|
||||
eval(subelement+'.score.max = "";');
|
||||
|
@ -250,7 +282,6 @@ function SCORMapi1_2() {
|
|||
}
|
||||
}
|
||||
element = subelement.concat('.'+elementIndexes[elementIndexes.length-1]);
|
||||
//alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value+'\nMatches: '+matches);
|
||||
}
|
||||
//Store data
|
||||
if (errorCode == "0") {
|
||||
|
@ -261,7 +292,6 @@ function SCORMapi1_2() {
|
|||
if ((value >= ranges[0]) && (value <= ranges[1])) {
|
||||
eval(element+'="'+value+'";');
|
||||
errorCode = "0";
|
||||
//alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value);
|
||||
return "true";
|
||||
} else {
|
||||
errorCode = eval('datamodel["'+elementmodel+'"].writeerror');
|
||||
|
@ -273,7 +303,6 @@ function SCORMapi1_2() {
|
|||
eval(element+'="'+value+'";');
|
||||
}
|
||||
errorCode = "0";
|
||||
//alert('LMSSetValue: '+element+'\nModel: '+elementmodel+'\nValue: '+value);
|
||||
return "true";
|
||||
}
|
||||
}
|
||||
|
@ -292,7 +321,6 @@ function SCORMapi1_2() {
|
|||
} else {
|
||||
errorCode = "301";
|
||||
}
|
||||
//alert('LMSSetValue: '+element+'\nValue: '+value+'\nPattern: '+expression+'\nMatches: '+matches+'\nError Code: '+errorCode);
|
||||
return "false";
|
||||
}
|
||||
|
||||
|
@ -358,7 +386,6 @@ function SCORMapi1_2() {
|
|||
if (eval('datamodel["'+elementmodel+'"].mod') != 'r') {
|
||||
if (eval('datamodel["'+elementmodel+'"].defaultvalue') != data[property]) {
|
||||
datastring += '&'+underscore(element)+'='+escape(data[property]);
|
||||
//alert(element+'='+data[property]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -395,7 +422,6 @@ function SCORMapi1_2() {
|
|||
var myRequest = NewHttpReq();
|
||||
result = DoRequest(myRequest,"<?php p($CFG->wwwroot) ?>/mod/scorm/datamodel.php","id=<?php p($id) ?>&sesskey=<?php p($USER->sesskey) ?>"+datastring);
|
||||
results = result.split('\n');
|
||||
//alert(results);
|
||||
errorCode = results[1];
|
||||
return results[0];
|
||||
}
|
||||
|
|
|
@ -153,6 +153,11 @@ function scorm_upgrade($oldversion) {
|
|||
table_column("scorm", "", "browsemode", "TINYINT", "2", "", "1", "NOT NULL", "summary");
|
||||
}
|
||||
|
||||
if ($oldversion < 2005050800) {
|
||||
table_column("scorm", "", "width", "INT", "10", "", "800", "NOT NULL", "auto");
|
||||
table_column("scorm", "", "height", "INT", "10", "", "600", "NOT NULL", "width");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -14,6 +14,8 @@ CREATE TABLE prefix_scorm (
|
|||
summary text NOT NULL,
|
||||
browsemode tinyint(2) NOT NULL default '0',
|
||||
auto tinyint(1) unsigned NOT NULL default '0',
|
||||
width int(10) unsigned NOT NULL default '800',
|
||||
height int(10) unsigned NOT NULL default '600',
|
||||
timemodified int(10) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE KEY id (id),
|
||||
|
|
|
@ -150,6 +150,11 @@ function scorm_upgrade($oldversion) {
|
|||
table_column("scorm", "", "browsemode", "integer", "", "", "1", "NOT NULL", "summary");
|
||||
}
|
||||
|
||||
if ($oldversion < 2005050800) {
|
||||
table_column("scorm", "", "width", "integer", "", "", "800", "NOT NULL", "auto");
|
||||
table_column("scorm", "", "height", "integer", "", "", "600", "NOT NULL", "width");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
?>
|
||||
|
|
|
@ -13,6 +13,8 @@ CREATE TABLE prefix_scorm (
|
|||
summary text NOT NULL default '',
|
||||
browsemode integer NOT NULL default '0',
|
||||
auto integer NOT NULL default '0',
|
||||
width integer NOT NULL default '800',
|
||||
height integer NOT NULL default '600',
|
||||
timemodified integer NOT NULL default '0'
|
||||
);
|
||||
|
||||
|
|
|
@ -24,7 +24,11 @@ if (!isset($CFG->scorm_validate)) {
|
|||
}
|
||||
|
||||
if (!isset($CFG->scorm_frameheight)) {
|
||||
set_config('scorm_frameheight','640');
|
||||
set_config('scorm_frameheight','600');
|
||||
}
|
||||
|
||||
if (!isset($CFG->scorm_framewidth)) {
|
||||
set_config('scorm_framewidth','800');
|
||||
}
|
||||
|
||||
function scorm_add_instance($scorm) {
|
||||
|
@ -907,13 +911,15 @@ function scorm_display_structure($scorm,$liststyle,$currentorg='',$scoid='',$mod
|
|||
}
|
||||
|
||||
if ($sco->id == $scoid) {
|
||||
$startbold = '> <b>';
|
||||
$endbold = '</b> <';
|
||||
$startbold = '<b>';
|
||||
$endbold = '</b>';
|
||||
if ($nextsco !== false) {
|
||||
$nextid = $nextsco->id;
|
||||
} else {
|
||||
$nextid = 0;
|
||||
}
|
||||
$shownext = $sco->next;
|
||||
$showprev = $sco->previous;
|
||||
}
|
||||
if (($nextid == 0) && (scorm_count_launchable($scorm->id,$currentorg) > 1)) {
|
||||
$previd = $sco->id;
|
||||
|
@ -933,6 +939,8 @@ function scorm_display_structure($scorm,$liststyle,$currentorg='',$scoid='',$mod
|
|||
$result->id = $scoid;
|
||||
$result->prev = $previd;
|
||||
$result->next = $nextid;
|
||||
$result->showprev = $showprev;
|
||||
$result->shownext = $shownext;
|
||||
return $result;
|
||||
} else {
|
||||
return $incomplete;
|
||||
|
|
|
@ -27,6 +27,13 @@
|
|||
if (empty($form->browsemode)) {
|
||||
$form->browsemode = "1";
|
||||
}
|
||||
if (empty($form->width)) {
|
||||
$form->width = $CFG->scorm_framewidth;
|
||||
}
|
||||
if (empty($form->height)) {
|
||||
$form->height = $CFG->scorm_frameheight;
|
||||
}
|
||||
|
||||
$scormid = '';
|
||||
if (!empty($form->instance)) {
|
||||
$scormid = '&instance='.$form->instance;
|
||||
|
@ -188,6 +195,20 @@
|
|||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right"><b><?php print_string("width","scorm") ?>:</b></td>
|
||||
<td>
|
||||
<input type="text" name="width" value="<?php echo $form->width ?>" size="4" />
|
||||
<?php helpbutton("width", get_string("width", "scorm"), "scorm", true); ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td align="right"><b><?php print_string("height","scorm") ?>:</b></td>
|
||||
<td>
|
||||
<input type="text" name="height" value="<?php echo $form->height ?>" size="4" />
|
||||
<?php helpbutton("height", get_string("height", "scorm"), "scorm", true); ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="hidden" name="datadir" value="<?php p($form->datadir) ?>" />
|
||||
<input type="hidden" name="pkgtype" value="<?php p($form->pkgtype) ?>" />
|
||||
|
|
|
@ -76,6 +76,7 @@
|
|||
}
|
||||
|
||||
$strexpand = get_string('expcoll','scorm');
|
||||
$strpopup = get_string('popup','scorm');
|
||||
|
||||
//
|
||||
// Print the page header
|
||||
|
@ -87,46 +88,8 @@
|
|||
"$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);
|
||||
?>
|
||||
<style type="text/css">
|
||||
.scormlist {
|
||||
list-style-type:none;
|
||||
text-indent:-4ex;
|
||||
}
|
||||
|
||||
.fullscreen {
|
||||
width: 100%;
|
||||
vertical-align: top;
|
||||
}
|
||||
</style>
|
||||
<script language="Javascript">
|
||||
<!--
|
||||
function playSCO(scoid) {
|
||||
if (scoid == 0) {
|
||||
document.location = 'view.php?id=<?php echo $cm->id ?>';
|
||||
} else {
|
||||
document.navform.scoid.value=scoid;
|
||||
document.navform.submit();
|
||||
}
|
||||
}
|
||||
|
||||
function expandCollide(which,list) {
|
||||
var nn=document.ids?true:false
|
||||
var w3c=document.getElementById?true:false
|
||||
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
|
||||
var mid=w3c?").style":".style";
|
||||
|
||||
if (eval(beg+list+mid+".display") != "none") {
|
||||
which.src = "pix/plus.gif";
|
||||
eval(beg+list+mid+".display='none';");
|
||||
} else {
|
||||
which.src = "pix/minus.gif";
|
||||
eval(beg+list+mid+".display='block';");
|
||||
}
|
||||
}
|
||||
-->
|
||||
</script>
|
||||
|
||||
<table class="fullscreen" height="90%">
|
||||
<table width="100%">
|
||||
<tr><td valign="top">
|
||||
<p><?php echo format_text($scorm->summary) ?></p>
|
||||
<p><?php echo $mode == 'browse' ? get_string('browsemode','scorm') : ' '; ?></p>
|
||||
|
@ -134,12 +97,13 @@
|
|||
<tr>
|
||||
<th>
|
||||
<div style='float: left;'><?php print_string('coursestruct','scorm') ?></div>
|
||||
<div style='float:right;'>
|
||||
<a href='#' onClick='expandCollide(imgmain,0);'><img id='imgmain' src="pix/minus.gif" alt="<?php echo $strexpand ?>" title="<?php echo $strexpand ?>"/></a>
|
||||
</div>
|
||||
<!--<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>
|
||||
</div> -->
|
||||
</th>
|
||||
</tr>
|
||||
<tr><td>
|
||||
<!-- <tr><td width="<?php echo $CFG->scorm_structurewidth ?>%"> -->
|
||||
<tr><td width="<?php echo $CFG->scorm_structurewidth ?>%">
|
||||
<?php
|
||||
$sco = scorm_display_structure($scorm,'scormlist',$currentorg,$scoid,$mode,true);
|
||||
if ($mode == 'normal') {
|
||||
|
@ -161,17 +125,64 @@
|
|||
<input name="scoid" type="hidden" />
|
||||
<input name="currentorg" type="hidden" value="<?php echo $currentorg ?>" />
|
||||
<input name="mode" type="hidden" value="<?php echo $mode ?>" />
|
||||
<input name="prev" type="<?php if ($sco->prev == 0) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('prev','scorm') ?>" onClick="playSCO(<?php echo $sco->prev ?>);" />
|
||||
<input name="next" type="<?php if ($sco->next == 0) { echo 'hidden'; } else { echo 'button'; } ?>" value="<?php print_string('next','scorm') ?>" onClick="playSCO(<?php echo $sco->next ?>);" /><br />
|
||||
<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="exit" type="button" value="<?php print_string('exit','scorm') ?>" onClick="playSCO(0)" />
|
||||
</form>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="fullscreen" height="90%">
|
||||
<iframe name="main" class="fullscreen" height="<?php echo $CFG->scorm_frameheight ?>" src="loadSCO.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></iframe>
|
||||
<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>
|
||||
</td></tr>
|
||||
</table>
|
||||
<style type="text/css">
|
||||
.scormlist {
|
||||
list-style-type:none;
|
||||
text-indent:-4ex;
|
||||
}
|
||||
</style>
|
||||
<script language="Javascript">
|
||||
<!--
|
||||
function playSCO(scoid) {
|
||||
if (scoid == 0) {
|
||||
document.location = 'view.php?id=<?php echo $cm->id ?>';
|
||||
} else {
|
||||
document.navform.scoid.value=scoid;
|
||||
document.navform.submit();
|
||||
}
|
||||
}
|
||||
|
||||
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");
|
||||
image.src = "pix/popdown.gif";
|
||||
return win;
|
||||
}
|
||||
|
||||
function prevSCO() {
|
||||
playSCO(<?php echo $sco->prev ?>);
|
||||
}
|
||||
|
||||
function nextSCO() {
|
||||
playSCO(<?php echo $sco->next ?>);
|
||||
}
|
||||
|
||||
function expandCollide(which,list) {
|
||||
var nn=document.ids?true:false
|
||||
var w3c=document.getElementById?true:false
|
||||
var beg=nn?"document.ids.":w3c?"document.getElementById(":"document.all.";
|
||||
var mid=w3c?").style":".style";
|
||||
|
||||
if (eval(beg+list+mid+".display") != "none") {
|
||||
which.src = "pix/plus.gif";
|
||||
eval(beg+list+mid+".display='none';");
|
||||
} else {
|
||||
which.src = "pix/minus.gif";
|
||||
eval(beg+list+mid+".display='block';");
|
||||
}
|
||||
}
|
||||
-->
|
||||
</script>
|
||||
<script language="JavaScript" type="text/javascript" src="request.js"></script>
|
||||
<script language="JavaScript" type="text/javascript" src="api.php?id=<?php echo $cm->id.$scoidstring.$modestring ?>"></script>
|
||||
</body>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
/// This fragment is called by moodle_needs_upgrading() and /admin/index.php
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
$module->version = 2005042800; // The (date) version of this module
|
||||
$module->version = 2005050800; // The (date) version of this module
|
||||
$module->requires = 2005021600; // The version of Moodle that is required
|
||||
$module->cron = 0; // How often should cron check this module (seconds)?
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue