JPlatform 10 SP2 - Les principales nouveautés

1. Nouvelles fonctionnalités

1.1 Alertes : Marquer toutes les alertes d'une publication comme lues

Depuis le menu des alertes de la topbar, ou depuis l'application des alertes, il est maintenant possible de marquer toutes les alertes sur une même publication comme lues. Si il y a par exemple 3 alertes de mise à jour, 2 alertes de vote, et une alerte de commentaire, et que l'on décide de marquer tout comme lu sur une de ces alertes, toutes les autres seront aussi marquées comme lues.

A noter que certaines alertes sont exclues du marquer tout comme lu, via propriétés (Notamment les recommendations). 

Issue : JCMS-6846

1.2 Alertes : Se désabonner d'une publication

Il est possible de se désabonner d'une publication via le menu des alertes ou l'application des alertes via un menu contextuel dédié.

Issue : JCMS-6846

1.3 Alertes : tri chronologique ou antéchronologique

Il est désormais possible de trier les alertes et les recommendations par date de la plus récente à la plus ancienne (par défaut) ou vice-versa.

mceclip6

Issue : JCMS-7028

1.4 Éditeur de propriétés

A destination des administrateurs centraux, une nouvelle interface avancée d'édition de propriété fait son apparition dans l'espace d'administration.
Cet éditeur peut être accédé via le bouton "Avancé" disponible dans l'édition de propriété classique.

mceclip7

Issue : JCMS-6735

1.5 Contrôle des droits de consultation lors de la suppression d'un Groupe

Un groupe qui est utilisé comme droit de consultation d'une Publication ou d'une Catégorie levéra désormais une contrainte d'intégrité, du style : 

Le groupe G est utilisé comme droit de consultation sur 2 publications. Veuillez d'abord le retirer de :

  • Publication 1
  • Publicaion 2

Ce contrôle permet notamment d'éviter qu'une Publication ne contenant qu'un seul Groupe de consultation, de se retrouver publique suite à la suppression du Groupe.

La suppression peut être forcée grâce à une case à cocher "Forcer la suppression" (Cf DataController.CTX_FORCE_DELETE) depuis : 

  • la page d'édition de groupe (editGroup.jsp)
  • le caddy des groupes

Note : le CTX_FORCE_DELETE étant déjà positionné pour la suppression de Workspace, la présence d'un "lien" ne bloquera pas la suppression du WS. Aussi, l'utilisateur ne sera pas prévenu de la présence de liens vers les groupes à supprimer lors de la suppression de WS.

Issue : JCMS-6305

1.6 Formulaires privés par défaut

Jusqu'à présent, les formulaires étaient visibles par tout le monde par défaut. Pour prendre en compte le RGPD, et la privacy by default, les formulaires sont désormais privés par défaut. 

Les instances de Form.java ne sont désormais accessibles par défaut que par :

  • l'auteur du formulaire,
  • le soumissionnaire (submitMember) (si non null)
  • les membres ayant le droit de travailler dans le workflow de l'espace du formulaire
  • les administrateurs de l'espace où est stocké le formulaire
  • les admins centraux

Il est possible de prévenir ce comportement coeur sur un type FooForm en déclarant une propriété telle que :

form.skip-default-privacy.{custom-suffix}: generated.FooForm

Issue : JCMS-6641

1.7 Information sur une publication : affichage des DB referrers

Lorsque l'on affiche la modale d'information sur une publication, l'onglet "Référents par champs liens" liste desormais aussi les DB publication référentes.

Exemple : 

mceclip0

Issue : JCMS-6730

1.8 ACL : Affectation restreinte aux administrateurs centraux

Une nouvelle option "Affectation restreinte aux administrateurs centraux" fait son apparition sur les Liste de Controle d'Accès (ACL).

Cette option est activée par défaut et le comportement ne change pas pour les ACL existantes.

Cette évolution permet d'élargir l'utilisation d'une ACL dite "globale" (par opposition aux ACL d'espace de travail) normalement réservée aux administrateur centraux.

Le comportement par défaut fait qu'une ACL globale ne peut être assignées à un utilisateur que par un administrateur central (en affectant un groupe disposant de cette ACL à un utilisateur).

Grâce à cette évolution, une ACL peut être explicitement modifiée pour réduire cette restriction. Ainsi l'ACL pourra également être assignée aux utilisateurs, par des personnes ayant accès à l'administration centrale des membres. 
Dans tous les cas, les gestionnaires de membre d'espace ne bénéficient pas de cette autorisation.

Issue : JCMS-6893

2. Nouveautés front-end

2.1 Image de fond de la page de login

Depuis la 10.0.0, il était déjà possible de choisir un dossier où -aléatoirement- une des images du dossier allait être utilisée comme telle image de fond.
Exemple : 

jcms.resource.login-wallpapers: images/jalios/login/wallpapers

Désormais, pour un site privé, il est possible de choisir par propriété, une (et une seule) image précise comme image de fond de la page de login.
Exemple : 

jcms.resource.login-wallpaper: plugins/FooPlugin/images/login.png

Issue : JCMS-6965

2.2 Cartes

Meilleure gestion du responsive pour les cartes en mode DECK

Les cartes se calent maintenant mieux en fonction de la largeur de la page ou du conteneur.

Issue : JCMS-6584

Tag CardData : Ajout d'un attribut linkParams

Permet de rajouter des paramètres sur le lien vers la donnée. 

Issue : JCMS-7031

Centrage des cartes du wrapper inline

La classe CSS is-centered permet de centrer les cartes du inline layout, et de limiter le nombre de cartes par ligne à 4. Combiné avec une pagination de 12 (multiple de 2, 3 et 4), on évite ainsi l'impression qu'il n'y a plus d'autres résultats.

Sans la classe "is-centered" :

mceclip1

 

Avec la classe "is-centered" : 

mceclip2

Issue : JCMS-7180

Remplacement du template par défaut des cartes de Publication

Le template en 10 SP1 affichait les éléments suivants : 

  • Image
  • Titre
  • Résumé

mceclip3

 

Le template en 10 SP2 affiche seulement maintenant : 

  • Image
  • Titre

mceclip4

 

Un template "full" est cependant proposé pour fournir le même nombre d'éléments qu'en 10 SP2 en appelant le template "full" dans la carte : 

<jalios:card data="<%= myData %>" template="full" />

Issue : JCMS-7212

2.3 Icones

Nouvelles icônes de fichiers

Une partie des icônes de fichiers a été mis à jour. Liste : 

  • Adobe products 
  • Office products 
  • Open Office products 
  • Audio files 
  • Video files 
  • Image files 
  • Text files 
  • Font files 
  • Unknown files  

Issue : JCMS-7090

Icônes SVG

Ajout du support des icones SVG.

Deux modes d'inclusion sont proposés : par référence d'un fichier SVG (au travers d'une balise <img>) ou par inclusion de la balise <svg> d'un fichier SVG.

Par défaut les icones SVG sont limités à 16px de hauteur. Il est possible de choisir la hauteur que l'on veut. Des classes CSS sont prédéfinies avec des hauteurs particulières : size-24, size-32, size-48 et size-64.

Exemples de declaration de propriétés :

icon.my-icon1: svg: images/jalios/icons/myIcon.svg 
icon.my-icon2: svg-inline: images/jalios/icons/myIcon.svg

 

L'utilisation se fait classiquement avec le tag <jalios:icon>

Exemples :

<jalios:icon src="my-icon1" />
<jalios:icon src="my-icon2" css="size-48"/>

 

Issue : JCMS-7016 

2.4 Cohérence dans l'affichage "Pas de résultat"

JPlatform propose maintenant la JSPF front/app/doAppNoResult.jspf qui affiche un message et un visuel pour les cas où une requête ne renvoie pas de résultats. Il est possible d'overrider l'icône, le texte et de rajouter du contenu via des attributs de request.

mceclip5

Issue : JCMS-6991

2.5 Forcer l'URL d'accueil de la topbar

L'attribut de requete topbar.home-url permet de forcer l'URL utilisée lorsqu'on clique sur le logo dans la topbar.

Exemple d'usage : 

request.setAttribute("topbar.home-url", item.getWorkspace().getDisplayUrl(userLocale));

Issue : JCMS-6695

2.6 Duration Field : ajout de l'option maxResolution

Il est possible de borner la plus grande résolution de temps (secondes, minutes, heures, jours, semaines, années) proposée dans le champ de type Durée. Ceci permet par exemple de proposer un durée qui peut être exprimée au plus en heure.

Exemple au sein d'une JSP :

<jalios:field name="duration" ...>
  <jalios:control settings='<%= new DurationSettings().maxResolution("h") %>' />
</jalios:field>

Exemple dans une déclaration XML d'un type :

<field name="duration" editor="duration" type="long" default="0" minValue="1" maxResolution="h"/>

Issue : https://issues.jalios.com/browse/JCMS-6906

2.7 Recherche de membres : tri configurable

Le critère de tri utilisé pour l'affichage des résultats de recherche de membres, en topbar et en recherche complète, peut être modifié.

Issue : JCMS-6909

2.8 Web assets & déclaration

Il est possible de déclarer les JS et CSS d'une librairie Front via les propriétés.

Cela facilite la maintenance des JSPs lorsque la librairie évolue, et/ou ça permet de remplacer simplement (en limitant les problèmes de chemins obsolètes) une ressource par une version plus récente par exemple.

Exemples: 

# Perfect Scrollbar
jcms.front.resources.jalios-scrollbar.css: css/lib/perfectscrollbar/1.x/perfect-scrollbar.css
jcms.front.resources.jalios-scrollbar.js: js/lib/perfectscrollbar/1.x/perfect-scrollbar.js

# Jalios Truncate
jcms.front.resources.jalios-truncate.js: js/lib/clamp/clamp.js, js/jalios/core/jalios-truncate.js

Côté JSPs, les librairies peuvent se charger ainsi : 

jcmsContext.addWebAssets("jalios-scrollbar");
jcmsContext.addWebAssets("jalios-truncate");

Côté Java, on peut également utiliser : 

WebAssetsUtils.addWebAssets(jcmsContext, "jalios-scrollbar");
WebAssetsUtils.addWebAssets(jcmsContext, "jalios-truncate");

Issue : JCMS-7032

2.9 Tri alphabétique des membres dans les formulaires d'édition de droits

Les membres affichés dans les formulaires d'édition de droits de lecture ou d'écriture sont maintenant triés par ordre alphabétique

Issue JCMS-6277

2.10 Wysiwyg - Table des matières 

Le DOM généré pour les tables des matières insérées dans un champ wysiwyg a légèrement évolué pour mieux respecter les règles d'accessibilités.
Une balise H2 est désormais utilisée pour le titre de la table des matières, à la place de la précédente balise H1.

Exemple :

  • Avant :
    <nav class="toc">
     <h1>Content</h1>
     <ul> 
       ...
     </ul>
    </nav>​
  • Après :
    <nav class="toc">
     <h2>Content</h2>
     <ul> 
       ...
     </ul>
    </nav>​

Issue : JCMS-7136

2.11 Group Chooser : filtrage sur l'espace courant

L'interface de sélection d'un groupe s'ouvre maintenant sans filtrer sur l'espace courant.

Issue : JCMS-7176

3. Nouveauté back-end

3.1 Ajout du portail courant dans la session

Suite à JCMS-5130 nous évitions le changement de portail si une publication pouvait être affichée dans le portail courant disponible en session. Cette mécanique était désactivable par propriété. Cependant lorsqu'elle était désactivée, le portail courant n'était plus disponible en session, ce qui pouvait manquer lors du développement d'un PortalPolicyFilter. Nous mettons maintenant systématiquement le portail courant dans la session.

Issue : JCMS-6568

3.2 DBEventLog : Ajout de la notification

Dans un cluster JSync, les réplicas s'échangent les événements hibernate au travers de la table DBEventLog. Chaque réplica scanne cette table toutes les minutes pour traiter les événtuels nouveaux messages.

Cette table permet d'être robuste aux déconnexions et au partionnement.

Afin d'accélérer le traitement des DBEventLog un système de notification a été mis en place. Lorsqu'un réplica ajoute un DBEventLog il envoie une notification à son leader et le leader renvoie la notification aux autres réplica. Ainsi chaque réplica traite l'événement immédiatement.

Ceci a aussi permis de relâcher la fréquence de scan qui est désormais passée à 10 minute.

Issue : JCMS-6528

3.3 ReplicaMessage : amélioration de la notification

Les ReplicaMessage ont été introduits dans JPlatform 10 pour permettre l'échange d'information entre réplica (cf. https://community.jalios.com/howto/replicamessage).

La diffusion des ReplicaMessage repose sur le même principe que les DBEventLog (scan d'une table des nouveaux messages). Afin d'accélérer la prise en compte des messages, un système de notification avait été mis en place dès la première version. Mais celui-ci ne fonctionnait que sur un site public.

Dans JPlatform 10 SP2, la notification des ReplicaMessage fonctionne aussi pour les sites privés et des améliorations ont été apportées (traitement des envois dans une thread séparée permettant l'absorption des raffales de notification).

Issue : JCMS-6572

3.4 Relecture des propriétés "channel.public-path.*"

Il est désormais possible de sauver programmatiquement une propriété préfixée par "channel.public-path.". Elle sera prise en compte à chaud. (Impacte InitFilter et ResourceHelper).

Evolution dans le cadre de JReady pour déclarer un FileDocument comme favicon du site, et le rendre accessible sur la page de login d'un site privé.

Issue : JCMS-6589

3.5 DBReferrerManager

La classe DBReferrerManager permet de retrouver toutes les DB Publication référençant une publication donnée via un champ lien (mono ou multivalué).

Exemple d'utilisation :

Set<Publication> referrerSet = DBReferrerManager.getInstance().getReferrerSet(myPub); 

Cette recherche est aussi disponible en appellant la méthode getReferrerSet() sur une publication et en passant l'argument searchInDB à true :

Set<Publication> referrerSet = myPub.getReferrerSet(true);

Issue : JCMS-6729

3.6 Tri topologique des modules

Un nouvel algorithme de tri topologique est désormais appliqué pour ordonner les modules entre eux en respectant par ordre de priorité : les dépendances entre module, l'ordre déclaré sur chaque module et leur nom.

Issue : JCMS-6901

3.7 Sécurité : Same-site cookie

Tous les cookies envoyés par le serveur (méthode  HttpUtil.addCookie) utilisent désormais la norme Same-site cookie pour renforcer la sécurité et prévenir les attaques CSRF.
C'est notamment le cas cookie authentification memberId.
La valeur utilisée pour cet attribut de cookie peut être configurée avec la propriété suivante dont la valeur par défaut en 10 SP2 est Lax :

channel.security.SameSiteCookies: ({empty}|Lax|Strict)

Issue : JCMS-6752

3.8 Sécurité : controle CSRF à l'authentification

L'authentification par login / mot de passe requiert désormais la présence du jeton CSRF. Ceci renforce la protection contre les attaques par force brute et ajoute un niveau de contrôle supplémentaire.

Si cette amélioration devait engendrer une quelconque régression dans votre environnement, elle peut être désactivée avec la propriété  auth-mgr.simpleauth.check-csrf: false

Issue : JCMS-6968

 

3.9 Liste des types d'un espace

Pour chaque type : ajout de l'icone et du module de provenance.

mceclip8

Issue : JCMS-6507

3.10 Liste des publications partagées entre espaces

Dans l'onglet Contenu du tableau de bord d'un espace, 2 rubriques apparaissent (si elles ont des données ) :

La liste de publications (de cet espace) rattachées à un autre espace

La liste des publications (d'un autre espace) rattachées à cet espace.

mceclip9

 

Issue : JCMS-6963

3.11 Recherche textuelle : filtre par catégories

Afin d'améliorer la performance lors des recherches textuelles, lorsqu'un affinement par catégories en mode exact est demandé, un nouveau champ présent dans l'index lucene est utilisé lors de la recherche.

Une réindexation complète des publications est nécéssaire après migration vers JPlatform 10 SP2.

Issue : JCMS-7046

3.12 Recherche textuelle : lucene, scoring et boost de champ

2 options expérimentales (débrayées par défaut) ont été ajoutées dans la mécanique de recherche lucene pour agir sur le score.

Explication :

Dans le mode de recherche textuelle par défaut de JPlatform (mode "tous les mots"), une troncature droite est automatiquement mise en oeuvre sur chacun des termes de la recherche. Ainsi, une recherche sur un terme permet de trouver tous les résultats contenant des mots commençant par ce terme (e.g une recherche sur "rapide" permet de trouver les publications contenant "rapide", "rapides", "rapidement").

Pour l'implémentation de la troncature droite, lucene utilise une PrefixQuery qui applique un calcul de score constant. L'utilisation de ce mode de scoring permet une recherche rapide, mais sans utilisation de l'algorithme de calcul de score sous jacent (tf/idf en standard).

La conséquence est double :

  1. le calcul du score des résultats est moins pertinent,
  2. il est impossible d'appliquer de façon efficace les boost par champ, qui sont possibles dans JPlatform en configurant les propriétés query.lucene.boost.{engine-name}.{field-name}: {boost-value},
    par exemple query.lucene.boost.PUBLICATION.title: 42.0 pour obtenir un score plus important lorsque le texte trouvé est issu du titre de la publication.

Nouveautés

La propriété query.lucene.scoring-boolean-rewrite.right-truncation.enabled (dont la valeur par défaut est false) peut être configurée à true pour forcer l'utilisation d'un calcul de score avancé lors des PrefixQuery.

Cette configuration permet d'améliorer le calcul du score en standard et permet de mettre en oeuvre les boosts par champs de façon plus efficace.

La conséquence d'une telle configuration sera l'utilisation plus importante du CPU, ainsi que le risque de provoquer des erreurs TooManyClauses lors de la recherche de terme ayant de très nombreuses déclinaisons dans l'index.

La propriété query.lucene.scoring-boolean-rewrite.all.enabled: true permet d'appliquer le même calcul de score pour toutes les requetes de type MultiTermQuery (et pas seulement celles générées pour la troncature droite)

Issue : JCMS-7005

3.13 Recherche textuelle : configuration du rattrapage pour les contenus multilingues

Lors de l'indexation des contenus multilingues dans le moteur de recherche, le comportement par défault de JPlatform est de rattraper chaque valeur vide dans la langue d'indexation courante, en utilisant la valeur du champ de la langue prinpale du contenu.

Lors d'une recherche, ce comportement permet à un utilisateur français de trouver un contenu principalement en anglais, et dont le titre français n'est pas renseigné, mais dont le titre anglais contient le texte recherché.

Une nouvelle option fait son apparition dans JPlatform pour modifier ce comportement (sa valeur par défaut est true): 

lucene.pub-indexing.default-to-main-language: false 

Une réindexation complète des contenus est nécéssaire si cette option est modifiée.

Si l'option est modifiée à false, un contenu sera trouvé lors d'une recherche si et seulement si le texte recherché est présent dans les champs dans la langue de recherche.

Issue : JCMS-7140

3.14 Base de données : failfast

Une nouvelle option est disponible pour modifier le comportement de l'application en cas d'indisponbilité de la base.
En cas d'indisponbilité de la base le comportement par défaut de la base est de tenter malgré tout le rendu de la page.

Si l'option channel.jcmsdb.fail-fast-if-no-connection: true est activée, et qu'une connexion à la base ne peut être obtenue, l'accès à la page sera immédiatement interrompu et une page d'erreur sera affichée à l'utilisateur (page d'erreur configurable et introduite précédement via l'évolution JCMS-5756)

Issue : JCMS-5758

3.15 Base de données : JSPs sans transaction Hibernate

Afin d'améliorer la performance de l'application, et sa robustesse en cas d'indisponibilité de la base, certains JSP peuvent être déclarés explicitement comme ne nécessitant pas de transaction Hibernate.

Cette déclaration se fait par propriété en utilisant la syntaxe channel.non-transactional-path.{uid}: {relative/path/to/servlet}

En standard les JSPs suivant n'utilisent plus de transaction hibernate systématique : 

# Path for which an Hibernate Transacton is not required and thus not started
channel.non-transactional-path.i18n-js: js/jalios/core/jalios-i18n-js.jsp
channel.non-transactional-path.properties-js: js/jalios/core/jalios-properties-js.jsp
channel.non-transactional-path.css-packer: css/csspacker.jsp
channel.non-transactional-path.js-packer: js/jspacker.jsp

Issue : JCMS-7125

3.16 Ajout d'une API REST de gestion des alertes

Deux nouveaux end-points font leur apparition pour gérer les alertes via Jalios Open API : 

/rest/alert : permet de créer une alerte

/rest/getAlerts : permet d'obtenir les alertes web associées à l'utilisateur loggué

Issue : JCMS-6946

3.17 Ajout d'un nouveau suffixe de propriété

Les propriétés suffixées par .crypt sont maintenant automatiquement chiffrées à la sauvegarde et déchiffrées à la lecture. Si elles sont éditables, un champ password est alors utilisé.

Issue : JCMS-6928

3.18 Modale d'édition générée : ajout du champ Espace de travail

La modale d'édition générée contient désormais en premier champ le choix du Workspace.

Issue : JCMS-7174

3.19 Logs debug dans la mécanique de résolution des portails

De nouvelles traces de debug permettent de comprendre comment se résolvent les portails suite à l'accès à une publication ou à une catégorie.

Issue : JCMS-6561

4. Modification d'API

Cette section évoque les changements effectués sur les API nécessitant des migrations si vous les utilisiez.

4.1 Wysiwyg : configuration d'éditeur

Le format des fichiers de configuration d'éditeur wysiwyg est modifié.

Dans JPlatform 10.0.0 ou 10.0.1, les configurations d'éditeur wysiwyg permettaient la saisie de valeur en javascript, ainsi que l'insertion de code javascript.
Ces syntaxes sont désormais invalides dans JPlatform 10 SP2 et doivent être adaptées.
Exemple : 

/* /!\ The following syntax CANNOT be used in JPlatform 10 SP2 */
{
  "some_callback" : function() {
    /* say hello */
    alert('Hellow "World"!' + "world");
  },
  "plugins" : 'foo,' +
              'bar',
  "height" : 2 * 21
}


A partir de JPlatform 10 SP2, seules les valeurs autorisées en JSON peuvent être renseignées dans un fichier de configuration. 

  • Une nouvelle convention fait son apparition pour permettre l'insertion de code javascript : "@raw"/* ... */ 
    Toutes les valeurs utilisant cette convention seront repris telles quelles lors de la génération du fichier d'initialisation de TinyMCE.
  • La syntaxe"@raw{...}" déjà existante en 10 SP1 peut également être utilisée pour parvenir au même objectif sur des simples valeurs tenant sur une seul ligne

Exemple : 

/* Syntax modified for JPlatform 10 SP2 */
{
  "some_callback" : "@raw"/*function() {
    // say hello 
    alert('Hellow "World"!' + "world");
  }*/,
  "plugins" : "foo,bar",
  "height" : "@raw{2 * 21}"
}

 

Le fichier js/jalios/core/wysiwyg/jalios-wysiwyg-configurations.js permettant d'initialisation TinyMCE, et généré automatiquement à partir des fichiers de configurations, contiendra alors ces éléments : 

[...]

  "some_callback" : function() {
    // say hello 
    alert('Hellow "World"!' + "world");
  },
  "plugins" : "foo,bar",
  "height" : 2 * 21

[...]

Cette modification a été effectuée afin de retirer la dépendance de JPlatform à l'API Nashorn, déprécié dans Java 11 et succeptible d'être retirée dans les prochaines versions de Java.

Issue : JCMS-6822

4.2 Changement de contrat sur JcmsUtil.getLanguageMap(String[], boolean)

Le contrat de la méthode JcmsUtil.getLanguageMap(String[], boolean) a été modifié pour éviter des usages incorrects pouvant conduire à de mauvais rendus ou à des vulnérabilités.
Cette modification de contrat a été effectuée sans préavis, un audit interne ayant montré que son usage était restreint au coeur du produit (aucun module Jalios n'en faisait usage). Cependant si vous utilisiez cette méthode pour vos développements, des adaptations peuvent être nécéssaires

Comportement avant modification : 

le second paramètre booléen "escape" permettait de demander ou non l'échappement HTML des valeurs traitées.

  • escape=true : toutes les valeurs étaient échappées pour cibler du HTML
  • escape=false : les valeurs étaient laissées telles quelles

Comportement après modification :

le second paramètre booléen a été renommé "acceptHtml", il permet désormais d'indiquer si du HTML est accepté, mais un nettoyage des contenus à systématiquement lieu, quelque soit sa valeur

  • acceptHtml=true : le format de chaque valeur est détecté pour adapter le nettoyage et autoriser ainsi l'utilisation de HTML en toute sécurité
    • pour les valeurs HTML/JHTML : un nettoyage HTML du texte est effectué
    • pour les autres valeurs : le texte est échappé pour cibler du HTML
  • acceptHtml=false : toutes les valeurs sont échappées pour cibler du HTML

Synthèse : 

  • pour récupérer des valeurs en autorisant les contenus HTML, invoquer la méthode JcmsUtil.getLanguageMap(..., true)
  • pour récupérer des valeurs en interdisant les contenus HTML, invoquer la méthode JcmsUtil.getLanguageMap(..., false) (ou plus simplement la signature JcmsUtil.getLanguageMap(...)qui adopte ce comportement)

Issue : JCMS-7000

5. Dépendances 

5.1 Back end / server side / Java

Librairie Objectif Issue JIRA
BouncyCastle Garantir la compatibilité avec Java 11 et au delà. JCMS-6701
JavaBean Activation Framework

Librairie ajoutée dans JPlatform pour garantir la compatibilité avec Java 11 et au delà dans lequel cette librairie n'est plus fournie en standard par la JVM.

Ce framework était précédement fourni par l'environnement JavaSE (depuis la version 6).
Depuis Java 9, son usage nécessite une déclaration explicite, et à partir de Java 11 ce framework n'est plus disponible et la librairie doit être incluse par l'application (hors environnement JavaEE).

JCMS-6682
Java Mail  Mise à jour en cohérence avec la librairie JavaBean Activation Framework. JCMS-6684
Derby Correctif sécurité - CVE-2018-1313 JCMS-6880
PDFBox et FontBox Correctif sécurité - CVE-2018-11797 JCMS-6876
JSoup performance fix JCMS-6875
ant Java 9 JCMS-6873
Apache Commons Codec Java 9 module, bug fix JCMS-6986
Apache Commons HTTP API Google Drive JCMS-6916
Apache Commons Lang3 (dans module JTranslate et JSR286 uniquement)
Java9 + Java11
 
Apache Commons Validator Correctif générique pour bug JCMS-6389 JCMS-6983
Jackson API Google Drive JCMS-6917
Gson JTranslate API IBM Watson / Office365 API Microsoft Graph JCMS-6949
metadata-extractor et XMP core Correctif sécurité - CVE-2016-4216 JCMS-6966
joda-time

Librairie mise à jour dans le pom parent pour utilisation par tous les modules et librairie dépendantes.
Note : cette librairie n'est pas utilisée ou fournie par le coeur, mais uniquement par les modules compatibles avec JPlatform 10.

JCMS-7175

 

5.2 Front end / client side / JavaScript

TinyMCE 4.8.5

https://www.tinymce.com/docs/changelog/

Issue : JCMS-6819

MediaElement.js 4.2.9

https://github.com/mediaelement/mediaelement/blob/4.2.9/changelog.md

Issue JCMS-6186

Mise à jour Truncate côté client

La librairie clamp.js qui permet de faire du truncate côté client en JS a été mise à jour afin d'offrir un meilleur support de Internet Explorer et Firefox.

JCMS-6948

Handlebars 4.0.12

https://github.com/wycats/handlebars.js/releases/tag/v4.0.12

Issue : JCMS-6932

6. Certifications

Les nouveaux environnements suivant sont certifiés à partir de JPlatform 10 SP2

  • Apache Tomcat 9.x
  • Java 11 (Oracle JDK ou OpenJDK)
    Des nouvelles versions des modules sont nécéssaires pour garantir le support de Java 11, elles seront diffusées ultérieurement à la sortie de JPlatform 10 SP2.
    Module Fonctionnalité Version à partir de laquelle le module est/sera compatible Java 11 Issue
    CMIS   3.2 CMIS-68
    ESN Export vers outlook 6.2 ESN-583
    Exchange   9.1 EXCH-93
    FranceConnect   1.10 #13
    Gantt   5.2 GANTT-125
    JSR-286   3.1 JSRP-11
    Smartphone Affichage d'un membre 3.2 SMARTPHONE-148
    WebEx     WEBEX-18

Sont toujours certifiés : 

  • Java
    • Oracle JDK 8
    • OpenJDK8
  • Serveurs d'applications
    • Apache Tomcat 8.5.x
    • IBM WebSphere AS 9.0
    • JBoss EAP 7.0 ou JBoss EAP 7.1

Consultez le  manuel d'installation et d'exploitation pour la liste des environnements certifiés.

En résumé...

Cette page présente les principales nouveautés de JPlatform 10 SP2.

Sujet
Produits
Publié

28/02/19

Rédacteur
  • Olivier Dedieu

Table des matières

  1. 1. Nouvelles fonctionnalités
    1. 1.1 Alertes : Marquer toutes les alertes d'une publication comme lues
    2. 1.2 Alertes : Se désabonner d'une publication
    3. 1.3 Alertes : tri chronologique ou antéchronologique
    4. 1.4 Éditeur de propriétés
    5. 1.5 Contrôle des droits de consultation lors de la suppression d'un Groupe
    6. 1.6 Formulaires privés par défaut
    7. 1.7 Information sur une publication : affichage des DB referrers
    8. 1.8 ACL : Affectation restreinte aux administrateurs centraux
  2. 2. Nouveautés front-end
    1. 2.1 Image de fond de la page de login
    2. 2.2 Cartes
    3. 2.3 Icones
    4. 2.4 Cohérence dans l'affichage "Pas de résultat"
    5. 2.5 Forcer l'URL d'accueil de la topbar
    6. 2.6 Duration Field : ajout de l'option maxResolution
    7. 2.7 Recherche de membres : tri configurable
    8. 2.8 Web assets & déclaration
    9. 2.9 Tri alphabétique des membres dans les formulaires d'édition de droits
    10. 2.10 Wysiwyg - Table des matières 
    11. 2.11 Group Chooser : filtrage sur l'espace courant
  3. 3. Nouveauté back-end
    1. 3.1 Ajout du portail courant dans la session
    2. 3.2 DBEventLog : Ajout de la notification
    3. 3.3 ReplicaMessage : amélioration de la notification
    4. 3.4 Relecture des propriétés "channel.public-path.*"
    5. 3.5 DBReferrerManager
    6. 3.6 Tri topologique des modules
    7. 3.7 Sécurité : Same-site cookie
    8. 3.8 Sécurité : controle CSRF à l'authentification
    9. 3.9 Liste des types d'un espace
    10. 3.10 Liste des publications partagées entre espaces
    11. 3.11 Recherche textuelle : filtre par catégories
    12. 3.12 Recherche textuelle : lucene, scoring et boost de champ
    13. 3.13 Recherche textuelle : configuration du rattrapage pour les contenus multilingues
    14. 3.14 Base de données : failfast
    15. 3.15 Base de données : JSPs sans transaction Hibernate
    16. 3.16 Ajout d'une API REST de gestion des alertes
    17. 3.17 Ajout d'un nouveau suffixe de propriété
    18. 3.18 Modale d'édition générée : ajout du champ Espace de travail
    19. 3.19 Logs debug dans la mécanique de résolution des portails
  4. 4. Modification d'API
    1. 4.1 Wysiwyg : configuration d'éditeur
    2. 4.2 Changement de contrat sur JcmsUtil.getLanguageMap(String[], boolean)
  5. 5. Dépendances 
    1. 5.1 Back end / server side / Java
    2. 5.2 Front end / client side / JavaScript
  6. 6. Certifications