AbstractFullCalendar.javaFullCalendar (файл #2787), разделяя инфраструктуру рендеринга и поведение компонента. Он регистрирует необходимые CSS FullCalendar, JavaScript (минифицированные или разработочные версии) и пользовательский скрипт расширения, а также предоставляет пользовательские сериализаторы Jackson, которые преобразуют DateTime в формат ISO-8601 и LocalTime в 12-часовой формат (h:mmaa) для встраивания в JSON.Метод renderHead(IHeaderResponse) подключает четыре ресурса по порядку: jQuery (через встроенную ссылку Wicket на Ajax jQuery), CSS FullCalendar, JS FullCalendar (используя минифицированную версию в режиме развёртывания, иначе разработочную версию для упрощения отладки) и пользовательский скрипт расширения (fullcalendar.ext.js), который добавляет специфичные для Wicket методы FullCalendar. Проверка режима развёртывания (getApplication().usesDeploymentConfig()) следует стандартному шаблону Wicket для переключения между оптимизированными и отладочными активами.
Два внутренних статических класса расширяют StdSerializer от Jackson для обработки типов Joda-Time, которые Jackson изначально не поддерживает:
DateTimeSerializer — форматирует с использованием ISODateTimeFormat.dateTime() из Joda, что создаёт стандартные строки ISO-8601, например 2024-03-15T14:30:00.000+01:00LocalTimeSerializer — форматирует с использованием шаблона Joda h:mmaa, создавая строки вида 2:30PM — это формат, который JavaScript-клиент FullCalendar ожидает для параметров конфигурации, связанных со временемЭти сериализаторы регистрируются в утилите JSON ProjectForge (ToStringUtil) и используются при сериализации Config в методе renderHead класса FullCalendar.
AbstractFullCalendar extends MarkupContainer implements IHeaderContributor. Расширение MarkupContainer (а не более специфичного компонента Wicket) даёт гибкость для присоединения дочерних поведений и панелей, одновременно внося вклад в раздел <head> страницы. Конкретный класс FullCalendar добавляет поверх этой базы связывание обратных вызовов и управление событиями.
| Коммит | Что изменилось |
|---|---|
868d6abb7 – ceb63e8a1 | Шесть ежегодных обновлений заголовков авторских прав. Подключение заголовка компонента и логика сериализации оставались стабильными на протяжении всех обновлений Wicket — шаблон загрузки ресурсов библиотеки FullCalendar JavaScript и требования к сериализации Joda-Time не изменились. |