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 :
Ancien | Nouveau |
---|---|
Field.Store.NO, Field.Index.ANALYZED | TextField.TYPE_NOT_STORED |
Field.Store.YES, Field.Index.ANALYZED | TextField.TYPE_STORED |
Field.Store.YES, Field.Index.NOT_ANALYZED | FieldType ft = new FieldType( StringField.TYPE_STORED ); ft.setOmitNorms( false ); |
Field.Store.YES, Field.Index.NO | FieldType ftNo = new FieldType( StringField.TYPE_STORED ); ftNo.setIndexed( false ); ftNo.setTokenized( false ); ftNo.setOmitNorms( false ); |
Field.Store.NO, Field.Index.NOT_ANALYZED | FieldType ftNotStored = new FieldType( StringField.TYPE_NOT_STORED ); ftNotStored.setOmitNorms( false ); ftNotStored.setTokenized( false ); |
Field.Store.NO, Field.Index.ANALYZED | FieldType 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.