none
Mise à jour d'un webpart en cascade RRS feed

  • Question

  • Bonjour.

     

    J'ai pour projet de déployer sharepoint dans le service dans lequel je travail.

     

    Nous avons plusieurs projets. L'objectif est d'avoir une page de présentation pour chaque projet. Les informations seront entrées à la main par les chefs de projet : nom du projet, date début, salariés en charge,...

     

    L'objet du topic porte sur la meilleure façon de mettre à jour une webpart qui permettra d'afficher les informations du projet.

     

    Les contraintes sont :

    - les informations seront entrées à la main par les chefs de projet dans un premier temps.

    - il devra être possible de modifier le webpart qui affichera les informations en cascade sur tous sites. C'est à dire que si je décide qu'une nouvelle information doit être affichée, cela doit être mis à jour sur tous les sites qui possèdent la webpart.

     

    Mon idée :

    - créer une liste de paramètres à la base de chaque site projet (qui contiendra chaque information à afficher dans la webpart).

     

    Question :

    - Dois-je créer une feature qui permettra de déployer la ou les webpart sur les sites projets une fois activée ?

    - Comment pourrais-je faire par la suite pour la mettre à jour ? Faudra-t-il faire une désactivation/activation de la feature ou bien le simple fait de mettre la webpart à jour suffira ? Peut-on mettre à jour une webpart en cours d'utilisation ?

     

    Merci, n'hésitez pas à me demander des précisions.

    lundi 17 novembre 2008 09:36

Réponses

  • Bonjour,

     

    SharePoint Designer a d'autres atout mais n'est effectivement pas adapté pour gérer cette problématique. Je vous recommande l'utilisation de features pour gérer ça.

     

    Il vous faut une feature de scope "Site" pour déployer votre WebPart. Si votre site projet est une nouvelle collection de sites, c'est l'idéal (pour d'autres raisons que le déploiement, mais je ne vais pas le détailler ici). Cette feature peut utiliser un feature receiver, ce qui vous permettra d'éxécuter du code à l'activation de votre feature. Ce code viendra évidemment placer la webpart sur votre page d'accueil. L'utilisation d'un SPLimitedWebPartManager vous permettra de réaliser cette action (vous trouverez un exemple sur le blog de Thomas Conté).

     

    Si vos sites projet ne correspondent pas à une collection de sites à part entière, peut être pourrez vous parcourir tous vos sites pendant l'activation de la feature pour retrouver vos sites projet et exécuter le code présenté précédemment.

     

    Reste à activer cette feature sur tous vos sites ou collections de sites. Pour le faire, deux points :

     

    • Sites déjà existant : pour les collections de sites déjà existantes, il suffit de les parcourir et d'activer la feature pour chacun d'eux. Ceci peut être fait automatiquement via une autre feature, de scope WebApplication cette fois ci. Le code n'est pas très complexe (un simple "foreach SPSite site in webApp.Sites ..." suivi d'un site.Features.Add() pour activer la feature précédente)
    • Pour les sites à venir : il y a une solution qui s'appelle le feature stapling. Elle permet d'associer une feature à un modèle de site, ce qui permettra d'activer automatiquement la feature dès qu'un site projet est créé. Vous trouverez de très bonnes informations à ce sujet à pas mal d'endroit sur Internet, notamment sur le SharePoint Magazine.

    Je pense qu'il vous restera quelques interrogations. N'hésitez pas à poster sur le forum si c'est le cas. Bon courage dans vos développements.

    mardi 18 novembre 2008 15:00
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Si vous vous appuyez sur des propriétés de features pour votre paramétrage il vous sera nécessaire de désactiver puis réactiver la feature pour mettre à jour le paramétrage (et encore, celà dépendra des éléments paramétrés et éventuellement de votre code associé à l'événement FeatureActivated).

     

    Bref, je vous conseille de vous appuyer sur un autre système. Votre WebPart lire son paramétrage via un WebService par exemple. Eventuellement via l'API SharePoint si vous vous appuyer sur une liste SharePoint créée pour l'occasion afin d'héberger la configuration.

     

    En ce qui concerne la mise à jour de votre WebPart, quelques point essentiels : la WebPart est associée à du code et à une définition (fichier .webpart ou fichier .dwp). Une fois placée sur une page, la modification du .dwp ou du .webpart d'origine ne vous servira à rien. En revanche, vous pouvez modifier le code de votre webpart et redéployer la DLL qui y est associée (via solution ou non, peu importe). Egalement, on peut imaginer une modification du paramétrage des webparts déjà placées sur les pages via code à l'aide du FeatureActivated et du WebPartLimitedManager.

     

    J'espère que ces élements vous donneront déjà de bonnes idées. N'hésitez pas à préciser votre projet si vous voulez un complément d'information.

    lundi 17 novembre 2008 23:49
    Modérateur
  • Merci pour cette répionse. Je vais préciser mon objectif :

     

    J'ai pour idée de faire un site par projet au sein de mon portail sharepoint. Il contiendra une liste d'acteurs, une roadmap, des documents associés,...

     

    L'objectif est d'afficher en page d'accueil des informations concernant le projet. En l'occurrence, je voudrais afficher une fiche d'identité du projet, son manager, la roadmap... Pour ce faire, je vais utiliser des webparts.

     

    La seule webpart que j'ai l'intention de développer moi même sera celle qui permet d'afficher la fiche d'identité du projet. Pour le reste, je compte utiliser celles de sharepoint.

     

    L'organisation de la page d'accueil du projet pourra et sera amener à évoluer. Mon objectif est d'avoir un principe de master page qui me permet de faire des modifications : typiquement ajouter une nouvelle webpart. Ensuite, je souhaiterai que cette modification soit appliquée en cascade à tout mes site projets afin qu'ils soient tous soumis à la même charte organisationnelle.

     

    Je n'ai à ce jour développer aucune webpart. J'ai déjà fait des développement moss type event handler et ajout de fonctionnalité dans l'ECB des items de liste.

     

    C'est pourquoi je me demande comment faire pour pouvoir mettre à jour des webpart en cascade. J'ai lu sur beaucoup de blog que sharepoint designer ne tiend pas vraiment al charge et que beaucoup de personne ont des problème lors de son utilisation à grande échelle. Voila pourquoi je cherche une autre solution.

    mardi 18 novembre 2008 09:48
  • Bonjour,

     

    SharePoint Designer a d'autres atout mais n'est effectivement pas adapté pour gérer cette problématique. Je vous recommande l'utilisation de features pour gérer ça.

     

    Il vous faut une feature de scope "Site" pour déployer votre WebPart. Si votre site projet est une nouvelle collection de sites, c'est l'idéal (pour d'autres raisons que le déploiement, mais je ne vais pas le détailler ici). Cette feature peut utiliser un feature receiver, ce qui vous permettra d'éxécuter du code à l'activation de votre feature. Ce code viendra évidemment placer la webpart sur votre page d'accueil. L'utilisation d'un SPLimitedWebPartManager vous permettra de réaliser cette action (vous trouverez un exemple sur le blog de Thomas Conté).

     

    Si vos sites projet ne correspondent pas à une collection de sites à part entière, peut être pourrez vous parcourir tous vos sites pendant l'activation de la feature pour retrouver vos sites projet et exécuter le code présenté précédemment.

     

    Reste à activer cette feature sur tous vos sites ou collections de sites. Pour le faire, deux points :

     

    • Sites déjà existant : pour les collections de sites déjà existantes, il suffit de les parcourir et d'activer la feature pour chacun d'eux. Ceci peut être fait automatiquement via une autre feature, de scope WebApplication cette fois ci. Le code n'est pas très complexe (un simple "foreach SPSite site in webApp.Sites ..." suivi d'un site.Features.Add() pour activer la feature précédente)
    • Pour les sites à venir : il y a une solution qui s'appelle le feature stapling. Elle permet d'associer une feature à un modèle de site, ce qui permettra d'activer automatiquement la feature dès qu'un site projet est créé. Vous trouverez de très bonnes informations à ce sujet à pas mal d'endroit sur Internet, notamment sur le SharePoint Magazine.

    Je pense qu'il vous restera quelques interrogations. N'hésitez pas à poster sur le forum si c'est le cas. Bon courage dans vos développements.

    mardi 18 novembre 2008 15:00
    Modérateur