Les plugins
Intégration d'un plugin
L'intégration d'un plugin suit les mêmes principes d'intégration que pour les autres éléments :
- Création de la jsp de vue
- Déclaration d'un ViewModel
- Déclaration d'un ViewPreparer
Le ViewPreparer doit étendre AbstractPluginViewPreparer et déclarer quatre propriétés :
- dataKey : clé poussé dans le contexte pour stocker les informations du plugin
- idBean : permet de vérifier la présence du plugin sur la fiche courante
- idExtensionPoint : permet d'identifier de manière unique la vue du plugin
- pointNames : défini la liste des zones dans lequel le plugin va s'afficher.
Exemple :
<bean id="ficheLinkViewPreparer" class="com.kosmos.preparer.FicheLinkViewPreparer">
<property name="type" value="fichelinkPlugin"/>
<property name="view" value="/WEB-INF/jsp/ficheLinkPlugin.jsp"/>
<property name="idBean" value="fichelinkPluginFiche"/>
<property name="dataKey" value="fichelinkPluginFiche#fichelink"/>
<property name="idExtensionPoint" value="fichelinkPluginFicheAddOn"/>
<property name="pointNames">
<list>
<value>default-plugins</value>
</list>
</property>
</bean>
Cela permet de bénéficier de la méthode accept du AbstractPluginViewPreparer qui vérifie si le plugin est présent dans le contexte courant et s'il est disponible pour la fiche courante et permet également au plugin d'être récupéré par le PluginsViewPreparer (voir section suivante),
Inclusion de tous les plugins
Il est possible de faire une inclusion de tous les plugins disponibles pour la fiche courante au sein de la page. Le ViewPreparer dans lequel les plugins seront injectés doi ajoutés dans sa liste de expectedViewTypes le type plugins.
<property name="expectedViewTypes">
<value>plugins</value>
</property>
L'ajout du type plugins dans les expectedViewTypes va effectuer la préparation du PluginsViewPreparer.
Le PluginsViewPreparer est en charge de récupérer la liste des tous les ViewPreparer qui étendent AbstractPluginViewPreparer et appeler
la méthode prepare de chaque ViewPreparer; les ViewModel résultants sont poussés dans la map reliant chaque zones d'affichages aux plugins qui y sont abonnés, dans PluginsViewModel.
L'affichage des plugins est géré par le pluginAddOn.