9 nov. 2021 15:55:06 Thomas Dumont avatar

Créer un groupe de 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 de la manière suivante :

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

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 de chaque propriété est à 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
site_property.myproperty3.htmlbloc=My property 3
site_property.myproperty3.htmlbloc.help=Help text for my property 3
...