AbstractFullCalendar.javaFullCalendar (fichier #2787), séparant l'infrastructure de rendu du comportement du composant. Elle enregistre les CSS FullCalendar requis, le JavaScript (versions minifiée ou de développement) et un script d'extension personnalisé, et fournit des sérialiseurs Jackson personnalisés qui convertissent DateTime au format ISO-8601 et LocalTime au format 12 heures (h:mmaa) pour l'intégration JSON.La méthode renderHead(IHeaderResponse) contribue quatre ressources dans l'ordre : jQuery (via la référence Ajax jQuery intégrée de Wicket), le CSS FullCalendar, le JS FullCalendar (en utilisant la version minifiée en mode déploiement, la version de développement sinon pour faciliter le débogage), et un script d'extension personnalisé (fullcalendar.ext.js) qui ajoute des méthodes FullCalendar spécifiques à Wicket. La vérification du mode de déploiement (getApplication().usesDeploymentConfig()) suit le modèle standard de Wicket pour basculer entre les ressources optimisées et celles facilitant le débogage.
Deux classes statiques internes étendent StdSerializer de Jackson pour gérer les types Joda-Time que Jackson ne supporte pas nativement :
DateTimeSerializer — formate en utilisant ISODateTimeFormat.dateTime() de Joda, qui produit des chaînes ISO-8601 standard comme 2024-03-15T14:30:00.000+01:00LocalTimeSerializer — formate en utilisant le motif Joda h:mmaa, produisant des chaînes comme 2:30PM — c'est le format attendu par le client JavaScript de FullCalendar pour les options de configuration liées au tempsCes sérialiseurs sont enregistrés avec la classe utilitaire JSON de ProjectForge (ToStringUtil) et utilisés par la sérialisation Config dans la méthode renderHead de FullCalendar.
AbstractFullCalendar extends MarkupContainer implements IHeaderContributor. Étendre MarkupContainer (plutôt qu'un composant Wicket plus spécifique) offre la flexibilité d'attacher des comportements enfants et des panneaux tout en contribuant à la section <head> de la page. La classe concrète FullCalendar ajoute le câblage des callbacks et la gestion des événements par-dessus cette base.
| Commit | Ce qui a changé |
|---|---|
868d6abb7 à ceb63e8a1 | Six mises à jour annuelles des en-têtes de copyright. La contribution à l'en-tête du composant et la logique de sérialisation sont restées stables à travers toutes les mises à niveau de Wicket — le modèle de chargement des ressources de la bibliothèque JavaScript FullCalendar et les exigences de sérialisation Joda-Time n'ont pas changé. |