JCMS 5.6 : les principales nouveautés

1. Les nouvelles fonctionnalités

1.1 Les groupes hiérarchiques

A partir de JCMS 5.6, les groupes sont hiérarchiques. Un groupe peut-être composé de sous-groupes, eux-mêmes composés de sous-groupes, etc. Un même sous-groupe peut être rattaché à plusieurs groupes parents (JCMS assure qu'il n'y aura pas de cycles de dépendance).

Un membre qui appartient à un groupe appartient automatiquement à tous les groupes parents de ce groupe. Dans l'exemple ci-dessous un membre qui appartient à G5, appartient automatiquement aussi à G1, G2 et G3.

Exemple de groupes

Fig. 1. Exemple de groupes hiérarchiques

L'introduction des groupes hiérarchiques nécessite de distinguer les groupes explicites d'un membre (G5 dans l'exemple) des groupes déduits de la hiérarchie (G1, G2, G3 et G5 dans l'exemple). Toute l'API JCMS travaille sur les groupes déduits. Ainsi dans l'exemple ci-dessus, si l'on donne accès à G1 à une publication, les membres rattachés explicitement à G5, G4, G3, G2 ou G1 auront accès à cette publication.

Les interfaces de gestion des membres et des groupes ont été revues. Une colonne a été ajoutée sur la gauche pour naviguer dans l'arborescence des groupes.

Liste des membres

Fig. 2. Liste des membres avec les groupes hiérarchiques

Pour assurer la compatibilité avec les précédentes versions de JCMS, la méthode Member.getGroups() renvoie l'ensemble des groupes déduits. Les groupes explicites sont obtenus par la méthode Member.getDeclaredGroups().

Les groupes hiérarchiques nécessitent une migration du fichier store.xml (cf. section 3).

1.2 Export iCalendar

Les événements de calendrier peuvent maintenant être exportés au format iCalendar. Ce format est reconnu par Microsoft Outlook. Ainsi en cliquant sur l'icône d'export iCal, un utilisateur peut importer un événement ou tout une série d'événements dans son agenda.

Export iCal

Fig. 3. Export iCalendar depuis la portlet Calendrier

1.3 Portlet Nuage

La Portlet Nuage présente un ensemble de catégories sous forme d'un nuage où chaque catégorie à une taille proportionnelle à son intérêt. Cette portlet s'inspire des nuages de tags que l'on trouve dans les systèmes à base de tags (flickr, technorati, del.icio.us, …). Elle permet à un visiteur de se faire une idée rapide de ce qu'il peut trouver sur le site.

Portlet Nuage - Alphabetique

Fig. 4. Exemple de Portlet Nuage (tri alphabétique)

Dans JCMS 5.6, l'intérêt d'une catégorie peut être calculé selon trois critères :
  1. le nombre de contenus consultables sous cette catégorie
  2. le nombre de contenus consultés sous cette catégorie (via le suivi des lecteurs)
  3. un critère personnalisé

Les catégories peuvent être listées par ordre alphabétique ou par ordre de taille.

Portlet Nuage - Taille

Fig. 5. Exemple de Portlet Nuage (tri par taille)

Cette portlet propose plusieurs options :

  • Catégories : les branches de catégories à présenter
  • Unité de comptage : critère de calcul de l'intérêt des catégories
  • Liens de catégories : type de lien (navigation ou recherche) à placer sur chaque catégorie
  • Tri : mode de présentation (alphabétique, par taille, les deux)
  • Echelle de distribution: logarithmique ou linéaire
  • Niveaux : nombre de niveaux de distribution
  • Nb. Maximum de catégories à afficher : permet de limiter le nombre de catégories affichées en ne retenant que les n premières (la valeur 0 permet de ne pas limiter).
  • Seuil : les catégories de taille inférieure au seuil ne sont pas présentées.
  • Affinements : le nuage peut être constitué dynamiquement des descendants de la catégorie courante.

La Portlet Nuage repose sur le tag <jalios:cloud> qui propose toutes les options de la portlet et qui permet en plus de d'utiliser un algorithme spécifique de calcul de l'intérêt de chaque catégorie (en implémentant l'interface Category.CloudQuantifier).

1.4 Security Filter

La SecurityFilter a été ajoutée pour contrer les tentatives d'hameçonnage (ou phishing) et de cross-site scripting (ou XSS).

Lorsqu'elle est activée, la SecurityFilter vérifie que les redirections sont comprises dans un jeu d'adresses autorisées. Ceci afin d'empêche les redirections sur des sites externes visant à tromper l'utilisateur, par exemple, pour lui voler son mot de passe (technique dite d'hameçonnage ou phishing).

Elle vérifie aussi le contenu de certains paramètres des requêtes http afin de prévenir l'insertion de code malicieux (technique dite de cross-site scripting).

Lorsqu'une l'une de ces deux tentatives est détectée, l'utilisateur est, au choix, redirigé soit sur la même URL sans les paramètres frauduleux, soit sur une page d'alerte (paramétrable).

Par défaut, la SecurityFilter est désactivée. Pour l'activer, il faut l'ajouter dans le fichier web.xml. Le détail de mise en œuvre est expliqué dans la JavaDoc :

docs/javadoc/com/jalios/jcms/servlet/SecurityFilter.html

1.5 i-mode

JCMS 5.5 a introduit la détection des PDA. JCMS 5.6 complète la prise en compte des mobiles en ajoutant la détection des navigateurs i-mode. Le comportement par défaut est de rediriger sur une page dédiée aux appareils mobiles mais il est tout a fait possible de rediriger sur un portail spécifiquement conçu pour ce genre d'appareils (en modifiant le comportement de index.jsp).

1.6 Permalien

Les permaliens des contenus ont été ajoutés sur les résultats de recherches et dans l'entête des gabarits d'affichage détaillés.

2. Améliorations des fonctionnalités existantes

2.1 Historique des champs texte riche

JCMS permet de consulter l'historique de n'importe quel contenu. Il est possible de comparer champ par champ les différences entre deux versions. La comparaison des champs texte riche a été améliorée dans JCMS 5.6 puisqu'il est possible de consulter soit la vue texte (sans les balises) soit la vue HTML (avec les balises).

Comparaison Wysiwyg

Fig. 6. Comparaison des versions d'un champ texte riche.

2.2 Meilleur rendu des Workflows

JCMS 5.6 offre un meilleur rendu des workflows complexes. Quelque soit le nombre d'état et de transition, le workflow apparaît en totalité dans la page et l'utilisateur à la possibilité de zoomer sur les états.

Workflow

Fig. 7. Exemple de workflow avec de nombreux états.

2.3 Profiling du poids des portlets

JCMS 5.5 a introduit un profiler des pages portail. Celui-ci permet de connaître la consommation mémoire et le temps processeur pris par chaque portlet. JCMS 5.6 complète l'analyse en indiquant pour chaque portlet le poids du fragment HTML qu'elle a produit.

Profiler

Fig. 8. Nouvelle colonne indiquant le poids HTML des portlets dans l'analyse d'une page.

2.4 Déclenchement du GC

Dans l'interface du suivi de la consommation mémoire, il est possible avec JCMS 5.6 de connaître la consommation mémoire instantanée et déclencher le GC (Garbage Collector). Ceci n'est généralement pas nécessaire sauf lorsque le site rencontre des problèmes de mémoire et qu'il faut analyser les libérations mémoires.

Consommation mémoire

Fig. 9. Suivi de la consommation mémoire

2.5 URL intuitives

Avec JCMS 5.6 il n'est plus nécessaire de saisir un "/" à la fin d'une URL intuitive. Ainsi, en déclarant l'URL intuitive "/faq" sur le site JaliosXperience, celle-ci est atteignable par faq ou faq/ .

Un pager a été ajouté dans l'interface de gestion des URL intuitives pour gérer un grand nombre d'URL intuitives.

2.6 Documentation utilisateur

La documentation utilisateur a été mise à jour. Il s'agit de la documentation de JCMS 5.5.

3. Incompatibilités

L'introduction des groupes hiérarchiques a modifié la structure de la classe Member. Le champ groups a été remplacé par le champ declaredGroups. Lors des migrations vers JCMS 5.6, il faut effectuer cette modification dans le store.

JCMS 5.6 est fournit avec un utilitaire réalisant cette conversion. Pour cela, lancer JCMS 5.6. Une fois authentifié en admin, aller sur admin/classpath.jsp et suivre les instructions. Dans la fenêtre de commande, lancer le convertisseur :

Java com.jalios.jcms.tools.StoreConverter oldStore.xml newStore.xml

Par ailleurs, pour les migrations de webapps antérieurs à JCMS 5.5, il faut effectuer la conversion en UTF-8 de toutes les ressources.

4. Correctifs

JCMS 5.6 corrige 21 bugs découverts sur JCMS 5.5.

En résumé...

JCMS 5.6 est essentiellement une version de maintenance de JCMS 5.5. Elle introduit cependant quelques nouveautés et améliore certaines fonctionnalités existantes.

Sujet
Produits
Publié

05/07/06

Rédacteur
  • Olivier Dedieu