2 mars 2018, 17:59:45 seb leridon

Evolutions de la Version 5

Table des matières

Version 5.0.0

Utilisation du framework CSS Bootstrap 3 pour le Front Office

À partir de Lutece v5.0, les templates du front Office s’appuient sur la version 3 du framework Bootstrap.
Documentation officielle décrivant la migration de la version 2.x vers la 3.0

Mise à niveau des librairies Lucene

Mise à jour de la librairie d’indexation et d’analyse (Lucène et Tika). Lucène est maintenant en version 4.6.1 et Tika en version 1.5.
Cette évolution a des impacts forts sur l’ensemble des plugins utilisant l’indexation (ex : directory, form, calendar, …). Voici les aspects à prendre en compte pour la migration :

  • La classe Searcher a disparu et a été remplacée par IndexSearcher. La méthode de construction est maintenant la suivante :

    IndexReader ir = DirectoryReader.open( %INDEX_PATH% );
    searcher = new IndexSearcher( ir );
    
  • La classe HTMLParser fournie par lucene-demos a été remplacée par la classe HtmlParser fournie par Tika. Le parsing de document HTML se fait dorénavant de la manière suivante :

    String strContentToIndex = getContentToIndex( document );
    ContentHandler handler = new BodyContentHandler( );
    Metadata metadata = new Metadata( );
    try
    {
        new HtmlParser( ).parse( new ByteArrayInputStream( strContentToIndex.getBytes( ) ), handler, metadata,
        new ParseContext( ) );
    }
    catch ( SAXException e )
    {
        throw new AppException( "Error during page parsing." );
    }
    catch ( TikaException e )
    {
        throw new AppException( "Error during page parsing." );
    }
    
    // le contenu de l'article est récupéré dans le parser car celui-ci
    // a remplacé les caractères encodés (comme é) par le caractère spécial correspondant (comme ?)
    StringBuilder sb = new StringBuilder( handler.toString( ) );
    
  • Les classes Field qui permettent d’indexer et d’analyser les champs Lucène ont été refactorées. Voici les changements à effectuer :

AncienNouveau
Field.Store.NO, Field.Index.ANALYZEDTextField.TYPE_NOT_STORED
Field.Store.YES, Field.Index.ANALYZEDTextField.TYPE_STORED
Field.Store.YES, Field.Index.NOT_ANALYZEDFieldType ft = new FieldType( StringField.TYPE_STORED );
ft.setOmitNorms( false );
Field.Store.YES, Field.Index.NOFieldType ftNo = new FieldType( StringField.TYPE_STORED );
ftNo.setIndexed( false );
ftNo.setTokenized( false );
ftNo.setOmitNorms( false );
Field.Store.NO, Field.Index.NOT_ANALYZEDFieldType ftNotStored = new FieldType( StringField.TYPE_NOT_STORED );
ftNotStored.setOmitNorms( false );
ftNotStored.setTokenized( false );
Field.Store.NO, Field.Index.ANALYZEDFieldType ftNotStored = new FieldType( StringField.TYPE_NOT_STORED );
ftNotStored.setOmitNorms( false );

Libellés i18n avec paramètres

Il est possible à partir de Lutece v5 de passer des paramètres à un libellé i18n en utilisant le motif (pattern) de la classe Java MessageFormat dans le fichier de ressources myplugin_messages.properties :

mykey.message=My message using 2 arguments : {0} and {1}
${i18n("myplugin.mykey.message" , argument1 , argument2 )}

Surcharge de valeurs i18n

Les valeurs par défaut des clés i18n sont surchargeables dans des fichiers placés sous /WEB-INF/conf/override/ et respectant la même arborescence.