mardi 30 septembre 2008

Visual Studio 10

Un article intéressant sur PCinpact sur l'orientation de Microsoft et visual Studio 10 :

Microsoft ajoute la modélisation au coeur de Visual Studio 10

Et un autre article sur le même sujet :

Microsoft dévoile le futur de ses outils de développement

[SPD] Problème d'URL après une publication

Sur mon serveur de test, j'ai publié via Sharepoint Designer des modèles de pages d'un site à l'autre.
Et après je me suis aperçu que j'avais plein de problèmes et d'erreurs.
En y regardant de plus prêt j'ai vu que les urls des 2 sites se mélangeaient.

Heureusement, grâce à une des extensions de Gary Lapointe, j'ai pu rétablir l'ensemble des webapplications:
Fix Publishing Pages Page Layout URL
C:\>stsadm -help gl-fixpublishingpagespagelayouturl

stsadm -o gl-fixpublishingpagespagelayouturl

Fixes the Page Layout URL property of publishing pages which can get messed
up during an upgrade or from importing into a new farm.

Parameters:
-url
-scope
[-pagename ]
{[-pagelayout to (format: "url, desc")>] /
[-regexsearchstring replacement of the page layout url>]
[-regexreplacestring replacement of the page layout url>]}
[-verbose]
[-test]

 

Cette extensions permet donc de corriger toutes les locations érronnées sur un site qui a été migré.

Encore merci à lui pour cette extension ;)

mardi 23 septembre 2008

[Tools] Plusieurs browsers en Standalone

Comme beaucoup, lorsqu'il s'agit de faire du design web, nous avons besoin de tester  celui-ci sur différents navigateurs sans pour autant les installer.

Ou dans le cas d'IE6 et IE7 les voir fonctionner sur la même machine.

En cherchant, je suis tombé sur ce site qui propose toute une panoplie de navigateurs "Portable" :

http://www.wikistuce.info/doku.php/logiciels/une_panoplie_de_navigateur

Très pratique.

[Sharepoint] MasterPage et CSS sous forme de Feature

Récemment, je devais customiser mon Sharepoint pour qu'il adopte la charte graphique de l'entreprise.

Dans ce post, nous verrons donc une des solutions  (peut être pas la meilleure, mais pour le moment elle me convient :) ) pour créer des features contenant les masterpages, les css et les images.

Pour le développement, j'utilise, comme d'habitude, l'extension VSeWSS.

Pour faire mon projet je me suis basé sur le trés bon (et surtout très clair, merci à lui) post de phil : SharePoint 2007 : Creer une MasterPage et la deployer via une feature

Tout d'abord, nous créons un nouveau projet.

image

Ensuite on lui ajoute un nouvel élément:

  • Catégorie : Sharepoint

  • Modèle : Module

  • Nom : Je l'appelle XtrMasterPage


image

Voila l' arborescence obtenue:

image

On supprime le fichier sample.txt, ensuite, on renomme le fichier Module.xml en ProvisionedFiles.xml (pour suivre le poste de phil) et je l' édite.

Afin de ne pas me perdre dans l'arborescence, j'ai préféré suivre celle de sharepoint et voila ce que ça donne:

image

Le projet se décompose en 2 parties :

  • La feature

  • Les fichiers


La feature:

Définit ici sous le nom de XtrMasterPage, elle contiendra les fichiers .xml et .cs nécessaire à la feature

Les Fichiers:

Pour permettre leurs déploiements via la WSP, j'utilise le dossier "Templates" de VSeWSS  (voir [VSeWSS] Inclure des ressources supplémentaires dans une WSP)et y reproduit l'arborescence de ma feature:

  1. Dans _catalogs/masterpage, on y dépose les masterpages

  2. Dans Style Library, on y dépose les css

  3. Dans Style Library/Images, on y dépose les images utiles aux css


Ensuite, on complète le fichier xml :

[sourcecode language='xml']

 
   
     
     
   

 


 
   
   
 


 
   
   
   
 




[/sourcecode]

Ainsi, lorque l'on vadans la Vue WSP sous VS2008, voilà ce que l'on obtient :

image

On modifie maintenant, si besoin, le fichier feature.xml. Par exemple comme celui-ci :

[sourcecode language='xml']

[/sourcecode]

Ensuite, on déploie la WSP générée.

image

Dans le contenu du site, on peut y voir, :

Les css

image

Les Master Pages

image

Voilà, on peut maintenant la choisir dans "MonMOSS > Paramètres du site > Paramètres de la page maître du site"    (sous MOSS uniquement)

image

mercredi 10 septembre 2008

[Sharepoint] Créer un Delegate Control

Ayant eu le besoin de faire un delegate control facilement déployable, j'ai voulu le créer avec VSeWSS.

Mais, il n'y a pas la possibilité d'ajouter un élément delegate control dans le projet.

Je vais donc présenter ici, ce que j'ai fait pour automatiser mon développement, le déploiement sur ma machine et la génération de la WSP. Cette solution me permet aussi d'avoir une prévisualisation de mon UserControl dans VS2008 et surtout, elle me permet d'avoir l'intellisense :p

Tout d'abord, je créé un site web pour créer, visualiser et tester mon userControl.
Ensuite, je créé un projet VSeWSS vide.

image

Ensuite, dans le site web, on ajoute un élément userControl

image

Voilà le code interne au userControl :

[sourcecode language='html']
< %@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

< %@ Import Namespace="Microsoft.SharePoint" %>
< %@ Control Language="C#" ClassName="Xtr.Features.WelcomeControl"%>











[/sourcecode]

 Le fichier default.aspx me permet de tester mon contrôle

Dans le projet VSeWSS, voilà l'architecture que j'ai créé (voir le post  sur la gestion de ressources avec VSeWSS):

image

Le fichier copyAscx.bat permet de copier le .ascx du site web dans le répertoire CONTROLTEMPLATES du projet avant la génération du projet.

Voilà le contenu du fichier .bat :

@ECHO OFF
ECHO Copie du fichier ascx ...
xcopy /y "..\Xtr.DelegateControl\*.ascx" .\Templates\CONTROLTEMPLATES\




Et dans les propriétés du projet il faut ajouter les lignes suivantes :

image

Ensuite on ajoute le fichier module.xml avec le code suivant :

[sourcecode language='xml']

< ?xml version="1.0" encoding="utf-8"?>
http://schemas.microsoft.com/sharepoint/">
 


[/sourcecode]

Ensuite, il vous suffit de déployer votre projet sur votre serveur de développement.

 

Pour tester ce UserControl, j'ajoute la ligne suivante à l'intérieur de ma masterpage :





Voilà le résultat obtenu :

image

mercredi 3 septembre 2008

[Pense-bête] Récupérer le contenu d'un fichier via une URL

Voici juste un petit exemple "pense-bête" pour récupérer le contenu d'un fichier dans, par exemple, le dossier LAYOUTS de sharepoint.

Il fonctionne tout aussi bien avec une autre Url.

[sourcecode language='c-sharp']
string template = string.Empty;
 // Creer la request avec l'Url. 
 WebRequest request = WebRequest.Create(new Uri(SPContext.Current.Site.Url + "/_layouts/test/monFichier.htm", UriKind.Absolute));
                // On envoi les credidentials
                request.Credentials = CredentialCache.DefaultCredentials;
                // On récupère la response.
                using (WebResponse response = request.GetResponse())
                {
                    // On verifie le status renvoyé.
                    if (((HttpWebResponse)response).StatusDescription == "OK")
                    {
                          // On recupère le stream renvoyé par le server.
                            Stream dataStream = response.GetResponseStream();
                            //On l'ouvre pour le lire
                            using (StreamReader sr = new StreamReader(dataStream))
                            {
                                //on lit le contenu et on le copie dans template
                                template = sr.ReadToEnd();
                            }
                       }
                    }

[/sourcecode]

Il ne reste plus qu'à travaller avec notre variable "template".

Ce code est assez simple, mais est un bon début pour allez plus loin avec l'utilisation des WebRequest et WebResponse.

Notamment pour l'utilisation des services web de Sharepoint.