Allez plus loin dans le déploiement de vos features
Avec tout les posts sur codes-sources concernant le deploiement sous SharePoint, je pense que vous etes deja plutot bien rodé et que tout ce qui concerne les features et solutions vous parle deja, et il est vrai qu'il n'est pas évident d'en rajouter sur ce sujet.
D'ailleurs si je vous dis Event Handler vous devrais directement pensé au post de Themit qui nous montre comment utilisé un event handler sur une liste/doclib et agir sur les items : http://blogs.codes-sources.com/themit...une-bon-exemple-d-event-handler-gestion-des-permissions.aspx !
Cependant, si l'on se réfère à ce post de Brian Wilson on remarque qu'il existe plusieurs types d'event handler :
- site level : le SPWebEventReceiver avec des évènements comme :
- SiteDelet(ed|ing)
- WebDelet(ed|ing)
- WebMov(ed|ing)
- list level : le SPListEventReceiver qui possède des évènements comme :
- FileAdd(ed|ing)
- FileDelet(ed|ing)
- FileUpdat(ed|ing)
- item level : le SPItemEventReceiver que nous connaissons bien et que je ne vais pas énumerer
Cependant, si l'on s'interresse à ce lien sur la MSDN on constate un autre type de receiver : http://msdn2.microsoft.com/en-us/library/ms469501.aspx, savoir le SPFeatureReceiver :)
Ce receiver nous permet donc d'accéder à quatres évènements liés aux features (que je ne vais pas détailler car leur noms sont assez explicite vous en conviendrez) qui sont :
- FeatureActivated
- FeatureDeactivating
- FeatureInstalled
- FeatureUninstalling
Ainsi pour l'utiliser il nous suffit d'hériter SPFeatureReceiver dans notre classe, et il est à noter que toutes ses méthodes ont pour paramètres un SPFeatureReceiverProperties fort utile car il permet notemment de se connecter au site parent ou sera déployer la feature. Il s'utilise de la manière suivante :
1: using (SPSite site = (properties.Feature.Parent as SPSite))
2: {
3: //votre code ici
4: }
Maintenant, dernière question restante, comment lié la feature avec notre eventhandler ?
Tout simplement en modifiant notre fichier feature.xml afin de lui spécifier la signature de notre dll, pour cela dans le tag Feature il nous faut rajouter deux attributs qui de fait resemble à ce que nous ajoutons dans un fichier web.config:
- ReceiverAssembly
- ReceiverClass
1: <Feature [...] ReceiverAssembly="FeatureEventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=151fe383e657f07a" ReceiverClass="FeatureEventHandler.Class1">
2: <ElementManifests>
3: <ElementManifest Location="elementManifest.xml" />
4: </ElementManifests>
5: </Feature>
Il ne vous reste plus qu'à l'utiliser celon vos besoins !
alex.
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :