AbstractFullCalendar.javaFullCalendar (file #2787), separating rendering infrastructure from component behavior. It registers the required FullCalendar CSS, JavaScript (minified or development versions), and a custom extension script, and provides custom Jackson serializers that convert DateTime to ISO-8601 format and LocalTime to 12-hour format (h:mmaa) for JSON embedding.The renderHead(IHeaderResponse) method contributes four resources in order: jQuery (via Wicket's built-in Ajax jQuery reference), FullCalendar CSS, FullCalendar JS (using the minified version in deployment mode, development version otherwise to aid debugging), and a custom extension script (fullcalendar.ext.js) that adds Wicket-specific FullCalendar methods. The deployment mode check (getApplication().usesDeploymentConfig()) follows Wicket's standard pattern for switching between optimized and debuggable assets.
Two inner static classes extend Jackson's StdSerializer to handle Joda-Time types that Jackson doesn't natively support:
DateTimeSerializer — formats using Joda's ISODateTimeFormat.dateTime(), which produces standard ISO-8601 strings like 2024-03-15T14:30:00.000+01:00LocalTimeSerializer — formats using Joda's pattern h:mmaa, producing strings like 2:30PM — this is the format FullCalendar's JavaScript client expects for time-related configuration optionsThese serializers are registered with the ProjectForge JSON utility class (ToStringUtil) and used by the Config serialization in the renderHead method of FullCalendar.
AbstractFullCalendar extends MarkupContainer implements IHeaderContributor. Extending MarkupContainer (rather than a more specific Wicket component) gives flexibility to attach child behaviors and panels while contributing to the page's <head> section. The concrete FullCalendar class adds callback wiring and event management on top of this base.
| Commit | What changed |
|---|---|
868d6abb7 through ceb63e8a1 | Six annual copyright header updates. The component's header contribution and serialization logic have been stable across all Wicket upgrades — the FullCalendar JavaScript library's resource loading pattern and Joda-Time serialization requirements have not changed. |