Salut
Je ne sais pas si tu as résolu ton problème, mais comme tu n'as pas mis de réponse je vais supposer que non, je vais donc y répondre (au pire ça servira pour les autres !).
Ma solution pour récupérer du xhtml et le mettre dans une rich text box ne nécessite aucun bidouillage dans sharepoint, mais par contre du code dans le formulaire. Par contre il faut avoir Infopath 2007 et Visual Studio pour faire ça !
1) Les sources de données du formulaire
J'ai trois sources de données qui sont intéressantes pour l'exemple :
- la source de données correspondante à ma rich text box : commentaires (de la source de données principale)
- la source de donnée externe (celle qui contient le xhtml que je veux insérer dans mon rich text box) : ows_commentaires (de la source de données secondaire)
- une source de donnée intermédiaire (de type string) : commentaires_intermediaire
L'idée est de récupérer les données brutes de la source de données externe pour les mettres directement dans commentaires_intermediaire, puis d'ajouter un enfant à la structure xml de commentaires. Pour cela,
1. définir la source de données secondaires (outils / connexion de données... - si vous utilisez les workflows, je donnerai plus de détails plus bas)
2. lier cette source de données à commentaires_intermediaire (dans valeur par défaut de commentaires_intermédiaire, mettre le champ correspondant à la source de données secondaire)
3. dans les options de formulaire :
- Sécurité et approbation -> Autorisation totale ; Signer ce formulaire et sélectionner un certificat (vous aurez besoin d'en créer un si vous n'en avez pas déjà)
- Programmation -> choisissez le langage de code que vous voulez utiliser (j'utilise C#)
4. Outils / Programmation / Loading (ouvre VS), insérer le code suivant dans FormEvents_Loading :
try
{
XPathNavigator racineXPath = this.MainDataSource.CreateNavigator();
XPathNavigator champ = null;
string chemin_XPath, commentaires;
chemin_XPath = "my:mesChamps/my:commentaires_intermediaire";
champ = racineXPath.SelectSingleNode(chemin_XPath, NamespaceManager);
commentaires = champ.Value;
chemin_XPath = "my:mesChamps/my:commentaires";
champ = racineXPath.SelectSingleNode(chemin_XPath, NamespaceManager);
champ.AppendChild(commentaires);
}
catch (Exception exception) {}
Voilà pour le formulaire... mais comme nous lui avons rajouté du code managé, la publication du formulaire va être un peu plus compliquée...
2) Publier le formulaire
- Fichier / Publier / Vers un serveur Sharepoint blablabla / adresse de votre MOSS / Activer ce formulaire pour navigateur / emplacement du formulaire : où vous voulez, sauf si vous utilisez les workflows (dans ce cas, voir plus bas).
- Si vous n'utilisez pas les workflows, activer le formulaire dans la page d'administration de MOSS (http://serveurMOSS:portAdmin/_admin/ManageFormTemplates.aspx) dans la collection de site pour laquelle vous voulez que le dormulaire soit disponible.
Voilà, je crois que c'est tout !
Note : pour les workflows
On veut transferer les commentaires du formulaire de la tâche A vers les commentaires du formulaire de la tâche B :
- lors de l'évenement OnTaskChanged de la tâche A, insérer : commentaires = taskA_afterProperties.ExtendedProperties["commentaires"].ToString(); (commentaires est un attribut de type string de la classe de votre workflow, Workflow1 en général)
- lors de la création de la tâche B, insérer : taskB_properties.ExtendedProperties["commentaires"] = commentaires;
- ouvrir bloc note (ou n'importe quel éditeur de texte), entrer : <z:row xmlns:z="#RowsetSchema" ows_commentaires="" /> puis enregistrer le fichier sous le nom ItemMetadata.xml (pour plus de renseignements sur cette partie, voir http://msdn2.microsoft.com/en-us/library/ms497641.aspx)
- dans infopath, pour le formulaire de la tâche B, ajouter une connexion de réception de données de type XML et mettez le chemin de votre ItemMetadata.xml.
Concernant la publication, il faut mettre pour l'emplacement du formulaire là où sont les formulaires de tâches de votre workflow (généralement dans le dossier du projet, ou dans un sous-dossier "formulaires"...). De plus, il faut rajouter la DLL correspondant au formulaire. Celle-ci est située généralement dans Mes Documents\Projets InfoPath\nomDuFormulaire\\bin\Release. Copiez cette DLL dans le même répertoire que le formulaire (dans le projet du workflow). Enfin, dans le script de publication du workflow (PostBuildActions.bat par exemple), rajouter la ligne suivante : xcopy /s /Y "%FEATUREDIR%\*.dll" "%FEATURESDIR%\NomDeLaFeature".