Merge branch 'MDL-72237-master' of https://github.com/dcai/moodle

This commit is contained in:
Ilya Tregubov 2021-12-06 14:22:12 +02:00
commit 7548cbfcf6
18 changed files with 219 additions and 75 deletions

View File

@ -1,2 +1,2 @@
define ("core_calendar/calendar_view",["jquery","core/str","core/notification","core_calendar/selectors","core_calendar/events","core_calendar/view_manager","core_calendar/repository","core/modal_factory","core_calendar/modal_event_form","core/modal_events","core_calendar/crud"],function(a,b,c,d,e,f,g,h,i,j,k){var l=function(b,g){var h=a("body");k.registerRemove(b);var i="reloadCurrent"+g.charAt(0).toUpperCase()+g.slice(1);h.on(e.created,function(){f[i](b)});h.on(e.deleted,function(){f[i](b)});h.on(e.updated,function(){f[i](b)});b.on("change",d.courseSelector,function(){var e=a(this),g=e.val();f[i](b,g,null).then(function(){return b.find(d.courseSelector).val(g)}).then(function(){f.updateUrl("?view=upcoming&course="+g)}).fail(c.exception)});h.on(e.filterChanged,function(a,c){var e=b.find(d.eventType[c.type]);if(!0==c.hidden){e.addClass("hidden")}else{e.removeClass("hidden")}});var j=k.registerEventFormModal(b);k.registerEditListeners(b,j)};return{init:function init(b,c){b=a(b);f.init(b,c);l(b,c)}}});
define ("core_calendar/calendar_view",["jquery","core/str","core/notification","core_calendar/selectors","core_calendar/events","core_calendar/view_manager","core_calendar/repository","core/modal_factory","core_calendar/modal_event_form","core/modal_events","core_calendar/crud"],function(a,b,c,d,e,f,g,h,i,j,k){var l=function(b,g){var h=a("body");k.registerRemove(b);var i="reloadCurrent"+g.charAt(0).toUpperCase()+g.slice(1);h.on(e.created,function(){f[i](b)});h.on(e.deleted,function(){f[i](b)});h.on(e.updated,function(){f[i](b)});b.on("change",d.courseSelector,function(){var e=a(this),g=e.val();f[i](b,g,null).then(function(){return b.find(d.courseSelector).val(g)}).then(function(){f.updateUrl("?view=upcoming&course="+g)}).fail(c.exception)});h.on(e.filterChanged,function(a,c){var e=b.find(d.eventType[c.type]);if(!0==c.hidden){e.addClass("hidden")}else{e.removeClass("hidden")}f.foldDayEvents(b)});var j=k.registerEventFormModal(b);k.registerEditListeners(b,j)};return{init:function init(b,c){b=a(b);f.init(b,c);l(b,c)}}});
//# sourceMappingURL=calendar_view.min.js.map

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
define ("core_calendar/events",[],function(){return{created:"calendar-events:created",deleted:"calendar-events:deleted",deleteAll:"calendar-events:delete_all",updated:"calendar-events:updated",editEvent:"calendar-events:edit_event",editActionEvent:"calendar-events:edit_action_event",eventMoved:"calendar-events:event_moved",dayChanged:"calendar-events:day_changed",monthChanged:"calendar-events:month_changed",moveEvent:"calendar-events:move_event",filterChanged:"calendar-events:filter_changed",viewUpdated:"calendar-events:view_updated"}});
define ("core_calendar/events",[],function(){return{created:"calendar-events:created",deleted:"calendar-events:deleted",deleteAll:"calendar-events:delete_all",updated:"calendar-events:updated",editEvent:"calendar-events:edit_event",editActionEvent:"calendar-events:edit_action_event",eventMoved:"calendar-events:event_moved",dayChanged:"calendar-events:day_changed",monthChanged:"calendar-events:month_changed",moveEvent:"calendar-events:move_event",filterChanged:"calendar-events:filter_changed",courseChanged:"calendar-events:course_changed",viewUpdated:"calendar-events:view_updated"}});
//# sourceMappingURL=events.min.js.map

View File

@ -1 +1 @@
{"version":3,"sources":["../src/events.js"],"names":["define","created","deleted","deleteAll","updated","editEvent","editActionEvent","eventMoved","dayChanged","monthChanged","moveEvent","filterChanged","viewUpdated"],"mappings":"AAsBAA,OAAM,wBAAC,EAAD,CAAK,UAAW,CAClB,MAAO,CACHC,OAAO,CAAE,yBADN,CAEHC,OAAO,CAAE,yBAFN,CAGHC,SAAS,CAAE,4BAHR,CAIHC,OAAO,CAAE,yBAJN,CAKHC,SAAS,CAAE,4BALR,CAMHC,eAAe,CAAE,mCANd,CAOHC,UAAU,CAAE,6BAPT,CAQHC,UAAU,CAAE,6BART,CASHC,YAAY,CAAE,+BATX,CAUHC,SAAS,CAAE,4BAVR,CAWHC,aAAa,CAAE,gCAXZ,CAYHC,WAAW,CAAE,8BAZV,CAcV,CAfK,CAAN","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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events the calendar component can fire.\n *\n * @module core_calendar/events\n * @copyright 2017 Simey Lameze <simey@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([], function() {\n return {\n created: 'calendar-events:created',\n deleted: 'calendar-events:deleted',\n deleteAll: 'calendar-events:delete_all',\n updated: 'calendar-events:updated',\n editEvent: 'calendar-events:edit_event',\n editActionEvent: 'calendar-events:edit_action_event',\n eventMoved: 'calendar-events:event_moved',\n dayChanged: 'calendar-events:day_changed',\n monthChanged: 'calendar-events:month_changed',\n moveEvent: 'calendar-events:move_event',\n filterChanged: 'calendar-events:filter_changed',\n viewUpdated: 'calendar-events:view_updated',\n };\n});\n"],"file":"events.min.js"}
{"version":3,"sources":["../src/events.js"],"names":["define","created","deleted","deleteAll","updated","editEvent","editActionEvent","eventMoved","dayChanged","monthChanged","moveEvent","filterChanged","courseChanged","viewUpdated"],"mappings":"AAsBAA,OAAM,wBAAC,EAAD,CAAK,UAAW,CAClB,MAAO,CACHC,OAAO,CAAE,yBADN,CAEHC,OAAO,CAAE,yBAFN,CAGHC,SAAS,CAAE,4BAHR,CAIHC,OAAO,CAAE,yBAJN,CAKHC,SAAS,CAAE,4BALR,CAMHC,eAAe,CAAE,mCANd,CAOHC,UAAU,CAAE,6BAPT,CAQHC,UAAU,CAAE,6BART,CASHC,YAAY,CAAE,+BATX,CAUHC,SAAS,CAAE,4BAVR,CAWHC,aAAa,CAAE,gCAXZ,CAYHC,aAAa,CAAE,gCAZZ,CAaHC,WAAW,CAAE,8BAbV,CAeV,CAhBK,CAAN","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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events the calendar component can fire.\n *\n * @module core_calendar/events\n * @copyright 2017 Simey Lameze <simey@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([], function() {\n return {\n created: 'calendar-events:created',\n deleted: 'calendar-events:deleted',\n deleteAll: 'calendar-events:delete_all',\n updated: 'calendar-events:updated',\n editEvent: 'calendar-events:edit_event',\n editActionEvent: 'calendar-events:edit_action_event',\n eventMoved: 'calendar-events:event_moved',\n dayChanged: 'calendar-events:day_changed',\n monthChanged: 'calendar-events:month_changed',\n moveEvent: 'calendar-events:move_event',\n filterChanged: 'calendar-events:filter_changed',\n courseChanged: 'calendar-events:course_changed',\n viewUpdated: 'calendar-events:view_updated',\n };\n});\n"],"file":"events.min.js"}

View File

@ -1,2 +1,2 @@
define ("core_calendar/selectors",[],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]",other:"[data-eventtype-other]"},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]",other:"[data-popover-eventtype-other]"},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\"]",deleteSubscription:"[data-action=\"delete-subscription\"]"},elements:{courseSelector:"select[name=\"course\"]",dateContainer:".clickable.hasevent",dateContent:"[data-region=\"day-content\"]"},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\"]"},fullCalendarView:"page-calendar-view"}});
define ("core_calendar/selectors",[],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]",other:"[data-eventtype-other]"},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]",other:"[data-popover-eventtype-other]"},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\"]",deleteSubscription:"[data-action=\"delete-subscription\"]"},elements:{courseSelector:"select[name=\"course\"]",dateContainer:".clickable.hasevent",dateContent:"[data-region=\"day-content\"]",monthDetailed:".calendarmonth.calendartable"},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\"]"},mainCalendar:".maincalendar .heightcontainer",fullCalendarView:"page-calendar-view"}});
//# sourceMappingURL=selectors.min.js.map

View File

@ -1 +1 @@
{"version":3,"sources":["../src/selectors.js"],"names":["define","eventFilterItem","eventType","site","category","course","group","user","other","popoverType","calendarPeriods","month","courseSelector","viewSelector","actions","create","edit","remove","viewEvent","deleteSubscription","elements","dateContainer","dateContent","today","day","calendarMain","wrapper","eventItem","links","navLink","eventLink","miniDayLink","containers","loadingIcon","fullCalendarView"],"mappings":"AAsBAA,OAAM,2BAAC,EAAD,CAAK,UAAW,CAClB,MAAO,CACHC,eAAe,CAAE,mCADd,CAEHC,SAAS,CAAE,CACPC,IAAI,CAAE,uBADC,CAEPC,QAAQ,CAAE,2BAFH,CAGPC,MAAM,CAAE,yBAHD,CAIPC,KAAK,CAAE,wBAJA,CAKPC,IAAI,CAAE,uBALC,CAMPC,KAAK,CAAE,wBANA,CAFR,CAUHC,WAAW,CAAE,CACTN,IAAI,CAAE,+BADG,CAETC,QAAQ,CAAE,mCAFD,CAGTC,MAAM,CAAE,iCAHC,CAITC,KAAK,CAAE,gCAJE,CAKTC,IAAI,CAAE,+BALG,CAMTC,KAAK,CAAE,gCANE,CAVV,CAkBHE,eAAe,CAAE,CACbC,KAAK,CAAE,uBADM,CAlBd,CAqBHC,cAAc,CAAE,yBArBb,CAsBHC,YAAY,CAAE,oCAtBX,CAuBHC,OAAO,CAAE,CACLC,MAAM,CAAE,oCADH,CAELC,IAAI,CAAE,wBAFD,CAGLC,MAAM,CAAE,0BAHH,CAILC,SAAS,CAAE,8BAJN,CAKLC,kBAAkB,CAAE,uCALf,CAvBN,CA8BHC,QAAQ,CAAE,CACNR,cAAc,CAAE,yBADV,CAENS,aAAa,CAAE,qBAFT,CAGNC,WAAW,CAAE,+BAHP,CA9BP,CAmCHC,KAAK,CAAE,QAnCJ,CAoCHC,GAAG,CAAE,uBApCF,CAqCHC,YAAY,CAAE,4BArCX,CAsCHC,OAAO,CAAE,kBAtCN,CAuCHC,SAAS,CAAE,uBAvCR,CAwCHC,KAAK,CAAE,CACHC,OAAO,CAAE,8BADN,CAEHC,SAAS,CAAE,4BAFR,CAGHC,WAAW,CAAE,+BAHV,CAxCJ,CA6CHC,UAAU,CAAE,CACRC,WAAW,CAAE,0CADL,CA7CT,CAgDHC,gBAAgB,CAAE,oBAhDf,CAkDV,CAnDK,CAAN","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 <http://www.gnu.org/licenses/>.\n\n/**\n * This module is responsible for the calendar filter.\n *\n * @module core_calendar/calendar_selectors\n * @copyright 2017 Andrew Nicols <andrew@nicols.co.uk>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([], function() {\n return {\n eventFilterItem: \"[data-action='filter-event-type']\",\n eventType: {\n site: \"[data-eventtype-site]\",\n category: \"[data-eventtype-category]\",\n course: \"[data-eventtype-course]\",\n group: \"[data-eventtype-group]\",\n user: \"[data-eventtype-user]\",\n other: \"[data-eventtype-other]\",\n },\n popoverType: {\n site: \"[data-popover-eventtype-site]\",\n category: \"[data-popover-eventtype-category]\",\n course: \"[data-popover-eventtype-course]\",\n group: \"[data-popover-eventtype-group]\",\n user: \"[data-popover-eventtype-user]\",\n other: \"[data-popover-eventtype-other]\",\n },\n calendarPeriods: {\n month: \"[data-period='month']\",\n },\n courseSelector: 'select[name=\"course\"]',\n viewSelector: 'div[data-region=\"view-selector\"]',\n actions: {\n create: '[data-action=\"new-event-button\"]',\n edit: '[data-action=\"edit\"]',\n remove: '[data-action=\"delete\"]',\n viewEvent: '[data-action=\"view-event\"]',\n deleteSubscription: '[data-action=\"delete-subscription\"]',\n },\n elements: {\n courseSelector: 'select[name=\"course\"]',\n dateContainer: '.clickable.hasevent',\n dateContent: '[data-region=\"day-content\"]',\n },\n today: '.today',\n day: '[data-region=\"day\"]',\n calendarMain: '[data-region=\"calendar\"]',\n wrapper: '.calendarwrapper',\n eventItem: '[data-type=\"event\"]',\n links: {\n navLink: '.calendarwrapper .arrow_link',\n eventLink: \"[data-region='event-item']\",\n miniDayLink: \"[data-region='mini-day-link']\",\n },\n containers: {\n loadingIcon: '[data-region=\"overlay-icon-container\"]',\n },\n fullCalendarView: 'page-calendar-view',\n };\n});\n"],"file":"selectors.min.js"}
{"version":3,"sources":["../src/selectors.js"],"names":["define","eventFilterItem","eventType","site","category","course","group","user","other","popoverType","calendarPeriods","month","courseSelector","viewSelector","actions","create","edit","remove","viewEvent","deleteSubscription","elements","dateContainer","dateContent","monthDetailed","today","day","calendarMain","wrapper","eventItem","links","navLink","eventLink","miniDayLink","containers","loadingIcon","mainCalendar","fullCalendarView"],"mappings":"AAsBAA,OAAM,2BAAC,EAAD,CAAK,UAAW,CAClB,MAAO,CACHC,eAAe,CAAE,mCADd,CAEHC,SAAS,CAAE,CACPC,IAAI,CAAE,uBADC,CAEPC,QAAQ,CAAE,2BAFH,CAGPC,MAAM,CAAE,yBAHD,CAIPC,KAAK,CAAE,wBAJA,CAKPC,IAAI,CAAE,uBALC,CAMPC,KAAK,CAAE,wBANA,CAFR,CAUHC,WAAW,CAAE,CACTN,IAAI,CAAE,+BADG,CAETC,QAAQ,CAAE,mCAFD,CAGTC,MAAM,CAAE,iCAHC,CAITC,KAAK,CAAE,gCAJE,CAKTC,IAAI,CAAE,+BALG,CAMTC,KAAK,CAAE,gCANE,CAVV,CAkBHE,eAAe,CAAE,CACbC,KAAK,CAAE,uBADM,CAlBd,CAqBHC,cAAc,CAAE,yBArBb,CAsBHC,YAAY,CAAE,oCAtBX,CAuBHC,OAAO,CAAE,CACLC,MAAM,CAAE,oCADH,CAELC,IAAI,CAAE,wBAFD,CAGLC,MAAM,CAAE,0BAHH,CAILC,SAAS,CAAE,8BAJN,CAKLC,kBAAkB,CAAE,uCALf,CAvBN,CA8BHC,QAAQ,CAAE,CACNR,cAAc,CAAE,yBADV,CAENS,aAAa,CAAE,qBAFT,CAGNC,WAAW,CAAE,+BAHP,CAINC,aAAa,CAAE,8BAJT,CA9BP,CAoCHC,KAAK,CAAE,QApCJ,CAqCHC,GAAG,CAAE,uBArCF,CAsCHC,YAAY,CAAE,4BAtCX,CAuCHC,OAAO,CAAE,kBAvCN,CAwCHC,SAAS,CAAE,uBAxCR,CAyCHC,KAAK,CAAE,CACHC,OAAO,CAAE,8BADN,CAEHC,SAAS,CAAE,4BAFR,CAGHC,WAAW,CAAE,+BAHV,CAzCJ,CA8CHC,UAAU,CAAE,CACRC,WAAW,CAAE,0CADL,CA9CT,CAiDHC,YAAY,CAAE,gCAjDX,CAkDHC,gBAAgB,CAAE,oBAlDf,CAoDV,CArDK,CAAN","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 <http://www.gnu.org/licenses/>.\n\n/**\n * This module is responsible for the calendar filter.\n *\n * @module core_calendar/calendar_selectors\n * @copyright 2017 Andrew Nicols <andrew@nicols.co.uk>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([], function() {\n return {\n eventFilterItem: \"[data-action='filter-event-type']\",\n eventType: {\n site: \"[data-eventtype-site]\",\n category: \"[data-eventtype-category]\",\n course: \"[data-eventtype-course]\",\n group: \"[data-eventtype-group]\",\n user: \"[data-eventtype-user]\",\n other: \"[data-eventtype-other]\",\n },\n popoverType: {\n site: \"[data-popover-eventtype-site]\",\n category: \"[data-popover-eventtype-category]\",\n course: \"[data-popover-eventtype-course]\",\n group: \"[data-popover-eventtype-group]\",\n user: \"[data-popover-eventtype-user]\",\n other: \"[data-popover-eventtype-other]\",\n },\n calendarPeriods: {\n month: \"[data-period='month']\",\n },\n courseSelector: 'select[name=\"course\"]',\n viewSelector: 'div[data-region=\"view-selector\"]',\n actions: {\n create: '[data-action=\"new-event-button\"]',\n edit: '[data-action=\"edit\"]',\n remove: '[data-action=\"delete\"]',\n viewEvent: '[data-action=\"view-event\"]',\n deleteSubscription: '[data-action=\"delete-subscription\"]',\n },\n elements: {\n courseSelector: 'select[name=\"course\"]',\n dateContainer: '.clickable.hasevent',\n dateContent: '[data-region=\"day-content\"]',\n monthDetailed: '.calendarmonth.calendartable',\n },\n today: '.today',\n day: '[data-region=\"day\"]',\n calendarMain: '[data-region=\"calendar\"]',\n wrapper: '.calendarwrapper',\n eventItem: '[data-type=\"event\"]',\n links: {\n navLink: '.calendarwrapper .arrow_link',\n eventLink: \"[data-region='event-item']\",\n miniDayLink: \"[data-region='mini-day-link']\",\n },\n containers: {\n loadingIcon: '[data-region=\"overlay-icon-container\"]',\n },\n mainCalendar: '.maincalendar .heightcontainer',\n fullCalendarView: 'page-calendar-view',\n };\n});\n"],"file":"selectors.min.js"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -85,6 +85,7 @@ define([
} else {
daysWithEvent.removeClass('hidden');
}
CalendarViewManager.foldDayEvents(root);
});
var eventFormPromise = CalendarCrud.registerEventFormModal(root);

View File

@ -33,6 +33,7 @@ define([], function() {
monthChanged: 'calendar-events:month_changed',
moveEvent: 'calendar-events:move_event',
filterChanged: 'calendar-events:filter_changed',
courseChanged: 'calendar-events:course_changed',
viewUpdated: 'calendar-events:view_updated',
};
});

View File

@ -55,6 +55,7 @@ define([], function() {
courseSelector: 'select[name="course"]',
dateContainer: '.clickable.hasevent',
dateContent: '[data-region="day-content"]',
monthDetailed: '.calendarmonth.calendartable',
},
today: '.today',
day: '[data-region="day"]',
@ -69,6 +70,7 @@ define([], function() {
containers: {
loadingIcon: '[data-region="overlay-icon-container"]',
},
mainCalendar: '.maincalendar .heightcontainer',
fullCalendarView: 'page-calendar-view',
};
});

View File

@ -31,7 +31,114 @@ import ModalFactory from 'core/modal_factory';
import ModalEvents from 'core/modal_events';
import SummaryModal from 'core_calendar/summary_modal';
import CustomEvents from 'core/custom_interaction_events';
import {get_string as getString} from 'core/str';
import Pending from 'core/pending';
import {prefetchStrings} from 'core/prefetch';
/**
* Limit number of events per day
*
*/
const LIMIT_DAY_EVENTS = 5;
/**
* Hide day events if more than 5.
*
*/
export const foldDayEvents = () => {
const root = $(CalendarSelectors.elements.monthDetailed);
const days = root.find(CalendarSelectors.day);
if (days.length === 0) {
return;
}
days.each(function() {
const dayContainer = $(this);
const eventsSelector = `${CalendarSelectors.elements.dateContent} ul li[data-event-eventtype]`;
const filteredEventsSelector = `${CalendarSelectors.elements.dateContent} ul li[data-event-filtered="true"]`;
const moreEventsSelector = `${CalendarSelectors.elements.dateContent} [data-action="view-more-events"]`;
const events = dayContainer.find(eventsSelector);
if (events.length === 0) {
return;
}
const filteredEvents = dayContainer.find(filteredEventsSelector);
const numberOfFiltered = filteredEvents.length;
const numberOfEvents = events.length - numberOfFiltered;
let count = 1;
events.each(function() {
const event = $(this);
const isNotFiltered = event.attr('data-event-filtered') !== 'true';
const offset = (numberOfEvents === LIMIT_DAY_EVENTS) ? 0 : 1;
if (isNotFiltered) {
if (count > LIMIT_DAY_EVENTS - offset) {
event.attr('data-event-folded', 'true');
event.hide();
} else {
event.attr('data-event-folded', 'false');
event.show();
count++;
}
} else {
// It's being filtered out.
event.attr('data-event-folded', 'false');
}
});
const moreEventsLink = dayContainer.find(moreEventsSelector);
if (numberOfEvents > LIMIT_DAY_EVENTS) {
const numberOfHiddenEvents = numberOfEvents - LIMIT_DAY_EVENTS + 1;
moreEventsLink.show();
getString('moreevents', 'calendar', numberOfHiddenEvents).then(str => {
const link = moreEventsLink.find('strong a');
moreEventsLink.attr('data-event-folded', 'false');
link.text(str);
return str;
}).fail();
} else {
moreEventsLink.hide();
}
});
};
/**
* Register and handle month calendar events.
*
* @param {string} pendingId pending id.
*/
export const registerEventListenersForMonthDetailed = (pendingId) => {
const events = `${CalendarEvents.viewUpdated}`;
$('body').on(events, function(e) {
foldDayEvents(e);
});
foldDayEvents();
$('body').on(CalendarEvents.filterChanged, function(e, data) {
const root = $(CalendarSelectors.elements.monthDetailed);
const pending = new Pending(pendingId);
const target = root.find(CalendarSelectors.eventType[data.type]);
const transitionPromise = $.Deferred();
if (data.hidden) {
transitionPromise.then(function() {
target.attr('data-event-filtered', 'true');
return target.hide().promise();
}).fail();
} else {
transitionPromise.then(function() {
target.attr('data-event-filtered', 'false');
return target.show().promise();
}).fail();
}
transitionPromise.then(function() {
foldDayEvents();
return;
})
.always(pending.resolve)
.fail();
transitionPromise.resolve();
});
};
/**
* Register event listeners for the module.
@ -213,7 +320,11 @@ export const reloadCurrentMonth = (root, courseId = 0, categoryId = 0) => {
courseId = courseId || root.find(CalendarSelectors.wrapper).data('courseid');
categoryId = categoryId || root.find(CalendarSelectors.wrapper).data('categoryid');
return refreshMonthContent(root, year, month, courseId, categoryId, null, '', day);
return refreshMonthContent(root, year, month, courseId, categoryId, null, '', day).
then((...args) => {
$('body').trigger(CalendarEvents.courseChanged, [year, month, courseId, categoryId]);
return args;
});
};
@ -449,5 +560,12 @@ const renderEventSummaryModal = (eventId) => {
};
export const init = (root, view) => {
prefetchStrings('calendar', ['moreevents']);
foldDayEvents();
registerEventListeners(root, view);
const calendarTable = root.find(CalendarSelectors.elements.monthDetailed);
if (calendarTable.length) {
const pendingId = `month-detailed-${calendarTable.id}-filterChanged`;
registerEventListenersForMonthDetailed(calendarTable, pendingId);
}
};

View File

@ -95,6 +95,7 @@
<li data-region="event-item"
data-event-component="{{component}}"
data-event-eventtype="{{eventtype}}"
data-event-folded="false"
data-eventtype-{{normalisedeventtype}}="1"
{{#draggable}}
draggable="true"
@ -122,6 +123,16 @@
</li>
{{/underway}}
{{/events}}
<li data-action="view-more-events" style="display: none">
<strong>
<a data-action="view-day-link" href="#" class="aalink day" aria-label="{{viewdaylinktitle}}"
data-year="{{date.year}}" data-month="{{date.mon}}" data-day="{{mday}}"
data-courseid="{{courseid}}" data-categoryid="{{categoryid}}"
data-timestamp="{{timestamp}}">
{{#str}} moreevents, calendar, {{hasmoreevents}} {{/str}}
</a>
</strong>
</li>
</ul>
<div class="hidden">
{{#events}}
@ -159,42 +170,12 @@
{{#js}}
require([
'jquery',
'core_calendar/month_view_drag_drop',
'core_calendar/selectors',
'core_calendar/events',
'core_calendar/month_view_drag_drop'
], function(
$,
DragDrop,
CalendarSelectors,
CalendarEvents
DragDrop
) {
var root = $('#month-detailed-{{uniqid}}-{{calendarinstanceid}}');
DragDrop.init(root);
$('body').on(CalendarEvents.filterChanged, function(e, data) {
M.util.js_pending("month-detailed-{{uniqid}}-filterChanged");
// A filter value has been changed.
// Find all matching cells in the popover data, and hide them.
var target = root.find(CalendarSelectors.eventType[data.type]);
var transitionPromise = $.Deferred();
if (data.hidden) {
transitionPromise.then(function() {
return target.slideUp('fast').promise();
});
} else {
transitionPromise.then(function() {
return target.slideDown('fast').promise();
});
}
transitionPromise.then(function() {
M.util.js_complete("month-detailed-{{uniqid}}-filterChanged");
return;
});
transitionPromise.resolve();
});
});
{{/js}}

View File

@ -147,7 +147,7 @@ $calendar->add_sidecalendar_blocks($renderer, true, $view);
echo $OUTPUT->header();
echo $renderer->start_layout();
echo html_writer::start_tag('div', array('class'=>'heightcontainer'));
echo html_writer::start_tag('div', ['class' => 'heightcontainer', 'data-calendar-type' => 'main-block']);

View File

@ -187,6 +187,7 @@ $string['monthnext'] = 'Next month';
$string['monthprev'] = 'Previous month';
$string['monththis'] = 'This month';
$string['more'] = 'More';
$string['moreevents'] = '{$a} more';
$string['namewithsource'] = '{$a->name} ({$a->source})';
$string['never'] = 'Never';
$string['newevent'] = 'New event';

View File

@ -129,6 +129,20 @@ $calendarCurrentDateBackground: $primary;
}
}
#region-main {
.maincalendar {
.calendarwrapper {
td {
& > div {
height: 11.5em;
overflow: hidden;
}
}
}
}
}
.maincalendar {
vertical-align: top;
padding: 0;
@ -154,8 +168,13 @@ $calendarCurrentDateBackground: $primary;
margin: 0;
padding: 0;
li[data-event-folded="true"] {
display: none;
}
li {
list-style-type: none;
line-height: 1.2em;
> a {
@include text-truncate;
@ -171,6 +190,10 @@ $calendarCurrentDateBackground: $primary;
}
}
a[data-action="view-day-link"] {
@include text-truncate;
}
.icon {
margin-left: 0.25em;
margin-right: 0.25em;
@ -222,7 +245,6 @@ $calendarCurrentDateBackground: $primary;
}
td {
height: 5em;
.day-number-circle {
display: inline-block;

View File

@ -13205,6 +13205,10 @@ body.dragging .dragging {
border-spacing: 2px;
width: 100%; }
#region-main .maincalendar .calendarwrapper td > div {
height: 11.5em;
overflow: hidden; }
.maincalendar {
vertical-align: top;
padding: 0; }
@ -13226,8 +13230,11 @@ body.dragging .dragging {
.maincalendar .calendarmonth ul {
margin: 0;
padding: 0; }
.maincalendar .calendarmonth ul li[data-event-folded="true"] {
display: none; }
.maincalendar .calendarmonth ul li {
list-style-type: none; }
list-style-type: none;
line-height: 1.2em; }
.maincalendar .calendarmonth ul li > a {
overflow: hidden;
text-overflow: ellipsis;
@ -13238,6 +13245,10 @@ body.dragging .dragging {
text-decoration: none; }
.maincalendar .calendarmonth ul li > a:hover .eventname {
text-decoration: underline; }
.maincalendar .calendarmonth ul li a[data-action="view-day-link"] {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; }
.maincalendar .calendarmonth ul li .icon {
margin-left: 0.25em;
margin-right: 0.25em;
@ -13269,22 +13280,20 @@ body.dragging .dragging {
.maincalendar .calendarmonth th {
text-align: left;
padding-left: 16px; }
.maincalendar .calendarmonth td {
height: 5em; }
.maincalendar .calendarmonth td .day-number-circle {
.maincalendar .calendarmonth td .day-number-circle {
display: inline-block;
line-height: 0;
width: 30px;
height: 30px; }
.maincalendar .calendarmonth td .day-number-circle .day-number {
display: inline-block;
line-height: 0;
width: 30px;
height: 30px; }
.maincalendar .calendarmonth td .day-number-circle .day-number {
display: inline-block;
padding: 50% 4px;
width: 100%;
text-align: center; }
.maincalendar .calendarmonth td.today .day-number-circle {
border-radius: 50%;
color: #fff;
background-color: #0f6cbf; }
padding: 50% 4px;
width: 100%;
text-align: center; }
.maincalendar .calendarmonth td.today .day-number-circle {
border-radius: 50%;
color: #fff;
background-color: #0f6cbf; }
.maincalendar .calendarmonth .clickable:hover {
background-color: #ededed; }
.maincalendar .controls {

View File

@ -13205,6 +13205,10 @@ body.dragging .dragging {
border-spacing: 2px;
width: 100%; }
#region-main .maincalendar .calendarwrapper td > div {
height: 11.5em;
overflow: hidden; }
.maincalendar {
vertical-align: top;
padding: 0; }
@ -13226,8 +13230,11 @@ body.dragging .dragging {
.maincalendar .calendarmonth ul {
margin: 0;
padding: 0; }
.maincalendar .calendarmonth ul li[data-event-folded="true"] {
display: none; }
.maincalendar .calendarmonth ul li {
list-style-type: none; }
list-style-type: none;
line-height: 1.2em; }
.maincalendar .calendarmonth ul li > a {
overflow: hidden;
text-overflow: ellipsis;
@ -13238,6 +13245,10 @@ body.dragging .dragging {
text-decoration: none; }
.maincalendar .calendarmonth ul li > a:hover .eventname {
text-decoration: underline; }
.maincalendar .calendarmonth ul li a[data-action="view-day-link"] {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; }
.maincalendar .calendarmonth ul li .icon {
margin-left: 0.25em;
margin-right: 0.25em;
@ -13269,22 +13280,20 @@ body.dragging .dragging {
.maincalendar .calendarmonth th {
text-align: left;
padding-left: 16px; }
.maincalendar .calendarmonth td {
height: 5em; }
.maincalendar .calendarmonth td .day-number-circle {
.maincalendar .calendarmonth td .day-number-circle {
display: inline-block;
line-height: 0;
width: 30px;
height: 30px; }
.maincalendar .calendarmonth td .day-number-circle .day-number {
display: inline-block;
line-height: 0;
width: 30px;
height: 30px; }
.maincalendar .calendarmonth td .day-number-circle .day-number {
display: inline-block;
padding: 50% 4px;
width: 100%;
text-align: center; }
.maincalendar .calendarmonth td.today .day-number-circle {
border-radius: 50%;
color: #fff;
background-color: #0f6cbf; }
padding: 50% 4px;
width: 100%;
text-align: center; }
.maincalendar .calendarmonth td.today .day-number-circle {
border-radius: 50%;
color: #fff;
background-color: #0f6cbf; }
.maincalendar .calendarmonth .clickable:hover {
background-color: #ededed; }
.maincalendar .controls {