Jun 18, 2015 3:28:18 PM R├®mi Zara avatar   438    

Créer des propriétés du site

Objectif

L'objectif de cette fonctionnalité est qu'un plugin puisse fournir des propriétés à renseigner qui s'ajoutent automatiquement dans l'interface de gestion des propriétés du site. Par exemple, le plugin gtools (Google Tools) propose la saisie du code Google Analytics dans les propriétés du site.

Fonctionnement

Les clés des propriétés sont stockées dans le Datastore. Par convention, elles doivent être préfixées par le nom du plugin suivi de site_property.

Pour qu'un groupe de propriétés s'affiche dans l'interface du back office "Gestion des propriétés du site", il faut déclarer un bean dans le fichier context du plugin.

Ce bean doit fournir les informations suivantes :

  • nom du groupe
  • description du groupe
  • préfixe des clés du groupe

Voici la déclaration d'exemple du bean (remplacer XXX par le nom du plugin):

<bean id="XXX.sitePropertiesGroup" class="fr.paris.lutece.portal.service.site.properties.SitePropertiesGroup" >
        <property name="nameKey"><value>XXX.site_properties.name</value></property>
        <property name="descriptionKey"><value>XXX.site_properties.description</value></property>
        <property name="keysPrefix"><value>XXX.site_property.</value></property>
</bean>

NB : Les clés du nom et de la description du groupe sont des clés i18n à créer dans le fichiers myplugin_messages_(locale).properties. Les propriétés elles-mêmes doivent être créés dans le Datastore, soit par un script sql d'initialisation, soit par API.

De la même manière, le libellé (label) et le texte d'aide d'une propriété sont à saisir dans le ou les fichiers de ressources i18n en respectant les règles suivantes :

  • La clé i18n du label doit avoir le même nom que la clé de la propriété dans le datastore
  • La clé i18n du texte d'aide est la clé du label suffixée par ".help".

Par défaut les propriétés sont éditables dans un champ texte monoligne. Si la clé de la propriété se termine par ".textblock", la propriété du site sera éditable dans un champ multiligne (text area). Si la clé de la propriété se termine par ".htmlblock", la propriété du site sera éditable dans un éditeur de texte riche.

Voici un exemple de myplugin_messages_en.properties

site_properties.name=My plugin\'s properties
site_properties.description=Specific editable properties of my plugin
site_property.myproperty1=My property 1
site_property.myproperty1.help=Help text for my property 1 
site_property.myproperty2.textbloc=My property 2
site_property.myproperty2.textbloc.help=Help text for my property 2 
...