diff --git a/calendar/amd/build/calendar.min.js b/calendar/amd/build/calendar.min.js
index 24a58102010..59256a96322 100644
--- a/calendar/amd/build/calendar.min.js
+++ b/calendar/amd/build/calendar.min.js
@@ -1 +1 @@
-define(["jquery","core/ajax","core/str","core/templates","core/notification","core/custom_interaction_events","core/modal_events","core/modal_factory","core_calendar/modal_event_form","core_calendar/summary_modal","core_calendar/repository","core_calendar/events","core_calendar/view_manager"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n={ROOT:"[data-region='calendar']",EVENT_LINK:"[data-action='view-event']",NEW_EVENT_BUTTON:"[data-action='new-event-button']"},o=function(a){var b="type"+a;return c.get_string(b,"core_calendar").then(function(a){return a})},p=function(a){return c.get_string("subsource","core_calendar",a).then(function(b){return a.url?''+b+"":b})},q=function(b){k.getEventById(b).then(function(c){if(!c.event)throw new Error("Error encountered while trying to fetch calendar event with ID: "+b);var d=c.event,e=o(d.eventtype);if(d.displayeventsource){d.subscription=JSON.parse(d.subscription);var f={url:d.subscription.url,name:d.subscription.name},g=p(f);return a.when(e,g).then(function(a,b){return d.eventtype=a,d.source=b,d})}return e.then(function(a){return d.eventtype=a,d})}).then(function(a){var b={title:a.name,type:j.TYPE,body:d.render("core_calendar/event_summary_body",a),templateContext:{canedit:a.canedit,candelete:a.candelete}};return h.create(b)}).done(function(a){a.getRoot().on(g.hidden,function(){a.destroy()}),a.show()}).fail(e.exception)},r=function(a){var b=a.find(n.NEW_EVENT_BUTTON),c=b.attr("data-context-id");return h.create({type:i.TYPE,large:!0,templateContext:{contextid:c}},[a,n.NEW_EVENT_BUTTON])},s=function(b,c){var d=a("body");d.on(l.created,function(){window.location.reload()}),d.on(l.deleted,function(){window.location.reload()}),d.on(l.updated,function(){window.location.reload()}),d.on(l.editActionEvent,function(a,b){window.location.assign(b)}),c.then(function(a){d.on(l.editEvent,function(b,c){a.setEventId(c),a.show()})})},t=function(){var b=a(n.ROOT);b.on("click",n.EVENT_LINK,function(b){b.preventDefault();var c=a(this).attr("data-event-id");q(c)});var c=r(b);s(b,c)};return{init:function(){m.init(),t()}}});
\ No newline at end of file
+define(["jquery","core/ajax","core/str","core/templates","core/notification","core/custom_interaction_events","core/modal_events","core/modal_factory","core_calendar/modal_event_form","core_calendar/summary_modal","core_calendar/repository","core_calendar/events","core_calendar/view_manager"],function(a,b,c,d,e,f,g,h,i,j,k,l,m){var n={ROOT:"[data-region='calendar']",EVENT_LINK:"[data-action='view-event']",NEW_EVENT_BUTTON:"[data-action='new-event-button']"},o=function(a){var b="type"+a;return c.get_string(b,"core_calendar").then(function(a){return a})},p=function(a){return c.get_string("subsource","core_calendar",a).then(function(b){return a.url?''+b+"":b})},q=function(b){k.getEventById(b).then(function(c){if(!c.event)throw new Error("Error encountered while trying to fetch calendar event with ID: "+b);var d=c.event,e=o(d.eventtype);if(d.displayeventsource){d.subscription=JSON.parse(d.subscription);var f={url:d.subscription.url,name:d.subscription.name},g=p(f);return a.when(e,g).then(function(a,b){return d.eventtype=a,d.source=b,d})}return e.then(function(a){return d.eventtype=a,d})}).then(function(a){var b={title:a.name,type:j.TYPE,body:d.render("core_calendar/event_summary_body",a),templateContext:{canedit:a.canedit,candelete:a.candelete}};return h.create(b)}).done(function(a){a.getRoot().on(g.hidden,function(){a.destroy()}),a.show()}).fail(e.exception)},r=function(a){var b=a.find(n.NEW_EVENT_BUTTON),c=b.attr("data-context-id");return h.create({type:i.TYPE,large:!0,templateContext:{contextid:c}},[a,n.NEW_EVENT_BUTTON])},s=function(b,c){var d=a("body");d.on(l.created,function(){window.location.reload()}),d.on(l.deleted,function(){m.reloadCurrentMonth()}),d.on(l.updated,function(){window.location.reload()}),d.on(l.editActionEvent,function(a,b){window.location.assign(b)}),c.then(function(a){d.on(l.editEvent,function(b,c){a.setEventId(c),a.show()})})},t=function(){var b=a(n.ROOT);b.on("click",n.EVENT_LINK,function(b){b.preventDefault();var c=a(this).attr("data-event-id");q(c)});var c=r(b);s(b,c)};return{init:function(){m.init(),t()}}});
\ No newline at end of file
diff --git a/calendar/amd/build/view_manager.min.js b/calendar/amd/build/view_manager.min.js
index 384490f57d8..7866676c814 100644
--- a/calendar/amd/build/view_manager.min.js
+++ b/calendar/amd/build/view_manager.min.js
@@ -1 +1 @@
-define(["jquery","core/templates","core/notification","core_calendar/repository","core_calendar/events"],function(a,b,c,d,e){var f={ROOT:"[data-region='calendar']",CALENDAR_NAV_LINK:"span.calendarwrapper .arrow_link",CALENDAR_MONTH_WRAPPER:".calendarwrapper"},g=function(b){b=a(b),b.on("click",f.CALENDAR_NAV_LINK,function(c){var d=a(b).find(f.CALENDAR_MONTH_WRAPPER).data("courseid"),e=a(c.currentTarget);h(e.attr("href"),e.data("time"),d),c.preventDefault()})},h=function(g,h,i){d.getCalendarMonthData(h,i).then(function(a){return window.history.pushState({},"",g),b.render("core_calendar/month_detailed",a)}).then(function(a,c){return b.replaceNodeContents(f.CALENDAR_MONTH_WRAPPER,a,c)}).done(function(){a("body").trigger(e.monthChanged,[h,i])}).fail(c.exception)};return{init:function(){g(f.ROOT)}}});
\ No newline at end of file
+define(["jquery","core/templates","core/notification","core_calendar/repository","core_calendar/events"],function(a,b,c,d,e){var f={ROOT:"[data-region='calendar']",CALENDAR_NAV_LINK:"span.calendarwrapper .arrow_link",CALENDAR_MONTH_WRAPPER:".calendarwrapper"},g=function(b){b=a(b),b.on("click",f.CALENDAR_NAV_LINK,function(c){var d=a(b).find(f.CALENDAR_MONTH_WRAPPER).data("courseid"),e=a(c.currentTarget);i(e.attr("href"),e.data("time"),d),c.preventDefault()})},h=function(a,e){return d.getCalendarMonthData(a,e).then(function(a){return b.render("core_calendar/month_detailed",a)}).then(function(a,c){return b.replaceNodeContents(f.CALENDAR_MONTH_WRAPPER,a,c)}).fail(c.exception)},i=function(b,c,d){return h(c,d).then(function(){window.history.pushState({},"",b)}).then(function(){a("body").trigger(e.monthChanged,[c,d])})},j=function(){var b=a(f.ROOT),c=b.find(f.CALENDAR_MONTH_WRAPPER).data("courseid"),d=b.find(f.CALENDAR_MONTH_WRAPPER).data("current-time");return h(d,c)};return{init:function(){g(f.ROOT)},reloadCurrentMonth:j,changeMonth:i,refreshMonthContent:h}});
\ No newline at end of file
diff --git a/calendar/amd/src/calendar.js b/calendar/amd/src/calendar.js
index 570c8c62a3e..b1f37e79d69 100644
--- a/calendar/amd/src/calendar.js
+++ b/calendar/amd/src/calendar.js
@@ -195,7 +195,7 @@ define([
window.location.reload();
});
body.on(CalendarEvents.deleted, function() {
- window.location.reload();
+ CalendarViewManager.reloadCurrentMonth();
});
body.on(CalendarEvents.updated, function() {
window.location.reload();
diff --git a/calendar/amd/src/view_manager.js b/calendar/amd/src/view_manager.js
index 6eb6269fbf8..da1e45449b3 100644
--- a/calendar/amd/src/view_manager.js
+++ b/calendar/amd/src/view_manager.js
@@ -47,31 +47,61 @@ define(['jquery', 'core/templates', 'core/notification', 'core_calendar/reposito
});
};
+ /**
+ * Refresh the month content.
+ *
+ * @param {Number} time The calendar time to be shown
+ * @param {Number} courseid The id of the course whose events are shown
+ * @return {promise}
+ */
+ var refreshMonthContent = function(time, courseid) {
+ return CalendarRepository.getCalendarMonthData(time, courseid)
+ .then(function(context) {
+ return Templates.render('core_calendar/month_detailed', context);
+ })
+ .then(function(html, js) {
+ return Templates.replaceNodeContents(SELECTORS.CALENDAR_MONTH_WRAPPER, html, js);
+ })
+ .fail(Notification.exception);
+ };
+
/**
* Handle changes to the current calendar view.
*
* @param {String} url The calendar url to be shown
* @param {Number} time The calendar time to be shown
* @param {Number} courseid The id of the course whose events are shown
+ * @return {promise}
*/
var changeMonth = function(url, time, courseid) {
- CalendarRepository.getCalendarMonthData(time, courseid)
- .then(function(context) {
- window.history.pushState({}, '', url);
- return Templates.render('core_calendar/month_detailed', context);
- })
- .then(function(html, js) {
- return Templates.replaceNodeContents(SELECTORS.CALENDAR_MONTH_WRAPPER, html, js);
- })
- .done(function() {
- $('body').trigger(CalendarEvents.monthChanged, [time, courseid]);
- })
- .fail(Notification.exception);
+ return refreshMonthContent(time, courseid)
+ .then(function() {
+ window.history.pushState({}, '', url);
+ })
+ .then(function() {
+ $('body').trigger(CalendarEvents.monthChanged, [time, courseid]);
+ });
+ };
+
+ /**
+ * Reload the current month view data.
+ *
+ * @return {promise}
+ */
+ var reloadCurrentMonth = function() {
+ var root = $(SELECTORS.ROOT),
+ courseid = root.find(SELECTORS.CALENDAR_MONTH_WRAPPER).data('courseid'),
+ time = root.find(SELECTORS.CALENDAR_MONTH_WRAPPER).data('current-time');
+
+ return refreshMonthContent(time, courseid);
};
return {
init: function() {
registerEventListeners(SELECTORS.ROOT);
- }
+ },
+ reloadCurrentMonth: reloadCurrentMonth,
+ changeMonth: changeMonth,
+ refreshMonthContent: refreshMonthContent
};
});
diff --git a/calendar/classes/external/month_exporter.php b/calendar/classes/external/month_exporter.php
index cf1d1bd69fb..9b99498e910 100644
--- a/calendar/classes/external/month_exporter.php
+++ b/calendar/classes/external/month_exporter.php
@@ -112,6 +112,9 @@ class month_exporter extends exporter {
'nextperiod' => [
'type' => PARAM_INT,
],
+ 'time' => [
+ 'type' => PARAM_INT,
+ ]
];
}
@@ -131,6 +134,7 @@ class month_exporter extends exporter {
'navigation' => $this->get_navigation($output),
'weeks' => $this->get_weeks($output),
'daynames' => $this->get_day_names($output),
+ 'time' => $this->calendar->time
];
}
diff --git a/calendar/templates/month_detailed.mustache b/calendar/templates/month_detailed.mustache
index 106d81b91bc..9809309baca 100644
--- a/calendar/templates/month_detailed.mustache
+++ b/calendar/templates/month_detailed.mustache
@@ -31,7 +31,7 @@
{
}
}}
-
+
{{> core_calendar/month_header }}
{{> core_calendar/month_navigation }}