diff --git a/calendar/amd/build/calendar_threemonth.min.js b/calendar/amd/build/calendar_threemonth.min.js index db4a1a342be..905e24f3add 100644 --- a/calendar/amd/build/calendar_threemonth.min.js +++ b/calendar/amd/build/calendar_threemonth.min.js @@ -1 +1 @@ -define(["jquery","core/notification","core_calendar/selectors","core_calendar/events","core/templates","core_calendar/view_manager"],function(a,b,c,d,e,f){var g=function(e){var g=a("body");g.on(d.monthChanged,function(a,c,d,f,g){e.queue(function(e){return h(a,c,d,f,g).then(function(){return e()}).fail(b.exception)})});var h=function(b,d,g,h,i){var j=e.find('[data-year="'+d+'"][data-month="'+g+'"]'),k=j.closest(c.calendarPeriods.month),l=e.find(c.calendarPeriods.month),m=a(l[0]),n=a(l[2]),o=a("");o.attr("data-template","core_calendar/threemonth_month"),o.attr("data-includenavigation",!1),o.attr("data-mini",!0);var p=a("
");p.hide(),p.append(o);var q,r,s;return k.is(m)?(p.insertBefore(m),q=m.data("previousYear"),r=m.data("previousMonth"),s=n):k.is(n)&&(p.insertAfter(n),q=n.data("nextYear"),r=n.data("nextMonth"),s=m),f.refreshMonthContent(o,q,r,h,i,o).then(function(){var b=a.Deferred(),c=a.Deferred();return s.slideUp("fast",function(){a(this).remove(),b.resolve()}),p.slideDown("fast",function(){c.resolve()}),a.when(b,c)})}};return{init:function(b){b=a(b),g(b)}}}); \ No newline at end of file +define(["jquery","core/notification","core_calendar/selectors","core_calendar/events","core/templates","core_calendar/view_manager"],function(a,b,c,d,e,f){var g=function(e){var g=a("body");g.on([d.monthChanged,d.dayChanged],function(a,c,d,f,g){e.queue(function(e){return h(a,c,d,f,g).then(function(){return e()}).fail(b.exception)})});var h=function(b,d,g,h,i){var j=e.find('[data-year="'+d+'"][data-month="'+g+'"]'),k=j.closest(c.calendarPeriods.month),l=e.find(c.calendarPeriods.month),m=a(l[0]),n=a(l[2]),o=a("");o.attr("data-template","core_calendar/threemonth_month"),o.attr("data-includenavigation",!1),o.attr("data-mini",!0);var p=a("
");p.hide(),p.append(o);var q,r,s;return k.is(m)?(p.insertBefore(m),q=m.data("previousYear"),r=m.data("previousMonth"),s=n):k.is(n)&&(p.insertAfter(n),q=n.data("nextYear"),r=n.data("nextMonth"),s=m),f.refreshMonthContent(o,q,r,h,i,o).then(function(){var b=a.Deferred(),c=a.Deferred();return s.slideUp("fast",function(){a(this).remove(),b.resolve()}),p.slideDown("fast",function(){c.resolve()}),a.when(b,c)})};e.on("click",c.links.miniDayLink,function(b){var d=a(b.target),e=d.data("year"),g=d.data("month"),h=d.text(),i=d.data("courseid"),j=d.data("categoryid"),k=a("body").find(c.calendarMain);f.refreshDayContent(k,e,g,h,i,j,k,"core_calendar/calendar_day"),b.preventDefault(),window.history.pushState({},"","?view=day")})};return{init:function(b){b=a(b),g(b)}}}); \ No newline at end of file diff --git a/calendar/amd/build/selectors.min.js b/calendar/amd/build/selectors.min.js index 94a11d714ee..d166019e97c 100644 --- a/calendar/amd/build/selectors.min.js +++ b/calendar/amd/build/selectors.min.js @@ -1 +1 @@ -define([],function(){return{eventFilterItem:"[data-action='filter-event-type']",eventType:{site:"[data-eventtype-site]",category:"[data-eventtype-category]",course:"[data-eventtype-course]",group:"[data-eventtype-group]",user:"[data-eventtype-user]"},popoverType:{site:"[data-popover-eventtype-site]",category:"[data-popover-eventtype-category]",course:"[data-popover-eventtype-course]",group:"[data-popover-eventtype-group]",user:"[data-popover-eventtype-user]"},calendarPeriods:{month:"[data-period='month']"},courseSelector:'select[name="course"]',viewSelector:'div[data-region="view-selector"]',actions:{create:'[data-action="new-event-button"]',edit:'[data-action="edit"]',remove:'[data-action="delete"]',viewEvent:'[data-action="view-event"]'},elements:{courseSelector:'select[name="course"]'},today:".today",day:'[data-region="day"]',wrapper:".calendarwrapper",eventItem:'[data-type="event"]',links:{navLink:".calendarwrapper .arrow_link",eventLink:"[data-region='event-item']"},containers:{loadingIcon:'[data-region="overlay-icon-container"]'}}}); \ No newline at end of file +define([],function(){return{eventFilterItem:"[data-action='filter-event-type']",eventType:{site:"[data-eventtype-site]",category:"[data-eventtype-category]",course:"[data-eventtype-course]",group:"[data-eventtype-group]",user:"[data-eventtype-user]"},popoverType:{site:"[data-popover-eventtype-site]",category:"[data-popover-eventtype-category]",course:"[data-popover-eventtype-course]",group:"[data-popover-eventtype-group]",user:"[data-popover-eventtype-user]"},calendarPeriods:{month:"[data-period='month']"},courseSelector:'select[name="course"]',viewSelector:'div[data-region="view-selector"]',actions:{create:'[data-action="new-event-button"]',edit:'[data-action="edit"]',remove:'[data-action="delete"]',viewEvent:'[data-action="view-event"]'},elements:{courseSelector:'select[name="course"]'},today:".today",day:'[data-region="day"]',calendarMain:'[data-region="calendar"]',wrapper:".calendarwrapper",eventItem:'[data-type="event"]',links:{navLink:".calendarwrapper .arrow_link",eventLink:"[data-region='event-item']",miniDayLink:"[data-region='mini-day-link']"},containers:{loadingIcon:'[data-region="overlay-icon-container"]'}}}); \ No newline at end of file diff --git a/calendar/amd/src/calendar_threemonth.js b/calendar/amd/src/calendar_threemonth.js index 4d9f2786d08..66cfb00873a 100644 --- a/calendar/amd/src/calendar_threemonth.js +++ b/calendar/amd/src/calendar_threemonth.js @@ -47,7 +47,7 @@ function( */ var registerCalendarEventListeners = function(root) { var body = $('body'); - body.on(CalendarEvents.monthChanged, function(e, year, month, courseId, categoryId) { + body.on([CalendarEvents.monthChanged, CalendarEvents.dayChanged], function(e, year, month, courseId, categoryId) { // We have to use a queue here because the calling code is decoupled from these listeners. // It's possible for the event to be called multiple times before one call is fully resolved. root.queue(function(next) { @@ -117,6 +117,22 @@ function( return $.when(slideUpPromise, slideDownPromise); }); }; + + // Listen for a click on the day link in the three month block to load the day view. + root.on('click', CalendarSelectors.links.miniDayLink, function(e) { + + var miniDayLink = $(e.target); + var year = miniDayLink.data('year'), + month = miniDayLink.data('month'), + day = miniDayLink.text(), + courseId = miniDayLink.data('courseid'), + categoryId = miniDayLink.data('categoryid'), + calendarRoot = $('body').find(CalendarSelectors.calendarMain); + CalendarViewManager.refreshDayContent(calendarRoot, year, month, day, courseId, categoryId, + calendarRoot, 'core_calendar/calendar_day'); + e.preventDefault(); + window.history.pushState({}, '', '?view=day'); + }); }; return { diff --git a/calendar/amd/src/selectors.js b/calendar/amd/src/selectors.js index 2326670995e..80ba37846e8 100644 --- a/calendar/amd/src/selectors.js +++ b/calendar/amd/src/selectors.js @@ -54,11 +54,13 @@ define([], function() { }, today: '.today', day: '[data-region="day"]', + calendarMain: '[data-region="calendar"]', wrapper: '.calendarwrapper', eventItem: '[data-type="event"]', links: { navLink: '.calendarwrapper .arrow_link', eventLink: "[data-region='event-item']", + miniDayLink: "[data-region='mini-day-link']", }, containers: { loadingIcon: '[data-region="overlay-icon-container"]', diff --git a/calendar/templates/minicalendar_day_link.mustache b/calendar/templates/minicalendar_day_link.mustache index 072345dad23..5438bd53957 100644 --- a/calendar/templates/minicalendar_day_link.mustache +++ b/calendar/templates/minicalendar_day_link.mustache @@ -33,8 +33,13 @@ }} data-container="body"{{! }} data-toggle="popover"{{! }} data-html="true"{{! + }} data-region="mini-day-link"{{! }} data-trigger="hover"{{! }} data-placement="top"{{! + }} data-year="{{year}}"{{! + }} data-month="{{date.mon}}"{{! + }} data-courseid="{{courseid}}"{{! + }} data-categoryid="{{categoryid}}"{{! }} data-title="{{$title}}{{title}}{{/title}}"{{! }} data-alternate="{{$nocontent}}{{/nocontent}}"{{! }}>{{$day}}{{day}}{{/day}}