JCMS 5.7 : les principales nouveautés

1. De nouvelles fonctionnalités pour les contributeurs

1.1 Des interfaces plus ergonomiques

1.1.1 Menus contextuels des publications

L'ergonomie de contribution a été améliorée avec l'introduction de plusieurs menus contextuels. Ces menus fournissent un accès rapide aux principales actions disponibles sur une publication (édition, suppression, validation, archivage, historique des versions, …). Ils permettent aussi de consulter rapidement les informations d'une publication (méta-données, workflow, résumé, …). Ils sont disponibles en front-office et un back-office. Dans le back-office, les menus contextuels remplacent la série d'icônes qui apparaissait en dernière colonne des listes de publications dans les précédentes versions de JCMS. Pour les faire apparaître, cliquez sur l'icône triangle à droite des icônes d'édition.

Screenshot PubCtxMenu

Fig. 1. Menu contextuel d'une publication

Chaque menu est contextuel à la publication sur laquelle il porte et à l'utilisateur qui le fait apparaître. Lorsque les actions ne sont pas applicables elles apparaissent en gris. Pour les documents, des actions supplémentaires sont proposées : édition WebDAV (pour les documents bureautiques), verrouillage et aperçu de l'image (pour les documents de type image et certains documents bureautiques)

Screenshot PubCtxMenu

Fig. 2. Menu contextuel d'un document

1.1.2 Menus contextuels des catégories

Les arbres de catégories disposent eux aussi de menus contextuels. Ils sont accessibles par un clic-droit sur le nom de la catégorie. Ils permettent d'agir sur la catégorie sélectionnée (édition, renommage, suppression, création de catégories, ajout au panier, …) et fournissent des informations (droits, description, image associée, …)

Screenshot PubCtxMenu

Fig. 3. Menu contextuel d'une catégorie

En complément des menus contextuels, les arbres de catégories supportent le glisser/déposer (drag and drop). Un contributeur peut ainsi réorganiser les branches de catégories directement depuis le gestionnaire des publications ou les formulaires de contribution. Combiné avec les fonctions d'édition fournies par le menu contextuel des catégories, JCMS 5.7 offre une interface simple et efficace de gestion des plans de classement. Pour déplacer une branche de catégorie, sélectionnez l'icône de la catégorie et déposez-la sur la nouvelle catégorie parente.

Screenshot PubCtxMenu

Fig. 4. Déplacement de catégories par glisser/déposer

1.1.3 Auto-complétion

La plupart des champs de type liens proposent désormais l'auto-complétion. Au lieu de choisir la donnée à référencer via une interface de sélection, l'utilisateur saisit les premières lettres et un menu déroulant lui propose une sélection de données correspondant. L'auto-complétion opère sur les champs de type Publication, Catégorie, Membre, Groupe et Espace de travail. Ces champs apparaissent avec un fond vert pale et petite icône de loupe.

Screenshot PubCtxMenu

Fig. 5. Auto-complétion sur un champ Membre

1.1.4 Autres améliorations ergonomiques

Lorsqu'un contributeur quitte un formulaire d'édition sans sauvegarder (par exemple en cliquant sur un lien ou en utilisant la flèche "Précédente" du navigateur), une alerte lui demande la confirmation de cette action. Ceci évite de perdre de façon involontaire les données saisies dans un formulaire.

Screenshot PubCtxMenu

Fig. 6. Alerte lorsque le contributeur quitte un formulaire d'édition sans enregistrer.

Les champs de type zones de texte sont redimensionnables en hauteur par le contributeur et se redimensionnent dynamiquement lors de la frappe.

Screenshot PubCtxMenu

Fig. 7. Les zones de texte sont redimensionnables.

Enfin, les courriers de notifications sont désormais envoyés en HTML (sauf si le membre a choisi le format texte dans son profil).

1.2 Délégation des droits

La délégation des droits permet à un utilisateur d'autoriser d'autres utilisateurs à utiliser son compte. Par exemple, lorsqu'un valideur part en congé, il peut choisir les personnes autorisées à agir en son nom durant son absence.

Dans l'interface d'édition de son profil, l'utilisateur sélectionne les personnes autorisées à utiliser son compte. Il peut aussi y consulter les autorisations qu'il a reçu d'autres utilisateurs.

Screenshot PubCtxMenu

Fig. 8. Déclaration des délégations.

L'utilisateur peut accéder à la liste des comptes délégués soit en cliquant sur l'icône d'identification, soit en cliquant sur le triangle à droite de l'icône d'identification.

Un fois authentifié via un compte délégué, un message rappelle au membre qu'il utilise le compte d'un autre. Un menu déroulant associé à l'icône de déconnexion lui permet de revenir à son compte personnel. Toutes les écritures (création, modification, suppression) effectuées par un utilisateur lors d'une délégation sont tracées et apparaissent dans l'historique des publications.

1.3 Un nouvel éditeur de texte riche

JCMS 5.7 dispose d'un nouvel éditeur de texte riche (ou éditeur Wysiwyg) basé sur l'éditeur TinyMCE de Moxiecode Systems AB. Il s'agit d'un des éditeurs wysiwyg les plus répandus et les plus complets. Cet éditeur est compatible avec les navigateurs InternetExplorer 6 et 7 et Firefox. Il produit du code XHTML. Toutes les fonctions du précédents éditeur wysiwyg sont disponibles et de nouvelles ont été ajoutées telles que l'insertion de média (vidéo, flash), la prévisualisation, le redimensionnement de la zone d'édition, … La composition des barres d'icônes est configurable et de nouvelles fonctionnalités peuvent être ajoutées.

Screenshot PubCtxMenu

Fig. 9. Interface du nouvel éditeur de texte riche.

1.4 Gestion documentaire enrichie

1.4.1 Gestion explicite des versions

JCMS propose nativement l'historique des changements des publications. Avec JCMS 5.7, les utilisateurs peuvent agir sur cet historique en précisant à chaque modification si il s'agit d'une modification mineure ou majeure. Ce choix se fait à la sauvegarde (le comportement par défaut est paramétrable) :

Screenshot PubCtxMenu

Fig. 10. Choix du type de modification (majeure / mineure) à l'enregistrement.

L'historique des changements met en évidence les modifications majeures d'une publication ainsi que les modifications liées à une fusion d'une copie de travail.

Screenshot PubCtxMenu

Fig. 11. Historique d'un contenu : affichage des numéros de versions et des fusions des copie de travail.

A chaque version majeure d'une publication, la date de dernière version majeure est mise à jour. Cette nouvelle date peut être exploitée comme toutes les autres dates disponibles sur les publications (date de création, modification, publication, d'expiration, archivage). Par exemple, il devient possible de paramétrer une portlet Requête/Itération pour qu'elle présente les contenus triés par date de modification majeure.

Screenshot PubCtxMenu

Fig. 12. Choix du tri par modification majeure dans une portlet Requête/Itération.

Lors du dépôt d'une nouvelle version d'un document, le contributeur peut préciser si il s'agit ou non d'une version majeure.

Screenshot PubCtxMenu

Fig. 13. Dépôt d'une nouvelle version majeure d'un document.

Enfin, lors du nettoyage du store, l'administrateur peut choisir de nettoyer toutes les modifications mineures et de préserver les versions majeures.

Screenshot PubCtxMenu

Fig. 14. Possibilité de purger les modifications mineurs lors du nettoyage du store.

1.4.2 Verrouillage des documents

Depuis la version 4, JCMS permet de savoir si un autre utilisateur édite concurremment une même publication. Lorsque c'est le cas, l'icône Lock Icon apparaît. Cependant pour les documents cette fonctionnalité n'est pas bien adaptée car on souhaite généralement pouvoir verrouiller le fichier plus que les méta-données associées au fichier.

Pour répondre à ce besoin, JCMS 5.7 introduit les verrous de documents. Un collaborateur peut ainsi verrouiller un document qu'il souhaite retravailler. Tant qu'un document est verrouillé, il est le seul à pouvoir l'éditer (par WebDAV) ou le mettre-à-jour (en déposant la nouvelle version). Les autres utilisateurs peuvent néanmoins continuer à télécharger l'actuelle version du document. Une fois qu'il a terminé son travail, il déverrouille son document pour le rendre à nouveau éditable par d'autres.

Screenshot PubCtxMenu

Fig. 15. Verrouillage d'un document par le menu contextuel.

Le verrouillage Strong Lock Icon et le déverrouillage Strong Unlock Icon se font soit depuis le menu contextuel soit depuis la fiche du document. L'icône Mail Lock Icon permet d'envoyer une demande de relâchement à l'utilisateur ayant verrouillé le document.

Screenshot PubCtxMenu

Fig. 16. Indication du verrouillage d'un document.

Un administrateur peut connaître l'ensemble des documents verrouillés au sein de son espace en consultant le tableau de bord.

Screenshot PubCtxMenu

Fig. 17. Liste des documents verrouillés dans les tableaux de bord d'un espace de travail.

1.4.3 Support des documents Open Office et OpenXML

JCMS 5.7 complète sa gestion des documents bureautiques en supportant les formats Open Office (texte, tableau, présentation, graphique et formule) et OpenXML (Word, Excel et PowerPoint 2007).

Outre la reconnaissance de ces formats de document, JCMS présente les aperçus contenus dans ces documents.

Screenshot PubCtxMenu

Fig. 18. Affichage de l'aperçu d'un document OpenXML par le menu contextuel.

1.4.4 Support des vidéos flash

Le format de vidéo flash (FLV) a été popularisé par les sites de partage de vidéo tels que YouTube ou Dailymotion. JCMS 5.7 supporte les vidéos flash et propose en standard le lecteur de vidéo Flash Video Player de Jeroen Wijering. Ce lecteur est utilisé dans l'explorateur de média et lors de l'affichage détaillé d'un Document. Il est aussi utilisé pour l'écoute des fichiers MP3.

Néanmoins, l'intégration des vidéos flash dans les zone de texte riche et dans les zones de texte Wiki n'est pas encore disponible. Un module complémentaire ajoutant cette fonctionnalité est à l'étude. Les vidéos flash ne peuvent donc actuellement être intégrées qu'au travers des champs média.

Screenshot PubCtxMenu

Fig. 19. Lecteur de vidéo Flash (FLV).

1.5 Validation express

JCMS 5.7 simplifie les validations des contenus en offrant une interface de validation directement dans le gabarit de prévisualisation du contenu.

Screenshot PubCtxMenu

Fig. 20. Interface de validation depuis la prévisualisation en contexte.

1.6 Multilinguisme étendu aux types et aux workflow

Les précédentes versions de JCMS offraient déjà un support multilingue évolué (contenu multilingues, support de tous les jeux de caractères, …)

JCMS 5.7 complète son internationalisation en intégrant toutes les parties textuelles des types de publication (libellés, description, …) et des workflows (libellés, états et rôles) qui peuvent être renseignées pour toutes les langues du site.

Par ailleurs, le format de saisie des dates est maintenant celui de la langue de l'utilisateur.

Screenshot PubCtxMenu

Fig. 21. Les champs textes des types et des workflows (libellé, description, …) sont multilingues.

1.7 Photos des membres

Un champ photo est disponible sur le profil des membres. Une propriété permet d'autoriser ou non les membres à déposer eux-mêmes leur photo (via l'édition de profil). Le format recommandé est JPEG, mais les format GIF et PNG sont aussi supportés. La dimension recommandée est 140x180 pixels et JCMS assure le redimensionnement si nécessaire.

En standard, les photos apparaissent dans les profils, dans la liste des membres (en vue détaillée), dans la liste des lecteurs d'une publication, dans le menu contextuel des membres et dans le forum.

Screenshot PubCtxMenu

Fig. 22. Affichage des photos des membres dans le forum.

1.8 Catégorisation des discussions de forum

Lorsqu'un forum est catégorisé, JCMS se charge de propager cette catégorisation aux discussions qui le compose. Si la catégorisation du forum change, la catégorisation des discussions est mise à jour.

1.9 Workflow Brouillon

JCMS 5.7 propose en standard le workflow Brouillon. Il s'agit d'un workflow très simple permettant au contributeur de préparer un document avant de le publier sans pour autant qu'il y ait une étape de validation.

1.10 Prévisualisation des gabarits d’affichage

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.2

Pour assister l’utilisateur dans le choix du gabarit et de l’habillage d’une portlet, une prévisualisation est désormais proposée à l’édition d’une portlet.

Screenshot PubCtxMenu

Fig. 23. Prévisualisation du gabarit d’affichage d’une portlet Requête/Itération.

1.11 Comparaison des copies de travail

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.1

A partir de JCMS 5.7.1, il est possible de comparer la copie de travail d’une publication avec sa publication originale en sélectionnant l’option « Comparer avec l’original… » du menu contextuel. Ceci permet aux valideurs de repérer plus rapidement les champs modifiés à valider.

Screenshot PubCtxMenu

Fig. 24. Comparaison d'une copie de travail avec la publication originale.


1.12 Dépôt massif de documents à partir de Zip

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.3

JCMS 5.7.3 permet de faire dépôts massif de documents via une archive Zip. Pour cela, ajoutez les fichiers à déposer dans une archive ZIP au moyen d’un utilitaire tel que WinZip, WinRAR, 7-Zip, … Dans le gestionnaire des contenus ou dans l’explorateur des média faites un dépôt de fichier. Sélectionnez l’archive Zip et cochez l’option « Décompresser les fichiers Zip ». Le fichier Zip est décompressé et JCMS génère autant de Documents qu’il y a de fichiers dans l’archive Zip quelque soit leur arborescence. Tous ces fichiers sont traités comme autant de dépôt unitaire et tous les contrôles habituels sont déclenchés (quotas, RightPolicyFilter, DataController, StoreListener, …). Si des droits ou des catégories ont été sélectionnés lors du dépôt, ils seront appliqués sur chaque Document. Cette option est par défaut active dans l’explorateur de média.

Cette option doit être utilisée avec prudence. Elle peut être désactivée en positionnant la propriété file-document.allow-unzip à false.

Screenshot PubCtxMenu

Fig. 25. Option de dépôt massif par fichier Zip.


1.13 Page d'accueil portail

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.3

Dans JCMS 5.7.3, le comportement de l’icône permettant d’accéder au front office depuis un espace de travail a été revu. Par défaut, elle ramène désormais sur le portail de cet espace de travail. Si plusieurs portails existent dans cet espace de travail, c’est le premier portail rencontré en parcourant les catégories de l’espace de travail qui est retenu. Par ailleurs, un menu associé à cette icône permet de partir sur le portail des autres espaces de travail. Enfin, une nouvelle icône a été ajoutée pour revenir sur la page d’accueil du site.

Screenshot PubCtxMenu

Fig. 26. Menu ramenant de l'espace de travail au portail correspondant

2. Administration et exploitation

2.1 Monitoring

L'ancienne interface de suivi de la consommation mémoire fait place à une nouvelle interface de Monitoring. Outre la consommation mémoire, celle-ci présente, pour une période donnée, les redémarrages du site, les accès aux sites (requêtes et sessions) et le nombre d'objets présents dans le store. Toutes ces informations sont désormais persistantes et ne sont donc plus perdues lors des redémarrages. La fenêtre de persistance est paramétrable (via la propriété monitoring.history-day).

Screenshot PubCtxMenu

Fig. 27. Nouvelle interface de monitoring.

2.2 Synchronisation des groupes LDAP

JCMS 5.7 complète l'intégration avec les annuaires d'entreprises LDAP en synchronisant les groupes LDAP et les utilisateurs qui les composent. La gestion des groupes étant propre à chaque serveur LDAP, JCMS s'adapte au schéma de l'annuaire.

L'interfaçage de paramétrage LDAP de JCMS a été complétée pour le support des groupes. Des pré-configurations sont proposées pour les principaux serveurs LDAP du marché : ActiveDirectory, OpenLDAP et Sun Directory.

Screenshot PubCtxMenu

Fig. 28. Interface de configuration LDAP.

La synchronisation des groupes a lieu soit lors de la synchronisation des membres, soit lors de l'import des groupes. Les groupes JCMS comportent deux nouveaux champs : le DN (Distinguish Name) du groupe correspondant dans l'annuaire LDAP et un booléen qui précise si ce groupe doit être synchronisé ou non. Les groupes JCMS synchronisés avec LDAP apparaissent avec une icône dédiée (Group LDAP).

Grâce à ce mécanisme, il est désormais possible d'importer toute une série de compte LDAP dans JCMS. Pour cela, il suffit de créer dans JCMS un groupe correspondant au groupe LDAP à importer avec le DN de ce groupe et de déclencher la synchronisation avec le bouton "Synchroniser avec LDAP…". Durant cette synchronisation les sous-groupes et les membres rattachés seront importés dans JCMS.

2.3 Sauvegarde du store

JCMS intègre un système de sauvegarde régulière du store. Celui-ci ne dispense pas de mettre en place un véritable système de sauvegarde régulière d'un site JCMS (store, types, workflows, documents, propriétés, …). L'objectif est de fournir une sauvegarde minimum du store pour pallier aux cas extrêmes (p. ex. sauvegarde externe déficiente). Ce système de sauvegarde est par défaut actif mais il peut être désactivé (onglet Avancé de l'éditeur de propriétés).

La sauvegarde comporte 3 paramètres :

  1. La planification des sauvegardes (store.backup.schedule). Par défaut, tous les jours à 3h00 ;
  2. Le nombre de sauvegardes à préserver (store.backup.max). Par défaut, 10 sauvegardes ;
  3. Le répertoire des sauvegardes (store.backup.dir). Par défaut, WEB-INF/data/backups/.

2.4 Menu contextuel sur les membres

A l'instar du menu contextuel sur les publications ou les catégories, JCMS 5.7 fournit un menu contextuel sur les membres.

Screenshot PubCtxMenu

Fig. 29. Menu contextuel d'un membre.

2.5 Gestionnaire de modules

Le gestionnaire de modules permet d'installer, de paramétrer, d'activer et de désactiver des modules JCMS. Les modules JCMS fournissent de nouvelles fonctionnalités (p. ex. nouvelles portlets, blog, podcast, …) Ces modules peuvent être proposé par Jalios ou par d'autres acteurs (éditeurs, intégrateurs, utilisateurs, …). Chaque module possède sa propre licence d'utilisation.

Les modules JCMS sont diffusés sur le site JaliosXperience :

http://support.jalios.com/plugin/

L'interface du gestionnaire de modules affiche, dans la boîte Nouveautés, les nouveaux modules diffusés sur JaliosXperience.

Screenshot PubCtxMenu

Fig. 30. Interface de gestion des modules.

Certaines fonctionnalités des précédentes versions de JCMS ont été converties en module. Pour en disposer vous devez donc installer les modules correspondants :

2.6 DeployManager

Le DeployManager permet d'obtenir la copie d'une webapp et de déployer les changements réalisés sur cette copie. Jusqu'à présent le DeployManager devait être installé dans un répertoire frère de celui des webapps à gérer. Pour certains serveur d'application comme par exemple Websphere, cela nécessitait de regrouper la webapp et le DeployManager dans une archive EAR ce qui complexifiait le processus de déploiement.

Pour répondre à ce besoins, le DeployManager peut maintenant gérer des webapps quelle que soit leur localisation. Il suffit pour cela d'indiquer via la propriété deploy-mgr.webapps la liste des chemins des webapps.

A noter que par soucis d'homogénéité, la propriété activant le DeployManager a été renommée deploy-mgr.enabled (en remplacement de channel.dm.enabled).

2.7 Import/Export

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.2

JCMS 5.7.2 intègre une fonctionnalité d’import/export de contenus basée sur un format ouvert d’échange en XML. Un site JCMS peut importer des contenus de différents sites partenaires. Les imports peuvent se faire à la demande ou de façon planifiée. Le protocole gère l’import incrémental, la gestion des mises-à-jour, la détection des conflits, l’import des catégories et des pièces jointes associés aux contenus importés.

Grâce à ce mécanisme, il est possible de concevoir de nouvelles architectures décentralisées pour JCMS. Par exemple, des contenus rédigés et validés sur le site intranet peuvent être exportés automatiquement vers le site internet. Dans une organisation décentralisée, des contenus produits sur un référentiel commun, peuvent être importés sur différents sites du groupe.

Avec JCMS 5.7.3, de nouvelles options d’import sont proposées à l’import. Il est ainsi possible de préciser si l’on souhaite importer les catégories et les fichiers attachés. On peut aussi demander la pose de marques dans le store avant et après l’import (afin d’identifier rapidement les opérations liées à un import). Enfin, une option permet de considérer les publications importées comme des publications locales (p. ex. lors d’une migration de contenus).

L'article JCMS 5.7 : Mise en œuvre de l’Import/Export décrit comment mettre rapidement en œuvre l'import/export entre deux webapps JCMS.

Screenshot PubCtxMenu

Fig. 31. Gestionnaire des imports.

2.8 Choix de la langue principale d’un espace de travail

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.3

A partir de JCMS 5.7.3, il est possible de choisir la langue par défaut d’un espace de travail. A la création d’une publication, la langue principale est positionnée, par défaut, à la langue de l’espace.

Screenshot PubCtxMenu

Fig. 32. Choix de la langue principale d'un espace de travail.

2.9 Arrêt des contributions d’un espace de travail

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.3

Dans JCMS 5.7.3, un espace de travail peut être fermé. Ceci a pour effet d’empêcher toute édition de groupe et de publication (sauf pour l’import de contenu, cf. section 2.7).

Screenshot PubCtxMenu

Fig. 33. Arrêt des écritures dans un espace de travail.

 

2.10 JSync : Reconnexion automatique des réplicas

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.4

Dans un cluster JCMS, lorsqu’un réplica démarre il se connecte automatiquement à son leader. Par contre, jusqu’à JCMS 5.7.3, si le leader redémarre, chaque replica doit être reconnecté manuellement au leader.

A partir de JCMS 5.7.4, le leader peut être configuré pour que, lors de son démarrage, un message JSync soit envoyé forçant chaque réplica à se reconnecter. Pour activer cette fonctionnalité, il suffit de saisir une durée (p. ex. 5 secondes) dans la propriété Reconnexion des réplicas au démarrage.

Par défaut, la liste des réplicas à contacter est automatique alimentée d’après les précédentes connexions. Elle peut aussi être définie explicitement dans l’éditeur de propriétés.

Screenshot PubCtxMenu

Fig. 34. Paramétrage de la reconnexion automatique des réplicas.

 

3. Evolutions techniques

3.1 Les URL descriptives

Afin d'améliorer le référencement des sites JCMS par les moteurs de recherche, la construction des URL d'affichage des publications et des catégories a été revue et contient désormais le titre de la publication. Le moteur d'indexation augmente en effet le classement d'une page en fonction des mots présents dans l'URL.

Dans les précédentes versions de JCMS ces URL étaient de la forme /display.jsp?id=identifiant. Avec JCMS 5.7, ces URLs sont de la forme /jcms/identifiant/le-titre-de-la-publication. Le préfixe des URL (/jcms/) et le format de la partie textuelle (/le-titre-de-la-publication) sont totalement paramétrables. Il est par exemple possible d'ajouter le nom d'une catégorie, la date, etc. Ces paramétrages se font via les propriétés descriptive-url.* présentent dans le fichier WEB-INF/data/webapp.prop.

3.2 Segmentation des répertoires archives et documents

Afin de supporter des grandes volumétries de documents du même type (p. ex. images JPEG, documents MS Word, …) et d'archives, les répertoires contenants ces fichiers sont subdivisés en sous répertoires (année / mois et sous-répertoires si besoins).

3.3 Indexation native

Jusqu'à présent, l'indexation des documents bureautiques était prise en charge par l'application JCMS Universal. Cependant, celle-ci ne fonctionne que sur Windows ce qui complexifie parfois l'architecture des environnements de production JCMS. Avec JCMS 5.7, l'indexation peut-être réalisée nativement pour les principaux types de documents : MS-Office, OpenOffice, PDF, texte et HTML. JCMS Universal peut néanmoins être encore nécessaire si la conversion PDF est nécessaire ou si il faut prendre en charge plus de types de documents.

Pour bénéficier de l'indexation native, téléchargez et installez le Module Indexation des fichiers.

3.4 Cryptage des mots de passe dans les propriétés

Les mots de passes contenus dans les propriétés (mot de passe du serveur LDAP et du serveur SMTP) sont cryptés à l'enregistrement. Ce cryptage n'est pas incassable mais empêche à un utilisateur mal veillant d'accéder à ces informations simplement en consultant le fichier des propriétés.

3.5 Fusion des fichiers JavaScript et CSS

Afin d'améliorer les performances d'accès, JCMS 5.7 offre une option de fusion des fichiers CSS et JavaScript. Lorsque ces options sont activées, l'ensemble des fichiers CSS et des fichiers JavaScript associés à une page sont compactés en un seul fichier, ce qui réduit notablement le nombre de requêtes HTTP que doit effectuer le navigateur pour afficher une page.

Ces deux options, par défaut actives, sont débrayables depuis l'éditeur de propriétés (onglet Avancé).

3.6 Filtrage du journal des évènements

Les évènements listés dans le journal des évènements peuvent être filtrés par niveaux (information, avertissements, erreurs, …)

Screenshot PubCtxMenu

Fig. 35. Filtrage du journal des évènements.

3.7 Paramétrage du site pour mobile

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.3

A partir de JCMS 5.7.3, la propriété small-device.home permet de paramétrer l’URL d’accueil dediée aux navigateurs mobile (PDA, i-mode, …) Lorsqu’un navigateur de ce type accède à la racine du site, il est redirigé sur l’URL définie dans cette propriété. La redirection par défaut se fait vers custom/jcms/indexPDA.jsp.

JCMS 5.7.4 améliore la détection des navigateurs mobiles en prenant en charge, en plus de Windows Mobile et i-Mode, les navigateurs OperaMini, iPhone et Android.

3.8 Actualité JaliosXperience

Dans l'espace d'administration, une nouvelle boîte présente des actualités issues de JaliosXperience (une propriété permet de désactiver cette fonctionnalité).

Screenshot PubCtxMenu

Fig. 36. Affichage des informations issues de JaliosXperience dans l'espace d'administration.

4. Nouveau modèle de développement

4.1 Les modules (plugins)

JCMS 5.7 introduit un mécanique d'extension par module (ou plugin). Un module permet d'apporter ou de modifier des fonctionnalités à JCMS : portlet, type de contenu, gabarit, skin, tag, règles de gestions (DataController, StoreListener, QueryListener, AuthenticationHandler, …)

L'objectif des modules est d'offrir un meilleur packaging et déploiement des développements spécifiques. Ainsi lors d'une migration de versions de JCMS, dans le cas nominal, il suffira de reprendre les données et l'ensemble des modules et de les déployer dans la nouvelle version de JCMS.

Les modules permettent aussi à d'autres acteurs que Jalios (éditeurs, intégrateurs et utilisateurs) de diffuser leur propres développements. Par ailleurs, Jalios encourage les développeurs à encapsuler les développements spécifiques menés sur une webapp JCMS sous forme de modules.

Un module JCMS se présente sous forme d'une archive zip contenant un descripteur, le fichier plugin.xml, et toutes les ressources nécessaires au fonctionnement du module. Le fichier descripteur contient à la fois les informations sur le module (son nom, sa description, sa version, ses dépendances, …) et les règles de déploiement.

Le gestionnaire de modules repose sur le principe de l'injection de dépendance (aussi appelé Inversion de contrôle) popularisé par les frameworks tels que Spring ou PicoContainer. Ce principe à l'avantage d'assurer un couplage faible entre le module et JCMS. Ainsi, un module peut être ajouté et retiré simplement sans avoir à compiler des classes ou à éditer des fichiers.

JCMS a été entièrement revu pour être extensible par module. Ainsi les modules peuvent intervenir dans la majeure partie de la mécanique interne de JCMS, comme par exemple :

  • La gestion de l'authentification (AuthenticationHandler)
  • La gestion des droits (RightPolicyFilter)
  • La gestion des données (StoreListener et DataController)
  • La gestion du portail (PortalPolicy)
  • La gestion de l'indexation (LuceneSearchEnginePolicy)
  • Le rendu des champs Wiki (WikiPolicyFilter) et Wysiwyg (WysiwygPolicyFilter)

Les modules peuvent aussi venir s'insérer dans la plupart des interfaces de JCMS grâce au principe des points d'inclusion, appelés targets. Plusieurs modules peuvent s'insérer dans les mêmes targets. Pour s'insérer dans une target donnée, un module indique, dans son descripteur, le fichier JSP à inclure. JCMS 5.7 possède une quarantaine de points d'inclusion parmi lesquels :

  • L'entête de la page HTML
  • Le pied de la page HTML
  • Chacune des boîtes de la zone d'administration
  • Les entêtes et pieds de page de l'espace d'administration et des espaces de travail
  • Les tableaux de bords
  • Avant/après chaque portlet
  • Avant/après chaque skins
Screenshot PubCtxMenu

Fig. 37. Affichage des targets de l'espace d'administration (en rouge)

Pour en savoir plus, consultez l'article JCMS 5.7 : Développement de modules.

4.2 API

4.2.1 Nouvelle API d'authentification

Pour permettre l'injection de règle d'authentification, l'API des AuthenticationManager a été remplacée par celle des AuthenticationHandler. Il est ainsi possible de disposer de plusieurs règles d'authentification chaînées (p. ex. annuaires LDAP, base de données, SSO, …).

Pour en savoir plus consultez l'article JCMS 5.7 : Authentifications spécifiques avec les AuthenticationHandler.

4.2.2 Nouvelle mécanique d'upload

La gestion des upload de document à été entièrement réécrite afin de faciliter le développement de formulaire avec des champs File. Les uploads sont traités en amont du FormHanlder via la MultipartFilter. Les fichiers sont disponibles via la méthode getUploadedFileList() héritée de JcmsContext.

4.2.3 Aide au développement Ajax

La classe AbstractJcmsAjaxContext permet de développer simplement des handlers Ajax pour JCMS. Cette classe fournit toutes les données de contexte qui peuvent être nécessaires pour les traitements à réaliser.

4.2.4 ExtraDataMap

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.1

Toutes les données gérées par JCMS de disposent désormais d’un nouveau champ persistant, extraDataMap, qui permet de stocker des informations additionnelles.

Grâce à ce mécanisme, un module peut ajouter dynamiquement, de nouveaux champs à un type de donnée existant. Par exemple, un module de géolocalisation pourrait ajouter les champs longitude et latitudes au types Member et Workspace ainsi qu’à certains types de contenu.

Les extraData peuvent aussi être utilisées programmatiquements. Par exemple, un DataController, au moment du dépôt d’un document, peut faire une signature MD5 du fichier et la stocker dans l’extraDataMap du document.

Les extraData constituent, dans une certaine mesure, une alternative aux extensions.

L'article JCMS 5.7 : Développer avec les ExtraData détaille ce nouveau mécanisme.

4.2.5 PortletCollection

Attention, cette fonctionnalité est disponible à partir de JCMS 5.7.2

Les portlets dérivant de PortletCollection (PortletJSPCollection, PortletLigne, PortletColonne), dispose d’une nouvelle interface permettant de les nommer les sous-éléments. Ceci simplifie la composition dans le gabarit d’affichage. Les portlets peuvent être incluses via leur nom au lieu de leur numéro d’index. Il est possible d’associer un même nom à plusieurs portlets pour les inclure ensemble (p. ex. Sidebar, Footer, …). L’inclusion des portlets se fait grâce aux méthodes getPortlet() et getPortlets() disponibles dans la JSP.

Exemple :

On déclare une portlet JSP Collection contenant 3 sous-éléments nommés :

 

Screenshot PubCtxMenu

Fig. 38. Déclaration des sous-éléments de la Portlet JSP Collection

Dans la JSP associée, on inclut ces portlets via leur nom :

<%@ include file='/jcore/doInitPage.jsp' %>
<%@ include file='/jcore/portal/doPortletParams.jsp' %>
<% ServletUtil.backupAttribute(pageContext , "ShowChildPortalElement"); %>
<%@ include file='/types/AbstractCollection/doIncludePortletCollection.jsp'%>
<% ServletUtil.restoreAttribute(pageContext , "ShowChildPortalElement");%>
<div id='page'>
<div id='feedrss'><%= getPortlet(bufferMap,"feedrss") %></div>
<div id='search'><%= getPortlet(bufferMap, "search") %></div>
<div id='content'><%= getPortlet(bufferMap,"fulldisplay") %></div>
</div>

4.2.6 Quelques nouvelles méthodes

 

Classe Méthodes Description
Data getDisplayUrl(…)

Retourne l'URL d'affichage de cette donnée

Data getCaddyComparator()

Retourne un comparateur basé sur la présence de la donnée dans le caddy.

Category performImport(…)

Effectue un import de catégorie

Category nameExists(…)

Test si une catégorie existe avec le même nom sous une branche donnée.

Member getPhoto()

Retourne le chemin de la photo du membre.

Member hasPhoto()

Test si ce membre à une photo

Member addGroup() / removeGroup()

Ajoute / retire le membre d'un groupe

Member getDelegateMemberSet()

Retourne l'ensemble des membres autorisés à utiliser se compte en tant que délégué.

Group isLdapGroup()

Test si ce groupe est un groupe issu d'une synchronisation LDAP

Group getLastLdapSynchro()

Retourne la date de la dernière synchronisation LDAP de ce groupe.

Group getLdapDN()

Retourne le DN LDAP de ce groupe.

Publication getMajorVersion()

Retourne le numéro de version majeure de la publication

Publication getMinorVersion()

Retourne le numéro de version mineure de la publication

Publication getVersionString()

Retourne la version de la publication (e.g. "2.4")

Publication getUdate()

Retourne la date de dernière modification majeure

Publication getUdateComparator()

Retourne un comparateur basé sur la date de dernière modification majeure.

Publication getMergeDate()

Retourne la date de la dernière fusion avec une copie de travail

FileDocument hasStrongLock()

Test si le document a un verrou

FileDocument getStrongLockDate()

Retourne la date de pose du verrou

FileDocument getStrongLockMember()

Retourne le membre ayant pris le verrou

FileDocument getUploadDate()

Retourne la date du dernier dépôt de fichier

FileDocument getLockedDocumentSet()

Retourne tous les documents ayant un verrou (filtré par workspace et par membre)

JcmsUtil getDisplayUrl(…)

Retourne l'URL d'affichage d'une donnée (avec plus d'options que la méthode de la classe Data)

4.3 Nouveaux Tags

4.3.1 Le tag <jalios:link>

Ce nouveau tag produit un lien avec l'URL d'affichage d'une donnée (publication, catégorie, …). Ainsi, dans les JSP, il ne faut plus écrire :

<a href='display.jsp?id=<%= pub.getId %>'><%= pub.getTitle(userLang) %></a>

Mais simplement

<jalios:link data='<%= pub %>' />

Il peut être utilisé en tant que body tag :

<jalios:link data='<%= pub %>' >Voir la publication</jalios:link>

4.3.2 Le tag <jalios:url>

Ce tag est similaire au précédent mais ne produit que l'URL (sans la balise <a>).

Exemple :

<jalios:url data='<%= pub %>' />

4.3.3 Le tag <jalios:edit>

Le tag <jalios:edit> a été modifié pour être utilisable en tant que body tag. Il est ainsi possible d'utiliser ce tag pour produire un lien d'édition autour d'un texte (ou d'une image) donnée.

Exemple :

<jalios:edit class='Article'>Ajouter un article</jalios:edit>

4.4 Nouvelles bibliothèques Java et JavaScript

JCMS 5.7 intègre les nouvelles versions de ces bibliothèques :

  • JFreeChart 1.0.4
  • Prototype 1.5-rc3
  • Scriptaculous 1.7
  • TinyMCE 2.1.0

5. Remarques techniques pour les migrations

5.1 Migration des types de publication

Le format d'enregistrement des types de publication et des extensions a changé dans JCMS 5.7. Dans les précédentes versions, à chaque type de publication correspondait un fichier XML du répertoire WEB-INF/data/types. Dans JCMS 5.7, un sous-répertoire est associé à chaque type de publication. Ce répertoire contient 2 fichiers XML :

  1. un fichier MonType.xml contenant la structure du type
  2. un fichier MonType-template.xml contenant la liste des gabarits du type
Cette séparation entre structure et gabarit est destinée à simplifier les phases de migration de version JCMS.

La conversion de l'ancien vers le nouveau format est automatiquement prise en charge par JCMS lors de son démarrage. Tous les anciens fichiers Type.xml situés dans WEB-INF/data/types/ sont convertis puis déplacés dans le répertoire WEB-INF/data/oldTypes/.

La conversion des types existants (p. ex. portlets, article, brève, …) est traitée de façon particulière : les gabarits sont fusionnés et la structure de l'ancien type est sauvegardé dans le nouveau répertoire du type avec le nom type-custom.xml.

5.2 Migration des workflows

Le format des d'enregistrement des workflows a aussi évolué. Dans les précédentes versions, tous les workflows étaient stockés dans le fichier WEB-INF/data/workflow.xml. Avec JCMS 5.7, les workflows sont enregistrés séparément dans le répertoire WEB-inf/data/workflows/.

La conversion de l'ancien vers le nouveau format est automatiquement prise en charge par JCMS lors de son démarrage. L'ancien fichier workflow.xml est ensuite renommé en workflow.xml.old.

5.3 Passage aux URL descriptives

Pour bénéficier des URL descriptives (cf. section 3.1), tous les JSP issues de développements spécifiques (comme par exemple les gabarits de type ou de portlet), doivent être modifiés. Tous les liens faisant appel directement à display.jsp doivent être réécrits avec les tag <jalios:link> et <jalios:url> (cf. section 4.3).

A noter, que le passage aux URL descriptives n'est pas obligatoire. Les URL basées sur display.jsp continuent à fonctionner et sont redirigées vers le nouveau format d'URL. Ce passage est néanmoins fortement recommandé pour les sites Internet.

Si vous utilisez un serveur web en frontal du serveur d'application (par exemple Apache), il faut déclarer le mapping pour le préfixe utilisé par les URL descriptive.

5.4 Evolution sur les types de publication

5.4.1 Le type Article

Le champ Contenu (content) du type Article a été modifié et passe du type Zone de texte à Zone de texte riche.

5.4.2 La Portlet Recherche

Portlet Recherche (PortletSearch) possède un nouveau champs Filtre de recherche (query) qui permet de préciser un pré-filtrage de la recherche (p. ex. des catégories, des types de contenu, un intervalle de temps, …). En contre partie, l'ancien champ replaceFileDoc n'existe plus. Les gabarits de Portlet Recherche spécifiques doivent donc être mis-à-jour et les portlets existantes rééditées en conséquence.

5.4.3 PortalInterface

La variable portal définie par doPortletParams.jsp est désormais de type PortalInterface (et non Portal). Les gabarits utilisant cette variable être mis à jour en conséquence. C'est par exemple le cas des gabarits de la Portlet Authentification (PortletLogin).

5.5 Serveurs d'applications compatibles

JCMS 5.7 utilise l'API Servlet 2.4. Un serveur d'applications compatible avec cette API est donc requis, comme par exemple :

  • Tomcat 5.0
  • Tomcat 5.5
  • Websphere 6
  • Weblogic 8
  • Resin 3

En conséquence, JCMS 5.7 n'est plus compatible avec les serveurs d'applications Resin 2 et Websphere 5.

5.6 Développement en modules

Certains développements spécifiques doivent être réécrit sous forme de module.

Le contrôle de l'authentification via l'ancienne mécanique des AuthenticationManager doit être réécrit avec la nouvelle API des AuthenticationHandler et déclaré dans un module.

De même, la surcharge de politiques particulières comme par exemple celle des droits (RightPolicy) doit aussi se faire par déclaration dans un module.

Par ailleurs, la classe de JcmsInit ne devrait plus être modifiée. L'ajout de StoreListener, DataController, QueryFilter, … devrait se faire par déclaration dans un module.

Enfin, il est fortement conseillé, lorsque cela est possible, de ne plus modifier les JSP de JCMS mais de s'y insérer via les targets (cf. section 4.1).

En résumé...

JCMS 5.7 apporte de nombreuses nouveautés fonctionnelles pour tous les utilisateurs de JCMS : délégation de droits, synchronisation LDAP, gestion documentaire enrichie, nouvel éditeur Wysiwyg, gestionnaire de modules (plugins), .... L'ergonomie a aussi été notablement améliorée grâce, entre autre, à l'usage de la technologie Ajax. Cet article intègre aussi des nouveautés issues de JCMS 5.7.1, 5.7.2, 5.7.3 et 5.7.4.

Sujet
Produits
Publié

18/03/08

Rédacteur
  • Olivier Dedieu

Table des matières

  1. 1. De nouvelles fonctionnalités pour les contributeurs
    1. 1.1 Des interfaces plus ergonomiques
    2. 1.2 Délégation des droits
    3. 1.3 Un nouvel éditeur de texte riche
    4. 1.4 Gestion documentaire enrichie
    5. 1.5 Validation express
    6. 1.6 Multilinguisme étendu aux types et aux workflow
    7. 1.7 Photos des membres
    8. 1.8 Catégorisation des discussions de forum
    9. 1.9 Workflow Brouillon
    10. 1.10 Prévisualisation des gabarits d’affichage
    11. 1.11 Comparaison des copies de travail
    1. 1.12 Dépôt massif de documents à partir de Zip
    1. 1.13 Page d'accueil portail
  2. 2. Administration et exploitation
    1. 2.1 Monitoring
    2. 2.2 Synchronisation des groupes LDAP
    3. 2.3 Sauvegarde du store
    4. 2.4 Menu contextuel sur les membres
    5. 2.5 Gestionnaire de modules
    6. 2.6 DeployManager
    7. 2.7 Import/Export
    8. 2.8 Choix de la langue principale d’un espace de travail
    9. 2.9 Arrêt des contributions d’un espace de travail
    1. 2.10 JSync : Reconnexion automatique des réplicas
  3. 3. Evolutions techniques
    1. 3.1 Les URL descriptives
    2. 3.2 Segmentation des répertoires archives et documents
    3. 3.3 Indexation native
    4. 3.4 Cryptage des mots de passe dans les propriétés
    5. 3.5 Fusion des fichiers JavaScript et CSS
    6. 3.6 Filtrage du journal des évènements
    7. 3.7 Paramétrage du site pour mobile
    8. 3.8 Actualité JaliosXperience
  4. 4. Nouveau modèle de développement
    1. 4.1 Les modules (plugins)
    2. 4.2 API
    3. 4.3 Nouveaux Tags
    4. 4.4 Nouvelles bibliothèques Java et JavaScript
  5. 5. Remarques techniques pour les migrations
    1. 5.1 Migration des types de publication
    2. 5.2 Migration des workflows
    3. 5.3 Passage aux URL descriptives
    4. 5.4 Evolution sur les types de publication
    5. 5.5 Serveurs d'applications compatibles
    6. 5.6 Développement en modules