diff --git a/blocks/navigation/yui/navigation/navigation.js b/blocks/navigation/yui/navigation/navigation.js index 364b0ecdaa3..62f417e5ce9 100644 --- a/blocks/navigation/yui/navigation/navigation.js +++ b/blocks/navigation/yui/navigation/navigation.js @@ -74,6 +74,35 @@ var EXPANSIONLIMIT_EVERYTHING = 0, EXPANSIONLIMIT_SECTION = 30, EXPANSIONLIMIT_ACTIVITY = 40; +/** + * Mappings for the different types of nodes coming from the navigation. + * Copied from lib/navigationlib.php navigation_node constants. + * @type object + */ +var NODETYPE = { + /** @type int Root node = 0 */ + ROOTNODE : 0, + /** @type int System context = 1 */ + SYSTEM : 1, + /** @type int Course category = 10 */ + CATEGORY : 10, + /** @type int Course = 20 */ + COURSE : 20, + /** @type int Course section = 30 */ + SECTION : 30, + /** @type int Activity (course module) = 40 */ + ACTIVITY : 40, + /** @type int Resource (course module = 50 */ + RESOURCE : 50, + /** @type int Custom node (could be anything) = 60 */ + CUSTOM : 60, + /** @type int Setting = 70 */ + SETTING : 70, + /** @type int User context = 80 */ + USER : 80, + /** @type int Container = 90 */ + CONTAINER : 90 +} /** * Navigation tree class. @@ -299,7 +328,7 @@ BRANCH.prototype = { // Prepare the icon, should be an object representing a pix_icon var branchicon = false; var icon = this.get('icon'); - if (icon && (!isbranch || this.get('type') == 40)) { + if (icon && (!isbranch || this.get('type') == NODETYPE.ACTIVITY)) { branchicon = Y.Node.create(''); branchicon.setAttribute('src', M.util.image_url(icon.pix, icon.component)); branchli.addClass('item_with_icon'); @@ -419,13 +448,13 @@ BRANCH.prototype = { var coursecount = 0; for (var i in object.children) { if (typeof(object.children[i])=='object') { - if (object.children[i].type == 20) { + if (object.children[i].type == NODETYPE.COURSE) { coursecount++; } this.addChild(object.children[i]); } } - if ((this.get('type') == 10 || this.get('type') == 0) && coursecount >= M.block_navigation.courselimit) { + if ((this.get('type') == NODETYPE.CATEGORY || this.get('type') == NODETYPE.ROOTNODE) && coursecount >= M.block_navigation.courselimit) { this.addViewAllCoursesChild(this); } this.get('tree').toggleExpansion({target:this.node}); @@ -450,14 +479,14 @@ BRANCH.prototype = { var count = 0, i, children = branch.get('children'); for (i in children) { // Add each branch to the tree - if (children[i].type == 20) { + if (children[i].type == NODETYPE.COURSE) { count++; } if (typeof(children[i])=='object') { branch.addChild(children[i]); } } - if (branch.get('type') == 10 && count >= M.block_navigation.courselimit) { + if (branch.get('type') == NODETYPE.CATEGORY && count >= M.block_navigation.courselimit) { this.addViewAllCoursesChild(branch); } } @@ -469,14 +498,14 @@ BRANCH.prototype = { */ addViewAllCoursesChild: function(branch) { var url = null; - if (branch.get('type') == 0 ) { - if (branch.get('key') == 'mycourses') { - url = M.cfg.wwwroot+'/my'; + if (branch.get('type') == NODETYPE.ROOTNODE) { + if (branch.get('key') === 'mycourses') { + url = M.cfg.wwwroot + '/my'; } else { - url = M.cfg.wwwroot+'/course/index.php'; + url = M.cfg.wwwroot + '/course/index.php'; } } else { - url = M.cfg.wwwroot+'/course/category.php?id='+branch.get('key'); + url = M.cfg.wwwroot+'/course/category.php?id=' + branch.get('key'); } branch.addChild({ name : M.str.moodle.viewallcourses, diff --git a/lib/ajax/getnavbranch.php b/lib/ajax/getnavbranch.php index d3e2cec2ad0..e42d63a74a1 100644 --- a/lib/ajax/getnavbranch.php +++ b/lib/ajax/getnavbranch.php @@ -35,7 +35,9 @@ require_once($CFG->dirroot.'/course/lib.php'); try { // Start buffer capture so that we can `remove` any errors ob_start(); - // Require id This is the key for whatever branch we want to get + // Require id This is the key for whatever branch we want to get. + // This accepts alphanum because the courses and my courses branches don't have numerical keys. + // For those branches we return the alphanum key, courses and mycourses. $branchid = required_param('id', PARAM_ALPHANUM); // This identifies the type of the branch we want to get $branchtype = required_param('type', PARAM_INT);