6 novembre 2011

INFOPATH FORMS SERVICES 2010 : Ajouter script

Aujourd'hui un petit post sur une méthode de customisation de vos formulaires InfoPath Forms Services sous SharePoint 2010.
Il est à présent possible d'ajouter du script dans votre page du formulaire en utilisant du code managé. Cela ouvre les perspectives suivantes:
- Modifier les styles CSS en les surchargeant,
- Ajouter du javascript dans le formulaire (par exemple lancer un alert javasscrpit lors du clic sur un bouton pour confirmer bon fonctionnement d'une action),

L'exemple suivant permet d'afficher une alert lors du clic sur un bouton:

// Désolé l'éditeur de blogger écrase le javascript, il faut donc encapsuler le alert ci-desssous dans une balise script javascript pour réaliser l'action
string script = "alert('Modification réalisée sur le clic du bouton');";
Page page = HttpContext.Current.Handler as Page;
ClientScriptManager csm = page.ClientScript;
csm.RegisterClientScriptBlock(typeof(Page), "AddAlert", script, true);


Il est de même possible d'utiliser par exemple du JQuery en réferençant la librairie selon la méthode précédente.
Cette opportunité permet de réaliser des formulaires répondant à quasiment tous les besoins clients.
La seule limite reste l'imagination!

23 octobre 2011

INFOPATH : Ajout ligne tableau extensible

Il existe différentes méthodes permettant d'ajouter des lignes à un tableau extensible par programmation. Le but étant par exemple de pré-remplir un tableau à l'ouverture du formulaire ou selon une action dans le formulaire.

Ces méthodes d'insertion consistent souvent à redéfinir tous les champs à l'intérieur de cette zone extensible un par un. Ceci  est bien souvent source d'erreur si la structure de votre zone extensible est régulièrement amenée à être modifiée.
Il existe cependant une méthode toute simple (en une seule ligne de code) qui permet d'ajouter une ligne dans un tableau:

this.CurrentView.ExecuteAction(ActionType.XCollectionInsert, "mongroupe");


où le nom "mongroupe" est obtenu en réalisant un clic droit sur la zone extensible, puis en allant dans la partie propriété. Ensuite se positionner dans la zone "XmlToEdit" disponible dans l'onglet avancé.

7 octobre 2011

InfoPath Forms Services 2010 : Erreur CU Juin

Petit billet au sujet d'une erreur survenue après le passage de la CU de Juin pour SharePoint 2010. Lors de l'utilisation d'un formulaire InfoPath Form Services, l'erreur suivante est apparue:
  • Version EN : The security Validation for this page is invalid. Click back in your Web Browser, refresh the page and try your operation again.
  • Version FR : La validation de la sécurité de cette page n'est pas valide. Cliquez sur Précédente de votre navigateur et retentez l'opération.
Ce problème est issu de l'installation de la CU de Juin. Il peut survenir lors d'un changement de vue, l'utilisation d'une pièce jointe ou l'utilisation d'un sélecteur de personne par exemple. Cette erreur survient de même sur des formulaires ne possèdant pas de code managé.
Cela est du à la modification du fonctionnement d'InfoPath Form Services dans cette CU : un postback est à présent généré mais celui-ci nécessite une validation qu'il ne trouve pas sur la page.

Il existe deux solutions pour contourner ce problème:
  • Désactiver la validation de la sécurite. Cette méthode est déconseillée clairement pour des notions de sécurité. La désactivation peut causer des effets non désirés.

  • Modifier la page FormServer.aspx du serveur SharePoint.
    La marche à suivre pour modifier le fichier est la suivante:
    • Se placer dans le répertoire "14" de SharePoint.
    • Aller dans "Templates/Layouts".
    • Se placer sur la page "FormServer.aspx",
    • Ouvrir ce fichier et ajouter la balise au dessous de la balise body de la page.
    • Enregistrer la modification
    • Réaliser cette action sur tous les frontaux de la ferme SharePoint.
Attention cette seconde solution n'est que temporaire car elle consiste à aller modifier une page dans le répertoire 14 de SharePoint. Ceci est déconseillé par Microsoft car un passage de KB ou CU peut écraser votre modification.
En attendant, elle fonctionne à merveille car les formulaires fonctionnent parfaitement par la suite.
Seulement actuellement, il semble qu'il n'existe pas de correctif officiel sur ce problème.
A priori, ce correctif devrait être installé dans les prochaines CU.

So wait and see!!!

4 octobre 2011

Félicitations aux MVP 2011

Bonjour à tous,

Aujourd'hui un petit post rapide pour vous indiquer que depuis ce début de semaine j'ai la chance d'avoir été nommé MVP InfoPath.
Il existe moins d'une dizaine de MVP sur cette technologie dans le monde et il semble que je sois le seul en Europe, ce qui rend cette récompense d'autant plus appréciable.
 
Je profite de ce post pour remercier toutes les personnes ayant contribuées à cette nomination qui récompense le travail fourni durant des années autour de cette technologie.
De même je tiens à féliciter tous les MVP récompensés (renouvelés ou fraichement nominés) sur les differentes technologies Microsoft.

Je continuerai avec plaisir au travers de ce blog et de la communauté à vous faire partager mon expérience autour des technos InfoPath et SharePoint notamment.

22 juillet 2011

SHAREPOINT 2010 : Service Timer stopping

Retour aux choses sérieuses après quelques mois d'arrêt.
Aujourd'hui, le problème porte sur SharePoint 2010 et son fameux service nommé "SharePoint Timer".

Il arrive assez fréquemment sur les machines de développement d'avoir un petit soucis avec le service timer.
En effet, celui-ci ne fonctionne plus et lorsque vous chercher à le redémarrer, le service en question se fige sur l'état "Stopping" (en cours d'arrêt):



Pour arriver à retourner à la normale. Il faut:
  • Stopper le processus "OWSTIMER.exe" depuis le gestionnaire des tâches de la machine,
  • Réaliser un clic droit sur le service "SharePoint Timer" puis se placer dans l'onglet "Récupération" (Recovery). Ensuite sélectionner "Ne rien faire" au niveau des 3 zones de listes déroulantes des défaillances.
  • Arrêter et redémarrer le service.
Tout refonctionne ainsi dans le meilleur des mondes!