Nous souhaitons profiter de cette occasion pour vous rappeler l'importance d'appliquer régulièrement les patch plugins à vos systèmes.

Malheureusement, le patch plugin de juillet a rencontré quelques dysfonctionnements en SP7, ce qui rend d'autant plus crucial le déploiement de la mise à jour de septembre.

Vous pouvez télécharger le dernier patch plugin :

30/09/2024 à 18:04

JPlatform 10 SP5 - Les principales nouveautés
Documentation Fiches des nouveautés JPlatform 10 SP5 Présentation
Olivier Dedieu
10 juin 2021 628 vues
En résumé...

Cet article présente les principales nouveautés de JPlatform 10 SP5.

Les services pack de JPlatform livrent habituellement des lots de correctifs et de petites évolutions fonctionnelles et techniques.

JPlatform 10 SP5 est une release importante. Elle intègre plus de 260 correctifs de bugs, plus de 190 améliorations et une trentaine de nouveautés.

JPlatform 10 SP5 apporte un renouveau important sur l'UX/UI avec des nouvelles interfaces simplifiées, épurées et plus accessibles.

Cette version introduit aussi de nouvelles fonctionnalités attendues comme la corbeille, les liens publics sécurisés, la confirmation de lecture, ...

Enfin JPlatform 10 SP5 couvre aussi les domaines plus techniques liés à l'administration, l'exploitation, la sécurité et les développements.


Les services pack de JPlatform livrent habituellement des lots de correctifs et de petites évolutions fonctionnelles et techniques.

JPlatform 10 SP5 est une release importante. Elle intègre plus de 260 correctifs de bugs, plus de 190 améliorations et une trentaine de nouveautés :

https://issues.jalios.com/browse/JCMS/fixforversion/14223

JPlatform 10 SP5 apporte un renouveau important sur l'UX/UI avec des nouvelles interfaces simplifiées, épurées et plus accessibles.

Cette version introduit aussi de nouvelles fonctionnalités attendues comme la corbeille, les liens publics sécurisés, la confirmation de lecture, ...

Enfin sur JPlatform 10 SP5 couvre aussi les domaines plus techniques liés à l'administration, l'exploitation, la sécurité et les développements.

1. Nouvelles interfaces

Offrir une expérience efficace, efficiente et satisfaisante à tous les utilisateurs est pour Jalios une priorité. Le défi est d’autant plus grand que JPlatform est fortement personnalisable tant dans la structure des données, les traitements que les interfaces.

JPlatform 10 SP5 poursuit dans ce sens et apporte des améliorations importantes sur l’ensemble des interfaces.

1.1 Harmonisation des applications

Depuis que JPlatform 10 est sorti en octobre 2017, les applications se sont multipliées. Il y a en a désormais plus de 40 disponibles. Les applications couvrent des usages très variés : blog, wiki, conversations, gestion de projet, veille, formation, …

Les applications ont une structure de mise en page commune. Elles se composent d’un entête (header), d’une zone latérale à gauche (sidebar) et d’une zone centrale (body).

mceclip0 - 2021-06-06 21h56m45s

Bien que cette structure soit commune, au fil du temps et du fait de la multiplication des usages, des variations ont commencé à émerger au sein de ses trois grandes zones. Des éléments sont apparus dans certains headers. La nature et l’organisation des éléments dans les sidebar ont évolué d’une application à l’autre. Et au centre de l’application, des éléments communs telles que les tableaux ou les cartes se sont aussi mis à légèrement diverger entre les applications. Un travail profond a donc été entrepris afin d’harmoniser l’ensemble des applications.

Certains changements, portant sur l’ergonomie (UX), doivent être opérés directement dans la structure même des applications. Par exemple, les onglets présents dans le header sont réintégrés dans le body de l’application.

L’harmonisation concerne aussi l’apparence. JPlatform offre une multitudes de fonctions pour de nombreux usage. Les interface aident à ce que cette richesse fonctionnelle n’engendre pas un sentiment de confusion ni de complexité. Aussi, le style des applications a été épuré, éclairci et simplifié.

JPlatform 10 SP5 marque donc une première étape importante dans  cette harmonisation. Elle porte sur les applications livrées en standard de JPlatform (la recherche, les alertes et recommandations, le catalogue des applications, …) et en partie les applications des modules.

Exemple d’application avec des cartes :

Catalogue des applications en 10 SP4 :

mceclip0 - 2021-06-03 11h31m52s

 

Catalogue des applications en 10 SP5 :

mceclip1 - 2021-06-03 11h31m59s

Comme on peut le voir, en 10 SP5, le header a été réduit, la sidebar est plus claire, le logo de l’application est en couleur et visuellement identique à celui qui se trouve dans le lanceur d’application. Le fond de l’application est blanc. Le ratio des cartes verticales a été normalisé.

Exemple d’application avec un tableau :

Application JDrive en 10 SP4 :

mceclip4 - 2021-06-03 11h34m07s

 

Application JDrive en 10 SP5

mceclip3 - 2021-06-03 11h32m43s

 

Sur ce deuxième exemple, la présentation des résultats et le tableau ont été épurés (moins de traits) et condensé en largeur. Les icônes d'actions présents sur chaque ligne ont été regroupés dans un menu accessible par l'icone "...".

Exemple sur la recherche :

Résultats de recherche en 10 SP4 :

mceclip5 - 2021-06-03 11h35m30s

 

Résultats de recherche en 10 SP5 :

mceclip0 - 2021-06-03 12h06m26s

Dans la recherche, les rendus des résultats ont aussi été allégés et homogénéisés : fond blanc, moins de bordure, zone du visuel à gauche toujours présente. Les onglet d'ouvertures vers la recherches des personnes et des espaces ont été déplacés dans la barre des résultats.

Ces améliorations vont continuer et seront progressivement disponibles au fur et à mesure de la ressortie des modules proposant des applications. Néanmoins, afin de ne pas attendre ces ressorties, JPlatform 10 SP5 est accompagné du module RefreshUI 2.0, qui applique dès à présent le nouveau style aux applications des modules.

1.2 Harmonisation des interactions

Les messages d’interaction avec l’utilisateur ont eux été harmonisés. Des petits personnages récurrents font leur apparition dans les interfaces. Ils accueillent l’utilisateur lorsqu’il s’identifie :

mceclip7 - 2021-06-03 11h37m52s

Ces personnages sont là pour humaniser les interfaces et donner du feedback à l’utilisateur, comme lorsqu’il faut accueillir l’utilisateur dans une application :

mceclip9 - 2021-06-03 11h38m20s

mceclip10 - 2021-06-03 11h38m51s

 

Ou pour faire un retour à l’utilisateur, par exemple lorsqu’il a lu toute ses alertes :

mceclip11 - 2021-06-03 11h39m11s

 

Ou si il n’y a aucun résultat dans une application :

mceclip8 - 2021-06-03 11h38m08s

 

Vous pouvez remplacer ces différents personnages en surchargeant les propriétés suivantes : 

icon.no-result:          icon: character-sorry
icon.character-hello:    images/jalios/characters/hello.png
icon.character-sorry:    images/jalios/characters/sorry.png
icon.character-question: images/jalios/characters/question.png
icon.character-perfect:  images/jalios/characters/perfect.png

1.3 Améliorations ergonomiques

Affichage du mot de passe lors de la saisie

Dans la mire d’authentification et dans toutes les interfaces où des saisies de mot de passe sont attendues, l’utilisateur peut cliquer sur l’icône au bout du champ pour vérifier ce qu’il a tapé.

mceclip12 - 2021-06-03 11h39m27s

Recherche dans les menus déroulants

Dans les interfaces comportant un menu déroulant, il est désormais possible de rechercher dans les options proposées en tapant du texte :

mceclip13 - 2021-06-03 11h39m52s

Modale à étapes : accès directe une étape

Lorsque vous utilisez une modale à étapes pour créer ou modifier un contenu, les étapes sont désormais cliquables :

  • Lors d'une création, vous pouvez revenir à n'importe quelle étape antérieure à l'étape courante
  • Lors d'une mise à jour, vous pouvez aller directement à n'importe quelle étape.

Double confirmation

Avant chaque suppression JPlatform demande une confirmation. Cette confirmation est maintenant doublée. 

mceclip14 - 2021-06-03 11h40m21s

mceclip15 - 2021-06-03 11h40m24s

Pour en savoir plus sur la mise en oeuvre, consultez https://docs.jalios.com/jplatform10/jcms/fr/front-end/javascript/double-confirmation-160820

Nouveau sélecteur de couleur

Un nouveau sélecteur de couleur a été intégré. Il apparaît sur les champs de type Couleur. Il propose une palette comportant les 56 nuances utilisées par JPlatform. Vous pouvez intégrer votre propre palette. 

mceclip16 - 2021-06-03 11h40m46s

Sauvegarde de l’avancement de lecture sur une vidéo

Lorsque vous visionnez une vidéo, votre avancement est mémorisé. Ainsi sur des vidéos longues, si vous arrêtez et reprenez la lecture plus tard vous serez automatiquement repositionné là où vous en étiez ; et cela quel que soit le navigateur utilisé. Vous pouvez ainsi commencer la lecture d’une vidéo sur votre PC puis la poursuivre sur votre smartphone.

La progression de lecture est enregistrée lorsque :

  • La vidéo est mise en pause.
  • L'utilisateur quitte la page avec une vidéo en cours.

L'enregistrement de la progression est supprimé lorsque la vidéo touche à sa fin (temps restant inférieur à 5% du temps total de la vidéo ou bien s’il reste 5s à la vidéo). Ceci est paramétrables via les propriétés media.template.mejs-video.options.media-progression.

Recherche : les médias non catégorisés n'apparaissent plus

Lorsqu'on fait une recherche (ou qu'une portlet recherche des contenus), les media non catégorisés n'apparaissent plus. Ceci permet notamment de ne plus voir apparaître des images issues de copier/coller ou n'ayant pour but que de l'illustration des contenus.

Ce fonctionnement est généralisé pour toutes recherches impliquant des Medias (topbar, recherche complète, recherche dans un espace collaboratif, Portlet Liste de publications, ...). Il ne reste plus que deux interfaces de recherche dans lesquelles les medias non catégorisés apparaissent : le back-office de l’espace de travail et l’explorateur de média.

Recherche sur les membres étendue dans l’organisation et la localité

La recherche textuelle des membres porte désormais également sur l'organisation, la ville et le département/région. Chacun de ces champs bénéficie d'un calcul de pertinence différent pour hiérarchiser au mieux l'information. Les champs ville et département font l'objet d'une nouvelle indexation dédiée dans Lucene. Une ré-indexation des membres est nécessaire pour en bénéficier.

Création depuis sélecteur de publication

En 10 SP4, le sélecteur de publication avait été revu pour être plus simple d’usage. Mais, suite à ces évolutions, il n’était plus possible de créer un contenu ou déposer des documents à la volée. JPlatform 10 SP5, comble ce manque avec le bouton "Ajouter" :

mceclip17 - 2021-06-03 11h41m28s

1.4 Portlet Liste de publications : choix des publications sans édition du portail

La portlet Liste de publication peut être configurée pour un affichage dynamique (en fonction de critères de recherche) ou pour afficher une liste de publication choisie. Dans ce dernier cas, jusqu’à présent pour mettre à jour cette liste de publication il fallait passer en édition du portail, retrouver la portlet, l’éditer, mettre à jour la liste de publication et enregistrer. Afin de rendre cette action à la portée du plus grand nombre, la modification se fait maintenant en cliquant sur l’icône "+" de la portlet et la modale listant les publications apparaît :

mceclip19 - 2021-06-03 11h51m15s

2. Accessibilité

JPlatform vise à donner un accès adapté à chaque utilisateur, selon son contexte. Le respect des critères d’accessibilité est donc un enjeu important pour Jalios. Dans JPlatform 10 SP5, de nombreuses améliorations concernant l'accessibilité ont été introduites. Nous vous présentons les principales nouveautés dans cette section.

2.1 Support des vidéos sous-titrées

Sur toutes les vidéos déposées, il est possible d’adjoindre des sous-titres. Ces sous-titres doivent être au format SRT ou VTT. Il est possible de déposer un fichier de sous-titres pour chaque langue gérée sur la plateforme. Une fois les sous-titres déposés, le lecteur vidéo propose de les activer en cliquant sur l’icône «CC».

mceclip1 - 2021-06-03 12h08m07s

2.1 Langue par défaut

JPlatform peut être utilisé en 16 langues. L’une d’entre elles, doit être déclarée comme langue principale. C’est par exemple dans cette langue que les champs obligatoires devront être renseignés. Et jusqu’à présent, lorsqu’un contenu ou un des éléments d’interface n’était pas disponible dans la langue de l’utilisateur, JPlatform se rabattait sur la langue principale. Or lorsque la langue principale est par exemple le français, et qu’un utilisateur non francophone consulte le site, si des contenus ou des interfaces ne sont pas traduites dans sa langue, il peut être préférable de se rabattre sur l’anglais.

C’est désormais ce qu’il se passe avec JPlatform10 SP5. En plus de la langue principale, il y a la langue par défaut (qui est par défaut positionnée à l’anglais). Les contenus et les éléments d’interface non traduits dans la langue de l’utilisateur sont affiché dans la langue par défaut, c'est-à-dire en anglais.

2.3 Hiérarchie des titres

Dans une page web, il est possible de structurer le contenu à l’aide de titres de niveaux 1 à 6. Les technologies d’assistance et les navigateurs facilitent la navigation par les titres. La plupart des lecteurs d’écran fournissent une fonctionnalité pour sauter au titre suivant.

La gestion de la hiérarchie des titres a donc été revue dans JPlatform 10 SP5 pour faciliter la navigation au sein d’une page.

Le logo du site (et donc le nom du site) est maintenant entouré par un titre de niveau 1 (H1) sauf lorsque :

  • Une publication est affichée dans la page
  • Une application est affichée
  • Un espace collaboratif est affiché
  • Lorsque le comportement est débrayer par la propriété a11y.title-hierarchy.wrap-logo-with-h1

Dans les pages portail, les portlets utilisent un titre  débrayable par la propriété a11y.title-hierarchy.portlet.wrap-skin-title-with-h2).

Pour respecter la hiérarchie des titres, les champ texte riche (wysiwyg) proposent maintenant la numérotation des titres à partir du niveau 2, le niveau 1 étant réservé au titre de la publication affichée.

Attention ! Les contenus existants ne sont cependant pas réécrits et, si besoin, doivent faire l’objet d’une renumérotation des titres.

2.4 Meilleure gestion de la navigation clavier dans la Topbar

Lorsque l'on navigue dans la Topbar, la navigation clavier n'était pas bloquée dans un composant ouvert (Recherche instantanée, Menu Publier / Administration / Alertes / Applications). Maintenant lorsqu'un menu s'ouvre, le clavier reste en boucle dans ce composant tant qu'il n’est pas fermé.

2.5 Structure HTML (Landmarks)

La gestion des landmarks a été améliorée dans les principaux composants d’affichage de JPlatform, JPortal et les applications :

  • Ajout d'une balise <main>.
  • Si une publication est affichée, ajout d'une balise <article>

2.6 Tableaux de données

Les tableaux ont aussi été enrichis pour une meilleure interprétation par les lecteurs d’écran. 

Les balises <thead>, <tbody> et caption ainsi que les attributs scope ont été ajoutés sur tous les tableaux de données du front office de JPlatform. Les tableaux présents dans les modules seront traités au fur et à mesure des nouvelles versions de ces modules.

Enfin, ces options d’enrichissement des tableaux sont aussi disponibles dans l’éditeur Wysiwyg TinyMCE (certaines nécessitent l’activation de TinyMCE 5, cf. infra).

mceclip2 - 2021-06-03 12h08m36s

mceclip3 - 2021-06-03 12h08m43s

2.7 Liens d'évitement

Les liens d’évitement (aussi appelés liens de navigation interne) sont des éléments de navigation permettant de contourner des regroupements de liens et ainsi d’accéder plus rapidement à des zones précises de la page.

On les retrouve en haut de page, si on utilise la navigation via le clavier :

mceclip5 - 2021-06-03 12h09m53s

Il est possible en de rajouter des liens d'évitement globaux (et multilingues) via les propriétés du site, dans l’onglet « Accessibilité » :

mceclip6 - 2021-06-03 12h10m01s

Par ailleurs, il est possible et recommandé de définir des liens d'évitement contextuels.

JPlatform livre les liens contextuels suivants :

  • Recherche : si la barre de recherche est disponible dans la topbar
  • Navigation : si le menu de navigation est déplié
  • Contenu : si un contenu principal est disponible dans la page, l'affichage d'un contenu dans un portail est géré par exemple.

3. Nouvelles fonctionnalités

3.1 Corbeille

Jusqu’à présent la suppression d’une publication était définitive. Même s’il est possible de restaurer les publications du store, cela créé une nouvelle publication avec un nouvel identifiant. Une confirmation est demandée lors de chaque suppression. Mais cela n'empêcher pas certains utilisateurs de supprimer par erreur des contenus ou des documents.

Désormais, la suppression d’un contenu n’est plus immédiate. Le contenu supprimé est placé dans la corbeille. Il y séjourne pendant 2 semaines avant d’être définitivement détruit. Durant cette période, l’auteur de la suppression et les administrateurs de l’espace de ce contenu peuvent restaurer le contenu en le sortant de la corbeille. Une fois restauré le contenu retrouve son état d’avant suppression.

A chaque fois que vous supprimerez un contenu, la modale de confirmation vous indique qu'il sera mis dans la corbeille :

mceclip0 - 2021-06-03 14h13m34s

 

Pour récupérer un contenu mis dans la corbeille, il suffit d'aller dans l'application Corbeille qui est disponible depuis votre lanceur d'application :

mceclip1 - 2021-06-03 14h13m50s

 

 L'application liste toutes vos suppressions. Si vous en avez beaucoup vous pouvez rechercher un contenu supprimé par espace de travail, par date, par type de contenu ou document et bien sûr en tapant du texte. L'icône "..." au bout de chaque ligne du tableau fait apparaitre un menu qui vous permet soit de retirer un contenu de la corbeille, soit de le supprimer définitivement.

mceclip3 - 2021-06-03 14h14m39s

 

Si vous affichez un contenu placé dans la corbeille, un encart vous rappelle à quelle date et par qui il a été placé dans la corbeille :

mceclip4 - 2021-06-03 14h15m25s

 

Techniquement les contenus placés dans la corbeille sont mis dans un état de workflow spécial, l'état "Dans la corbeille" (qui a la valeur 1884, en référence à l'année d'adoption de la poubelle par le conseil municipal de Paris 😉). Les contenus dans cet état ne sont alors plus visibles en front-office La restauration d'un contenu consiste donc à le rétablir dans son état précédent.

Le temps de rétention ou la portée de la corbeille peuvent être définis dans l’éditeur de propriété :

mceclip5 - 2021-06-03 14h15m36s

Pour bénéficier de la corbeille depuis l’application Explorateur, vous devez installer la version 4.3.2 du module Explorateur.

3.2 Liens publics sécurisés

Depuis de très nombreuses versions, JPlatform permet de diffuser à des personnes extérieures des documents internes en leur fournissant un "lien public".

JPlatform 10 SP5 enrichie cette fonctionnalité. Il est désormais possible de :

  • Créer un lien public sur un ou plusieurs documents
  • Être informé lorsque le destinataire a téléchargé le document
  • Contrôler la durée de validité du lien
  • Protéger le téléchargement avec un code d'accès

Créer un lien public sur un document

La création d’un lien public sur un unique document se fait comme auparavant.

L’interface de création a été revue. Elle vous demande maintenant de saisir un texte pour identifier le destinataire (p. ex. le nom de l’organisation ou de la personne à qui vous allez donner ce lien). Ce texte libre vous aidera à suivre les téléchargements. Il ne sera pas visible des destinataires.

mceclip6 - 2021-06-03 14h17m01s

 

Une fois que vous avez créé le lien, la fenêtre vous propose de l’envoyer par mail ou de simplement copier le lien.

Contrairement à la précédente implémentation, ce lien est enregistré. Et donc vous pouvez le retrouver dans la nouvelle application Liens Publics.

mceclip7 - 2021-06-03 14h17m39s

Créer un lien public regroupant plusieurs documents

Vous pouvez aussi créer un lien public regroupant plusieurs documents. La personne qui téléchargera le lien récupérera une archive ZIP contenant l'ensemble des documents.

Il y a plusieurs façons pour faire cela.

Depuis l'explorateur

Sélectionnez plusieurs documents dans l'explorateur, et choisissez "Créer un lien public..." dans le menu "Actions". Ce menu est aussi disponible par un clic-droit sur l'un des documents sélectionnés.

mceclip8 - 2021-06-03 14h18m00s

Vous pouvez aussi ajouter l'ensemble des documents d'un dossier, en choisissant "Créer un lien public..." dans le menu contextuel du dossier (clic-droit) :

mceclip9 - 2021-06-03 14h18m08s

En sélectionnant des documents avec le panier

Vous pouvez aussi utiliser le panier pour alimenter votre lien public. Recherchez les documents que vous voulez mettre dans votre lien public et ajoutez-les dans le panier. Puis allez dans l'application Liens Publics et cliquez sur le bouton "Créer un lien public...", la liste des documents sera préremplie avec les documents du panier.

En sélectionnant des documents par leur nom

Enfin vous pouvez tout simplement, créer le lien public à partir d'un premier document et en ajouter d'autres. Pour cela, dans la modale de création du lien public, cliquez sur le lien "Ajoutez une entrée" pour faire apparaître de nouveaux champs Documents. Puis sélectionnez les documents désirés.

L'application "Liens Publics"

L'application Liens Publics est accessible depuis le lanceur d'application :

mceclip10 - 2021-06-03 14h18m31s

L'application liste tous les liens que vous avez créés ("Mes liens publics"). Si vous avez les droits (donnés par une ACL) vous pouvez aussi voir l'ensemble des liens publics présents sur la plateforme ("Tous les liens publics").

Par défaut l'application affiche tous vos liens publics. Un filtre de la sidebar, vous permet de filtrer le tableau en n'affichant que les liens actifs ou que les liens expirés.

Pour chaque lien public, le tableau affiche :

  • La présence du code d'accès (icône "Clé")
  • Le ou les documents correspondants. Si il y a plusieurs documents, c'est l'icône Zip qui apparaît et en cliquant sur le petit triangle vous pouvez afficher la liste des documents
  • Le nombre de téléchargements ayant eu lieu
  • Le nom que vous avez donné au lien public
  • La date de création
  • La date d'expiration (en vert si le lien est valide et en rouge s’il est expiré)
  • Un menu d'action accessible via l'icône "..."

mceclip11 - 2021-06-03 14h18m56s

Vous pouvez modifier le paramétrage d'un lien public en cliquant sur "Modifier" dans le menu des actions.

Attention ! si un lien public a déjà été téléchargé seule une partie des informations est modifiable.

Dupliquer un lien public

Si vous devez envoyer plusieurs fois le même document (ou les mêmes documents) à plusieurs destinataires, il est recommandé de créer plusieurs liens pour avoir un meilleur suivi. Une fois le premier lien créé vous pouvez le dupliquer.

mceclip12 - 2021-06-03 14h19m23s

Information sur un lien public

En cliquant sur le menu Informations, vous retrouvez toutes les informations sur le lien public, notamment son URL d'accès et son code d'accès s’il y en a un.

Le bouton "Envoyer par mail..." vous permet de préparer un mail comme lors de la création du lien.

mceclip13 - 2021-06-03 14h19m31s

Suivi des téléchargements

Lorsqu'une personne télécharge votre lien public, vous êtes prévenu par une alerte (Liens Publics > Nouveau téléchargement). L'alerte vous permet de savoir quel lien a été téléchargé Si vous avez mis le nom de la personne ou de l'organisation dans le champ "Destinataire", vous saurez précisément qui l'a téléchargé.

mceclip14 - 2021-06-03 14h19m50s

 

Dans le tableau de l'application Lien Public, un compteur vous indique le nombre de téléchargements. Cliquez sur ce compteur pour avoir le détail des téléchargements (date et adresse IP).

mceclip15 - 2021-06-03 14h20m17s

Protéger le lien public avec un code d’accès

Afin de garantir que votre lien public ne sera pas réutilisé par n'importe qui, vous pouvez ajouter un code d'accès. Ce code sera affiché lorsque vous enregistrez le lien public.

mceclip16 - 2021-06-03 14h20m28s

mceclip17 - 2021-06-03 14h20m31s

Comme le texte le précise, il est recommandé de fournir ce code d'accès par un autre moyen de communication que celui que vous avez employé pour le document. Ne mettez donc pas ce code d'accès dans le mail que vous envoyez au destinataire. Communiquez-lui par un SMS, un appel téléphone, ...

Lorsque le destinataire cliquera sur le lien public, il arrivera sur une page lui demandant de saisir le code d'accès. Si le code est correct, le fichier sera téléchargé. Il est limité, par défaut, à 5 tentatives.

mceclip18 - 2021-06-03 14h20m37s

Les autres options de création d'un lien public

mceclip19 - 2021-06-03 14h20m47s

 

Choix du format

Comme dans la précédente version vous pouvez choisir si le téléchargement se fait sur le document original ou sur la version PDF du document (lorsque celle-ci existe)

Choix de la version

Vous pouvez désormais choisir quelle version sera téléchargée : la dernière version existante au moment du téléchargement ou bien la version qui existait lorsque vous avez créé le lien public.

Attention ! Ceci suppose que si vous faites des mises à jour après avoir créé le lien public vous préserviez bien les précédentes versions.

A noter qu'il n'est pas possible de choisir l'export PDF si on choisit la version existant au moment de la création du lien.

Nombre de téléchargements

Par défaut, un lien public ne peut être téléchargé que 5 fois. Vous pouvez changer cette valeur si vous le souhaitez.

Attention chaque téléchargement compte ! Si vous donnez le même lien à plusieurs personnes, si une personne télécharge plusieurs fois le document, cela réduira d'autant le nombre de téléchargements disponibles pour les autres personnes.

Date d'expiration

Par défaut, un lien public est valide pendant 30 jours. Cependant vous pouvez changer la date d'expiration pour chaque lien que vous créez.

3.3 Confirmation de lecture

Cette nouvelle fonctionnalité permet de demander aux lecteurs d'un contenu de confirmer qu'ils l'ont bien lu. Lorsque cette option est activée, un message apparaît sous le contenu et demande la confirmation de lecture.

mceclip20 - 2021-06-03 14h21m25s

Une fois confirmé, le message rappelle au lecteur à quelle date il a fait cette confirmation.

mceclip21 - 2021-06-03 14h21m29s

Si le contenu subit une modification majeure, alors une nouvelle confirmation de lecture sera demandée aux lecteurs.

Cette fonctionnalité est prise en charge par un enrichissement du suivi des lecteurs. Celui-ci doit donc être activé lorsqu’on active la confirmation de lecture. L’interface de suivi des lecteurs remonte aussi la date de confirmation de lecture et la version du contenu.

mceclip22 - 2021-06-03 14h21m35s

3.4 Navigation par catégories

Jusqu’à présent, lorsqu’on cliquait sur l’une des catégories présente dans la carte d’un résultat de recherche ou dans l’affichage d’un contenu, cela déclenchait une recherche globale avec cette catégorie.

Dans certains cas, on aimerait que ça ne soit pas toujours la recherche globale, mais une navigation vers une application gérant cette catégorie.

Par exemple :

  • Sur un document : ouvrir l'App Explorateur
  • Sur une page Wiki : ouvrir l'App Wiki
  • Sur une page Web : ouvrir l'App JMag
  • Dans un espace collaboratif : recherche au sein de cet espace

JPlatform 10 SP5 vous propose de choisir avec quelle fonctionnalité faire la recherche de cette catégorie. Les options proposées dépendent des modules installés, du type de contenu et de la catégorie elle-même.

Chaque module peut apporter un contexte de recherche pour les branches de catégories qu'il propose en navigation.

Exemple de rendu :

mceclip23 - 2021-06-03 14h21m48s

Actuellement les contextes de recherche proposés sont :

  • Recherche globale
  • Recherche dans l'espace courant
    • Si le module Espaces collaboratifs 7.4.1 ou plus est actif
    • Si l’affichage se fait depuis un espace collaboratif
  • Recherche dans l'explorateur
    • Si le module Explorateur 4.3.2 ou plus est actif
    • S’il s’agit d’une catégorie de cet explorateur
    • Si l’affichage se fait depuis un espace collaboratif
  • Recherche dans le blog
    • Si le module Blog 9.3.1 ou plus est actif
    • S’il s’agit d’un billet de blog
    • S’il s’agit d’une catégorie du blog auquel est associé ce billet
  • Recherche dans Wiki
    • Si le module Wiki 7.5.1 ou plus est actif
    • S’il s’agit d’une page Wiki
    • S’il s’agit d’une catégorie appartenant à l’arborescence Wiki de l’espace collaboratif associé
  • Rechercher dans JMag
    • Si le module JMag 5.3.2 ou plus est actif
    • S’il s’agit d’une Page Web
    • S’il s’agit d’une catégorie appartenant à l’arborescence des mots-clés
  • Recherche dans JLearn
    • Si le module JLearn 3.5 ou plus est actif
    • S’il s’agit d’un savoir, d’un parcours ou d’une formation
    • S’il s’agit d’une catégorie appartenant à l’une des arborescences de JLearn (thématique, niveau, mots-clés, type de contenu, …)

Note : certains de ces modules sortirons légèrement après JPlatform 10 SP5.

3.5 TinyMCE 5

JPlatform utilise l’éditeur wysiwyg TinyMCE pour les champs Texte Riche. Dans JPlatform 10 SP5 c’est toujours la version 4 qui est activée par défaut, mais la version 5.7.1 est aussi disponible. Le support de TinyMCE 4 s’arrête en décembre 2020. Il est donc recommandé de basculer sur la version 5. Si vous n’avez pas fait de configurations particulières de TinyMCE ni d’ajout de plugins TinyMCE, le passage à cette nouvelle version sera transparent.

Pour passer à TinyMCE 5, positionnez la propriété wysiwyg.version à tinymce5 (au lieu de tinymce4).

Si vous activez TinyMCE 5 et que vous utilisez le module JTranslate, vous devez installer la version 1.1.

TinyMCE 5 propose une interface rafraîchie, un support plus complet de l’accessibilité, et de nombreuses nouvelles fonctionnalités activables. Dans la configuration standard de JPlatform 10 SP5, ce sont les mêmes fonctionnalités que TinyMCE 4 qui sont proposées.

mceclip0 - 2021-06-03 17h34m24s

3.6 Portlets

Portlet Indicateur

La portlet Indicateur (issue de l’offre JReady/JCloud) fait désormais partie de JPlatform. Comme son nom l’indique, cette portlet affiche un indicateur saisi manuellement ou issu d’un calcul. Deux gabarits d’affichage sont proposés : en carte et sous forme de donuts (pour les indicateurs de type ratio ou pourcentage). 

mceclip24 - 2021-06-03 14h24m50s

Une interface d’édition rapide de l’indicateur permet de changer les valeurs (pour un indicateur manuel), les informations et la présentation.

mceclip25 - 2021-06-03 14h24m57s

En standard un indicateur dynamique basé sur un comptage de contenu est proposé. Et il est possible de proposer d’autres indicateurs dynamiques, issus de données JPlatform ou de données externes. Pour plus de détails, consultez la documentation https://docs.jalios.com/jplatform10/jcms/fr/front-end/composants/indicator-158570

 

Ignorer les contenus déjà affichés dans la page

Dans certains cas, une page portail peut comporter 2 portlets affichant les mêmes contenus. Par exemple, une portlet Carrousel affiche les actualités à la une, tandis qu’une portlet Liste de publication affiche les autres actualités. Une actualité à la une ne doit donc pas se retrouver en doublon dans la seconde portlet. Jusqu’à présent il fallait faire un développement spécifique pour gère ce cas.

JPlatform 10 SP5 introduit nouvelle option dans les Portlets Liste de publications afin d'ignorer les contenus affichés par les autres portlets Liste de publications qui ont été traités précédemment dans la page. Donc dans l’exemple ci-dessus, il faudrait activer cette option sur la seconde portlet.

mceclip26 - 2021-06-03 14h25m15s

Pagination « Voir plus »

Les Portlets Liste de publication proposent le nouveau mode de pagination "Voir plus". Avec cette pagination, un bouton « Voir plus » permet de charger les contenus suivants.

Il est possible de modifier le libellé du bouton "Voir plus" avec le champ "Libellé de pagination".

mceclip27 - 2021-06-03 14h25m21s

Portlet Wysiwyg

Les portlet Wysiwyg proposent désormais l’édition en contexte ce qui évite d’avoir à éditer la portlet (voir le JPortal) pour modifier le contenu. Par ailleurs, la barre d’icônes de l’éditeur Wysiwyg a été enrichie de 3 nouveaux menus :

  • Le choix de la police de caractères
  • Le choix de la taille de caractères
  • Le contrôle de l’interlignage (uniquement avec TinyMCE 5)

mceclip28 - 2021-06-03 14h25m32s

4. Administration

4.1 Filtrage des membres

Dans l’interface de gestion des membres en back-office, des nouveaux filtres sont proposés :

  • Membres activés/désactivés
  • Membres dont l'usage est Compte utilisateur ou Contact

mceclip0 - 2021-06-03 17h09m34s

4.2 Import des membres

Si la fonctionnalité des comptes invités du module espaces collaboratifs est activée, l'import de membre permet d'importer des comptes invités.

Cela évite à l'administrateur ou au gestionnaire des membres d'avoir à réaliser cela en plusieurs étapes (import de membres standards, mise dans le panier, ajout au groupe des invités, etc.)

mceclip0 - 2021-06-03 17h50m35s

 

Par ailleurs, durant la phase d’import, il est possible de choisir des groupes transverses.

mceclip2 - 2021-06-03 17h09m51s

4.3 Droits

Droits de mise à jour restrictifs sur les publications

Jusqu'à présent, les droits de mise à jour sur une publication étaient additifs : c'est-à-dire qu'ils permettaient d'ajouter des personnes pouvant modifier la publication en plus des personnes déjà autorisées.

Il y avait une demande de pouvoir avoir des droits restrictifs : c'est-à-dire de pouvoir choisir explicitement les membres et les groupes autorisés à modifier la publication.

Désormais dans l'onglet "Droits de modification", un menu permet de choisir entre ces deux modes :

  • Étendre les droits de modification (comme avant)
  • Restreindre les droits de modification (nouveauté)

mceclip3 - 2021-06-03 17h10m01s

Droit de gestion des catégories

Le droit de gestion d’une catégorie permet de définir sur une catégorie qui peut modifier, supprimer, créer des sous-catégories et déplacer des sous-catégories. Jusqu’à présent ce droit était défini uniquement au niveau d’un groupe ou d’un membre.

Pour plus de facilité, il est désormais possible de positionner ce droit au niveau de la catégorie elle-même. Attention, ce nouveau droit ne remplace pas l’ancien qui existe toujours. Les 2 droits sont cumulatifs.

mceclip4 - 2021-06-03 17h10m10s

4.4 Données

Tri par date de publication dans Lucene

Pour améliorer les performances de recherche et la qualité des résultats proposés, un tri par date de publication (pdate) est disponible lors de la recherche textuelle.

Pour en bénéficier une ré-indexation des publications est nécessaire.

Forcer les valeurs nulles en dernier lors des tris en base

Lors des tris décroissants en base, les publications ayant des valeurs nulles apparaissaient en premier.

Pour les bases qui supportent l'instruction NULLS LAST (SQL:99), un contournement peut être activé en positionnant la propriété workaround.hibernate.nulls-last à false.

Choix des catégories par défaut ou personnalisées

À l'instar de ce qu'il existe depuis JPlatform 10 SP4 pour le choix des droits de lecture / droits de mise à jour, l'interface de sélection des catégories a été revue en proposant :

  • le choix par défaut (les catégories par défaut du type seront alors utilisées)
  • le choix explicite (les catégories renseignées remplaceront celles par défaut du type)

mceclip6 - 2021-06-03 17h11m00s

Les interfaces concernées sont :

  • Tout formulaire d'édition de publications (lors de la création)
  • La modale de dépôt et les « chooser » de document
  • L'insertion unifiée de document

Raccourci : le champ icône n'est plus obligatoire

Le champ icône d'un raccourci n'est plus obligatoire.

Une image par défaut sera utilisée s'il est vide.

Workflow : choix de la couleur des états

Par défaut les états de Workflow (en dehors des états spéciaux) reçoivent une couleur en fonction de leur visibilité. Il était aussi possible de recolorier les états avec des règles CSS.

Il est maintenant possible de choisir la couleur d'un état directement dans l'interface de gestion des workflows. Cette option n'est pas proposée sur les états spéciaux (planifié, publié, expiré, archivé, corbeille)

mceclip5 - 2021-06-03 17h10m45s

5. Exploitation

5.1 Réplication (JSync)

Réplication des propriétés dans un cluster JSync

Jusqu’à présent dans un cluster JSync, lorsqu'on on devait modifier une propriété globale à l'ensemble du cluster, il fallait faire cette opération manuellement sur chaque nœud du cluster.

JPlatform 10 SP5 rend transparent cette opération en répliquant les propriétés modifiées sur l’ensemble du cluster.

Toutes les propriétés ne sont pas répliquées car certaines sont propres à chaque réplica (p. ex. l’URID).

Dans le cas où la propriété est un virtualID qui référence une donnée du store, il se peut que cette donnée ne soit pas encore arrivée sur l'ensemble des réplicas lorsque la propriété sera répliquée. Dans ce cas, JPlatform force donc la réplication des données du store avant de déclencher la réplication des propriétés. Ainsi lorsque la propriété arrivera, la donnée sera déjà présente et elle pourra être correctement interprétée.

Activation / désactivation à chaud de module dans un cluster JSync

Depuis JPlatform 10, il est possible d’activer ou de désactiver à chaud un module. Cependant, dans le cas d’un cluster JSync l’activation/désactivation devait se faire manuellement sur chaque réplica.

JPlatform 10 SP5 rend transparent l’activation ou la désactivation d’un module dans un cluster JSync.

La première activation d'un module doit être faite sur le leader. En effet, celui-ci peut créer des données lors de son démarrage (avec un ChannelListener) et entraîner la mise à jour des propriétés (notamment des Virtual ID). De nombreux ChannelListener vérifient aussi qu'ils sont sur le leader avant de générer leurs données.

Néanmoins comme il n'est pas garanti que l'utilisateur qui doit activer un module puisse adresser directement le leader, une demande d'activation doit pouvoir être émise depuis n'importe lequel des réplicas. Cette demande sera traitée par le leader et on retombe dans le cas d'une activation d'un module sur le leader. Une fois la demande traitée, le leader la propage à l’ensemble des réplicas qui activent à leur tour le module concerné.

De même, la désactivation d'un module sera traitée d'une manière similaire (immédiate sur le leader et demande sur les réplicas).

Ce système est par défaut activé. Il est possible de le désactiver en mettant la propriété plugin-sync.enabled à false.

Indexation incrémentale des contenus créés/modifiés

Au démarrage de JPlatform 10 SP5, une ré-indexation partielle des contenus créés ou modifiés depuis la dernière mise à jour de l'index Lucene a lieu.

Cette évolution permet de simplifier la mise en œuvre des scénarios suivants :

  • Ajout de nœud dans un cluster JSync
  • Environnement de recette
  • Déploiement continue de webapp

En effet, s'il est possible de recopier les données JStore et JcmsDB pour être à jour avec les environnements de référence, c'est plus délicat pour les index Lucene qui ne peuvent être copiés à chaud.

Cette évolution permet de réindexer seulement les contenus nécessaires dans une webapp sur laquelle toutes les données sont à jour mais pas les index (en évitant ainsi une coûteuse ré-indexation complète).

Ce comportement peut être débrayé en mettant la propriété search-engine.auto-indexing-data-modified à false.

5.2 Chargement retardé des images

Le chargement retardé, ou Lazy Loading, est une technique d’optimisation des pages Web qui charge les contenus visibles dans la page mais retarde le téléchargement et l’affichage des contenus qui se situent en dehors de la partie visible de la page (ligne de flottaison).

Cette optimisation est appliquée par défaut sur les vignettes des images (générées par le tag <jalios:thumbnail>).  Les images insérées dans les champs Texte Riche (wysiwyg) en bénéficient aussi.

Il est possible de désactiver cette optimisation dans ces 2 cas d’usages avec les propriétés tag.thumbnail.lazy-loading.enabled et wysiwyg.medias.lazy-load-images.

5.3 Nettoyage des fichiers après suppression du document

Afin de ne pas consommer inutilement de l’espace de stockage, il est souhaitable qu'après la suppression d'un document, le fichier, les fichiers des versions précédentes, ainsi que tous leurs fichiers et répertoires associés soient supprimés.

Jusqu'à présent, si la propriété file-document.remove-file était à false, les fichiers n'étaient pas supprimés à la suppression du document.

Avec JPlatform 10 SP5 la suppression est automatique quelle que soit la valeur de cette propriété.

Il est néanmoins possible de débrayer ce nouveau comportement en mettant la propriété file-document.remove-all-files-on-delete à false.

5.4 LDAP - Désactivation possible de l'authentification par certificat

Vous pouvez désactiver la recherche et l'envoi de certificat client lors de la connexion à un serveur LDAP qui en ferait la demande. Ceci peut être nécessaire si votre serveur LDAP propose une authentification par certificat client, mais qu'aucun certificat n'est installé sur la JVM exécutant JPlatform, et que vous souhaitez utiliser l'authentification par login / mot de passe

 Pour cela mettez la propriété ldap.server.client-certificate-enabled à true.

6. Sécurité

6.1 Permissions-Policy

La spécification Feature-Policy a été introduite dans JPlatform 10 SP3. Cette spécification a depuis évoluée pour être renommé Permissions-Policy (elle reste toujours en working draft).

JPlatform 10 SP5 introduit l'usage simultané des 2 variantes afin de respecter les normes plus récentes de sécurisation tout en garantissant la sécurisation des navigateurs ne supportant pas encore la toute dernière version.

6.2 Token CSRF requis pour une déconnexion

Un token CSRF valide est désormais requis pour déclencher une action de logout.

Ce comportement par défaut peut être débrayé en mettant la propriété auth-mgr.logout.check-csrf à false.

Si vous utilisez un SSO :

  • Si vous avez développé un module de SSO spécifique, qui autorise le déclenchement d'une déconnexion depuis une application externe qui ne dispose pas du token CSRF, vous pouvez implémenter votre propre contrôle grâce à l'API canLogout introduit sur les AuthenticationHandler ;
  • Avec le module SAML, vous devez utiliser la version 2.3 ou au delà pour autoriser la déconnexion depuis l'IdP (évolution SAML-31).

6.3 Paramétrage de l'attribut SameSite sur le cookie de session

Il est possible de modifier l'attribut SameSite (si non renseigné) d'un cookie fourni lors d'une réponse (que ce cookie soit créé par le serveur ou le code de JPlatform).

La configuration se fait par nom de cookie avec une propriété du type (avec un cookie nommé JSESSIONID) :

channel.security.cookies-rules.JSESSIONID.replace-empty-samesite: None

6.4 Contrôle CSRF Open API

Afin de renforcer la sécurité, un contrôle CSRF est désormais possible lors des requête POST sur toutes les ressources REST OpenAPI.

Notez que d'autres mesures de prévention empêchent déjà de procéder à des attaques CSRF sur ces ressources (SameSite Cookie).

Il s'agit d'une mesure supplémentaire pour compléter l'arsenal de protection.

Vos clients HTTP doivent utiliser l’une des mesures suivantes afin de passer ces contrôles :

  • Utilisation d'une authentification par AuthKey
  • Ajout d'un header HTTP "X-Jcms-CSRF-Header" de valeur quelconque dans la requête

Ce nouveau contrôle CSRF est actif par défaut ;

  • Pour la ressource d'administration /admin/status
  • Sur toutes les ressources d'administration ajoutées en 10 SP5 (JCMS-8396)

Il est pour l'instant désactivé sur toutes les autres ressources (bien que les ressources modifiant les données imposent déjà la présence d'un contrôle CSRF).

Il sera activé globalement dans une prochaine version de JPlatform (JCMS-8547).

Il peut être configuré par propriété en spécifiant le nom de la classe (ou d'une des super classes) correspondant à la ressource.

Exemple : 

# rest.check-csrf.{class-fqn}: true

rest.check-csrf.com.jalios.jcms.rest.resources.AbstractAdminRestResource: true

7. Développement

7.1 Tags pour les applications

De nouveaux tags sont disponibles pour la création des applications. Ils simplifient le développement des applications, garantissent l’usage des bonnes pratiques (notamment pour certains points liés à l’accessibilité) et vous font bénéficier plus facilement des évolutions UI/UX sur les apps. Une documentation détaillée est en préparation.

Voici un exemple d’usage :

<jalios:app name="debug">
  <jalios:appSidebar icon="edit" appUrl="debug/debugsp5.jsp" iconTitleProp="edit">
    <jalios:appSidebarSection title="Filters">
      <jalios:field name="search" resource="field-app">
        <jalios:control settings='<%= new TextFieldSettings().placeholder("Search for text").aria("label","Search in app") %>' />
      </jalios:field>
    </jalios:appSidebarSection>
  </jalios:appSidebar>
  <%-- MAIN --%>
  <jalios:appMain headerTitle="App Title">
    <jalios:buffer name="APP_HEADER_BOTTOM">
      <ul class="nav nav-tabs" role="tablist">
        <li role="presentation" class="active"><a href="" role="tab">Active tab</a></li>
        <li role="presentation"><a href="" role="tab">Tab 1</a></li>
        <li role="presentation"><a href="" role="tab">Tab 2</a></li>
      </ul>
    </jalios:buffer>
    <jalios:appBodyInclude pub='<%= channel.getPublication("7098_Media") %>' />
  </jalios:appMain>
</jalios:app>

7.2 Formulaires

Propriétés : nouveaux champs typés

Il est désormais possible de déclarer une propriété éditable d'un module pour saisir une couleur, une image, un média, un ou plusieurs types.

Suffixes possibles :

  • .chooser-color : choix d'une couleur
  • .chooser-image : choix d'une image
  • .chooser-media : choix d'un media
  • .chooser-type : choix d'un type de Contenu ou Contenu utilisateur
  • .chooser-types : choix d'une liste de types de Contenu ou Contenu utilisateur
  • .chooser-type-MySuperType : choix d'un type dérivant de MySuperType
  • .chooser-types-MySuperType : choix d'une liste de types dérivant de MySuperType

Exemple :

jcmsplugin.myplugin.myprop: prop
jcmsplugin.myplugin.enabled.boolean: true
jcmsplugin.myplugin.mycolor.chooser-color:
jcmsplugin.myplugin.myimage.chooser-image:
jcmsplugin.myplugin.mymedia.chooser-media:
jcmsplugin.myplugin.mytype.chooser-type:
jcmsplugin.myplugin.mytypes.chooser-types:

mceclip0 - 2021-06-03 18h02m38s

Champs cachés

Les champs cachés sont généralement gérés en HTML simple :

<input type="hidden" name="foo" value="bar" />

Mais si on oublie d'encoder la valeur alors ce peut être un vecteur d'attaque.

Pour éviter cela, JPlatform 10 SP5 propose le HiddenSettings qui gère ces problématiques :

<jalios:control settings='<%= new HiddenSettings().name("foo").value("bar") %>' />

Éditeur de type : champ Type de publications

Un nouveau type de champ est proposé pour les types de publication. Il permet de sélectionner des types publication. Il est possible de préciser un super type pour limiter la portée.

Exemple :

mceclip8 - 2021-06-03 17h15m21s

Contrôle de modification d'un formulaire

L'ajout de la classe CSS jalios-dirty-form-control sur une balise <form> permet d'afficher un message à l'utilisateur si jamais il quitte la page alors qu'un des champs du formulaire a été modifié.

Pour en savoir plus consultez :

https://docs.jalios.com/jplatform10/jcms/fr/front-end/javascript/controle-de-modifications-d-un-formulaire-163408

Aria label dans les formulaires

Il est maintenant possible de rajouter facilement des aria-x sur les control en utilisant la syntaxe suivante : 

<jalios:field name="ariaLabelTest" value="HasAria" label="Input with arias">
  <jalios:control settings='<%= new TextFieldSettings().aria("invalid", true).aria("label","My other label for screenreader") %>' />
</jalios:field>

Modales à étapes cliquables

Toutes les modales utilisant un FormHandler qui dérive de EditPublicationHandler bénéficient de l’accès directe à une étape. Si ce n’est pas le cas de votre FormHandler vous pouvez néanmoins en bénéficier en surchargeant la méthode isFormStepClickable().

7.3 API Java

ChannelListener.initAfterStartup()

Dans la classe ChannelListener, la nouvelle méthode initAfterStartup() permet d'intervenir à la fin du démarrage de JPlatform, une fois que le site est prêt à être accédé.

StartupDataGenerator

La nouvelle classe StartupDataGenerator facilite la génération de données au démarrage. Elle dérive de ChannelListener et implémente la méthode initAfterStartup(). Elle fournit des méthodes utilitaires qui simplifie la génération de donnée à la première installation d’un module par exemple.

Exemple de création de catégorie au démarrage :  

Déclaration des virtual ID

Dans plugin.prop :

$id.jcmsplugin.demo.cat.root:
$id.jcmsplugin.demo.cat.topics:

 

Déclaration des propriétés de langues

Dans fr.prop :

data.$id.jcmsplugin.demo.cat.root.name: Module Démo
data.$id.jcmsplugin.demo.cat.topics.name: Thèmes

Dans en.prop :

data.$id.jcmsplugin.demo.cat.root.name: Demo Plugin
data.$id.jcmsplugin.demo.cat.topics.name: Topics

 

Implémentation du StartupDataGenerator

class DemoChannelListener extends StartupDataGenerator {

  private static final String VID_CAT_ROOT = "$id.jcmsplugin.demo.cat.root";
  private static final String VID_CAT_TOPICS = "$id.jcmsplugin.demo.cat.topics";

  @Override
  protected createData() {
    Category root = createCategory(VID_CAT_ROOT);
    createCategory(VID_CAT_TOPICS, root)
  }
}

AbstractDBQueryBuilder

Lors des développements, on peut être amené à créer de nouveaux types de données en base qui dérivent directement de Data. Dans ce cas, contrairement aux types dérivant de Publication, c'est au développeur de coder la mécanique de requêtage sur ce nouveau type.

Une bonne pratique consiste à écrire un builder, c’est-à-dire une classe qui permet de positionner l'ensemble des critères de requêtage et d'obtenir les résultats sous différentes formes (nombre de résultats, liste paginée de résultats, premier résultat de la liste, ...)

La classe AbstractDBQueryBuilder facilite le développement de ces builders. Elle factorise les critères de recherche en commun (firstResult(), maxResults(), orderBy(), author()) et propose les mêmes méthodes pour obtenir les résultats (build(), count(), list(), firstResult()).

Exemple : 

public class JBookBorrowingQueryBuilder extends AbstractDBQueryBuilder<JBookBorrowing> {

  private AbstractBook book;
  private Member borrower;

  public JBookBorrowingQueryBuilder() {
    setDefaultOrder(Order.desc(BORROWING_DATE_FIELD));
  }

  public JBookBorrowingQueryBuilder book(AbstractBook book) {
    this.book = book;
    return this;
  }
  
  public JBookBorrowingQueryBuilder borrower(Member borrower) {
    this.borrower = borrower;
    return this;
  }

  public JBookBorrowingQueryBuilder orderByBorrowingDate() {
    return (JBookBorrowingQueryBuilder)(orderBy(Order.desc(BORROWING_DATE_FIELD)));
  }

  @Override
  protected void addCriterions(Criteria criteria) {
    addBookCriterion(criteria);
    addBorrowerCriterion(criteria);
  }
  
  private void addBookCriterion(Criteria criteria) {
    if (book != null) {
      criteria.add(Restrictions.eq(BOOK_ID_FIELD, book.getId()));
    }
  }

  private void addBorrowerCriterion(Criteria criteria) {
    if (borrower != null) {
      criteria.add(Restrictions.eq(BORROWER_ID_FIELD, borrower.getId()));
    }
  }

}

 

QueryHandler : positionner un contexte pour les QueryFilter

Il est désormais possible de véhiculer depuis un QueryHandler des informations qui seront transmises dans le contexte des QueryFilter via la méthode QueryHandler.getQueryFIlterContext().

Exemple :

queryHandler.getQueryFilterContext().put(myKey, myValue);

7.4 Surcharge des JSP

JPlatform permettait depuis de nombreuses versions de surcharger quelques JSP cœurs tel que la page d’authentification, recherche, la fiche profil d’un membre, …

Avec JPlatform 10 SP5, il est désormais possible de surcharger n'importe quelle JSP, du cœur ou d’un module, accédée directement ou incluse dynamiquement (tant que celle-ci inclut doInitPage.jspf). Ceci se fait par déclaration d'une propriété.

Exemple d'usage : pour surcharger l'export XML (jsp /admin/exportXml.jsp) :

jsp.override./admin/exportXml.jsp: /plugins/MyPlugin/exportXml.jsp

Et si dans le JSP la surcharge ne doit finalement pas se faire (ou qu'on souhaitait juste intercepter la demande pour faire autre chose) :

<%
request.setAttribute(com.jalios.jcms.ResourceHelper.JSP_OVERRIDE_CANCELLED, Boolean.TRUE);
%>

Cette nouvelle possibilité est donc très puissante puisqu’elle permet de surcharger toutes les interfaces standards de JPlatform. Veillez donc à ne l’utiliser que pour de bonnes raisons. Un grand pouvoir implique de grandes responsabilités... 😉

7.5 OpenAPI REST

JPlatform 10 SP5 ajoutes de nouvelles ressources REST (ou end-point) pour OpenAPI :

Ressource

Méthode

Description

/rest/search/member

GET

POST

Effectue une recherche sur les membres

/rest/search/workspace

GET

POST

Effectue une recherche sur les espaces

/rest/search/group

GET

POST

Effectue une recherche sur les groupes

/rest/search/category

GET

POST

Effectue une recherche sur les catégories

/rest/admin/check/{method}/{param1}/{param2}

GET

POST

Effectue des vérifications sur la plateforme.

Vérifications possibles :

checkDataPresence : vérfie la présence d'une data à partir de son ID (sans en fournir les informations).

getDataAttributeValue : vérifie la valeur d'un attribut sur une donnée (premier paramètre l'id de la donnée, deuxième paramètre le nom du champ à vérifier).

checkPropertyValue : vérifie la valeur d'une propriété (premier paramètre la clé de la propriété, deuxième paramètre la valeur attendu).

checkPropertyPresence : vérifie qu'une propriété est présente et non vide sans en fournir la valeur.

 

/rest/admin/plugins     

GET

Renvoie une liste CSV ou Json des modules présents sur la plateforme et leurs versions.

/rest/admin/properties

GET

POST

PUT

Gestion des propriétés en bloc.

Cette ressource accepte un paramètre prefix pour ne renvoyer que les propriétés avec ce préfixe. Les propriétés de langues ne sont nativement pas proposées lors des requêtes GET sans préfixe.

Pour les requêtes PUT/POST ou DELETE, les contenus au format Json ou multipart-form-data sont acceptés (tableau de propriété / valeur). Note : la mise à jour ou l'effacement ne peut se faire avec un préfixe.

 

/rest/admin/properties/{prefix}

GET

POST

PUT

Gestion des propriétés en bloc.

Cette ressource accepte un paramètre prefix pour ne renvoyer que les propriétés avec ce préfixe. Les propriétés de langues ne sont nativement pas proposées lors des requêtes GET sans préfixe.

Pour les requêtes PUT/POST ou DELETE, les contenus au format JSON ou multipart-form-data sont acceptés (tableau de propriété / valeur).

Note : la mise à jour ou l'effacement ne peut se faire avec un préfixe.

/rest/admin/property/{param1}

GET

POST

Gestion des propriétés unitaires.

/rest/channelName

GET

Renvoie le nom du site (channel.name)

/rest/admin/index/snapshot

GET

Renvoie le chemin sur le système de fichiers local de la dernière sauvgegarde des index Lucene.

/rest/admin/index/snapshot

 

POST

Lance une sauvegarde asynchrone des index Lucene. Renvoie immédiatement son chemin sur le système de fichier local. Si une sauvegarde est en cours, la demande de création est ignorée, le chemin à venir est retourné.

/rest/myAlerts

GET

Renvoie les alertes web associées à l'utilisateur authentifié (la ressource /rest/getAlerts est dépréciée)