We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

Les principales nouveautés de JCMS 5.0

JCMS 5 marque un changement majeur dans le fonctionnement de JCMS. Une grande partie de ces changements concerne l'infrastructure qui a été refondue pour faciliter le développement des futures fonctionnalités. Aussi, l'essentiel des apports de JCMS 5 n'est pas directement visible des utilisateurs et concerne plus particulièrement les développeurs et les exploitants. Néanmoins, plusieurs nouvelles fonctionnalités ont aussi été ajoutées pour les utilisateurs et les contributeurs.

Ce document présente les principales nouveautés de JCMS 5 pour les utilisateurs, les contributeurs, les administrateurs fonctionnels, les administrateurs techniques, les exploitants, les web designers et les développeurs.

1. Plus d'interaction pour les utilisateurs

1.1 Portlet Favoris

La Portlet Favoris permet à l'utilisateur de gérer des favoris. La portlet fournit l'interface pour l'ajout, la modification et la suppression de favoris.

changesJcms5 portletBookmarks

1.2 Portlet Notification

La Portlet Notification affiche les contenus correspondant aux critères de notification de l'utilisateur. Par ailleurs, le membre continue de recevoir ces notifications par mail.

1.3 Portlet Calendrier

La Portlet Calendrier affiche des événements présentés sous forme de calendrier. Des participants peuvent être ajoutés à un évènement et prévenus lorsque celui-ci arrive à échéance. La fiche pratique JCMS 5 : La portlet Calendrier détaille les possibilités et le fonctionnement de cette nouvelle portlet.

Portlet Calendrier

1.4 Portlet Explorateur

La portlet Explorateur permet de naviguer dans des contenus comme dans une arborescence de fichiers. L'utilisateur peut créer des contenus, déposer des fichiers et enrichir l'arborescence des catégories présentées.

changesJcms5 portletExplorer

1.5 Suivi des forums et dépôt de pièce jointe

Plusieurs nouveautés pour les utilisateurs se situent dans les forums. Il est désormais possible de s'enregistrer pour suivre une discussion. L'utilisateur reçoit alors une alerte par mail à chaque nouveau message publié dans cette discussion. Par ailleurs, les participants du forums peuvent déposer une pièce jointe avec leur message (sous réserve qu'ils aient les droits de publier des Documents et que le dépôt des pièces jointes soit autorisé sur ce forum).
Enfin, tous les messages soumis dans un forum sont filtrés pour encoder les portions de code HTML.

2. De nouveaux outils pour les contributeurs

2.1 Correcteur orthographique

JCMS 5.0 fournit un correcteur orthographique (français, anglais, allemand et espagnol) disponible pour les champs de types zone de texte et zone de texte riche.

changesJcms5 icon spell

changesJcms5 spellchecker


2.2 Nettoyage des imports Word

Une fonction de nettoyage du code source HTML a été intégrée à l'éditeur de texte riche (par exemple, pour nettoyer les sources issues d'un copier/coller depuis MS Word).

changesJcms5 icon clean

changesJcms5 cleaner


2.3 Autres nouveautés pour les contributeurs

L'icône archiveIn permet de supprimer et d'archiver rapidement un contenu. Il fonctionne en complément des archivages planifiés.

La gestion du panier a été améliorée (ajout d'une colonne Espace de travail et possibilité d'affecter le suivi des lecteurs).

La consultation des versions a été très nettement accélérée pour les stores de taille importante (jusqu'à 8 fois plus rapide que JCMS 4.1.1 sur un store de 90 Mo).

Les résultats des recherches effectuées dans le back-office peuvent être exportés vers un tableur en CSV.

changesJcms5 query csv

3. Plus d'information pour les administrateurs fonctionnels

3.1 Statistiques des accès

JCMS 5 intègre un nouveau modèle d'analyse statistique des accès. La fiche pratique JCMS 5 : Analyse statistique des accès détaille les possibilités et le paramétrage de cette fonctionnalité.

changesJcms5 stats

3.2 Administration des forums

Deux nouvelles fonctionnalités ont été ajoutées pour la gestion des forums. D'une part, il est possible de fermer un forum. Ce forum reste accessible mais il n'est plus possible de publier de nouvelles discussions ni de publier de nouveaux messages dans les discussions existantes. D'autre part, un workflow de modération des discussions et des messages sont livrés en standard.

3.3 Formulaire d'inscription

Un nouveau formulaire d'inscription est disponible. Il permet aux utilisateurs de demander une ouverture de compte via le formulaire Inscription (Signup). Le compte utilisateur est créé mais désactivé. L'administrateur n'a alors plus qu'à générer le mot de passe (pour activer le compte) et à envoyer les informations du compte à l'utilisateur par mail. Il est possible de coupler ce formulaire à un workflow pour automatiser l'activation du compte comme cela était décrit dans la fiche pratique Développement dun formulaire dinscription sur un site JCMS (pour JCMS 4.1.1). Pour activer l'utilisation de ce nouveau formulaire via la Portlet Inscription (PortletSignup), il faut sélectionner le formulaire SignUp dans propriétés du site (Administration > Propriétés > Accès).

changesJcms5 prop signup

3.4 Export CSV

Les interfaces de gestions des membres et des groupes permettent, en cliquant sur l'icone csv présent en haut à gauche des tableaux, de faire un export CSV des listes affichées.


4. Plus de contrôle pour les administrateurs techniques et les exploitants

4.1 Log4J

JCMS 5.0 utilise l'API Jakarta log4j pour journaliser les évènements. La fiche pratique JCMS 5 : La journalisation des évènements avec log4j décrit le paramétrage de la journalisation et comment exploiter cette nouvelle API dans les développements spécifiques.

4.2 Sécurité

Le contrôle de la sécurité a été notablement renforcé dans JCMS 5.0. Toute violation de sécurité est journalisée avec le contexte [SECURITY], l'adresse IP du client ainsi que son nom et son identifiant (si il est authentifié).

4.2.1 Authentification administrateur

Toute authentification d'un administrateur et tout démarrage de session pour un administrateur est journalisée.

Exemple :

2005-01-05 16:13:05 INFO [Mon Site] [192.168.0.15, unauthenticated user] [SECURITY] - Administrator "Arthur Administrateur" logs in
2005-01-05 16:13:05 INFO [Mon Site] [192.168.0.15, unauthenticated user] [SECURITY] - Administrator "Arthur Administrateur" starts a new session

4.2.2 Echec d'authentification

A partir de 3 tentatives d'authentifications infructueuses, chaque nouvelle tentative infructueuse est journalisée.

Exemple :

2005-01-05 18:02:49 WARN [Mon Site] [192.168.0.15, unauthenticated user] [SECURITY] - Authentication failed (3 attempts)
2005-01-05 18:03:01 WARN [Mon Site] [192.168.0.15, unauthenticated user] [SECURITY] - Authentication failed (4 attempts)

4.2.3 Détection d'intrusion

Toute tentative d'accès à une URL interdite est journalisée.

Exemple :

2005-01-05 17:51:42 WARN [Mon Site] [192.168.0.15, c_5124, Alain Trusion] [SECURITY] - Forbidden access to http://localhost:9003/jcms/admin/admin.jsp

4.2.4 Détection d'upload interdit

Tous les dépôts de fichier sont journalisés. Les rejets dus à la taille ou au type de fichier sont aussi journalisés.

Exemple :

2005-01-05 22:42:11 INFO [Mon Site] [127.0.0.1, c_5124, Alain Trusion] - Upload saved in C:\tomcat\webapps\jcms\upload\docs\image\bmp\music.bmp
2005-01-05 22:42:11 WARN [Mon Site] [127.0.0.1, c_5124, Alain Trusion] [SECURITY] - Upload permission rejected (image/bmp files cannot be uploaded). Delete file C:\tomcat\webapps\jcms\upload\docs\image\bmp\music.bmp
2005-01-05 22:43:57 INFO [Mon Site] [127.0.0.1, c_5124, Alain Trusion] - Upload saved in C:\tomcat\webapps\jcms\upload\docs\application\msword\report.doc
2005-01-05 22:43:57 WARN [Mon Site] [127.0.0.1, c_5124, Alain Trusion] [SECURITY] - Upload permission rejected (too large file: 2,77M). Delete file C:\tomcat\webapps\jcms\upload\docs\application\msword\report.doc


4.2.5 Contrôle des balises HTML dans les contenus

Avec JCMS 5.0, par défaut, les champs textuels des types de publication contenant du code HTML sont filtrés. Pour les champs de type texte et zone de texte, les balises HTML sont encodées afin de ne pas être interprétées mais affichées.

Les contenus des champs de type zone de texte riche sont analysés. Un contenu ne peut être enregistré que s'il ne contient pas des balises interdites. La déclaration des balises interdites se fait dans la propriété channel.forbidden-html présente dans le fichier WEB-INF/data/webapp.prop.

4.2.6 Sécurisation des envois de mot de passe

Il est possible d'imposer que toutes les requêtes d'authentification, où le mot de passe est envoyé du navigateur au serveur, se fassent en HTTPS (sous réserve que le serveur d'application supporte un mode HTTPS). Pour cela, il suffit d'activer l'option SSL dans les propriétés (Administration > Propriétés > Accès > SSL)

changesJcms5 prop ssl

Par ailleurs, le cryptage des mots de passe repose par défaut sur l'algorithme MD5. L'algorithme de cryptage "à la Unix" est toujours disponible mais ne doit pas être utilisé avec la JVM d'IBM (Websphere et AIX).

4.3 Contrôle d'intégrité des données

A tout moment, l'administrateur peut tester l'intégrité des données présentes dans le store (Administration > Avancé > Contrôle d'intégrité des données).

dc dic

4.4 Traitement des erreurs fatales

Si une erreur survient lors du démarrage du site, le site est déclaré comme inactif et cette information est remontée par status.jsp.

Si entre deux écritures, le taille du fichier store.xml a changé, le détail du changement est journalisé.

Exemple :

2005-02-12 01:14:23,713 WARN [Mon Site] [127.0.0.1, j_2, Admin] - store.xml has been modified since the last update. JStore last size: 
682935 bytes / current size: 683001 bytes. JStore last update: Sun Jan 30 15:51:09 CET 2005 / file last modified: Sat Feb 12 01:14:09 CET 2005. This may cause store inconsistency.

Si une erreur d'entrée/sortie a lieu lors d'une écriture dans le store, les écritures sont bloquées. Les administrateurs sont prévenus par mail et un message défile dans l'entête de l'espace d'administration.

4.5 JSync (réplication)

Les synchronisations de stores de taille importante ont été fortement accélérées grâce à l'utilisation des nouvelles classes d'entrées/sorties du JDK 1.4 (jusqu'à 8 fois plus rapide pour un store de 90 Mo).

Un réplica peut propager ses nouvelles opérations par tranches dont la taille est réglable (via la propriété jsync.max-op, par défaut à 100). Ainsi, un réplica très en retard, recevra les nouveautés en plusieurs petites requêtes. Ceci évite des dépassements mémoire (OutOfMemory) lors de synchronisations comportant de nombreuses opérations (par exemple, suite à des opérations globales sur des milliers de données).


4.6 Suivi de la consommation mémoire

Le suivi de la consommation mémoire a été entièrement réécrit. Deux graphiques sont présentés : les suivis des dernières 24 heures et celui des 2 dernières heures. Contrairement aux versions précédentes de JCMS, les graphiques sont produits avec du code HTML sans image et fonctionnent donc directement dans les environnements Unix sans serveur X.

changesJcms5 memory

4.7 Suivi des sessions utilisateur

JCMS 5.0 permet aux administrateurs techniques de connaître l'activité des utilisateurs connectés. Par défaut, cette fonctionnalité est désactivée. Pour l'activer, la propriété session-tracker.max-trace-nbr doit être positionnée dans le fichier WEB-INF/data/webapp.prop avec une valeur positive représentant la taille de l'historique de suivi (p. ex. 10). Pour suivre l'activité d'un membre, il suffit de consulter l'onglet Avancé de son profil dans l'espace d'administration ou de cliquer sur son nom dans une Portlet Membres Connectés.

changesJcms5 session

4.8 Serveurs d'application

JCMS 5.0 est compatible J2EE 1.3 mais requiert un JDK 1.4.1 ou 1.4.2. En plus des serveurs d'application déjà supportés par JCMS 4.1.1, les serveurs d'application Oracle AS10g et Resin 3.0.x sont officiellement supportés par JCMS 5.0. A noter que JCMS 5.0 nécessite la version 5.1.x de Websphere. Pour plus de détails sur les serveurs d'application et les systèmes d'exploitation certifiés pour JCMS 5.0, reportez-vous au Manuel d'installation et d'exploitation de JCMS 5.0.

5. Plus de paramétrage pour les web designers

5.1. Feuilles de style pour les gabarits d'affichage détaillés

Les JSP des gabarits d'affichage détaillés (doTypeFullDisplay.jsp) ont été enrichis de nombreux selecteurs CSS permettant de retravailler la mise en forme par simple modification des fichiers CSS ; sans avoir à modifier les JSP. La fiche pratique JCMS 5 : Mise en forme CSS des gabarits daffichage détaillés (FullDisplay) décrit ces feuilles de style et explique comment agir sur la mise en forme d'un gabarit en ne retravaillant que ses CSS.

5.2 Redirection

Dans JCMS 4.1, pour déclencher l'accès à un site externe ou un contenu particulier depuis un menu de navigation (PortletNavigate), il fallait associer à une catégorie de navigation un portail dont le champ redirection contenait l'URL à atteindre. Dans JCMS 5, la portlet Redirection est désormais dédiée à cette tâche. Outre, la séparation fonctionnelle avec la portlet Portail, la portlet Redirection permet de faire des redirections sur différents types de ressources (site externe, contenu, portlet, formulaire, …). Pour les redirections internes, il n'y n'a plus besoins de saisir une URL ce qui garantie la portabilité des redirections.

5.3 Portlet Navigation

La portlet Navigation dispose d'un nouveau gabarit d'affichage pour construire des menus verticaux. En standard, ce gabarit peut afficher jusqu'à trois niveaux de profondeur.

changesJcms5 portletNavigate

Par ailleurs, la portlet Navigation a été dotée de deux nouvelles options :

  1. Elle peut être masquée si elle ne contient aucune catégorie à présenter
  2. Elle peut être utilisée en tant que portlet d'affinement contextuel combinée avec d'autres portlets de navigation. Une fiche pratique expliquera bientôt ce fonctionnement.

5.4 Autres nouveautés pour les web designers

Les catégories disposent d'un champ couleur. Ce champ peut par exemple être utilisé dans des gabarits de Porlet Navigation.

Le favicon du back-office peut-être changé en le déclarant via la propriété channel.favicon.

Le type interne Webpage de JCMS 4.1.1 a été supprimé et remplacé par le type généré WebPage.

Enfin, la génération des types a été très nettement accélérée (environs d'un rapport 10).

6. Plus d'ouverture pour les développeurs

6.1 Nouvelles organisation des fichiers

Une des grandes nouveautés de JCMS 5.0 est la réorganisation complète des fichiers de la webapp. La centaine de JSP présente à la racine dans les précédentes versions de JCMS, a été répartie dans des répertoires. Seules les JSP display.jsp, edit.jsp et index.jsp sont encore présentes à la racine.

Les nouveaux répertoires :

  • admin/ : contient les JSP propres à l'espace d'administration
  • front/ : contient les JSP propres au front-office
  • jcore/ : contient des JSP inclus par les autres JSP (doInitPage.jsp, doHeader.jsp, …)
  • work/ : contient les JSP propres aux espaces de travail
  • custom/ : contient les JSP destinés à être adaptés pour la webapp et les nouveaux JSP spécifiques à la webapp.

Tous les fichiers de CSS sont maintenant localisés dans le répertoire css/.

Dans la majorité des cas d'usage, seules les JSP contenues dans les répertoires types/ et custom/ devraient être retravaillées.

6.2 jcms.jar

Les classes de JCMS 5.0 sont livrées sous forme d'un fichier jar (WEB-INF/lib/jcms.jar). Ceci facilite l'utilisation de l'API JCMS dans les outils de développement tels qu'Eclipse. A noter que si des patches doivent être appliqués sur des classes de JCMS, ceux-ci seront livrés sous forme de classes à déployer dans le répertoire WEB-INF/classes. En effet, la norme J2EE prévoit que le classloader du serveur d'application charge en priorité les classes du répertoire WEB-INF/classes puis celles des jar.

6.3 De nouvelles APIs

6.3.1 DCM et l'interface DataController

DCM (Data Control Model) est la nouvelle API de contrôle de données de JCMS 5. Celle-ci simplifie les enregistrements dans le store et permet d'ajouter des codes de contrôles spécifiques sur toute donnée gérée par JCMS. La fiche pratique JCMS 5 : Développer avec DCM et les DataController décrit en détail le fonctionnement des DataController et illustre les nouvelles possibilités offertes par cette API au travers de plusieurs exemples.

6.3.2 AuthenticationManager

L'authenticationManager permet d'intégrer dans JCMS de nouvelles politiques d'authentification (SSO J2EE, NTLM, PKI, …). A noter en particulier que la classe custom.JcmsLdapHandler de JCMS 4.1.1 a été refondue dans cette nouvelle API et se nomme désormais custom.LdapAuthenticationManager. La fiche pratique JCMS 5 : Développement d'authentifications spécifiques avec l'AuthenticationManager décrit en détail cette nouvelle API et illustre le développement d'authentifications spécifiques au travers de plusieurs exemples.

6.3.3 QueryFilter

JCMS 5.0 permet au développeur d'ajouter des QueryFilter pour agir sur tous les types requêtes JCMS (recherche utilisateur, portlet requête/itération, …). Ce mécanisme permet d'agir en amont de la requête, sur les paramètres, mais aussi en aval, sur les résultats. Il est ainsi possible d'enrichir les résultats de recherche en intégrant des données émanant d'autres sources de données que JCMS (base de données relationnelles, documentaires, moteur de recherche tiers, autres sites JCMS, …). La fiche pratique JCMS 5 : Développement de recherches étendues avec l'API des QueryFilter décrit cette nouvelle API.

6.3.4 RightPolicy

Trois méthodes ont été ajoutées dans la classe custom.RightPolicy :

  • public static boolean checkUpload(DocUploadHandler.DocUploadInfo info,
    Member mbr, Workspace ws)
    Cette méthode permet d'accepter ou de rejeter un fichier qui vient d'être déposé par téléchargement.
  • public static ControllerStatus checkHtml(String str, String field)
    C
    ette méthode permet d'accepter ou d'empecher l'enregistrement d'une publication qui contient le texte fournit. Cette méthode permet d'ajouter des contrôles fins
  • public static boolean canWorkOn(Publication pub, Member mbr)
    C
    ette méthode permet de determiner si un membre peut travailler sur une publication (par exemple selon l'état où se trouve cette publication).

6.3.5 Export CSV

Tout objets dérivant de com.jalios.jcms.Data peut être exporté au format CSV (comma separated value). Pour cela, trois méthodes sont disponibles :

  • myData.toCSV(String lang)
    Cette méthode exporte la donnée au format CSV
  • myData.getCSVHeader(String lang)
    Cette méthode produit une ligne au format CSV contenant le nom de colonnes
  • JcmsUtil.exportCSV(Set dataSet, String userLang, Writer writer)
    Cette méthode écrit un ensemble de données (dataSet) au format CSV sur le flux writer.

6.3.6 Champ parent

Dans la définition d'un type, il est possible d'utiliser un lien sur Publication (ou sur Contenu) comme lien parent sous reserve que ce champ se nomme parent (dans JCMS 4.1.1, les liens parents ne pouvaient être que des liens sur des types de contenu générés). Les liens parents permettent de construire des types composés d'autres types, liés par une relation hiérarchique. Ces objets sont typés avec l'interface com.jalios.util.TreeNode. JCMS exploite par exemple cette information lors des suppressions pour effacer la donnée racine et l'ensemble de l'arborescence.

6.4 Tags

De nouveaux tags ont été ajoutés :

  • <jalios:widget>: ce tag affiche un éditeur de champs dont le type est spécifié par les attributs.
  • <jalios:datechooser>: ce tag affiche un champ avec un icône permettant de choisir une date dans un calendrier. A terme ce tag sera encapsulé dans le tag widget.
  • <jalios:chart>: ce tag affiche des histogrammes (comme par exemple dans le suivi mémoire ou l'analyse des statistiques)
  • <jalios:include>: ce tag inclut la portlet qui lui est fournit
  • <jalios:archive>: ce tag affiche l'icône déclenchant l'archivage d'une publication

Enfin, les tags suivant ont été retirés : <jalios:flag>, <jalios:dropcap>, <jalios:news>.