From 2987d698b48d67f2ba743f7a7313e1535d885e3e Mon Sep 17 00:00:00 2001 From: Dan Marsden Date: Wed, 13 Jul 2011 19:00:33 +1200 Subject: [PATCH] MDL-26482 SCORM add option to disable TOC completely - thanks to Clark Burns for some help! --- mod/scorm/lang/en/scorm.php | 1 + mod/scorm/lib.php | 4 ++ mod/scorm/locallib.php | 9 ++-- mod/scorm/module.js | 88 +++++++++++++++++++++---------------- mod/scorm/player.php | 6 +-- 5 files changed, 64 insertions(+), 44 deletions(-) diff --git a/mod/scorm/lang/en/scorm.php b/mod/scorm/lang/en/scorm.php index 79bc6426bb320..15722ca761967 100644 --- a/mod/scorm/lang/en/scorm.php +++ b/mod/scorm/lang/en/scorm.php @@ -65,6 +65,7 @@ $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.'; diff --git a/mod/scorm/lib.php b/mod/scorm/lib.php index b79990787205d..77fb34c744550 100644 --- a/mod/scorm/lib.php +++ b/mod/scorm/lib.php @@ -30,6 +30,10 @@ /** 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, diff --git a/mod/scorm/locallib.php b/mod/scorm/locallib.php index bc48431a0fc47..9d0d977425432 100644 --- a/mod/scorm/locallib.php +++ b/mod/scorm/locallib.php @@ -106,10 +106,11 @@ 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')); +function scorm_get_hidetoc_array() { + 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')); } /** diff --git a/mod/scorm/module.js b/mod/scorm/module.js index f1db6ecb4b71f..188b0bdf5bd45 100644 --- a/mod/scorm/module.js +++ b/mod/scorm/module.js @@ -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; @@ -290,23 +288,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: '
', 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: '
', 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: '
', 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'); @@ -319,10 +330,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; @@ -333,18 +345,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(); diff --git a/mod/scorm/player.php b/mod/scorm/player.php index e8aaf1d08c524..b9d74876b2d09 100644 --- a/mod/scorm/player.php +++ b/mod/scorm/player.php @@ -202,9 +202,9 @@ '.get_string('reviewmode','scorm')."\n" : ''; ?>
hidetoc == 2) { - echo $result->tocmenu; - } +if ($scorm->hidetoc == SCORM_TOC_POPUP) { + echo $result->tocmenu; +} ?>