From c683165a4ad0a15f925d44d48dd393cd2abb509b Mon Sep 17 00:00:00 2001 From: Jonathon Fowler Date: Fri, 18 Mar 2011 15:00:14 +1000 Subject: [PATCH 1/2] insert a 'View all courses' link when loading category navigation entries from AJAX --- .../navigation/yui/navigation/navigation.js | 30 ++++++++++++++----- lib/navigationlib.php | 2 ++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/blocks/navigation/yui/navigation/navigation.js b/blocks/navigation/yui/navigation/navigation.js index f2522d89a30..3f37fd36143 100644 --- a/blocks/navigation/yui/navigation/navigation.js +++ b/blocks/navigation/yui/navigation/navigation.js @@ -310,11 +310,18 @@ BRANCH.prototype = { try { var object = Y.JSON.parse(outcome.responseText); if (object.children && object.children.length > 0) { + var count = 0; for (var i in object.children) { + if (object.children[i].type == 20) { + count++; + } if (typeof(object.children[i])=='object') { this.addChild(object.children[i]); } } + if (this.get('type') == 10 && count >= M.block_navigation.courselimit) { + this.addViewAllCoursesChild(this); + } this.get('tree').toggleExpansion({target:this.node}); return true; } @@ -345,16 +352,23 @@ BRANCH.prototype = { } } if (branch.get('type') == 10 && count >= M.block_navigation.courselimit) { - branch.addChild({ - name : M.str.moodle.viewallcourses, - title : M.str.moodle.viewallcourses, - link : M.cfg.wwwroot+'/course/category.php?id='+branch.get('key'), - haschildren : false, - icon : {'pix':"i/navigationitem",'component':'moodle'} - }, branch); + this.addViewAllCoursesChild(branch); } } return true; + }, + + /** + * Add a link to view all courses in a category + */ + addViewAllCoursesChild: function(branch) { + branch.addChild({ + name : M.str.moodle.viewallcourses, + title : M.str.moodle.viewallcourses, + link : M.cfg.wwwroot+'/course/category.php?id='+branch.get('key'), + haschildren : false, + icon : {'pix':"i/navigationitem",'component':'moodle'} + }); } } Y.extend(BRANCH, Y.Base, BRANCH.prototype, { @@ -441,4 +455,4 @@ M.block_navigation = M.block_navigation || { } }; -}, '@VERSION@', {requires:['base', 'core_dock', 'io', 'node', 'dom', 'event-custom', 'event-delegate', 'json-parse']}); \ No newline at end of file +}, '@VERSION@', {requires:['base', 'core_dock', 'io', 'node', 'dom', 'event-custom', 'event-delegate', 'json-parse']}); diff --git a/lib/navigationlib.php b/lib/navigationlib.php index 5376bed4cae..f2d85545a25 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -1097,6 +1097,8 @@ class global_navigation extends navigation_node { } else if ($this->rootnodes['courses']->children->count() >= $limit) { $this->rootnodes['courses']->add(get_string('viewallcoursescategories'), new moodle_url('/course/index.php'), self::TYPE_SETTING); } + + $this->page->requires->string_for_js('viewallcourses', 'moodle'); // Load for the current user $this->load_for_user(); From 4c2820fbd820b5b1e694b0ba9751d19fb4525a02 Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Fri, 18 Mar 2011 14:45:10 +0800 Subject: [PATCH 2/2] navigation MDL-26875 Moved course type check into object check and moved JS string call to navigation block where the navigation JS is initialised. --- blocks/navigation/block_navigation.php | 1 + blocks/navigation/yui/navigation/navigation.js | 14 +++++++------- lib/navigationlib.php | 2 -- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/blocks/navigation/block_navigation.php b/blocks/navigation/block_navigation.php index 71ad00735d6..77cc00a3a82 100644 --- a/blocks/navigation/block_navigation.php +++ b/blocks/navigation/block_navigation.php @@ -118,6 +118,7 @@ class block_navigation extends block_base { 'courselimit' => $limit, 'expansionlimit' => $expansionlimit ); + $this->page->requires->string_for_js('viewallcourses', 'moodle'); $this->page->requires->yui_module(array('core_dock', 'moodle-block_navigation-navigation'), 'M.block_navigation.init_add_tree', array($arguments)); } diff --git a/blocks/navigation/yui/navigation/navigation.js b/blocks/navigation/yui/navigation/navigation.js index 3f37fd36143..1dfb76afcc0 100644 --- a/blocks/navigation/yui/navigation/navigation.js +++ b/blocks/navigation/yui/navigation/navigation.js @@ -310,16 +310,16 @@ BRANCH.prototype = { try { var object = Y.JSON.parse(outcome.responseText); if (object.children && object.children.length > 0) { - var count = 0; + var coursecount = 0; for (var i in object.children) { - if (object.children[i].type == 20) { - count++; - } if (typeof(object.children[i])=='object') { + if (object.children[i].type == 20) { + coursecount++; + } this.addChild(object.children[i]); } } - if (this.get('type') == 10 && count >= M.block_navigation.courselimit) { + if (this.get('type') == 10 && coursecount >= M.block_navigation.courselimit) { this.addViewAllCoursesChild(this); } this.get('tree').toggleExpansion({target:this.node}); @@ -357,7 +357,7 @@ BRANCH.prototype = { } return true; }, - + /** * Add a link to view all courses in a category */ @@ -455,4 +455,4 @@ M.block_navigation = M.block_navigation || { } }; -}, '@VERSION@', {requires:['base', 'core_dock', 'io', 'node', 'dom', 'event-custom', 'event-delegate', 'json-parse']}); +}, '@VERSION@', {requires:['base', 'core_dock', 'io', 'node', 'dom', 'event-custom', 'event-delegate', 'json-parse']}); \ No newline at end of file diff --git a/lib/navigationlib.php b/lib/navigationlib.php index f2d85545a25..5376bed4cae 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -1097,8 +1097,6 @@ class global_navigation extends navigation_node { } else if ($this->rootnodes['courses']->children->count() >= $limit) { $this->rootnodes['courses']->add(get_string('viewallcoursescategories'), new moodle_url('/course/index.php'), self::TYPE_SETTING); } - - $this->page->requires->string_for_js('viewallcourses', 'moodle'); // Load for the current user $this->load_for_user();