FullCalendar.events.tplPackageTextTemplate, определяющий JavaScript-функцию обратного вызова для получения событий, внедряемую в конфигурацию каждого источника событий FullCalendar. Этот единственный файл шаблона является критическим мостом между сервером Wicket и клиентом FullCalendar: он генерирует JavaScript-функцию, которая выполняет Ajax GET-запрос Wicket к динамически генерируемому URL (уникальному для каждого источника событий), передавая видимый диапазон дат календаря (start/end в миллисекундах эпохи), смещение часового пояса клиента и токен для предотвращения кэширования. Ответ передается напрямую в функцию обратного вызова FullCalendar в виде массива данных событий.Шаблон использует синтаксис подстановки переменных Wicket TextTemplate: ${url} — единственная переменная. Во время рендеринга FullCalendar.setupCallbacks() создает HashMap с ключом "url", установленным на URL Ajax-обратного вызова источника событий (сгенерированный Wicket.Ajax.ajax), и вызывает EVENTS.asString(map) для получения итогового JavaScript.
Сгенерированный JavaScript выполняет Ajax-вызов Wicket с параметрами:
"u" — URL обратного вызова, уникальный для каждого источника событий"dt": "json" — ожидает JSON-ответ"wr": false — не использовать обработку Ajax-ответа Wicket (сырой JSON является списком событий)"ep" (дополнительные параметры): start и end (миллисекунды эпохи из аргументов обратного вызова start/end FullCalendar), timezoneOffset (смещение UTC клиента в минутах), anticache (временная метка + случайное число для предотвращения кэширования браузером)"sh" (обработчик успеха) — передает ответ jqXHR напрямую в функцию обратного вызова FullCalendar, фактически предоставляя массив данных событийWicket PackageTextTemplate находит этот файл по соглашению: он должен находиться в том же Java-пакете (net.ftlines.wicket.fullcalendar), что и класс FullCalendar, и иметь то же базовое имя. Расширение .tpl указывает, что это ресурс текстового шаблона.
| Коммит | Что изменилось |
|---|---|
9ebb88522 | Добавлен файл шаблона в рамках первоначального коммита репозитория. Ajax-протокол (Ajax-вызов Wicket с временными метками эпохи, смещением часового пояса и токеном для предотвращения кэширования) был установлен с самого начала и остался неизменным — свидетельство стабильности как Ajax API Wicket, так и протокола источников событий FullCalendar. |