May 18, 2014 11:31:07 PM lutece lutece avatar   368    

Créer un nouveau PageIncludeService


Définition

Les PageIncludeServices sont des services qui permettent d'inclure du code HTML dans les pages du site par biais de bookmarks placés dans le gabarit principal du portail (page_frameset.html ). Ces services peuvent introduire du contenu mais sont plutôt destinés à insérer du code technique à des emplacements non accessibles pour les portlets ou les XPageApp. Par exemple insérer dynamiquement, dans la partie <head> des pages HTML, des liens vers des feuilles de style CSS ou vers des fichiers RSS.

Déclaration

Lutèce intègre par défaut plusieurs PageIncludeServices :

NomDescription
LinksInsertion des feuilles de style CSS et des Javascripts spécifiques des plugins installés
MétasInsertion des valeurs des tags méta à partir de celles définies dans le fichier webmaster.properties
ThemesGestion dynamique des chemins des feuilles de style CSS en fonction du thème associé à la page
StatisticsInsertion du code HTML spécifique à l'outil de mesure d'audience

Les services par défaut sont déclarés dans le fichier lutece.properties Les plugins peuvent ajouter de nouveaux PageIncludeServices en les déclarant dans leur fichier XML de la manière suivante :

<page-include-service> 
     <page-include-service-name>My Include Service</page-include-service-name> 
     <page-include-service-class>fr.paris.lutece.myplugin.web.MyInclude</page-include-service-class> 
 </page-include-service>

Implémentation

Un PageIncludeService doit implémenter l'interface PageInclude .

Voici un exemple très simple d'implémentation :

public class MyInclude implements PageInclude
  {
         private static final String MARK_MY_INCLUDE = "my_include";

         /**
         * {@inheritDoc }
         */
         @Override
         public void fillTemplate( Map<String, Object> rootModel, PageData data, int nMode, HttpServletRequest request )
         {
               rootModel.put( MARK_MY_INCLUDE , "My include content" );
         }
 }