MDL-9378 New visualisation for SCORM - back ported to 1.8.

This commit is contained in:
piers
2008-07-28 00:49:22 +00:00
parent 2eedb5babd
commit 7527707dd5
3 changed files with 408 additions and 78 deletions
+113 -31
View File
@@ -67,7 +67,6 @@
'', '', true, update_module_button($cm->id, $course->id, $strscorm), '', false);
notice(get_string("activityiscurrentlyhidden"));
}
//
// TOC processing
//
@@ -135,6 +134,14 @@
?>
<script type="text/javascript" src="request.js"></script>
<script type="text/javascript" src="api.php?id=<?php echo $cm->id.$scoidstr.$modestr.$attemptstr ?>"></script>
<script type="text/javascript" src="<?=$CFG->wwwroot?>/mod/scorm/rd.js"></script>
<script type="text/javascript">
<!--
window.onresize = function() {
scorm_resize();
};
-->
</script>
<?php
//}
if (($sco->previd != 0) && ((!isset($sco->previous)) || ($sco->previous == 0))) {
@@ -154,25 +161,89 @@
<?php
if ($scorm->hidetoc == 0) {
?>
<div id="tocbox" class="generalbox">
<div id="tochead" class="header"><?php print_string('contents','scorm') ?></div>
<div id="toctree">
<div id="tocbox">
<?php
if ($scorm->hidenav ==0){
?>
<!-- Bottons nav at left-->
<div id="tochead">
<form name="tochead" method="post" action="player.php?id=<?php echo $cm->id ?>" target="_top">
<?php
$orgstr = '&amp;currentorg='.$currentorg;
if (($scorm->hidenav == 0) && ($sco->previd != 0) && ($sco->previous == 0)) {
// Print the prev LO button
$scostr = '&amp;scoid='.$sco->previd;
$url = $CFG->wwwroot.'/mod/scorm/player.php?id='.$cm->id.$orgstr.$modestr.$scostr;
?>
<input name="prev" type="button" value="<?php print_string('prev','scorm') ?>" onClick="document.location.href=' <?php echo $url; ?> '"/>
<?php
}
if (($scorm->hidenav == 0) && ($sco->nextid != 0) && ($sco->next == 0)) {
// Print the next LO button
$scostr = '&amp;scoid='.$sco->nextid;
$url = $CFG->wwwroot.'/mod/scorm/player.php?id='.$cm->id.$orgstr.$modestr.$scostr;
?>
<input name="next" type="button" value="<?php print_string('next','scorm') ?>" onClick="document.location.href=' <?php echo $url; ?> '"/>
<?php
}
?>
</form>
</div> <!-- tochead -->
<?php
}
?>
<div id="toctree" class="generalbox">
<?php echo $result->toc; ?>
</div>
</div>
</div> <!-- toctree -->
</div> <!-- tocbox -->
<?php
$class = ' class="toc"';
} else {
$class = ' class="no-toc"';
}
?>
<div id="scormbox"<?php echo $class ?>>
<div id="scormbox"<?php echo $class; if(($scorm->hidetoc == 2) || ($scorm->hidetoc == 1)){echo 'style="width:100%"';}?>>
<?php
// This very big test check if is necessary the "scormtop" div
if (
($mode != 'normal') || // We are not in normal mode so review or browse text will displayed
(
($scorm->hidenav == 0) && // Teacher want to display navigation links
($scorm->hidetoc != 0) && // The buttons has not been displayed
(
(
($sco->previd != 0) && // This is not the first learning object of the package
@@ -190,25 +261,43 @@
<?php echo $mode == 'browse' ? '<div id="scormmode" class="left">'.get_string('browsemode','scorm')."</div>\n" : ''; ?>
<?php echo $mode == 'review' ? '<div id="scormmode" class="left">'.get_string('reviewmode','scorm')."</div>\n" : ''; ?>
<?php
if (($scorm->hidenav == 0) || ($scorm->hidetoc == 2)) {
if (($scorm->hidenav == 0) || ($scorm->hidetoc == 2) || ($scorm->hidetoc == 1)) {
?>
<div id="scormnav" class="right">
<?php
$orgstr = '&amp;currentorg='.$currentorg;
if (($scorm->hidenav == 0) && ($sco->previd != 0) && ((!isset($sco->previous)) || ($sco->previous == 0))) {
/// Print the prev LO link
if (($scorm->hidenav == 0) && ($sco->previd != 0) && ($sco->previous == 0) && (($scorm->hidetoc == 2) || ($scorm->hidetoc == 1)) ) {
// Print the prev LO button
$scostr = '&amp;scoid='.$sco->previd;
$url = $CFG->wwwroot.'/mod/scorm/player.php?id='.$cm->id.$orgstr.$modestr.$scostr;
echo '<a href="'.$url.'">&lt; '.get_string('prev','scorm').'</a>';
?>
<form name="scormnavprev" method="post" action="player.php?id=<?php echo $cm->id ?>" target="_top" style= "display:inline">
<input name="prev" type="button" value="<?php print_string('prev','scorm') ?>" onClick="document.location.href=' <?php echo $url; ?> '"/>
</form>
<?php
}
if ($scorm->hidetoc == 2) {
echo $result->tocmenu;
}
if (($scorm->hidenav == 0) && ($sco->nextid != 0) && ((!isset($sco->next)) || ($sco->next == 0))) {
/// Print the next LO link
if (($scorm->hidenav == 0) && ($sco->nextid != 0) && ($sco->next == 0) && (($scorm->hidetoc == 2) || ($scorm->hidetoc == 1))) {
// Print the next LO button
$scostr = '&amp;scoid='.$sco->nextid;
$url = $CFG->wwwroot.'/mod/scorm/player.php?id='.$cm->id.$orgstr.$modestr.$scostr;
echo ' &nbsp;<a href="'.$url.'">'.get_string('next','scorm').' &gt;</a>';
?>
<form name="scormnavnext" method="post" action="player.php?id=<?php echo $cm->id ?>" target="_top" style= "display:inline">
<input name="next" type="button" value="<?php print_string('next','scorm') ?>" onClick="document.location.href=' <?php echo $url; ?> '"/>
</form>
<?php
}
?>
@@ -216,7 +305,7 @@
<?php
}
?>
</div>
</div> <!-- Scormtop -->
<?php
} // The end of the very big test
?>
@@ -230,18 +319,16 @@
<?php
if ($result->prerequisites) {
if ($scorm->popup == 0) {
?>
<iframe id="main"
class="scoframe"
width="<?php echo $scorm->width<=100 ? $scorm->width.'%' : $scorm->width ?>"
height="<?php echo $scorm->height<=100 ? $scorm->height.'%' : $scorm->height ?>"
src="loadSCO.php?id=<?php echo $cm->id.$scoidstr.$modestr ?>">
</iframe>
<?php
echo " <script type=\"text/javascript\">scorm_resize();</script>\n";
$fullurl="loadSCO.php?id=".$cm->id.$scoidstr.$modestr;
echo " <iframe id=\"scoframe1\" class=\"scoframe\" name=\"scoframe1\" src=\"{$fullurl}\"></iframe>\n";
} else {
?>
<script type="text/javascript">
//<![CDATA[
scorm_resize();
function openpopup(url,name,options,width,height) {
fullurl = "<?php echo $CFG->wwwroot.'/mod/scorm/' ?>" + url;
windowobj = window.open(fullurl,name,options);
@@ -263,15 +350,11 @@
url = "loadSCO.php?id=<?php echo $cm->id.$scoidpop ?>";
width = <?php p($scorm->width) ?>;
height = <?php p($scorm->height) ?>;
var main = openpopup(url, "scormpopup", "<?php p($scorm->options) ?>", width, height);
var main = openpopup(url, "<?php p($scorm->name) ?>", "<?php p($scorm->options) ?>", width, height);
//]]>
</script>
<noscript>
<iframe id="main"
class="scoframe"
width="<?php echo $scorm->width<=100 ? $scorm->width.'%' : $scorm->width ?>"
height="<?php echo $scorm->height<=100 ? $scorm->height.'%' : $scorm->height ?>"
src="loadSCO.php?id=<?php echo $cm->id.$scoidstr.$modestr ?>">
<iframe id="main" class="scoframe" src="loadSCO.php?id=<?php echo $cm->id.$scoidstr.$modestr ?>">
</iframe>
</noscript>
<?php
@@ -283,5 +366,4 @@
</div> <!-- SCORM object -->
</div> <!-- SCORM box -->
</div> <!-- SCORM content -->
<div class="clearer">&nbsp;</div>
<?php print_footer(); ?>
<?php print_footer(); ?>
+77
View File
@@ -0,0 +1,77 @@
<!--
function scorm_get_element_style(obj, prop, cssProp) {
var ret = '';
if (obj.currentStyle) {
ret = obj.currentStyle[prop];
} else if (document.defaultView && document.defaultView.getComputedStyle) {
var compStyle = document.defaultView.getComputedStyle(obj, null);
ret = compStyle.getPropertyValue(cssProp);
}
if (ret == 'auto') ret = '0';
return ret;
}
function scorm_resize () {
var winwidth = 0, winheight = 0;
if( typeof( window.innerWidth ) == 'number' ) {
//Non-IE
winwidth = window.innerWidth;
winheight = window.innerHeight;
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
//IE 6+ in 'standards compliant mode'
winwidth = document.documentElement.clientWidth;
winheight = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
//IE 4 compatible
winwidth = document.body.clientWidth;
winheight = document.body.clientHeight;
}
var header = document.getElementById('header');
var content = document.getElementById('content');
var headerheight = 0;
if (content) {
headerheight = content.offsetTop;
}
var footer = document.getElementById('footer');
var imsnavbar = document.getElementById('tochead');
var scormtop = document.getElementById('scormtop');
var footerheight = 0;
var imsnavheight = 0;
var scormtopheight = 0;
if (footer) {
footerheight = footer.offsetHeight + parseInt(scorm_get_element_style(footer, 'marginTop', 'margin-top')) + parseInt(scorm_get_element_style(footer, 'marginBottom', 'margin-bottom'));
}
if (imsnavbar) {
imsnavheight = imsnavbar.offsetHeight;
}
if (scormtop) {
scormtopheight = scormtop.offsetHeight;
}
var topmargin = parseInt(scorm_get_element_style(document.getElementsByTagName('body')[0], 'marginTop', 'margin-top'));
var bottommargin = parseInt(scorm_get_element_style(document.getElementsByTagName('body')[0], 'marginBottom', 'margin-bottom'));
var totalheight = headerheight +
footerheight +
scormtopheight+
topmargin +
bottommargin+10; // +10 to save a minor vertical scroll always present!
var totalheighttoc = totalheight+imsnavheight;
var toctree = document.getElementById('toctree');
if (toctree != null){
var toctreeHeight = toctree.offsetHeight;
document.getElementById('toctree').style.height = (winheight - totalheighttoc) + 'px';
var scoframe2 = document.getElementById('scoframe1');
document.getElementById('scormobject').style.height = (winheight - totalheight) + 'px';
}else{
var scoframe2 = document.getElementById('scoframe1');
document.getElementById('scormobject').style.height = (winheight - totalheight) + 'px';
}
}
-->
+218 -47
View File
@@ -1,82 +1,253 @@
.structlist {
list-style-type: none;
white-space: nowrap;
font-size: small;
}
.orgtitle {
font-weight: bold;
font-size: small;
}
.mod-scorm .top {
vertical-align: top;
}
.mod-scorm .left {
text-align: left;
}
.mod-scorm .center {
text-align: center;
}
.mod-scorm .right {
text-align: right;
}
.mod-scorm .scoframe {
position: relative;
width: 100%;
height: 100%;
}
#mod-scorm-player #scormpage {
position: relative;
width: 100%;
}
#mod-scorm-player #tocbox {
float: left;
width: 17%;
left: 0px;
top: 0px;
}
#mod-scorm-player #tochead {
text-align: center;
font-weight: bold;
}
#mod-scorm-player #scormbox {
right: 0px;
}
#mod-scorm-player .toc {
float: right;
width: 80%;
right: 0px;
top: 0px;
}
#mod-scorm-player .no-toc {
width: 100%;
}
#mod-scorm-player #scormobject {
/* border: 1px solid black; */
}
#mod-scorm-player #scormtop {
width: 100%;
height: auto;
}
#mod-scorm-player #scormmode {
float: left;
width: 50%;
left: 5px;
top: 0px;
}
#mod-scorm-player #scormnav {
float: right;
right: 5px;
top: 0px;
}
#mod-scorm-player .structurelist {
list-style-type: none;
text-indent:-4ex;
font-size: small;
}
#mod-scorm-view .structurehead {
font-weight: bold;
#mod-scorm-player #tochead {
position: relative;
text-align: center;
top: 3px;
height: 30px;
}
#mod-scorm-player .toc {
width: 80%;
margin-left: 20%;
}
#mod-scorm-player .no-toc {
width: 100%;
}
#mod-scorm-player #scormobject {
height: 400px;
}
#mod-scorm-player #scormtop {
position: relative;
width: 100%;
height: 30px;
}
#mod-scorm-player #scormbrowse {
position: absolute;
left: 5px;
top: 0px;
}
#mod-scorm-player #scormnav {
position: absolute;
right: 5px;
top: 0px;
text-align: center;
top: 3px;
width: 100%;
}
#mod-scorm-view .structurehead {
text-align: center;
}
#mod-scorm-view .structurelist {
list-style-type: none;
white-space: nowrap;
}
#mod-scorm-player #scormbox {
width: 74%;
position: absolute;
right: 0px;
top: 0px;
}
#mod-scorm-player #tocbox {
position: relative;
left: 0px;
width: 24%;
font-size: 0.8em;
}
#mod-scorm-player #tochead {
position: relative;
text-align: center;
top: 3px;
height: 30px;
}
#toctree {
position:relative;
width:100%;
overflow-x: auto;
overflow-y: auto;
}
.structurelist {
list-style-type: none;
}
#mod-scorm-player .structurelist {
position: relative;
list-style-type: none;
width: 96%;
margin-left:0;
padding-left: 0;
margin-right:0;
padding-right: 0;
padding-top: 0;
padding-bottom: 0;
margin-top:0;
margin-bottom:0;
}
#mod-scorm-player .structurelist ul{
padding-left: 0.5em;
margin-left: 0.5em;
}
#mod-scorm-view .structurelist {
list-style-type: none;
white-space: nowrap;
}