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
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:
- 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.
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
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.
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)
Cliquez sur "Web Parts", vous obtenez l'écran suivant
Cliquez sur "New" pour charger votre WebPart, vous devriez obtenir ceci:
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"
Cliquez sur Ok et visualisez le résultat
IV. Téléchargement▲
Vous pouvez télécharger l'exemple au format zip ici