16 décembre 2013

INFOPATH 2010 : Image liée

Une fonctionnalité sympathique d'InfoPath est de pouvoir embarquer des images liées depuis une url. Cela peut-être utile dans le cadre de formulaires comprenant de nombreuses images (bandeau, indicateurs, pictos,...):



Cette fonctionnalité disponible avec InfoPath Forms Services permet donc par exemple d'externaliser les images dans une bibliothèque de formulaires. Cela réprésente un double avantage à mes yeux:
  • Facilité de modification d'une image sans republier le formulaire (très utile pour des formulaires approuvés par l'administrateur qui doivent être publiés via l'administration centrale),
  • Allègement de la taille du formulaire (notamment dans le cas d'utlisation de bannières ou de nombreuses images),
 
Malgré tout, il existe un petit problème avec ce contrôle.
Prenons un exemple simple: Un formulaire comprenant une image liée et une section masquée ou non selon le clic sur des boutons "Plier"/"Deplier".
 
Lors de l'ouverture du formulaire dans InfoPath Forms Services, l'image est correctement affichée:


 
Par contre, lors du clic sur le bouton "+" pour afficher les champs, la section s'affiche correctement mais l'image disparaît lors du postback (et laisse sa place à une icône) :


Lors du prochain postback, l'image réapparaitra comme par magie... En gros, ce n'est pas utilisable en l'état.
 
Le problème provient tout simplement du fait de l'utilisation d'une URL relative pour afficher l'image (par exemple "/_layouts/images/siteicon.png"). L'url relative permet de retrouver l'image lors du premier affichage mais pas lors de tous les postbacks, ce qui nous fait un joli bug...
J'ai détecté cette erreur en testant sur un SharePoint 2010 post SP1 mais après quelques tests, il s'avère que le problème est toujours présent sur le SP2 de SharePoint 2010...

Moralité : N'oubliez donc pas de positionner une URL complète pour l'image liée lorsque vous utilisez ce type de champ.

Aucun commentaire:

Enregistrer un commentaire