SharePoint 2007 : Déploiement de WebPart et Utilisation de SPFeatureReceiver

Que faire lorsque vous avez enfin fini de développer votre WebPart ? La déployer !

Comment ? Plusieurs méthodes existes mais me connaissant, vous devez savoir que je vais parler de feature, de solution et de WSPBuilder et des VseWss.

Regardons ensemble la base de la feature pour déployer la webpart suivante (code simple car ce n'est pas le sujet de ce post) :

webpart_code

Pour déployer cette webpart vous allez utiliser une feature composé de 3 fichiers dont voici un exemple :

  • Feature.xml

    feature_xml_1
     
  • Elements.xml

    element_xml

  • [nomdewebpart].webpart

    fichier_webpart

Pour plus d'informations concernant les attributs et sections composant chacun de ces fichiers, je vous renvoie au SDK WSS 3.0  (Oui, je sais c'est facile ^^)

Au final, cette feature uploadera le fichier CleanWebpart.webpart dans la galerie de webpart de votre collection de site via la section Module compris dans le fichier elements.xml.

La problématique avec cette section Module est qu'elle uploade bien les fichiers mais ne les supprime pas lors de la désactivation de la feature. Dans certain cas, c'est le comportement souhaitable mais il peut y avoir des cas où vous souhaiteriez avoir l'effet inverse.

Pour ce faire, vous allez compléter le fichier feature.xml comme suit (Ajout de l'attribut ReceiverAssembly et ReceiverClass) :

feature_xml_full

Rajouter un nouveau fichier de type "class" (ici, nommé CleanWebpartReceiver) et le faire hériter de SPFeatureReceiver. Cette classe a 4 méthodes intéressantes :

Public method FeatureActivated Appelée après activation de la feature
Public method FeatureDeactivating Appelée lors de la désactivation de la feature
Public method FeatureInstalled Appelée après installation de la feature
Public method FeatureUninstalling Appelée lors de la désinstallation de la feature

Il ne vous restera plus qu'à overrider les méthodes qui vous intéressent (activation, désactivation, etc...) :

feature_deactivating

Le mécanisme est relativement simple :

  1. Récupération de la collection de site via les propriétés de la feature (properties.feature.parent est un SPSite car la feature a été inscrite en SCOPE = SITE)
  2. Récupération du catalogue de Webpart sous la forme d'une SPList
  3. Récupération du fichier descriptif de la Webpart (CleanWebpart.webpart) via la fonction GetWebPartFileName
  4. Suppression de la WebPart

Voyons ensemble la fonction DeleteWebPartViaCAML :

delete_webpart

Les amateurs reconnaîtront l'utilisation de l'outil CAMLViewer.

Ici on récupère, via une requête CAML, tout les éléments du catalogue de webpart qui sont liée à CleanWebpart.webpart, puis on les supprime.

Quel en est l'effet ? Dorénavant, un utilisateur ne pourra plus rajouter cette webpart dans la collection de site concernée.

Néanmoins, toute les webparts ajoutées antérieurement continuerons de fonctionner normalement (tant que la DLL sera dans le GAC).
 

Pour finir, il est intéressant de noter que l'on pourrait pousser le vice jusqu'à ajouter automatiquement la webpart sur la homePage (par exemple) du site WSS via l'utilisation du SPLimitedWebPartManager. Ce manager permet (entre autres choses) de manipuler (Ajout, Suppresion, Modification, Connection, etc...) les webparts sur une page de webpart.

feature_activated   

Bien sur, tout ceci aurait pu être fait différemment et de manière plus complète (gestion d'erreurs, commentaires ^^) mais je suis sur que vous avez saisi l'idée.

<Philippe/>

Publié lundi 17 mars 2008 08:30 par phil
Classé sous , , , ,
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 :

Commentaires

# re: SharePoint 2007 : Déploiement de WebPart et Utilisation de SPFeatureReceiver @ mardi 18 mars 2008 15:02

Ca j'adore comme post !!!

Nickel, dommage que tu ne fournisse pas un lien de download, ca aiderais bien du monde

Crois moi

++

themit

About phil

Philippe Sentenac est Consultant SharePoint à Wygwam en région Parisienne. Il intervient essentiellement sur des missions liées à SharePoint (2007 et 2010 ) mais aussi autour du Web 2.0. Plus généralement, il s'intéresse à l'ASP.Net (MVC) , à Silverlight, et à tout ce qui est orienté Web en rapport avec les nouvelles technologies, qu'il pratique depuis 2006. Féru de développement, il est passionné par les problématiques de méthodologies et d'industrialisation du développement.

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01