Evolutions de la Version 5
Version 5.0.0
Utilisation du framework CSS Bootstrap 3 pour le Front Office
A 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 à des impacts forts sur l'ensemble des plugins utilisants l'indexation (ex : directory, form, calendar, ...). Voici les aspects à prendre en compte pour la migration :
- La classe Searcher a disparu et a été remplacé par IndexSearcher. La méthode de construction est maintenant la suivante :
IndexReader ir = DirectoryReader.open( %INDEX_PATH% ); searcher = new IndexSearcher( ir );
- La classe HTMLParser fourni par lucene-demos a été remplacée par la classe HtmlParser fourni 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." ); } //the content of the article is recovered in the parser because this one //had replaced the encoded caracters (as é) by the corresponding special caracter (as ?) 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 :
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 à une libellé i18n 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.