mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 08:22:07 +02:00
MDL-63064 block_starredcourses: change events to use pubsub
This commit is contained in:
parent
d5d7699b87
commit
07fdb5a0a3
2
blocks/myoverview/amd/build/view.min.js
vendored
2
blocks/myoverview/amd/build/view.min.js
vendored
@ -1 +1 @@
|
||||
define(["jquery","block_myoverview/repository","core/paged_content_factory","core/custom_interaction_events","core/notification","core/templates"],function(a,b,c,d,e,f){var g={ACTION_ADD_FAVOURITE:'[data-action="add-favourite"]',ACTION_REMOVE_FAVOURITE:'[data-action="remove-favourite"]',FAVOURITE_ICON:'[data-region="favourite-icon"]',ICON_IS_FAVOURITE:'[data-region="is-favourite"]',ICON_NOT_FAVOURITE:'[data-region="not-favourite"]',PAGED_CONTENT_CONTAINER:'[data-region="page-container"]'},h={COURSES_CARDS:"block_myoverview/view-cards",COURSES_LIST:"block_myoverview/view-list",COURSES_SUMMARY:"block_myoverview/view-summary",NOCOURSES:"block_myoverview/no-courses"},i=[12,24,48],j=[],k=function(a){var b={};return b.display=a.attr("data-display"),b.grouping=a.attr("data-grouping"),b.sort=a.attr("data-sort"),b},l={ignoreControlWhileLoading:!0,controlPlacementBottom:!0},m=function(a,c,d){return b.getEnrolledCoursesByTimeline({offset:d*c,limit:c,classification:a.grouping,sort:a.sort})},n=function(a,b){return a.find(g.FAVOURITE_ICON+'[data-course-id="'+b+'"]')},o=function(a,b){return a.find('[data-region="paged-content-page"][data-page="'+b+'"]')},p=function(a){return a.attr("data-course-id")},q=function(a,b){var c=n(a,b),d=c.find(g.ICON_IS_FAVOURITE);d.addClass("hidden"),d.attr("aria-hidden",!0);var e=c.find(g.ICON_NOT_FAVOURITE);e.removeClass("hidden"),e.attr("aria-hidden",!1)},r=function(a,b){var c=n(a,b),d=c.find(g.ICON_IS_FAVOURITE);d.removeClass("hidden"),d.attr("aria-hidden",!1);var e=c.find(g.ICON_NOT_FAVOURITE);e.addClass("hidden"),e.attr("aria-hidden",!0)},s=function(a,b){return a.find('[data-action="add-favourite"][data-course-id="'+b+'"]')},t=function(a,b){return a.find('[data-action="remove-favourite"][data-course-id="'+b+'"]')},u=function(b,c){var d=t(b,c),f=s(b,c);w(c,!0).then(function(g){g?(a("body").trigger("myoverview-events:course_starred",[c]),d.removeClass("hidden"),f.addClass("hidden"),r(b,c)):e.alert("Starring course failed","Could not change favourite state")})["catch"](e.exception)},v=function(b,c){var d=t(b,c),f=s(b,c);w(c,!1).then(function(g){g?(a("body").trigger("myoverview-events:course_unstarred",[c]),d.addClass("hidden"),f.removeClass("hidden"),q(b,c)):e.alert("Starring course failed","Could not change favourite state")})["catch"](e.exception)},w=function(a,c){return b.setFavouriteCourses({courses:[{id:a,favourite:c}]}).then(function(b){return 0==b.warnings.length&&(j.forEach(function(b){b.courses.forEach(function(d,e){d.id==a&&(b.courses[e].isfavourite=c)})}),!0)})["catch"](e.exception)},x=function(a,b){var c=k(a),d="";if(d="cards"==c.display?h.COURSES_CARDS:"list"==c.display?h.COURSES_LIST:h.COURSES_SUMMARY,b.courses.length)return f.render(d,{courses:b.courses});var e=a.attr("data-nocoursesimg");return f.render(h.NOCOURSES,{nocoursesimg:e})},y=function(b,d){b=a(b),b.attr("data-init")||(z(b),b.attr("data-init",!0));var g=k(b),h=c.createWithLimit(i,function(a,c){var d=[];return a.forEach(function(a){var f=a.pageNumber,h=a.pageNumber-1,i=m(g,a.limit,h).then(function(d){return d.courses.length<a.limit&&c.allItemsLoaded(a.pageNumber),j[f]=d,x(b,d)})["catch"](e.exception);d.push(i)}),d},l);h.then(function(a,b){return f.replaceNodeContents(d,a,b)})["catch"](e.exception)},z=function(b){d.define(b,[d.events.activate]),b.on(d.events.activate,g.ACTION_ADD_FAVOURITE,function(c,d){var e=a(c.target).closest(g.ACTION_ADD_FAVOURITE),f=p(e);u(b,f),d.originalEvent.preventDefault()}),b.on(d.events.activate,g.ACTION_REMOVE_FAVOURITE,function(c,d){var e=a(c.target).closest(g.ACTION_REMOVE_FAVOURITE),f=p(e);v(b,f),d.originalEvent.preventDefault()}),b.on(d.events.activate,g.FAVOURITE_ICON,function(a,b){b.originalEvent.preventDefault()})},A=function(a,b){j.length>0?j.forEach(function(b,c){var d=o(a,c);x(a,b).then(function(a,b){return f.replaceNodeContents(d,a,b)})["catch"](e.exception)}):y(a,b)};return{init:y,reset:A}});
|
||||
define(["jquery","block_myoverview/repository","core/paged_content_factory","core/pubsub","core/custom_interaction_events","core/notification","core/templates","core_course/events"],function(a,b,c,d,e,f,g,h){var i={ACTION_ADD_FAVOURITE:'[data-action="add-favourite"]',ACTION_REMOVE_FAVOURITE:'[data-action="remove-favourite"]',FAVOURITE_ICON:'[data-region="favourite-icon"]',ICON_IS_FAVOURITE:'[data-region="is-favourite"]',ICON_NOT_FAVOURITE:'[data-region="not-favourite"]',PAGED_CONTENT_CONTAINER:'[data-region="page-container"]'},j={COURSES_CARDS:"block_myoverview/view-cards",COURSES_LIST:"block_myoverview/view-list",COURSES_SUMMARY:"block_myoverview/view-summary",NOCOURSES:"block_myoverview/no-courses"},k=[12,24,48],l=[],m=function(a){var b={};return b.display=a.attr("data-display"),b.grouping=a.attr("data-grouping"),b.sort=a.attr("data-sort"),b},n={ignoreControlWhileLoading:!0,controlPlacementBottom:!0},o=function(a,c,d){return b.getEnrolledCoursesByTimeline({offset:d*c,limit:c,classification:a.grouping,sort:a.sort})},p=function(a,b){return a.find(i.FAVOURITE_ICON+'[data-course-id="'+b+'"]')},q=function(a,b){return a.find('[data-region="paged-content-page"][data-page="'+b+'"]')},r=function(a){return a.attr("data-course-id")},s=function(a,b){var c=p(a,b),d=c.find(i.ICON_IS_FAVOURITE);d.addClass("hidden"),d.attr("aria-hidden",!0);var e=c.find(i.ICON_NOT_FAVOURITE);e.removeClass("hidden"),e.attr("aria-hidden",!1)},t=function(a,b){var c=p(a,b),d=c.find(i.ICON_IS_FAVOURITE);d.removeClass("hidden"),d.attr("aria-hidden",!1);var e=c.find(i.ICON_NOT_FAVOURITE);e.addClass("hidden"),e.attr("aria-hidden",!0)},u=function(a,b){return a.find('[data-action="add-favourite"][data-course-id="'+b+'"]')},v=function(a,b){return a.find('[data-action="remove-favourite"][data-course-id="'+b+'"]')},w=function(a,b){var c=v(a,b),e=u(a,b);y(b,!0).then(function(g){g?(d.publish(h.favourited),c.removeClass("hidden"),e.addClass("hidden"),t(a,b)):f.alert("Starring course failed","Could not change favourite state")})["catch"](f.exception)},x=function(a,b){var c=v(a,b),e=u(a,b);y(b,!1).then(function(g){g?(d.publish(h.unfavorited),c.addClass("hidden"),e.removeClass("hidden"),s(a,b)):f.alert("Starring course failed","Could not change favourite state")})["catch"](f.exception)},y=function(a,c){return b.setFavouriteCourses({courses:[{id:a,favourite:c}]}).then(function(b){return 0==b.warnings.length&&(l.forEach(function(b){b.courses.forEach(function(d,e){d.id==a&&(b.courses[e].isfavourite=c)})}),!0)})["catch"](f.exception)},z=function(a,b){var c=m(a),d="";if(d="cards"==c.display?j.COURSES_CARDS:"list"==c.display?j.COURSES_LIST:j.COURSES_SUMMARY,b.courses.length)return g.render(d,{courses:b.courses});var e=a.attr("data-nocoursesimg");return g.render(j.NOCOURSES,{nocoursesimg:e})},A=function(b,d){b=a(b),b.attr("data-init")||(B(b),b.attr("data-init",!0));var e=m(b),h=c.createWithLimit(k,function(a,c){var d=[];return a.forEach(function(a){var g=a.pageNumber,h=a.pageNumber-1,i=o(e,a.limit,h).then(function(d){return d.courses.length<a.limit&&c.allItemsLoaded(a.pageNumber),l[g]=d,z(b,d)})["catch"](f.exception);d.push(i)}),d},n);h.then(function(a,b){return g.replaceNodeContents(d,a,b)})["catch"](f.exception)},B=function(b){e.define(b,[e.events.activate]),b.on(e.events.activate,i.ACTION_ADD_FAVOURITE,function(c,d){var e=a(c.target).closest(i.ACTION_ADD_FAVOURITE),f=r(e);w(b,f),d.originalEvent.preventDefault()}),b.on(e.events.activate,i.ACTION_REMOVE_FAVOURITE,function(c,d){var e=a(c.target).closest(i.ACTION_REMOVE_FAVOURITE),f=r(e);x(b,f),d.originalEvent.preventDefault()}),b.on(e.events.activate,i.FAVOURITE_ICON,function(a,b){b.originalEvent.preventDefault()})},C=function(a,b){l.length>0?l.forEach(function(b,c){var d=q(a,c);z(a,b).then(function(a,b){return g.replaceNodeContents(d,a,b)})["catch"](f.exception)}):A(a,b)};return{init:A,reset:C}});
|
@ -26,17 +26,21 @@ define(
|
||||
'jquery',
|
||||
'block_myoverview/repository',
|
||||
'core/paged_content_factory',
|
||||
'core/pubsub',
|
||||
'core/custom_interaction_events',
|
||||
'core/notification',
|
||||
'core/templates',
|
||||
'core_course/events'
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Repository,
|
||||
PagedContentFactory,
|
||||
PubSub,
|
||||
CustomEvents,
|
||||
Notification,
|
||||
Templates
|
||||
Templates,
|
||||
CourseEvents
|
||||
) {
|
||||
|
||||
var SELECTORS = {
|
||||
@ -197,9 +201,7 @@ function(
|
||||
|
||||
setCourseFavouriteState(courseId, true).then(function(success) {
|
||||
if (success) {
|
||||
// Trigger a JS event so the starred courses block can refresh the list of courses.
|
||||
$('body').trigger('myoverview-events:course_starred', [courseId]);
|
||||
|
||||
PubSub.publish(CourseEvents.favourited);
|
||||
removeAction.removeClass('hidden');
|
||||
addAction.addClass('hidden');
|
||||
showFavouriteIcon(root, courseId);
|
||||
@ -222,7 +224,7 @@ function(
|
||||
|
||||
setCourseFavouriteState(courseId, false).then(function(success) {
|
||||
if (success) {
|
||||
$('body').trigger('myoverview-events:course_unstarred', [courseId]);
|
||||
PubSub.publish(CourseEvents.unfavorited);
|
||||
removeAction.addClass('hidden');
|
||||
addAction.removeClass('hidden');
|
||||
hideFavouriteIcon(root, courseId);
|
||||
|
2
blocks/starredcourses/amd/build/main.min.js
vendored
2
blocks/starredcourses/amd/build/main.min.js
vendored
@ -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_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}});
|
||||
define(["jquery","core/notification","block_starredcourses/repository","core/paged_content_factory","core/pubsub","core/templates","core_course/events"],function(a,b,c,d,e,f,g){var h={STARRED_COURSES_REGION_VIEW:'[data-region="starred-courses-view"]',STARRED_COURSES_REGION:'[data-region="starred-courses-view-content"]'},i=5,j=function(b,c){if(c.length>0)return f.render("block_starredcourses/view-cards",{courses:c});var d=a(h.STARRED_COURSES_REGION_VIEW).attr("data-nocoursesimg");return f.render("block_starredcourses/no-courses",{nocoursesimg:d})},k=function(a,e){var g=a.find(h.STARRED_COURSES_REGION);d.createWithLimit(i,function(b,d){var f=[];return b.forEach(function(b){var g={limit:i,offset:b.offset,userid:e},h=c.getStarredCourses(g).then(function(c){return c.length>0?j(a,c):(d.allItemsLoaded(b.pageNumber),j(a,c))});f.push(h)}),f}).then(function(a,b){return f.replaceNodeContents(g,a,b)})["catch"](b.exception)},l=function(a,b){e.subscribe(g.favourited,function(){k(a,b)}),e.subscribe(g.unfavorited,function(){k(a,b)})},m=function(b){b=a(b);var c=b.data("userid");l(b,c),k(b,c)};return{init:m}});
|
@ -26,14 +26,18 @@ define(
|
||||
'core/notification',
|
||||
'block_starredcourses/repository',
|
||||
'core/paged_content_factory',
|
||||
'core/templates'
|
||||
'core/pubsub',
|
||||
'core/templates',
|
||||
'core_course/events'
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Notification,
|
||||
Repository,
|
||||
PagedContentFactory,
|
||||
Templates
|
||||
PubSub,
|
||||
Templates,
|
||||
CourseEvents
|
||||
) {
|
||||
|
||||
var SELECTORS = {
|
||||
@ -111,13 +115,11 @@ function(
|
||||
* @param {Number} userid The user id.
|
||||
*/
|
||||
var registerEventListeners = function(root, userid) {
|
||||
var body = $('body');
|
||||
|
||||
body.on('myoverview-events:course_starred', function() {
|
||||
PubSub.subscribe(CourseEvents.favourited, function() {
|
||||
reloadContent(root, userid);
|
||||
});
|
||||
|
||||
body.on('myoverview-events:course_unstarred', function() {
|
||||
PubSub.subscribe(CourseEvents.unfavorited, function() {
|
||||
reloadContent(root, userid);
|
||||
});
|
||||
};
|
||||
|
1
course/amd/build/events.min.js
vendored
Normal file
1
course/amd/build/events.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
define([],function(){return{favourited:"core_course:favourited",unfavorited:"core_course:unfavorited"}});
|
29
course/amd/src/events.js
Normal file
29
course/amd/src/events.js
Normal file
@ -0,0 +1,29 @@
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Contain the events the course component can trigger.
|
||||
*
|
||||
* @module core_course/events
|
||||
* @package core_course
|
||||
* @copyright 2018 Simey Lameze <simey@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([], function() {
|
||||
return {
|
||||
favourited: 'core_course:favourited',
|
||||
unfavorited: 'core_course:unfavorited',
|
||||
};
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user