Ссылка на полный календарь: https://fullcalendar.io/
Так что у меня проблемы с модулями AMD, ссылающимися друг на друга в Moodle. Я делаю документы Moodle, в которых показано, как включить сторонние модули AMD, и на самом деле это пример, который я пытаюсь включить. С тех пор, как вышла новая версия документации, и она больше не работает.
У меня это "работает", но я получаю ошибку, что он не может получить длину списка плагинов. Я подозреваю, что это потому, что плагины загружены неправильно, иначе это ошибка в самом плагине fullcalendar.
Я прочитал в Интернете, что в новой версии вы должны загрузить плагины, а затем передать экземпляры основному плагину.
config.js
Это файл конфигурации для загрузки модуля (способ Moodle):
define([], function(){
window.requirejs.config({
paths: {
"@fullcalendar/core": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/core/main.min',
"@fullcalendar/daygrid": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/daygrid/main.min',
"@fullcalendar/timegrid": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/timegrid/main.min',
"@fullcalendar/list": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/list/main.min',
"@fullcalendar/bootstrap": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/bootstrap/main.min',
"@fullcalendar/moment": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/moment/main.min',
"@fullcalendar/rrule": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/rrule/main.min'
},
shim: {
"core": {exports: "@fullcalendar/core"},
"dayGrid": {exports: "@fullcalendar/daygrid"},
"timeGrid": {exports: "@fullcalendar/timegrid"},
"list": {exports: "@fullcalendar/list"},
"bootstrap": {exports: "@fullcalendar/bootstrap"},
"moment": {exports: "@fullcalendar/moment"},
"rrule": {exports: "@fullcalendar/rrule"}
}
});
});
daygrid.js
Затем я добавил каждый плагин так:
define(['block_pxeventcalendar/config', '@fullcalendar/daygrid'], function(unused, dayGrid){
return dayGrid;
});
pxcalendar.js
И наконец я создал свой собственный модуль, где я использую календарь:
define([
'block_pxeventcalendar/fullcalendar',
'block_pxeventcalendar/daygrid',
'block_pxeventcalendar/timegrid',
'block_pxeventcalendar/list'
], function(FullCalendar, dayGrid, timeGrid, list){
return {
init: function(){
new FullCalendar.Calendar(document.querySelector('#calendar'), {
plugins: [dayGrid, timeGrid, list]
});
}
};
});
И, конечно, у меня есть HTML-страница с:
<div id="calendar"></div>
Я ожидаю, что календарь появится, но я получаю следующее сообщение в консоли:
Cannot read property 'length' of undefined
Я знаю, что это значит, но это относится к core main.js, и я думаю, что это из-за неправильной загрузки плагинов. Но я отладил все подключаемые плагины, и я могу нормально видеть все экземпляры в консоли.