Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Project Server 2007, SharePoint 2007 : Extraire les WebParts et Pages d'un site Project Server 2007

Après une fraiche installation de Project Server 2007 et la création d’un projet, on constate :

- La création d’un espace projet basée sur le modèle de site SiteTemplates\PWS, en tant que sous site du site Project Web Access (SiteTemplates\PWA)

- La richesse des outils sur le site Project Web Access (SiteTemplates\PWA)

Pour plus d’informations sur ces sites, rendez-vous sur le billet suivant :

http://blogs.codes-sources.com/davidrei/archive/2009/03/19/project-server-2007-d-couverte-du-produit-et-installation.aspx

Nous allons donc voir très précisement les outils déployés par le modèle de site PWA.

Présentation du contenu PWA :

image

L’image ci-dessus montre l’arborescence du modèle de site PWA. On s’aperçoit que celui-ci copie des WebParts (contenu dans le repertoire DWP)

ainsi que des Pages (*.aspx) à la création d’un nouveau site de type PWA.

Une question se pose alors ; comment puis-je bénéficier de l’ensemble de ces fonctionnalités ?

1. Création d’une feature (Project Web Access Feature)

Pour réutiliser les élements du site PWA, j’ai donc tout naturellement encapsuler tous les éléments du modèle de site PWA dans une feature SharePoint.

Je réalise ensuite l’activation de la feature dans une autre collection de site, en dehors de mon espace PWA.

image image

Dés lors, si on essaye d’utiliser une WebPart, il se produit une erreur 401, et si on utilise une page comme

, on obtient l’ecran suivant :

image  

Pourquoi ? .. :(

2. Problème des WebParts

Un coup d’oeil rapide sur le dwp d’une webpart comme , nous permet d’identifier sa classe :

image

En ouvrant la classe depuis la dll située dans le GAC de notre serveur,

on s’aperçoit dans un premier temps, qu’elle hérite de PWAPart :

image

Puis, dans un second temps, la présence d’un attribut intéressant : sur la classe

image

En redéployant ma WebPart mais surtout en spécifiant le PSIUrl comme ci-dessous, .. ma WebPart devient fonctionnelle :)

image  

Il nous reste donc plus que les pages :) ..

3. Problème des Pages

Pour résoudre le problème des Pages, j’ai utilisé le même raisonnement. Tout d’abord un coup d’oeil sur une de nos pages (Project.aspx) :

image

Mmmhh .. Elle hérite donc de PJBaseWebPartPage … mais encore ?

image

Notre constructeur de page cherche à récupérer l’identifiant du site PWA associé au contexte du site courant. Et GetPWASiteId ? ça fait quoi ?

image

GetPWASiteID utilise les propriétés du site SharePoint pour obtenir l’url ! C’est embêtant.. nous n’avons pas cette propriété car nous sommes dans un site standard..

Aucun problème rajoutons là :D :

image

Cet extrait de code me permet juste de recopier les propriétés de mon site projet PWA\Project dans un autre site. On obtient ensuite le résultat attendu.

En conclusion, il est possible de vous affranchir de la plateforme mise en place, et de construire la votre en vous basant peut être sur un existant. Pour ma part, il ne reste plus qu’à paramétrer toutes ces actions dans une feature un peu plus propre avec une gestion des configurations. Mais le concept est tout à fait réalisable.

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 :
Publié jeudi 19 mars 2009 18:11 par davidrei
Classé sous :

Commentaires

jeudi 19 mars 2009 19:55 by nicoboo

# re: [Project Server 2007 / MOSS 2007] Extraire les WebParts et Pages Project Server 2007

Attention aux best practices concernant les disposable objects dans ton dernier extrait de code.

http://msdn.microsoft.com/en-us/library/aa973248.aspx#sharepointobjmodel__spsiteobjects

jeudi 19 mars 2009 21:51 by davidrei

# re: [Project Server 2007 / MOSS 2007] Extraire les WebParts et Pages Project Server 2007

Hello nicoboo :)

Je ne suis pas sur de comprendre, les bests practices sont ici bien respectées puisque la clause using est utilisée et la libération des objets rendu possible, comme l'indique MS dans ton lien :

"You can automatically dispose of SharePoint objects that implement the IDisposable interface by using the Microsoft Visual C# using statement."

jeudi 19 mars 2009 23:20 by Gribouillon

# re: [Project Server 2007 / MOSS 2007] Extraire les WebParts et Pages Project Server 2007

Vous avez en quelques sortes tous les deux raisons :

Le code est ok dans la mesure ou le Dispose() sur un SPSite réalise automatiquement un Dispose sur tous les SPWeb que le SPSite a instancié. Donc pas de fuite mémoire.

Lorsqu'il y a un grand nombre de sites, il peut être préférable de faire les Dispose() sur les objets SPWeb sans attendre la libération du SPSite.

vendredi 20 mars 2009 14:15 by ROMELARD Fabrice

# re: [Project Server 2007 / MOSS 2007] Extraire les WebParts et Pages Project Server 2007

Mouais, tout ceci est très bien, mais qu'en est-il du licensing ?

De plus, tu repiques des sources (aspx) en modifiant les classes C# pour eefectuer ce que tu veux.

A ma connaissance, c'est déjà une première raison pour faire sauter le Support MS, mais surtout, c'est totalement attaquable.

Je ne te conseille pas de faire ce type de déploiement chez des clients en tous cas, sauf si tu es prèt à encaisser (ou faire encaisser à ton employeur) les risques encourrus par ce genre de pratique.

Romelard Fabrice [MVP]

vendredi 20 mars 2009 19:45 by davidrei

# re: [Project Server 2007 / MOSS 2007] Extraire les WebParts et Pages Project Server 2007

Le but ici n'est pas et n'a jamais été de modifier les classes existantes, je me contente juste de découvrir le modèle objet et les actions effectuées par les API Project.

Ensuite, concrètement et si je devais résumer, voici les actions réalisées :

1- Packaging des éléments dans une feature

2- Renseigner une propriété d'une WebPart Project (Propriété volontairement exposée par Microsoft).

3- Créer une propriété PWAUrl au niveau de mon site standard.

Cette recherche fait suite à plusieurs interrogations sur le groupe de discussion Microsoft Project. Je réutilise en effet des pages aspx mais sans en modifier le contenu.

dimanche 22 mars 2009 11:58 by ROMELARD Fabrice

# re: [Project Server 2007 / MOSS 2007] Extraire les WebParts et Pages Project Server 2007

Je comprends ton raisonnement et je fais parfois de même pour comprendre certains modules de MOSS ou WSS.

Là où je veux en venir, c'est que ne serait-ce que repackager les pages MS dans une feature, même sans les modifier, fait à mon sens parti des raison de perte de support.

Ceci n'est réellement pas à prendre à la légère, car tant que tout va bien, aucun soucis, le jour ou quelque chose arrive, on se retrouve tout seul.

Je ne doute pas que toi tu maîtrises ton sujet, mais ceux qui vont lire ce sujet et penser avoir trouvé la solution pour un problème tel que celui que tu exposes, vont se lancer dans ce genre de modification à l'aventure.

Fabrice

dimanche 22 mars 2009 17:49 by davidrei

# re: [Project Server 2007 / MOSS 2007] Extraire les WebParts et Pages Project Server 2007

C'est vrai qu'il serait intéressant d'avoir un peu plus d'informations sur les conditions exactes du support Microsoft sur un produit tel que MOSS, WSS ou bien encore Project Server.

En soit repackager des pages MS ne devrait pas aboutir à une perte de support, je vais essayer d'en savoir davantage à ce sujet.

Merci pour ton intérêt pour ce post en tout cas :)

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [SharePoint] Les sessions TechDays 2012… par Le blog de Patrick [MVP SharePoint] le il y a 6 heures et 54 minutes

- TechDays Paris 2012 : Session pleinière jour 3 par Blog Technique de Romelard Fabrice le 02-09-2012, 11:01

- Mishra Reader : un lecteur RSS très Zune Style en Open Source ! par Cyril Sansus le 02-09-2012, 08:28

- [framework 4] Les Tasks et le Thread UI par Fathi Bellahcene le 02-09-2012, 00:33

- Workflow Foundation 3 a un pied dans la tombe par Blog de Jérémy Jeanson le 02-08-2012, 22:15

- TechDays Paris 2012 : Nouvelles tendances du poste de travail - Bring Your own PC par Blog Technique de Romelard Fabrice le 02-08-2012, 19:42

- TechDays Paris 2012 : System Center Service Manager 2012 Vue d’ensemble par Blog Technique de Romelard Fabrice le 02-08-2012, 17:32

- TechDays Paris 2012 : Pleinière second jour par Blog Technique de Romelard Fabrice le 02-08-2012, 16:23

- TechDays Paris 2012 : Retour d'expérience sur la mise en place d'un Cloud Privé par Blog Technique de Romelard Fabrice le 02-08-2012, 16:04

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le 02-07-2012, 23:59