vendredi 24 octobre 2008

[Sharepoint] Intégrer Ajax Control Toolkit pour ASP 3.5 SP1

Un lien vers le blog de Jérémy qui nous indique ce qu'il ne faut faire pour éviter les petites suprises de contrôles qui ne fonctionnent pas.

Plus plein d'autres astuces de ses dernières (més)aventures avec MOSS, n'est ce pas Jérémy ;)

mardi 7 octobre 2008

[Sharepoint] Supprimer les liens “Mon site” et “Mes liens” sur un site

Au début, avant de laisser libre les utilisateurs dans SharePoint, j’ai préféré enlever les liens “Mon site” et “Mes liens” du site et leur laisser juste le nécessaire pour se familiariser.

Ayant eu quelques difficultés à trouver comment faire, ce post me servira de mémo.

  1. Il faut avoir des droits d’administrateurs et avoir accès au site d’administration centrale de SharePoint.
  2. On clique sur notre fournisseur de services partagés
  3. Dans la partie “Profils utilisateurs et Mes Sites”, on va sur le dernier lien : Autorisations des services de personnalisation
  4. Dans mon cas, j’ai simplement supprimé le groupe “utilisateurs authentifiés”
  5. Si l’on veut être plus fin, il suffit d’éditer ce même groupe et lui enlever ou ajouter des droits.
  6. On peut aussi créer ses propres groupes de droits

Voilà, ce n’est pas plus compliqué mais il faut le savoir ;)

lundi 6 octobre 2008

[Sharepoint] Commande PSConfig

Après avoir lu l’article intéressant SharePoint et ses DB : Avez vous pensé à les "Tweaker" ? de Renaud Comte, j’ai cherché les possibilités proposées par cet outils qui à l’air vraiment intéressant.

Un article intéressant de The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] nous montre quelques exemples d’utilisation de PSConfig : Plus loin dans l'installation de SharePoint 2007.

 

L’exécutable se trouve dans le répertoire 12/BIN : PSConfig.exe

et vous trouverez son détail sur  Technet

[Sharepoint]Listes des Features avec leur GUID

Dans la même problématique que le post précédent pour la création de définition de site, on a souvent besoin de connaitre les GUID des features.

Voila un lien qui les répertorie : List of Features with GUIDs

[Sharepoint] ID des list template

A force de toujours chercher partout les listtemplateId, j’ai enfin trouvé un post qui répertorie un ensemble d’ID.

Il s’agit du blog de Simeon’s TechNotes intitulé SharePoint List Template Id’s

Value

Description

1200

Administrator tasks list

104

Announcements list

303

Blog Categories list

302

Blog Comments list

301

Blog Posts list

105

Contacts list

120

Custom grid for a list

118

Custom Workflow Process

130

Data Connection library

110

Data sources

108

Discussion board

101

Document library

106

Events list

150

Gantt Tasks list

100

Generic list

1100

Issue tracking

103

Links list

114

List template gallery

116

Master pages gallery

201

Meeting Agenda list

202

Meeting Attendees list

204

Meeting Decisions list

207

Meeting Objectives list

200

Meeting Series list

210

Meeting text box

211

Meeting Things To Bring list

212

Meeting Workspace Pages list

117

No-Code Workflows

2002

Personal document library

109

Picture library

300

Portal Sites list

2003

Private document library

111

Site template gallery

102

Survey

107

Tasks list

112

User Information list

113

Web Part gallery

119

Wiki Page library

140

Workflow History

115

XML Form library

[Sharepoint] Liste des placeholders d’un Masterpage

Voici un post intéressant (sur Grounding.co.za) qui liste les placeholders utiles dans une masterpage Sharepoint :

SharePoint default.master page placeholders

 

 image_78

Placeholder

Description

clip_image002[4]

PlaceHolderGlobalNavigation

The global navigation

clip_image004[4]

PlaceHolderGlobalNavigationSiteMap

The global navigation breadcrumb.  This is a nested placeholder.

clip_image006[4]

PlaceHolderSiteName

Site name

clip_image008[4]

PlaceHolderSearchArea

Search box area

clip_image010[4]

PlaceHolderTopNavBar

Top navigation area

clip_image012[4]

PlaceHolderHorizontalNav

Top navigation menu for the page.  This control is nested inside the PlaceHolderTopNavBar

clip_image014[4]

WSSDesignConsole

The page editing controls when the page is in Edit Page mode (in the browser, click Site Actions, and then click Edit Page)

clip_image016[4]

SPNavigation

Empty by default in Windows SharePoint Services 3.0. Can be used for additional page editing controls such as in a publishing portal.

clip_image018[4]

PlaceHolderPageImage

Page icon in the upper-left area of the page

clip_image020[4]

PlaceHolderTitleLeftBorder

Left border of the title area

clip_image022[4]

PlaceHolderTitleBreadcrumb

Main content breadcrumb area

clip_image024[4]

PlaceHolderPageTitleInTitleArea

Page title shown immediately below the breadcrumbs

clip_image026[4]

PlaceHolderMiniConsole

A place to show page-level commands, for example, WIKI commands such as Edit Page, History, and Incoming Links

clip_image028[4]

PlaceHolderTitleRightMargin

Right margin of the title area

clip_image030[4]

PlaceHolderTitleAreaSeparator

Shows shadows for the title area

clip_image032[4]

PlaceHolderLeftNavBarDataSource

Data source for the left navigation menu

clip_image034[4]

PlaceHolderCalendarNavigator

Shows a date-picker for navigating in a calendar when a calendar is visible on the page

clip_image036[4]

PlaceHolderLeftNavBarTop

Top of the left navigation area

clip_image038[4]

PlaceHolderLeftNavBar

Left navigation area

clip_image040[4]

PlaceHolderNavSpacer

The width of the left navigation area

clip_image042[4]

PlaceHolderLeftNavBarBorder

Border element on the left navigation bar

clip_image044[4]

PlaceHolderBodyLeftBorder

Border element for the main page body

clip_image046[4]

PlaceHolderPageDescription

Description of the page contents

clip_image048[4]

ContentPlaceHolder

Main content of the page

clip_image050[4]

PlaceHolderBodyRightMargin

Right margin of the main page body

clip_image052[4]

PlaceHolderFormDigest

The "form digest" security control

clip_image054[4]

PlaceHolderUtilityContent

Extra content at the bottom of the page

clip_image056[4]

PlaceHolderBodyAreaClass

Additional body styles in the page header

clip_image058[4]

PlaceHolderTitleAreaClass

Additional styles in the page header

vendredi 3 octobre 2008

[Sharepoint] Créer une page ASPX et la déployer dans la Bibliothèque de Pages d'un site

Mon besoin était de développer des pages Asp.net de façon classique (style site web dans VS2008) mais de les avoir dans la bibliothèque de Pages d’un site.

Ainsi, je pouvais utiliser la navigation de Sharepoint et avoir une application web normale sans créer un répertoire vituel dans IIS.

Je vais donc présenter la solution que j’ai utilisée, ça n’est peut être pas la meilleure, mais pour ma part elle fonctionne bien et me permet d’avoir des applications métiers spécifiques.

Pré-requis :

But:

  1. Créer un site web MOSS avec une bibliothèque (Pages dans mon cas) dans laquelle je mettrai toutes les pages web de mon application.

  2. Garder le Design (Masterpage et CSS) du site parent

  3. Avoir toutes la logique métier et le code-behind dans une Dll.


Solution envisagée :

  1. Création d’une feature/solution Sharepoint avec VSeWSS

  2. Création d’une page aspx lièe à la masterpage par défaut du site et contenant un delegate control

  3. Création des fichiers ascx pour les delegate control

  4. Création de l’ensemble des fichiers .cs pour le code-behind et autres classes nécessaires

  5. Ajout des Dlls supplémentaires nécessaires à l’application.


Résultat obtenu:

  1. Le delegate control est déployé dans le dossier “12/TEMPLATE/CONTROLTEMPLATES

  2. Les pages ASPX seront déployés dans la bibliothèque “Pages” du site web

  3. Les Dll déployés dans le GAC ou dans le bin du site web Sharepoint selon choix.


On commence :

On créé un site vide Sharepoint

image

On créé ensuite l’arborescence suivante :

image

Pour la créer, on ajoute plusieurs éléments et dossiers dans la solution :

Le UserControl

  • Le dossier Templates qui permettra de définir les TemplateFiles du fichier manifest de la WSP

  • Le dossier CONTROLTEMPLATES  qui représente le dossier des usercontrols de MOSS

  • Dans ce dernier dossier, vous y ajouter le fichier .ascx
    Cette arborescence permet de générer correctement le fichier manifest.xml.


Le contenu de la feature

  • On ajoute un élément module (que l’on nomme UCForm ici) qui nous créé le répertoire de feature ainsi que l’ElementManifest Module.xml.

  • Un fichier .ascx.cs qui correspondra à notre classe partielle de notre userControl (donc son code-behind)

  • Un fichier .aspx qui contiendra toutes les infos nécessaires pour être liè au style du site


Les Dll supplémentaires

Si l’on doit ajouter des Dlls supplémentaires dans le déploiement, il suffit de les rajouter à la racine du projet (comme ici, xtr.toolbox.dll)
Attention, il ne faudra pas oublié de les rajouter dans le fichier manifest.xml, mais nous le verrons dans les étapes suivantes.

Les références

Pour pouvoir développer correctement du web (en gros, pouvoir compiler le code-behind), il ne faut pas oublier d’ajouter les références System.Web et System.Web.Extension.
Ici, les références comme xtr.ToolBox.dll seront aussi à ajouter aux Dlls supplémentaires car le projet en a besoin.

Voici la WSP générée :

image

Je vais maintenant montrer le contenu de chaque fichier CREE :

MonUC.ascx
[sourcecode language='html']

< %@ Assembly Name="MonDelegateControlEtMaPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" %>
< %@ Control Language="C#" AutoEventWireup="true" Inherits="MonDelegateControlEtMaPages.UCForm.MonUC" %>

   
       
       

       

       
       

       
   



[/sourcecode]

On précise l’assembly qui contient le code-behind du userControl et on lu définit sa classe partielle.

Et pour me faire plaisir, j'ai ajouté un updatePanel (Attention, masterpage contient le scriptmanager)

monUC.ascx.cs

[sourcecode language='c-sharp']

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace MonDelegateControlEtMaPages.UCForm
{
    public partial class MonUC : System.Web.UI.UserControl
    {
        #region controls
        protected Button Button1;
        protected TextBox TextBox1;
        protected Label Label1; 
        #endregion

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            Button1.Click += new EventHandler(Button1_Click);
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            //On met le code MD5 de=u label soit toto dans la texbox à la suite du clic
            //Pour le faire j'utilise une classe de ma boite à outils qui a été mis en référence (Xtr.ToolBox.dll
            TextBox1.Text =  Xtr.ToolBox.Utils.Crypto.getHashMD5(Label1.Text);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = "toto";

        }
    }
}

[/sourcecode]

Dans ce code, on y définit les contrôles utilisés, l’événement clic et on utilise une dll extérieur pour Hasher le texte “toto”

MaPage.aspx
[sourcecode language='html']

< %@ Page Language="C#" Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>

< %@ Register TagPrefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls"
    Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages"
    Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Register TagPrefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls"
    Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Register TagPrefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation"
    Assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
< %@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
    Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

 
   
   
 

 
 


 


 


 




 
&nbsp;

 

  
 



[/sourcecode]

Dans mon cas, il s’agissait d’une page de publication donc je la fait hériter de la bonne classe : Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c

Je n’oublie pas tous les register nécessaire pour le bon fonctionnement de la page.
Ici j’en ai mis plus que besoin pour notre exemple, mais avec ceux-ci je couvre beaucoup de choses (Webpart, navigation,…)
Ne pas oublier surtout : <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

Car c’est ce register qui nous permet d’ajouter le delegate control.

Ensuite on garde bien tous les asp:Content pour éviter des erreurs suivant la masterpage choisi.

Module.xml

[sourcecode language='xml']

698-5627">698-5627ae24209a" xmlns="http://schemas.microsoft.com/sharepoint/" >
 
 
 
 
 
             RootWebOnly="false" >

     
              IgnoreIfAlreadyExists="TRUE" >
     
     
     
     
   

 




[/sourcecode]

Et le contenu des fichiers GENERES :

En sachant que nous allons compléter le fichier Feature.xml pour que le déploiement corresponde à nos besoins.

Feature.xml

[sourcecode language='xml']

         Title="MesPages" Scope="Web" Version="1.0.0.0" Hidden="FALSE"
         ActivateOnDefault="False" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/">
 
   
   
 



[/sourcecode]

Le scope de ma feature se situe au niveau du site web.
Par défaut je ne l'ai pas activée.
Pour l'exemple, je n'ai pas mis non plus de description dessus, ce qui n'est pas très pratique quand on doit l'actualiser.

manifest.xml

[sourcecode language='xml']

http://schemas.microsoft.com/sharepoint/">
 
   
 

 
   
   
 

 
   
 



[/sourcecode]

Ce fichier est généré automatiquement, on notera bien, qu'il a pris en compte notre dll xtr.ToolBox.
J'ai laissé le déploiement dans le GAC pour les dlls, mais vous pouvez le modifier.

Le développement est terminé, il nous suffit de déployer notre WSP générée et voici le résultat obtenu :

Nous avons bien MaPage.aspx dans notre bibliothèque.

image

 

Et le résultat obtenu tout en gardant le design choisit

image

 

Voila, c’est terminé, donc assez facilement on peut développer des applications asp.net et les intégrer dans Sharepoint.

mercredi 1 octobre 2008

[Sharepoint|CSS]Les classes CSS utilisées dans MOSS

En mofiant le style de mon site, je suis tombé sur un site très intéressant sur le design Sharepoint.

Il répertorie l'ensemble des classes CSS utilisées dans Sharepoint.
Trés utile lorsqu'on veut créer son propre style.

CSS Reference Chart for SharePoint 2007 (Microsoft Office SharePoint Server 2007 and Windows SharePoint Services v3).

D'ailleurs, l'ensemble du site de l'auteur (Heather Solomon) est très intéressant pour le design sous Sharepoint.