diff --git a/calendar/amd/build/calendar.min.js b/calendar/amd/build/calendar.min.js index 063dd502f7e..5c147966c84 100644 --- a/calendar/amd/build/calendar.min.js +++ b/calendar/amd/build/calendar.min.js @@ -1,2 +1,2 @@ -define ("core_calendar/calendar",["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","core_calendar/crud","core_calendar/selectors"],function(a,b,c,d,f,g,h,i,j,k,l,m,n,o,p){var q={ROOT:"[data-region='calendar']",DAY:"[data-region='day']",NEW_EVENT_BUTTON:"[data-action='new-event-button']",DAY_CONTENT:"[data-region='day-content']",LOADING_ICON:".loading-icon",VIEW_DAY_LINK:"[data-action='view-day-link']",CALENDAR_MONTH_WRAPPER:".calendarwrapper",TODAY:".today"},r=function(b,c,e,g){var h=null,i=g.attr("data-day-timestamp");if(e){h=e.attr("data-day-timestamp")}if(!e||h!=i){d.render("core/loading",{}).then(function(a,b){g.find(q.DAY_CONTENT).addClass("hidden");d.appendNodeContents(g,a,b);if(e){e.find(q.DAY_CONTENT).addClass("hidden");d.appendNodeContents(e,a,b)}}).then(function(){return l.updateEventStartDay(c,i)}).then(function(){a("body").trigger(m.eventMoved,[c,e,g])}).always(function(){var a=g.find(q.LOADING_ICON);g.find(q.DAY_CONTENT).removeClass("hidden");d.replaceNode(a,"","");if(e){var b=e.find(q.LOADING_ICON);e.find(q.DAY_CONTENT).removeClass("hidden");d.replaceNode(b,"","")}}).fail(f.exception)}},s=function(b,c){var d=a("body");d.on(m.created,function(){n.reloadCurrentMonth(b)});d.on(m.deleted,function(){n.reloadCurrentMonth(b)});d.on(m.updated,function(){n.reloadCurrentMonth(b)});d.on(m.editActionEvent,function(a,b){window.location.assign(b)});d.on(m.moveEvent,r);d.on(m.eventMoved,function(){n.reloadCurrentMonth(b)});o.registerEditListeners(b,c)},t=function(b){b.on("click",q.VIEW_DAY_LINK,function(c){var d=a(c.target),e=d.data("year"),g=d.data("month"),h=d.data("day"),i=d.data("courseid"),j=d.data("categoryid");n.refreshDayContent(b,e,g,h,i,j,b,"core_calendar/calendar_day").then(function(){c.preventDefault();var a="?view=day&time="+d.data("timestamp");n.updateUrl(a)}).fail(f.exception)});b.on("change",p.elements.courseSelector,function(){var c=a(this),d=c.val();n.reloadCurrentMonth(b,d,null).then(function(){return b.find(p.elements.courseSelector).val(d)}).fail(f.exception)});var c=o.registerEventFormModal(b),d=a(q.CALENDAR_MONTH_WRAPPER).data("context-id");s(b,c);if(d){b.on("click",q.DAY,function(b){var d=a(b.target);if(!d.is(q.VIEW_DAY_LINK)){var e=a(this).attr("data-new-event-timestamp");c.then(function(a){var b=d.closest(p.wrapper);a.setCourseId(b.data("courseid"));var c=b.data("categoryid");if("undefined"!=typeof c){a.setCategoryId(c)}a.setContextId(b.data("contextId"));a.setStartTime(e);a.show()}).fail(f.exception);b.preventDefault()}})}};return{init:function init(b){b=a(b);n.init(b);t(b)}}}); +define ("core_calendar/calendar",["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","core_calendar/crud","core_calendar/selectors","core/config"],function(a,b,c,d,f,g,h,i,j,k,l,m,n,o,p,q){var r={ROOT:"[data-region='calendar']",DAY:"[data-region='day']",NEW_EVENT_BUTTON:"[data-action='new-event-button']",DAY_CONTENT:"[data-region='day-content']",LOADING_ICON:".loading-icon",VIEW_DAY_LINK:"[data-action='view-day-link']",CALENDAR_MONTH_WRAPPER:".calendarwrapper",TODAY:".today"},s=function(b,c,e,g){var h=null,i=g.attr("data-day-timestamp");if(e){h=e.attr("data-day-timestamp")}if(!e||h!=i){d.render("core/loading",{}).then(function(a,b){g.find(r.DAY_CONTENT).addClass("hidden");d.appendNodeContents(g,a,b);if(e){e.find(r.DAY_CONTENT).addClass("hidden");d.appendNodeContents(e,a,b)}}).then(function(){return l.updateEventStartDay(c,i)}).then(function(){a("body").trigger(m.eventMoved,[c,e,g])}).always(function(){var a=g.find(r.LOADING_ICON);g.find(r.DAY_CONTENT).removeClass("hidden");d.replaceNode(a,"","");if(e){var b=e.find(r.LOADING_ICON);e.find(r.DAY_CONTENT).removeClass("hidden");d.replaceNode(b,"","")}}).fail(f.exception)}},t=function(b,c){var d=a("body");d.on(m.created,function(){n.reloadCurrentMonth(b)});d.on(m.deleted,function(){n.reloadCurrentMonth(b)});d.on(m.updated,function(){n.reloadCurrentMonth(b)});d.on(m.editActionEvent,function(a,b){window.location.assign(b)});d.on(m.moveEvent,s);d.on(m.eventMoved,function(){n.reloadCurrentMonth(b)});o.registerEditListeners(b,c)},u=function(b){b.on("click",r.VIEW_DAY_LINK,function(c){var d=document.getElementById(p.fullCalendarView),e=a(c.target),g=e.data("year"),h=e.data("month"),i=e.data("day"),j=e.data("courseid"),k=e.data("categoryid"),l="?view=day&time="+e.data("timestamp");if(d){n.refreshDayContent(b,g,h,i,j,k,b,"core_calendar/calendar_day").then(function(){c.preventDefault();return n.updateUrl(l)}).fail(f.exception)}else{window.location.assign(q.wwwroot+"/calendar/view.php"+l)}});b.on("change",p.elements.courseSelector,function(){var c=a(this),d=c.val();n.reloadCurrentMonth(b,d,null).then(function(){return b.find(p.elements.courseSelector).val(d)}).fail(f.exception)});var c=o.registerEventFormModal(b),d=a(r.CALENDAR_MONTH_WRAPPER).data("context-id");t(b,c);if(d){b.on("click",r.DAY,function(b){var d=a(b.target);if(!d.is(r.VIEW_DAY_LINK)){var e=a(this).attr("data-new-event-timestamp");c.then(function(a){var b=d.closest(p.wrapper);a.setCourseId(b.data("courseid"));var c=b.data("categoryid");if("undefined"!=typeof c){a.setCategoryId(c)}a.setContextId(b.data("contextId"));a.setStartTime(e);a.show()}).fail(f.exception);b.preventDefault()}})}};return{init:function init(b){b=a(b);n.init(b);u(b)}}}); //# sourceMappingURL=calendar.min.js.map diff --git a/calendar/amd/build/calendar.min.js.map b/calendar/amd/build/calendar.min.js.map index 8c32764199f..6e3bf8d7784 100644 --- a/calendar/amd/build/calendar.min.js.map +++ b/calendar/amd/build/calendar.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/calendar.js"],"names":["define","$","Ajax","Str","Templates","Notification","CustomEvents","ModalEvents","ModalFactory","ModalEventForm","SummaryModal","CalendarRepository","CalendarEvents","CalendarViewManager","CalendarCrud","CalendarSelectors","SELECTORS","ROOT","DAY","NEW_EVENT_BUTTON","DAY_CONTENT","LOADING_ICON","VIEW_DAY_LINK","CALENDAR_MONTH_WRAPPER","TODAY","handleMoveEvent","e","eventId","originElement","destinationElement","originTimestamp","destinationTimestamp","attr","render","then","html","js","find","addClass","appendNodeContents","updateEventStartDay","trigger","eventMoved","always","destinationLoadingElement","removeClass","replaceNode","originLoadingElement","fail","exception","registerCalendarEventListeners","root","eventFormModalPromise","body","on","created","reloadCurrentMonth","deleted","updated","editActionEvent","url","window","location","assign","moveEvent","registerEditListeners","registerEventListeners","dayLink","target","year","data","month","day","courseId","categoryId","refreshDayContent","preventDefault","updateUrl","elements","courseSelector","selectElement","val","eventFormPromise","registerEventFormModal","contextId","is","startTime","modal","wrapper","closest","setCourseId","setCategoryId","setContextId","setStartTime","show","init"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * This module is the highest level module for the calendar. It is\n * responsible for initialising all of the components required for\n * the calendar to run. It also coordinates the interaction between\n * components by listening for and responding to different events\n * triggered within the calendar UI.\n *\n * @module core_calendar/calendar\n * @copyright 2017 Simey Lameze \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n 'jquery',\n 'core/ajax',\n 'core/str',\n 'core/templates',\n 'core/notification',\n 'core/custom_interaction_events',\n 'core/modal_events',\n 'core/modal_factory',\n 'core_calendar/modal_event_form',\n 'core_calendar/summary_modal',\n 'core_calendar/repository',\n 'core_calendar/events',\n 'core_calendar/view_manager',\n 'core_calendar/crud',\n 'core_calendar/selectors',\n ],\n function(\n $,\n Ajax,\n Str,\n Templates,\n Notification,\n CustomEvents,\n ModalEvents,\n ModalFactory,\n ModalEventForm,\n SummaryModal,\n CalendarRepository,\n CalendarEvents,\n CalendarViewManager,\n CalendarCrud,\n CalendarSelectors\n ) {\n\n var SELECTORS = {\n ROOT: \"[data-region='calendar']\",\n DAY: \"[data-region='day']\",\n NEW_EVENT_BUTTON: \"[data-action='new-event-button']\",\n DAY_CONTENT: \"[data-region='day-content']\",\n LOADING_ICON: '.loading-icon',\n VIEW_DAY_LINK: \"[data-action='view-day-link']\",\n CALENDAR_MONTH_WRAPPER: \".calendarwrapper\",\n TODAY: '.today',\n };\n\n /**\n * Handler for the drag and drop move event. Provides a loading indicator\n * while the request is sent to the server to update the event start date.\n *\n * Triggers a eventMoved calendar javascript event if the event was successfully\n * updated.\n *\n * @param {event} e The calendar move event\n * @param {int} eventId The event id being moved\n * @param {object|null} originElement The jQuery element for where the event is moving from\n * @param {object} destinationElement The jQuery element for where the event is moving to\n */\n var handleMoveEvent = function(e, eventId, originElement, destinationElement) {\n var originTimestamp = null;\n var destinationTimestamp = destinationElement.attr('data-day-timestamp');\n\n if (originElement) {\n originTimestamp = originElement.attr('data-day-timestamp');\n }\n\n // If the event has actually changed day.\n if (!originElement || originTimestamp != destinationTimestamp) {\n Templates.render('core/loading', {})\n .then(function(html, js) {\n // First we show some loading icons in each of the days being affected.\n destinationElement.find(SELECTORS.DAY_CONTENT).addClass('hidden');\n Templates.appendNodeContents(destinationElement, html, js);\n\n if (originElement) {\n originElement.find(SELECTORS.DAY_CONTENT).addClass('hidden');\n Templates.appendNodeContents(originElement, html, js);\n }\n return;\n })\n .then(function() {\n // Send a request to the server to make the change.\n return CalendarRepository.updateEventStartDay(eventId, destinationTimestamp);\n })\n .then(function() {\n // If the update was successful then broadcast an event letting the calendar\n // know that an event has been moved.\n $('body').trigger(CalendarEvents.eventMoved, [eventId, originElement, destinationElement]);\n return;\n })\n .always(function() {\n // Always remove the loading icons regardless of whether the update\n // request was successful or not.\n var destinationLoadingElement = destinationElement.find(SELECTORS.LOADING_ICON);\n destinationElement.find(SELECTORS.DAY_CONTENT).removeClass('hidden');\n Templates.replaceNode(destinationLoadingElement, '', '');\n\n if (originElement) {\n var originLoadingElement = originElement.find(SELECTORS.LOADING_ICON);\n originElement.find(SELECTORS.DAY_CONTENT).removeClass('hidden');\n Templates.replaceNode(originLoadingElement, '', '');\n }\n return;\n })\n .fail(Notification.exception);\n }\n };\n\n /**\n * Listen to and handle any calendar events fired by the calendar UI.\n *\n * @method registerCalendarEventListeners\n * @param {object} root The calendar root element\n * @param {object} eventFormModalPromise A promise reolved with the event form modal\n */\n var registerCalendarEventListeners = function(root, eventFormModalPromise) {\n var body = $('body');\n\n body.on(CalendarEvents.created, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n body.on(CalendarEvents.deleted, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n body.on(CalendarEvents.updated, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n body.on(CalendarEvents.editActionEvent, function(e, url) {\n // Action events needs to be edit directly on the course module.\n window.location.assign(url);\n });\n // Handle the event fired by the drag and drop code.\n body.on(CalendarEvents.moveEvent, handleMoveEvent);\n // When an event is successfully moved we should updated the UI.\n body.on(CalendarEvents.eventMoved, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n\n CalendarCrud.registerEditListeners(root, eventFormModalPromise);\n };\n\n /**\n * Register event listeners for the module.\n *\n * @param {object} root The calendar root element\n */\n var registerEventListeners = function(root) {\n // Listen the click on the day link to render the day view.\n root.on('click', SELECTORS.VIEW_DAY_LINK, function(e) {\n var dayLink = $(e.target);\n var year = dayLink.data('year'),\n month = dayLink.data('month'),\n day = dayLink.data('day'),\n courseId = dayLink.data('courseid'),\n categoryId = dayLink.data('categoryid');\n CalendarViewManager.refreshDayContent(root, year, month, day, courseId, categoryId, root,\n 'core_calendar/calendar_day').then(function() {\n e.preventDefault();\n var url = '?view=day&time=' + dayLink.data('timestamp');\n CalendarViewManager.updateUrl(url);\n }).fail(Notification.exception);\n });\n\n root.on('change', CalendarSelectors.elements.courseSelector, function() {\n var selectElement = $(this);\n var courseId = selectElement.val();\n CalendarViewManager.reloadCurrentMonth(root, courseId, null)\n .then(function() {\n // We need to get the selector again because the content has changed.\n return root.find(CalendarSelectors.elements.courseSelector).val(courseId);\n })\n .fail(Notification.exception);\n });\n\n var eventFormPromise = CalendarCrud.registerEventFormModal(root),\n contextId = $(SELECTORS.CALENDAR_MONTH_WRAPPER).data('context-id');\n registerCalendarEventListeners(root, eventFormPromise);\n\n if (contextId) {\n // Bind click events to calendar days.\n root.on('click', SELECTORS.DAY, function (e) {\n\n var target = $(e.target);\n\n if (!target.is(SELECTORS.VIEW_DAY_LINK)) {\n var startTime = $(this).attr('data-new-event-timestamp');\n eventFormPromise.then(function (modal) {\n var wrapper = target.closest(CalendarSelectors.wrapper);\n modal.setCourseId(wrapper.data('courseid'));\n\n var categoryId = wrapper.data('categoryid');\n if (typeof categoryId !== 'undefined') {\n modal.setCategoryId(categoryId);\n }\n\n modal.setContextId(wrapper.data('contextId'));\n modal.setStartTime(startTime);\n modal.show();\n return;\n })\n .fail(Notification.exception);\n\n e.preventDefault();\n }\n });\n }\n };\n\n return {\n init: function(root) {\n root = $(root);\n CalendarViewManager.init(root);\n registerEventListeners(root);\n }\n };\n});\n"],"file":"calendar.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/calendar.js"],"names":["define","$","Ajax","Str","Templates","Notification","CustomEvents","ModalEvents","ModalFactory","ModalEventForm","SummaryModal","CalendarRepository","CalendarEvents","CalendarViewManager","CalendarCrud","CalendarSelectors","Config","SELECTORS","ROOT","DAY","NEW_EVENT_BUTTON","DAY_CONTENT","LOADING_ICON","VIEW_DAY_LINK","CALENDAR_MONTH_WRAPPER","TODAY","handleMoveEvent","e","eventId","originElement","destinationElement","originTimestamp","destinationTimestamp","attr","render","then","html","js","find","addClass","appendNodeContents","updateEventStartDay","trigger","eventMoved","always","destinationLoadingElement","removeClass","replaceNode","originLoadingElement","fail","exception","registerCalendarEventListeners","root","eventFormModalPromise","body","on","created","reloadCurrentMonth","deleted","updated","editActionEvent","url","window","location","assign","moveEvent","registerEditListeners","registerEventListeners","viewingFullCalendar","document","getElementById","fullCalendarView","dayLink","target","year","data","month","day","courseId","categoryId","refreshDayContent","preventDefault","updateUrl","wwwroot","elements","courseSelector","selectElement","val","eventFormPromise","registerEventFormModal","contextId","is","startTime","modal","wrapper","closest","setCourseId","setCategoryId","setContextId","setStartTime","show","init"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * This module is the highest level module for the calendar. It is\n * responsible for initialising all of the components required for\n * the calendar to run. It also coordinates the interaction between\n * components by listening for and responding to different events\n * triggered within the calendar UI.\n *\n * @module core_calendar/calendar\n * @copyright 2017 Simey Lameze \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n 'jquery',\n 'core/ajax',\n 'core/str',\n 'core/templates',\n 'core/notification',\n 'core/custom_interaction_events',\n 'core/modal_events',\n 'core/modal_factory',\n 'core_calendar/modal_event_form',\n 'core_calendar/summary_modal',\n 'core_calendar/repository',\n 'core_calendar/events',\n 'core_calendar/view_manager',\n 'core_calendar/crud',\n 'core_calendar/selectors',\n 'core/config',\n ],\n function(\n $,\n Ajax,\n Str,\n Templates,\n Notification,\n CustomEvents,\n ModalEvents,\n ModalFactory,\n ModalEventForm,\n SummaryModal,\n CalendarRepository,\n CalendarEvents,\n CalendarViewManager,\n CalendarCrud,\n CalendarSelectors,\n Config,\n ) {\n\n var SELECTORS = {\n ROOT: \"[data-region='calendar']\",\n DAY: \"[data-region='day']\",\n NEW_EVENT_BUTTON: \"[data-action='new-event-button']\",\n DAY_CONTENT: \"[data-region='day-content']\",\n LOADING_ICON: '.loading-icon',\n VIEW_DAY_LINK: \"[data-action='view-day-link']\",\n CALENDAR_MONTH_WRAPPER: \".calendarwrapper\",\n TODAY: '.today',\n };\n\n /**\n * Handler for the drag and drop move event. Provides a loading indicator\n * while the request is sent to the server to update the event start date.\n *\n * Triggers a eventMoved calendar javascript event if the event was successfully\n * updated.\n *\n * @param {event} e The calendar move event\n * @param {int} eventId The event id being moved\n * @param {object|null} originElement The jQuery element for where the event is moving from\n * @param {object} destinationElement The jQuery element for where the event is moving to\n */\n var handleMoveEvent = function(e, eventId, originElement, destinationElement) {\n var originTimestamp = null;\n var destinationTimestamp = destinationElement.attr('data-day-timestamp');\n\n if (originElement) {\n originTimestamp = originElement.attr('data-day-timestamp');\n }\n\n // If the event has actually changed day.\n if (!originElement || originTimestamp != destinationTimestamp) {\n Templates.render('core/loading', {})\n .then(function(html, js) {\n // First we show some loading icons in each of the days being affected.\n destinationElement.find(SELECTORS.DAY_CONTENT).addClass('hidden');\n Templates.appendNodeContents(destinationElement, html, js);\n\n if (originElement) {\n originElement.find(SELECTORS.DAY_CONTENT).addClass('hidden');\n Templates.appendNodeContents(originElement, html, js);\n }\n return;\n })\n .then(function() {\n // Send a request to the server to make the change.\n return CalendarRepository.updateEventStartDay(eventId, destinationTimestamp);\n })\n .then(function() {\n // If the update was successful then broadcast an event letting the calendar\n // know that an event has been moved.\n $('body').trigger(CalendarEvents.eventMoved, [eventId, originElement, destinationElement]);\n return;\n })\n .always(function() {\n // Always remove the loading icons regardless of whether the update\n // request was successful or not.\n var destinationLoadingElement = destinationElement.find(SELECTORS.LOADING_ICON);\n destinationElement.find(SELECTORS.DAY_CONTENT).removeClass('hidden');\n Templates.replaceNode(destinationLoadingElement, '', '');\n\n if (originElement) {\n var originLoadingElement = originElement.find(SELECTORS.LOADING_ICON);\n originElement.find(SELECTORS.DAY_CONTENT).removeClass('hidden');\n Templates.replaceNode(originLoadingElement, '', '');\n }\n return;\n })\n .fail(Notification.exception);\n }\n };\n\n /**\n * Listen to and handle any calendar events fired by the calendar UI.\n *\n * @method registerCalendarEventListeners\n * @param {object} root The calendar root element\n * @param {object} eventFormModalPromise A promise reolved with the event form modal\n */\n var registerCalendarEventListeners = function(root, eventFormModalPromise) {\n var body = $('body');\n\n body.on(CalendarEvents.created, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n body.on(CalendarEvents.deleted, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n body.on(CalendarEvents.updated, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n body.on(CalendarEvents.editActionEvent, function(e, url) {\n // Action events needs to be edit directly on the course module.\n window.location.assign(url);\n });\n // Handle the event fired by the drag and drop code.\n body.on(CalendarEvents.moveEvent, handleMoveEvent);\n // When an event is successfully moved we should updated the UI.\n body.on(CalendarEvents.eventMoved, function() {\n CalendarViewManager.reloadCurrentMonth(root);\n });\n\n CalendarCrud.registerEditListeners(root, eventFormModalPromise);\n };\n\n /**\n * Register event listeners for the module.\n *\n * @param {object} root The calendar root element\n */\n var registerEventListeners = function(root) {\n // Listen the click on the day link to render the day view.\n root.on('click', SELECTORS.VIEW_DAY_LINK, function(e) {\n const viewingFullCalendar = document.getElementById(CalendarSelectors.fullCalendarView);\n var dayLink = $(e.target);\n var year = dayLink.data('year'),\n month = dayLink.data('month'),\n day = dayLink.data('day'),\n courseId = dayLink.data('courseid'),\n categoryId = dayLink.data('categoryid');\n const url = '?view=day&time=' + dayLink.data('timestamp');\n if (viewingFullCalendar) {\n CalendarViewManager.refreshDayContent(root, year, month, day, courseId, categoryId, root,\n 'core_calendar/calendar_day').then(function() {\n e.preventDefault();\n return CalendarViewManager.updateUrl(url);\n }).fail(Notification.exception);\n } else {\n window.location.assign(Config.wwwroot + '/calendar/view.php' + url);\n }\n });\n\n root.on('change', CalendarSelectors.elements.courseSelector, function() {\n var selectElement = $(this);\n var courseId = selectElement.val();\n CalendarViewManager.reloadCurrentMonth(root, courseId, null)\n .then(function() {\n // We need to get the selector again because the content has changed.\n return root.find(CalendarSelectors.elements.courseSelector).val(courseId);\n })\n .fail(Notification.exception);\n });\n\n var eventFormPromise = CalendarCrud.registerEventFormModal(root),\n contextId = $(SELECTORS.CALENDAR_MONTH_WRAPPER).data('context-id');\n registerCalendarEventListeners(root, eventFormPromise);\n\n if (contextId) {\n // Bind click events to calendar days.\n root.on('click', SELECTORS.DAY, function (e) {\n\n var target = $(e.target);\n\n if (!target.is(SELECTORS.VIEW_DAY_LINK)) {\n var startTime = $(this).attr('data-new-event-timestamp');\n eventFormPromise.then(function (modal) {\n var wrapper = target.closest(CalendarSelectors.wrapper);\n modal.setCourseId(wrapper.data('courseid'));\n\n var categoryId = wrapper.data('categoryid');\n if (typeof categoryId !== 'undefined') {\n modal.setCategoryId(categoryId);\n }\n\n modal.setContextId(wrapper.data('contextId'));\n modal.setStartTime(startTime);\n modal.show();\n return;\n })\n .fail(Notification.exception);\n\n e.preventDefault();\n }\n });\n }\n };\n\n return {\n init: function(root) {\n root = $(root);\n CalendarViewManager.init(root);\n registerEventListeners(root);\n }\n };\n});\n"],"file":"calendar.min.js"} \ No newline at end of file diff --git a/calendar/amd/src/calendar.js b/calendar/amd/src/calendar.js index f2b7b9e612d..19a8bd0897f 100644 --- a/calendar/amd/src/calendar.js +++ b/calendar/amd/src/calendar.js @@ -40,6 +40,7 @@ define([ 'core_calendar/view_manager', 'core_calendar/crud', 'core_calendar/selectors', + 'core/config', ], function( $, @@ -56,7 +57,8 @@ define([ CalendarEvents, CalendarViewManager, CalendarCrud, - CalendarSelectors + CalendarSelectors, + Config, ) { var SELECTORS = { @@ -173,18 +175,23 @@ define([ var registerEventListeners = function(root) { // Listen the click on the day link to render the day view. root.on('click', SELECTORS.VIEW_DAY_LINK, function(e) { + const viewingFullCalendar = document.getElementById(CalendarSelectors.fullCalendarView); var dayLink = $(e.target); var year = dayLink.data('year'), month = dayLink.data('month'), day = dayLink.data('day'), courseId = dayLink.data('courseid'), categoryId = dayLink.data('categoryid'); - CalendarViewManager.refreshDayContent(root, year, month, day, courseId, categoryId, root, + const url = '?view=day&time=' + dayLink.data('timestamp'); + if (viewingFullCalendar) { + CalendarViewManager.refreshDayContent(root, year, month, day, courseId, categoryId, root, 'core_calendar/calendar_day').then(function() { - e.preventDefault(); - var url = '?view=day&time=' + dayLink.data('timestamp'); - CalendarViewManager.updateUrl(url); - }).fail(Notification.exception); + e.preventDefault(); + return CalendarViewManager.updateUrl(url); + }).fail(Notification.exception); + } else { + window.location.assign(Config.wwwroot + '/calendar/view.php' + url); + } }); root.on('change', CalendarSelectors.elements.courseSelector, function() {