diff --git a/course/renderer.php b/course/renderer.php index 777487bfcfa..c3d303df66e 100644 --- a/course/renderer.php +++ b/course/renderer.php @@ -66,7 +66,7 @@ class core_course_renderer extends plugin_renderer_base { // Generate an id and the required JS call to make this a nice widget $id = html_writer::random_id('course_category_tree'); - $this->page->requires->js_init_call('M.util.init_toggle_class_on_click', array($id, '.category.with_children .category_label', 'collapsed')); + $this->page->requires->js_init_call('M.util.init_toggle_class_on_click', array($id, '.category.with_children .category_label', 'collapsed', '.category.with_children')); // Start content generation $content = html_writer::start_tag('div', array('class'=>'course_category_tree', 'id'=>$id)); diff --git a/lib/javascript-static.js b/lib/javascript-static.js index 68611fd19ae..d79230d16eb 100644 --- a/lib/javascript-static.js +++ b/lib/javascript-static.js @@ -406,23 +406,32 @@ M.util.init_frametop = function(Y) { * @param {string} cssselector A selector to use to find targets * @param {string} toggleclassname A classname to toggle */ -M.util.init_toggle_class_on_click = function(Y, id, cssselector, toggleclassname) { +M.util.init_toggle_class_on_click = function(Y, id, cssselector, toggleclassname, togglecssselector) { + + if (togglecssselector == '') { + togglecssselector = cssselector; + } + var node = Y.one('#'+id); - node.all(cssselector).each(function(node){ - node.on('click', function(e){ + node.all(cssselector).each(function(n){ + n.on('click', function(e){ e.stopPropagation(); - if (e.target.test(cssselector) && e.target.get('nodeName')!='A' && e.target.get('nodeName')!='IMG') { - this.ancestor().toggleClass(toggleclassname); + if (e.target.test(cssselector) && !e.target.test('a') && !e.target.test('img')) { + if (this.test(togglecssselector)) { + this.toggleClass(toggleclassname); + } else { + this.ancestor(togglecssselector).toggleClass(toggleclassname); } - }, node); + } + }, n); }); // Attach this click event to the node rather than all selectors... will be much better // for performance node.on('click', function(e){ if (e.target.hasClass('addtoall')) { - node.all(cssselector).addClass(toggleclassname); + this.all(togglecssselector).addClass(toggleclassname); } else if (e.target.hasClass('removefromall')) { - node.all(cssselector+'.'+toggleclassname).removeClass(toggleclassname); + this.all(togglecssselector+'.'+toggleclassname).removeClass(toggleclassname); } }, node); }; diff --git a/version.php b/version.php index 35bd385bed6..dfe1467cd38 100644 --- a/version.php +++ b/version.php @@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die(); -$version = 2010111703; // YYYYMMDD = date of the last version bump +$version = 2010112200; // YYYYMMDD = date of the last version bump // XX = daily increments $release = '2.0 RC2 (Build: 20101122)'; // Human-friendly version name