Déploiement d'un webpart personnel dans Sharepoint

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.

- Titre : Déploiement d'un webpart personnel dans Sharepoint

- Parution : 16 août 2007

- Licence : 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 œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2007 Developpez. 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'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 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

1. Un WebPart est un contrôle serveur héritant de la classe System.Web.UI.WebControls.WebParts.WebPart

2. Il faut ajouter la référence System.Web pour pouvoir le faire fonctionner

3. Il faut au minimum implémenter la méthode Render() ou RenderContents() qui permet de générer le HTML dans la page cible

4. Si l'on utilise des contrôles ASP.NET (webcontrols), il faut implémenter la méthode CreateChildControls()

5. 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

1. Sélectionnez votre projet dans l'explorateur de solutions de visual studio

2. Cliquez sur le bouton droit, choisissez "Add" -> "New Item"

3. Choisissez un fichier texte

4. Renommez-le en "Install.bat"

5. 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