Déploiement d'un webpart personnel dans Sharepoint
Date de publication : 16/08/2007
Par
Stephane Eyskens (Blog)
Les utilisateurs de Sharepoint connaissent bien les WebParts ainsi que les développeurs ASP.net. Beaucoup d'utilisateurs/développeurs
Sharepoint utilisent les WebParts intégrés ou disponibles sur le web et ils ont bien raison. Cependant, il peut être nécessaire de développer
son propre WebPart pour des besoins très spécifiques. Le but de ce tutoriel est précisément de détailler toutes les étapes nécessaires à la création
d'un WebPart personnel et à son déploiement dans Sharepoint.
Note: Ce tutoriel s'adresse aux utilisateurs de Sharepoint ayant l'habitude d'utiliser les WebParts intégrés et aux développeurs dotnet ayant déjà une bonne expérience de la plate-forme.
I. Introduction
II. Développement
II-A. Outils
II-B. Principales caractéristiques d'un WebPart Sharepoint
II-B-1. Code de notre WebPart
II-C. Signature, GAC et construction d'un fichier bat
II-C-1. Signature
II-C-2. Fichier bat
II-C-3. Exécution automatique du fichier bat
III. Déploiement dans Sharepoint
III-A. Modification du web.config
III-B. Chargement du WebPart dans la galerie des WebParts
III-C. Utilisation du WebPart
IV. Téléchargement
I. Introduction
Ce tutoriel se borne à décrire les étapes basiques nécessaires à la création d'un WebPart personnel pour WSS V3 et/ou MOSS 2007.
Le WebPart affichera "Bonjour xxx" à l'utilisateur visitant la page. D'autres tutoriels sur la création de WebParts plus complexes suivront :)
II. Développement
II-A. Outils
Vous pouvez trouver les outils (templates) pour visual studio
ici.
Il est cependant tout à fait possible de développer un WebPart sans télécharger de template spécifique. Un WebPart n'est en résumé qu'un
contrôle serveur héritant de la classe WebPart. Un projet "Class Library" est suffisant pour développer un WebPart.
L'avantage du template est qu'il va automatiquement ajouter la référence vers la librarie Sharepoint, vers la librarie System.Web, va signer l'assembly et va aussi offrir un squelette de code permettant au développeur
de démarrer plus facilement.
Je vais cependant utiliser un simple projet de type "Class Library" afin de ne pas forcer les lecteurs à installer le template et à pouvoir utiliser l'exemple
en téléchargement directement.
II-B. Principales caractéristiques d'un WebPart Sharepoint
- Un WebPart est un contrôle serveur héritant de la classe System.Web.UI.WebControls.WebParts.WebPart
- Il faut ajouter la référence System.Web pour pouvoir le faire fonctionner
- Il faut au minimum implémenter la méthode Render() ou RenderContents() qui permet de générer le HTML dans la page cible
- Si l'on utilise des contrôles ASP.NET (webcontrols), il faut implémenter la méthode CreateChildControls()
- Si le WebPart nécessite une interaction quelconque avec Sharepoint (liste par ex.), il faut au minimum lui ajouter la référence Microsoft.Sharepoint.dll
Il est également important de noter que Visual Studio n'offre pas d'interface "Designer" pour créer les WebParts en dehors des
WebParts classiques développés dans une application
ASP.NET. Vous devez donc coder l'interface graphique "à la main". A toutes fins utiles, il est néanmoins possible d'utiliser des contrôles utilisateur d'ASP.NET bénéficiant d'une interface Designer et de les
associer ultérieurement au
SmartPart, un outil développé par un passionné.
II-B-1. Code de notre WebPart
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace HelloUser
{
public class HelloUser : WebPart
{
Label CurrentUserName = null;
protected override void CreateChildControls()
{
CurrentUserName = new Label();
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
CurrentUserName.Text = "Bonjour " + HttpContext.Current.User.Identity.Name;
}
else
{
CurrentUserName.Text = "Bonjour inconnu(e)";
}
Controls.Add(CurrentUserName);
}
protected override void RenderContents(HtmlTextWriter writer)
{
CurrentUserName.RenderControl(writer);
}
}
}
|
II-C. Signature, GAC et construction d'un fichier bat
L'ajout d'un fichier bat à son projet est très utile pour automatiser le déploiement de celui-ci dans la GAC et pour
redémarrer IIS afin que la DLL modifiée soit directement disponible dans Sharepoint.
II-C-1. Signature
La première chose à faire pour pouvoir déployer son assembly dans la GAC (
global assembly cache) est de le signer. Pour cela,
sélectionnez votre projet dans l'explorateur de solution de Visual Studio et cliquez sur "Properties", ensuite sur l'onglet "Signing". Vous devriez obtenir ceci

Signature
Cochez "Sign the assembly" et sélectionnez "New" dans la liste. Tapez ensuite "HelloUser" comme illustré dans l'image et cliquez sur "Ok".
II-C-2. Fichier bat
Vous pouvez désormais ajouter le fichier bat à votre projet, effectuez les opérations suivantes:
Etapes pour ajouter le fichier bat
- Sélectionnez votre projet dans l'explorateur de solutions de visual studio
- Cliquez sur le bouton droit, choisissez "Add" -> "New Item"
- Choisissez un fichier texte
- Renommez-le en "Install.bat"
- Copiez-y les commandes décrites ci-dessous.
| Contenu du fichier bat |
echo Adding assemblies to the GAC...
"%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -uf HelloUser
"%programfiles%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" -if bin\Debug\HelloUser.dll
iisreset
|
Notez qu'au lieu d'effectuer un iisreset, vous pouvez également redémarrer le pool d'application lié à votre application. Ceci permet
d'éviter de perturber les autres applications hébergées par IIS sur d'autres pools d'application pour autant que votre configuration s'y prête.
Si vous disposez de plusieurs pools d'application, vous pouvez remplacer IISRESET par ceci
| Redémarrer uniquement le pool d'application |
cscript c:\windows\system32\iisapp.vbs /a "votre pool d'application" /r
|
Ceci est beaucoup plus rapide et n'affecte que les applications exécutées par le pool courant.
II-C-3. Exécution automatique du fichier bat
L'intérêt d'utiliser un fichier bat est qu'il s'exécute automatiquement lorsque vous compilez l'application. Pour cela,
allez dans les propriétés de votre projet, cliquez sur l'onglet "Build Events" et tapez le contenu illustré par l'image.

Evènement de compilation
Si vous n'avez pas fait d'erreur, le WebPart devrait automatiquement être déployé dans la GAC après compilation et IIS ou le pool d'application devrait être redémarré.
III. Déploiement dans Sharepoint
Il existe plusieurs méthodes de déploiement d'un WebPart dans Sharepoint. On peut utiliser une feature, le déployer
avec l'outil en ligne de commande stsadm notamment. Nous allons voir une autre approche qui consiste à utiliser la centrale
d'administration de Sharepoint.
III-A. Modification du web.config
Le fichier web.config, contenant toute la configuration,se situe à la racine de votre application Sharepoint. Choisissez donc le web.config qui convient
si vous disposez de plusieurs applications. Si nous prenons l'application par défaut sur le port 80, son web.config devrait normalement se situer
dans C:\Inetpub\wwwroot\wss\VirtualDirectories\80\
Editez le fichier web.config et localisez la section "SafeControls". Ajoutez cette ligne (ex pour le WebPart HelloUser)
<SafeControl Assembly="HelloUser, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f77ee2dd0091abba" Namespace="HelloUser" TypeName="*" Safe="True" />
|
Cette ligne spécifie que ce WebPart est considéré comme un contrôle autorisé. Il faut en effet autoriser l'accès de l'utilisation de ce WebPart dans les pages. Il en va de même
pour des contrôles serveur simples (WebControl)
Note:Pour obtenir la signature de votre assembly, vous pouvez utiliser le très bon outil de
Lutz Roeder (Reflector)
III-B. Chargement du WebPart dans la galerie des WebParts
Maintenant que vous avez renseigné notre WebPart comme étant un contrôle autorisé, il est temps de le charger dans Sharepoint afin de pouvoir l'utiliser.
Cliquez sur le menu Site -> Site Settings, vous devriez obtenir cet écran (réduit pour économiser de l'espace)

Galerie de WebParts
Cliquez sur "Web Parts", vous obtenez l'écran suivant

Galerie de WebParts
Cliquez sur "New" pour charger votre WebPart, vous devriez obtenir ceci:

HelloUser
Cochez la case à cocher et cliquez sur "Populate Gallery".
III-C. Utilisation du WebPart
Allez sur n'importe quelle WebPart page de votre site Sharepoint et cliquez sur Site Actions -> Edit Page. Localisez
la zone où vous voulez insérer le WebPart et cliquez sur "Add a WebPart". Vous obtenez cette fenêtre où vous retrouverez le WebPart "HelloUser"

HelloUser
Cliquez sur Ok et visualisez le résultat

Exemple d'utilisation de HelloUser
IV. Téléchargement
Vous pouvez télécharger l'exemple au format zip
ici


Les sources présentées sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©
2007 stephane eyskens. Aucune reproduction,
même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.