From d5d7699b87f5967a7e85a154612f2aa7c5638329 Mon Sep 17 00:00:00 2001 From: lameze Date: Mon, 29 Oct 2018 21:36:38 -0400 Subject: [PATCH] MDL-63064 block_starredcourses: reload the content when a course is starred --- blocks/starredcourses/amd/build/main.min.js | 2 +- blocks/starredcourses/amd/src/main.js | 58 ++++++++++++++++++++++------- 2 files changed, 45 insertions(+), 15 deletions(-) rewrite blocks/starredcourses/amd/build/main.min.js (83%) diff --git a/blocks/starredcourses/amd/build/main.min.js b/blocks/starredcourses/amd/build/main.min.js dissimilarity index 83% index ca3581539ae..2ed5f97a45b 100644 --- a/blocks/starredcourses/amd/build/main.min.js +++ b/blocks/starredcourses/amd/build/main.min.js @@ -1 +1 @@ -define(["jquery","core/notification","block_starredcourses/repository","core/paged_content_factory","core/templates"],function(a,b,c,d,e){var f={STARRED_COURSES_REGION:'[data-region="starred-courses-view-content"]'},g=5,h=function(a,b){if(b.length>0)return e.render("block_starredcourses/view-cards",{courses:b});var c=a.attr("data-nocoursesimg");return e.render("block_starredcourses/no-courses",{nocoursesimg:c})},i=function(b,i){i=a(i);var j=a(f.STARRED_COURSES_REGION);d.createWithLimit(g,function(a,d){var e=[];return a.forEach(function(a){var f={limit:g,offset:a.offset,userid:b},j=c.getStarredCourses(f).then(function(b){return b.length>0?h(i,b):(d.allItemsLoaded(a.pageNumber),h(i,b))});e.push(j)}),e}).then(function(a,b){e.replaceNodeContents(j,a,b)})};return{init:i}}); \ No newline at end of file +define(["jquery","core/notification","block_starredcourses/repository","core/paged_content_factory","core/templates"],function(a,b,c,d,e){var f={STARRED_COURSES_REGION_VIEW:'[data-region="starred-courses-view"]',STARRED_COURSES_REGION:'[data-region="starred-courses-view-content"]'},g=5,h=function(b,c){if(c.length>0)return e.render("block_starredcourses/view-cards",{courses:c});var d=a(f.STARRED_COURSES_REGION_VIEW).attr("data-nocoursesimg");return e.render("block_starredcourses/no-courses",{nocoursesimg:d})},i=function(a,i){var j=a.find(f.STARRED_COURSES_REGION);d.createWithLimit(g,function(b,d){var e=[];return b.forEach(function(b){var f={limit:g,offset:b.offset,userid:i},j=c.getStarredCourses(f).then(function(c){return c.length>0?h(a,c):(d.allItemsLoaded(b.pageNumber),h(a,c))});e.push(j)}),e}).then(function(a,b){return e.replaceNodeContents(j,a,b)})["catch"](b.exception)},j=function(b,c){var d=a("body");d.on("myoverview-events:course_starred",function(){i(b,c)}),d.on("myoverview-events:course_unstarred",function(){i(b,c)})},k=function(b){b=a(b);var c=b.data("userid");j(b,c),i(b,c)};return{init:k}}); \ No newline at end of file diff --git a/blocks/starredcourses/amd/src/main.js b/blocks/starredcourses/amd/src/main.js index a1a68b0ab68..30975975b7d 100644 --- a/blocks/starredcourses/amd/src/main.js +++ b/blocks/starredcourses/amd/src/main.js @@ -37,6 +37,7 @@ function( ) { var SELECTORS = { + STARRED_COURSES_REGION_VIEW: '[data-region="starred-courses-view"]', STARRED_COURSES_REGION: '[data-region="starred-courses-view-content"]' }; @@ -56,7 +57,7 @@ function( courses: courses }); } else { - var nocoursesimg = root.attr('data-nocoursesimg'); + var nocoursesimg = $(SELECTORS.STARRED_COURSES_REGION_VIEW).attr('data-nocoursesimg'); return Templates.render('block_starredcourses/no-courses', { nocoursesimg: nocoursesimg }); @@ -64,14 +65,13 @@ function( }; /** - * Initialise all of the modules for the starred courses block. + * Fetch user's starred courses and reload the content of the block. * - * @param {object} root The root element for the block. + * @param {object} root The root element for the starred view. * @param {Number} userid The user id. */ - var init = function(userid, root) { - root = $(root); - var content = $(SELECTORS.STARRED_COURSES_REGION); + var reloadContent = function(root, userid) { + var content = root.find(SELECTORS.STARRED_COURSES_REGION); PagedContentFactory.createWithLimit( NUM_COURSES_TOTAL, @@ -80,29 +80,59 @@ function( pagesData.forEach(function(pageData) { var args = { - limit: NUM_COURSES_TOTAL, - offset: pageData.offset, - userid: userid - }; + limit: NUM_COURSES_TOTAL, + offset: pageData.offset, + userid: userid + }; // Load the page data. - var pagePromise = Repository.getStarredCourses(args).then(function (courses) { + var pagePromise = Repository.getStarredCourses(args).then(function(courses) { if (courses.length > 0) { return renderCourses(root, courses); } else { actions.allItemsLoaded(pageData.pageNumber); return renderCourses(root, courses); } - }); promises.push(pagePromise); }); return promises; - }).then(function (html, js) { - Templates.replaceNodeContents(content, html, js); + }).then(function(html, js) { + return Templates.replaceNodeContents(content, html, js); + }).catch(Notification.exception); + }; + + /** + * Register event listeners for the block. + * + * @param {object} root The calendar root element + * @param {Number} userid The user id. + */ + var registerEventListeners = function(root, userid) { + var body = $('body'); + + body.on('myoverview-events:course_starred', function() { + reloadContent(root, userid); }); + + body.on('myoverview-events:course_unstarred', function() { + reloadContent(root, userid); + }); + }; + + /** + * Initialise all of the modules for the starred courses block. + * + * @param {object} root The root element for the block. + */ + var init = function(root) { + root = $(root); + var userid = root.data('userid'); + + registerEventListeners(root, userid); + reloadContent(root, userid); }; return { -- 2.11.4.GIT