Vous trouverez sur ce blog toutes les astuces, liens, solutions et tutoriels qui m'ont aidés à résoudre l'ensemble des problèmes ou demandes rencontrés dans mon travail. Ce blog est donc mon pense-bête ;) Travaillant sous Sharepoint et Asp.Net, beaucoup de posts seront liés aux technos Microsoft.
vendredi 24 octobre 2008
[Sharepoint] Intégrer Ajax Control Toolkit pour ASP 3.5 SP1
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.
- Il faut avoir des droits d’administrateurs et avoir accès au site d’administration centrale de SharePoint.
- On clique sur notre fournisseur de services partagés
- Dans la partie “Profils utilisateurs et Mes Sites”, on va sur le dernier lien : Autorisations des services de personnalisation
- Dans mon cas, j’ai simplement supprimé le groupe “utilisateurs authentifiés”
- Si l’on veut être plus fin, il suffit d’éditer ce même groupe et lui enlever ou ajouter des droits.
- 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
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
Placeholder | Description | |
PlaceHolderGlobalNavigation | The global navigation | |
PlaceHolderGlobalNavigationSiteMap | The global navigation breadcrumb. This is a nested placeholder. | |
PlaceHolderSiteName | Site name | |
PlaceHolderSearchArea | Search box area | |
PlaceHolderTopNavBar | Top navigation area | |
PlaceHolderHorizontalNav | Top navigation menu for the page. This control is nested inside the PlaceHolderTopNavBar | |
WSSDesignConsole | The page editing controls when the page is in Edit Page mode (in the browser, click Site Actions, and then click Edit Page) | |
SPNavigation | Empty by default in Windows SharePoint Services 3.0. Can be used for additional page editing controls such as in a publishing portal. | |
PlaceHolderPageImage | Page icon in the upper-left area of the page | |
PlaceHolderTitleLeftBorder | Left border of the title area | |
PlaceHolderTitleBreadcrumb | Main content breadcrumb area | |
PlaceHolderPageTitleInTitleArea | Page title shown immediately below the breadcrumbs | |
PlaceHolderMiniConsole | A place to show page-level commands, for example, WIKI commands such as Edit Page, History, and Incoming Links | |
PlaceHolderTitleRightMargin | Right margin of the title area | |
PlaceHolderTitleAreaSeparator | Shows shadows for the title area | |
PlaceHolderLeftNavBarDataSource | Data source for the left navigation menu | |
PlaceHolderCalendarNavigator | Shows a date-picker for navigating in a calendar when a calendar is visible on the page | |
PlaceHolderLeftNavBarTop | Top of the left navigation area | |
PlaceHolderLeftNavBar | Left navigation area | |
PlaceHolderNavSpacer | The width of the left navigation area | |
PlaceHolderLeftNavBarBorder | Border element on the left navigation bar | |
PlaceHolderBodyLeftBorder | Border element for the main page body | |
PlaceHolderPageDescription | Description of the page contents | |
ContentPlaceHolder | Main content of the page | |
PlaceHolderBodyRightMargin | Right margin of the main page body | |
PlaceHolderFormDigest | The "form digest" security control | |
PlaceHolderUtilityContent | Extra content at the bottom of the page | |
PlaceHolderBodyAreaClass | Additional body styles in the page header | |
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
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 :
- VSeWSS pour le développement dans VS2008
- Je me base sur mes précédents posts (Créer un Delegate Control, Ressources dans une WSP, Vue WSP)
But:
- 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.
- Garder le Design (Masterpage et CSS) du site parent
- Avoir toutes la logique métier et le code-behind dans une Dll.
Solution envisagée :
- Création d’une feature/solution Sharepoint avec VSeWSS
- Création d’une page aspx lièe à la masterpage par défaut du site et contenant un delegate control
- Création des fichiers ascx pour les delegate control
- Création de l’ensemble des fichiers .cs pour le code-behind et autres classes nécessaires
- Ajout des Dlls supplémentaires nécessaires à l’application.
Résultat obtenu:
- Le delegate control est déployé dans le dossier “12/TEMPLATE/CONTROLTEMPLATES”
- Les pages ASPX seront déployés dans la bibliothèque “Pages” du site web
- 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
On créé ensuite l’arborescence suivante :
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 :
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" %>
[/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']
[/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']
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']
[/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.
Et le résultat obtenu tout en gardant le design choisit
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
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.