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.

[VSeWSS] Inclure des ressources suppl&eacute;mentaires dans une WSP

Les Extensions pour Visual Studio sont très pratique pour le développement de Features, mais la génération de la WSP n'est pas toujours simple.

Dans le post précédent, nous avons que la "Vue WSP" nous permettez des modifier notre fichier manifest.xml.

Mais comment y inclure des ressources supplémentaires?

Et bien les types de projets de VSeWSS suivent l'arborescence du 12, donc il suffit de recréer l'arborescence dans notre projet.

image

Attention, le répetoire TEMPLATE du 12 est appelé "Templates", il ne faut pas le changer, sinon VSeWSS ne reconnait plus le répertoire.

Concernant le fichier FEATURES, il faut le laisser à l'extèrieur du dossier "Templates" sinon, VSeWSS ne considère pas le contenu comme des features.

 

Pour notre exemple, je vais ajouter un fichier html dans le répertoire "LAYOUTS" (je suis parti d'un projet de type webpart existant)

image

Quand on ouvre la "Vue WSP", voilà ce qu'on voit :

image

et les lignes suivantes sont ajoutées au fichier manifest.xml


  

[VS2008] Afficher la vue WSP (VSeWSS 1.2)

Lorsque l'on est dans un projet de type VSeWSS, pour dévelloper une webpart par exemple.

Nous avons souvent besoin d'éditer le fichier manifest.xml.

Or, si l'on modifie celui qu est généré dans le bin/debug, à chaque génération nos modifs disparaissent.

Avec VSeWSS, il y a un affichage qui nous permet de personnaliser notre WSP, c'est la vue WSP.

Pour avoir cette vue,

Menu>Affichage>Autres fenêtres>Affichage WSP

image

[Sharepoint] Cr&eacute;ation d'une Webpart avec VSeWSS

 

Juste un petit tutoriel très simple sur la création d'une Webpart avec VSeWSS 1.2. Il faut donc avoir installé VSeWSS 1.2 ;)

Tout d'abord, ouvrons VS2008 et créons un nouveau projet.

Nous allons donc choisir comme type de projet : Sharepoint et comme modèle : Webpart


image 

Une fois le projet créé, voilà comment il est composé

image
Étape 1 : Analyse de la composition du projet

L'assembly est par défaut signée.

On remarque que le projet est composé d'un dossier Webpart1 qui contient l'ensemble des éléments nécessaire à la création et au déploiement de la Webpart.

Webpart1.cs : Le fichier .cs contient le code .Net de la Webpart

[sourcecode language='c-sharp']

using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

namespace Xtr.Features.ListeBureaux
{
    [Guid("3e6334ce-5973-4ecd-8575-1bf4db962c75")]
    public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart
    {
        public WebPart1()
        {
        }

        protected override void CreateChildControls()
        {
            base.CreateChildControls();

            // TODO: add custom rendering code here.
             Label label = new Label();
             label.Text = "Hello World";
             this.Controls.Add(label);
        }
    }
}

[/sourcecode]

Webpart1.xml : Contient les informations sur la feature

[sourcecode language='xml']

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



[/sourcecode]

 

Webpart1.Webpart : Permet de gérer les informations de la webpart

Elle définie son titre, sa description et le groupe auquel elle appartiendra (après son activation).

[sourcecode language='xml']

< ?xml version="1.0" encoding="utf-8"?>

  http://schemas.microsoft.com/WebPart/v3">
   
     
     
      Cannot import WebPart1 Web Part.
   

   
     
        WebPart1 Web Part
        WebPart1 Description
     

   

 



[/sourcecode]

 
Etape 2 : Configuration

Dans notre cas cette étape est très simple, car il ne s'agit que de configurer notre seveur de développement pour le projet.

Pour se faire, vous devez :

  • ouvrir la page de propriété du projet

  • choisir l'élément "déboguer" dans le menu

  • sélectionner "Démarrer le navigateur avec l'URL"dans la partie "Action de démarrage"

  • saisir l'URL de déploiement de votre environnement de développment


image
Etape 3 : Déploiement du projet

Faites un clic droit sur votre projet et choisissez "Déployer"

image

Cette action va déployer votre webpart sur votre environnement (que vous avez choisi dans l'étape précédente)

Maintenant allons voir sur notre site de Dev si la webpart est bien déployée.
Tout d'abord, allons dans les fonctionnalités du site pour voir si celle-ci apparaît.

image

Elle y est et est même activée.

Ajoutons la sur notre page et voyons le résultat.

image

La webpart est donc fonctionnelle.

 
Etape 4 : Le package de déploiement généré.

Le déploiement de notre projet, génére dans le dossier bin/debug les éléments suivants :

image

Nous avons donc tout ce qu'il nous faut pour déployer la webpart sur d'autres serveurs.

C'est la fin de ce tutoriel qui est finalement très simple.
La création de webpart basique n'est donc pas compliquée.