MDL-26482 SCORM add option to disable TOC completely - thanks to Clark Burns for some help!

This commit is contained in:
Dan Marsden 2011-07-13 19:00:33 +12:00
parent ecb8829273
commit 99da7a9523
5 changed files with 61 additions and 41 deletions

View File

@ -68,6 +68,7 @@ $string['deleteattemptcheck'] = 'Are you absolutely sure you want to completely
$string['deleteallattempts'] = 'Delete all SCORM attempts';
$string['details'] = 'Track details';
$string['directories'] = 'Show the directory links';
$string['disabled'] = 'Disabled';
$string['display'] = 'Display package';
$string['displayattemptstatus'] = 'Display attempt status';
$string['displayattemptstatus_help'] = 'If enabled, scores and grades for attempts are displayed on the SCORM outline page.';

View File

@ -29,6 +29,10 @@ define('SCORM_TYPE_EXTERNAL', 'external');
/** SCORM_TYPE_IMSREPOSITORY = imsrepository */
define('SCORM_TYPE_IMSREPOSITORY', 'imsrepository');
define('SCORM_TOC_SIDE', 0);
define('SCORM_TOC_HIDDEN', 1);
define('SCORM_TOC_POPUP', 2);
define('SCORM_TOC_DISABLED', 3);
/**
* Given an object containing all the necessary data,

View File

@ -121,9 +121,10 @@ function scorm_get_skip_view_array() {
* @return array an array of hide table of contents options
*/
function scorm_get_hidetoc_array() {
return array(0 =>get_string('sided', 'scorm'),
1 => get_string('hidden', 'scorm'),
2 => get_string('popupmenu', 'scorm'));
return array(SCORM_TOC_SIDE =>get_string('sided', 'scorm'),
SCORM_TOC_HIDDEN => get_string('hidden', 'scorm'),
SCORM_TOC_POPUP => get_string('popupmenu', 'scorm'),
SCORM_TOC_DISABLED => get_string('disabled', 'scorm'));
}
/**

View File

@ -28,18 +28,16 @@ mod_scorm_activate_item = null;
M.mod_scorm = {};
M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launch_sco) {
var scorm_disable_toc = false;
var scorm_hide_nav = true;
var scorm_hide_toc = true;
if (hide_nav == 0) {
scorm_hide_nav = false;
}
else {
scorm_hide_nav = true;
}
if (hide_toc == 0) {
scorm_hide_toc = false;
}
else {
scorm_hide_toc = true;
} else if (hide_toc == 3) {
scorm_disable_toc = true;
}
var scorm_layout_widget;
@ -285,23 +283,36 @@ M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launc
YAHOO.widget.LayoutUnit.prototype.STR_COLLAPSE = M.str.moodle.hide;
YAHOO.widget.LayoutUnit.prototype.STR_EXPAND = M.str.moodle.show;
scorm_layout_widget = new YAHOO.widget.Layout('scorm_layout', {
minWidth: 255,
minHeight: 600,
units: [
{ position: 'left', body: 'scorm_toc', header: toc_title, width: 250, resize: true, gutter: '2px 5px 5px 2px', collapse: true, minWidth:250, maxWidth: 590},
{ position: 'center', body: '<div id="scorm_content"></div>', gutter: '2px 5px 5px 2px', scroll: true}
]
});
if (scorm_disable_toc) {
scorm_layout_widget = new YAHOO.widget.Layout('scorm_layout', {
minWidth: 255,
minHeight: 600,
units: [
{ position: 'left', body: 'scorm_toc', header: toc_title, width: 0, resize: true, gutter: '0px 0px 0px 0px', collapse: false},
{ position: 'center', body: '<div id="scorm_content"></div>', gutter: '0px 0px 0px 0px', scroll: true}
]
});
} else {
scorm_layout_widget = new YAHOO.widget.Layout('scorm_layout', {
minWidth: 255,
minHeight: 600,
units: [
{ position: 'left', body: 'scorm_toc', header: toc_title, width: 250, resize: true, gutter: '2px 5px 5px 2px', collapse: true, minWidth:250, maxWidth: 590},
{ position: 'center', body: '<div id="scorm_content"></div>', gutter: '2px 5px 5px 2px', scroll: true}
]
});
}
scorm_layout_widget.render();
var left = scorm_layout_widget.getUnitByPosition('left');
left.on('collapse', function() {
scorm_resize_frame();
});
left.on('expand', function() {
scorm_resize_frame();
});
if (!scorm_disable_toc) {
left.on('collapse', function() {
scorm_resize_frame();
});
left.on('expand', function() {
scorm_resize_frame();
});
}
// ugly resizing hack that works around problems with resizing of iframes and objects
left._resize.on('startResize', function() {
var obj = YAHOO.util.Dom.get('scorm_object');
@ -314,10 +325,11 @@ M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launc
});
// hide the TOC if that is the default
if (scorm_hide_toc == true) {
left.collapse();
if (!scorm_disable_toc) {
if (scorm_hide_toc == true) {
left.collapse();
}
}
// TOC tree
var tree = new YAHOO.widget.TreeView('scorm_tree');
scorm_tree_node = tree;
@ -328,18 +340,20 @@ M.mod_scorm.init = function(Y, hide_nav, hide_toc, toc_title, window_name, launc
scorm_bloody_labelclick = true;
}
});
tree.subscribe('collapse', function(node) {
if (scorm_bloody_labelclick) {
scorm_bloody_labelclick = false;
return false;
}
});
tree.subscribe('expand', function(node) {
if (scorm_bloody_labelclick) {
scorm_bloody_labelclick = false;
return false;
}
});
if (!scorm_disable_toc) {
tree.subscribe('collapse', function(node) {
if (scorm_bloody_labelclick) {
scorm_bloody_labelclick = false;
return false;
}
});
tree.subscribe('expand', function(node) {
if (scorm_bloody_labelclick) {
scorm_bloody_labelclick = false;
return false;
}
});
}
tree.expandAll();
tree.render();

View File

@ -209,7 +209,7 @@ if ($result->prerequisites) {
<?php echo $mode == 'review' ? '<div id="scormmode" class="scorm-left">'.get_string('reviewmode', 'scorm')."</div>\n" : ''; ?>
<div id="scormnav" class="scorm-right">
<?php
if ($scorm->hidetoc == 2) {
if ($scorm->hidetoc == SCORM_TOC_POPUP) {
echo $result->tocmenu;
}
?>