jeudi 28 août 2008

[Sharepoint] CamlViewer sur Codeplex

En voulant créer des query en CAML, je suis tombé sur un superbe outil développé par Renaud Comte.
Il s'agit du CamlViewer pour SharePoint 2007.





Cet outil permet donc de choisir une liste et d'y récupérer le CAML.
Ce qui peut être très pratique comme base de départ pour créer une Query.

mercredi 27 août 2008

[SharePoint] Créer une Webpart et son EditorPart

Voici un petit tutoriel qui explique simplement comment créer une webpart et son editorpart.


Dans notre cas, nous prendrons comme exemple une visionneuse de pages web.
Son fonctionnement est simple, on lui passe une url dans l'Editorpart et la webpart affiche le site.


Etape 1 : Le projet


  1. Création d'un nouveau projet dans VS 2008. Dans mon cas, j'utilise l'extension VSeWSS 1.2 pour VS2008.

  2. Choisir le projet Sharepoint Webpart


  3. Configurer comme vous les souhaitez les fichiers .xml et .webpart.


Etape 2 : La Webpart


Voici le code permettant l'affichage simpliste de notre IFrame qui permettra à notre webpart de visionner les pages.
Par défaut, votre projet aura créé une classe nommée Webpart1, c'est celle que nous utiliserons pour notre webpart.

public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart, IWebEditable
{

private string m_pageUrl = string.Empty;

//Url passé dans l'editorpart, elle sera renseignée par l'editorpart
[Browsable(false),
Personalizable(PersonalizationScope.Shared)]
public string PageUrl
{
get {return m_pageUrl;}
set {m_pageUrl = value;}
}

Protected override void RenderContents(HtmlTextWriter writer)
{
EnsureChildControls();
RenderIFrame(writer);
}

///
/// Gére l'affichage du IFrame avec la bonne URL
///

///
protected void RenderIFrame(HtmlTextWriter writer)
{
 

string frame = "outputIFrame_" + base.ClientID;
writer.AddStyleAttribute("display", "inline");
writer.AddAttribute(HtmlTextWriterAttribute.Id, frame);
writer.AddAttribute(HtmlTextWriterAttribute.Name, frame);
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
writer.AddStyleAttribute(HtmlTextWriterStyle.Height, "100%");
writer.AddAttribute("frameBorder", "0");
 




if (!string.IsNullOrEmpty(m_pageUrl))
{
writer.AddAttribute(HtmlTextWriterAttribute.Src, m_pageUrl);
}
writer.RenderBeginTag(HtmlTextWriterTag.Iframe);
writer.RenderEndTag();
}
 

 

 



Etape 3 : L'EditorPart


Nous allons maintenant gérer notre editorpart.


  1. Votre projet>Ajouter>Classe…


  2. Le code pour l'editorpart :


public class Webpart1EditorPart : EditorPart
{

private TextBox txtPageUrl;
protected override void CreateChildControls() {

base.CreateChildControls();
//Affiche la textbox et son label
this.Controls.Add(new
LiteralControl("Url du site :
"
));
txtPageUrl = new TextBox();
this.Controls.Add(txtPageUrl);
}

///
/// Applique les valeurs de l'editor part dans la webpart
///

///
public override bool ApplyChanges() {

 
EnsureChildControls();

 

 
WebPart1 webPart = this.WebPartToEdit as WebPart1;

if (webPart != null) {
webPart.PageUrl = txtPageUrl.Text;
}
return true;
}

///
/// Envoi les valeurs enregistrées de la webpart vers l'editorpart (au moment de l'Edition de la Webpart
///

public override void SyncChanges() {

EnsureChildControls();

WebPart1 webPart = this.WebPartToEdit as WebPart1;



if (webPart != null) {
txtPageUrl.Text = webPart.PageUrl;
}
}
}

 

 

 



Etape 4 : Lier l'EditorPart et la WebPart


Voici ce qu'il faut rajouter à la suite du code dans le fichier Webpart1.cs :

public
override
EditorPartCollection CreateEditorParts(){
List<EditorPart> editorParts = new List<EditorPart>(1);
EditorPart part = new WebPart1EditorPart();
part.ID = this.ID + "_Webpart1EditorPart";
editorParts.Add(part);
EditorPartCollection baseParts = base.CreateEditorParts();
return new EditorPartCollection(baseParts, editorParts);
}
    

 


Il ne vous reste plus qu'à déployer votre webpart sur votre serveur de test.

 

La visionneuse personnalisée de site est terminée ;)

 

[IIS] - Problème avec le Framework .NET 2.0

Lorsque l'on installe un Windows server 2003 avec comme package le Framework .NET et IIS, il arrive que IIS n'arrive pas à se lier avec le framework.

Dans ce cas, il nous devient impossible de faire fonctionner des applications nécessitant le framework 2.0, 3.0 ou 3.5.
Et une réinstallation du framework est impossible, l'OS l'en empèche.


Mais la solution est simple, il suffit de réinstaller le framework sur IIS.

Pour se faire, voici les lignes de commandes à exécuter :

 

 








  C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -u


 

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe –i



 

[Sharepoint] Portage d’un Workflow SharePoint Designer vers un projet Visual Studio 2008

Pour des worflows simples, il est très pratique de les créer avec Sharepoint Designer.


Le problème est que ces workflows se publient très mal sur d'autres serveurs voir pas du tout.

Je vais donc d'écrire les différentes étapes pour réussir à migrer un workflow SPD vers VS2008.

Pré-requis :
Avoir l'extension VSeWSS 1.2 pour VS2008.

Etape 1: Créer un projet de Wokflow pour Sharepoint dans VS

  1. Dans VS, Aller sur Fichier > Nouveau

  2. Sélectionner  SharePoint Workflow Project.
     


Etape 2: Récupérer les fichiers SPD


 Une fois ce projet en place,  nous allons commencer le portage du xoml vers VS.

  1. Ouvrir SPD sur le site de teste contenant le Workflow.

  2. Clic droit sur le workflow à porter

  3. Choisir les fichiers sélectionnés...
        

     


  4. La boite de dialogue de publication vers in site distant apparaît


  5. Choisir un emplacement sur le PC

  6. Cliquer sur OK, cette action créera un dossier appelé Workflows à l'emplacement choisi contenant les fichiers .xoml et .rules


Etape 3: Copier les fichiers SPD dans notre projet VS

  1. Copier les fichiers .xoml et .rules dans le projet

  2. Cliquer sur le fichier .xoml dans l'explorateur de solution pour voir le worfklow dans le designer


Attention : les noms des activités ne sont pas du tout explicites, elles sont nommées ID1, ID2, ID3, …

Etape 4: Générer un fichier .cs sous le fichier XOML (optionel)

Pour ajouter du code-behind au workflow, il suffit de générer une méthode sur la première activité dans le designer. La méthode OnWorkflowActivated est donc créé avec le code-behind.


Par défau', le fichier .cs sera créé automatiquement et la classe et le namespace seront initialisés en fonction du fichier xoml correspondant.

Si les noms générés par défaut ne conviennent pas, il faut changer les attributs sur la première ligne du fichier OXML :

<ns0:RootWorkflowActivityWithData x:Class="Namespace.ClassName" ...>

Etape 5: Déployer et débugger le workflow

De la même façon que les autres projets SharePoint :


  1. Clic droit sur la solution

  2. Déployer


Et le workflow est maintenant déployé sur le serveur de test

[SQL Server] Aide-mémoire pour la maintenance des bases de données

La maintenance des bases de données implique des tâches différentes. Cet aide-mémoire sert de point de départ pour aborder la maintenance au quotidien.

Voici la liste des tâches quotidiennes, hebdomadaires et mensuelles recommandées :


 Quotidiennes


  • Surveiller les journaux des applications, des serveurs et des agents.

  • Configurer des alertes relatives aux erreurs importantes non paramétrées pour notification d'alerte.

  • Vérifier les messages d'alerte d'erreur et de performances

  • Surveiller l'état des travaux, en particulier de sauvegarde de bases de données et de réplication.

  • Examiner la sortie des travaux dans le fichier de sortie et/ou l'historique des travaux

  • Sauvegarder les bases de données et les journaux (si ce ne sont pas des travaux automatiques : plan de maintenance).


Hebdomadaires


  • Surveiller l'espace disque disponible sur les lecteurs.

  • Surveiller l'état des serveurs liès, distants, principal et cibles.

  • Vérifier les rapports des plans de maintenance et l'historique afin de déterminer l'état des opérations de ces plans.

  • Générer un enregistrement actualisé des informations de configuration en exécutant sp_configure


Mensuelles


  • Surveiller les performances des serveurs, en mettant au point les paramètres de performances afin d'améliorer les temps de réponse.

  • Gérer les connexions et les rôles des serveurs.

  • Analyser les autorisations des serveurs, des bases de données t des objets afin de vous assurer que seuls les utilisateurs autorisés y ont accès.

  • Examiner les configurations des alertes, des travaux et des opérateurs.


Si nécessaire


  • Sauvegarder les données du registre de SQL Server.

  • Mettre à jour la disquette de réparation d'urgence.

  • Vérifier l'intégrité des bases de données et mettre à jour leurs statistiques.


Livre de référence :

Microsoft SQL Server 2005

Guide de l'administrateur

Microsoft Press

[Sharepoint] Extensions STSADM

Sur son blog,  Gary Lapointe, recense toutes les extensions de la commande STSADM qu’il a développé.


Toutes ces commandes sont très pratiques pour administrer un serveur SharePoint.


Pour chaque extension, un billet nous donne les informations suivantes :


·         Un texte explicatif


·         L’explication du code source


·         L’aide sur la ligne de commandes


·         L’explication de chaque argument


Voici la liste des extensions proposées par celui-ci :




















Commandes WSS



Commandes MOSS



Content Migration




  1. gl-repairsitecollectionimportedfromsubsite

  2. gl-convertsubsitetositecollection

  3. gl-exportlist

  4. gl-importlist

  5. gl-copylist

  6. gl-replacefieldvalues

  7. gl-publishitems

  8. gl-import2

  9. gl-exportlistitem

  10. gl-importlistitem

  11. gl-copylistitem

  12. gl-deletelistitem

  13. gl-addlistitem

  14. gl-exportlistitem2

  15. gl-exportlistfolder

  16. gl-importlistfolder

  17. gl-setmetadata

  18. gl-movesite

  19. gl-moveweb

  20. gl-deleteweb2

  21. gl-enumunghostedfiles

  22. gl-reghostfile


Content Types




  1. gl-copycontenttypes

  2. gl-exportcontenttypes

  3. gl-propagatecontenttype

  4. gl-setlistcontenttypes


Farm




  1. gl-tracelog 

  2. gl-setauditsettings

  3. gl-setusageanalysis

  4. gl-backupsites

  5. gl-backup


Fields




  1. gl-exportlistfield

  2. gl-importlistfield

  3. gl-updatelistfield

  4. gl-deletelistfield

  5. gl-exportsitecolumns

  6. gl-importsitecolumns


Lists




  1. gl-getlistschemaxml

  2. gl-deletelist

  3. gl-updatelistview

  4. gl-addlist


Navigation




  1. gl-setnavigationsettings


Quotas




  1. gl-createquotatemplate

  2. gl-editquotatemplate


Security




  1. gl-setallowaccesstoonlinegallery

  2. gl-disableuserpermissionforwebapp

  3. gl-enableuserpermissionforwebapp

  4. gl-setselfservicesitecreation

  5. gl-exportlistsecurity

  6. gl-importlistsecurity

  7. gl-copylistsecurity

  8. gl-adduser2

  9. gl-adduserpolicyforwebapp

  10. gl-enumeffectivebaseperms

  11. gl-addsiteadmin

  12. gl-deleteallusers

  13. gl-setanonymousaccess


Site Collections




  1. gl-connecttoportalsite

  2. gl-setsitecollectiontitle gl-setsitegeneralsettings

  3. gl-enuminstalledsitetemplates

  4. gl-enumavailablesitetemplates

  5. gl-addavailablesitetemplate

  6. gl-removeavailablesitetemplate

  7. gl-enumfeatures

  8. gl-setsearchcenter

  9. gl-createsiteindb

  10. gl-upgrade2


Timer Jobs




  1. gl-enumtimerjobdefinitions


Web Application




  1. gl-createwebapp

  2. gl-deletewebapp

  3. gl-createcontentdb

  4. gl-managecontentdbsettings

  5. gl-extendwebapp

  6. gl-unextendwebapp

  7. gl-applytheme


Web Parts




  1. gl-enumpagewebparts

  2. gl-movewebpart

  3. gl-setwebpartstate

  4. gl-addlistviewwebpart

  5. gl-replacewebpartcontent



Audiences




  1. gl-createaudience

  2. gl-addaudiencerule

  3. gl-enumaudiencerules

  4. gl-deleteaudience

  5. gl-listaudiencetargeting 


Content Migration




  1. gl-fixpublishingpagespagelayouturl

  2. gl-retargetcontentquerywebpart

  3. gl-applyupgradeareaurlmappings

  4. gl-updatev2tov3upgradeareaurlmappings 

  5. gl-retargetgroupedlistingswebpart

  6. gl-fixpagecontact


Farm




  1. gl-setmastersitedirectory


Navigation




  1. gl-enumnavigation

  2. gl-addnavigationnode

  3. gl-setnavigationnodes

  4. gl-copynavigation


My Sites




  1. gl-setsitenamingformat (use gl-mysitesettings instead)


Search




  1. gl-createsearchscope

  2. gl-updatesearchscope

  3. gl-addsearchrule


Security




  1. gl-setuserprofiledefaultaccessaccount

  2. gl-updatedefaultcontentaccessaccount

  3. gl-setsspacl


Site Collection




  1. gl-enumavailablepagelayouts

  2. gl-setlocalsitedirectory

  3. gl-setsitedirectoryscanviewurls

  4. gl-sitewelcomepage

  5. gl-enumwelcomepages


Timer Jobs




  1. gl-setuserprofileimportschedule

  2. gl-runprofileimportjob


User Profiles




  1. gl-gen2003to2007profilepropertymap

  2. gl-migrate2003profilesto2007

  3. gl-setpictureurlnewpath

  4. gl-enumprofileprivacypolicies

  5. gl-setprofileprivacypolicy

  6. gl-enumprofileproperties

  7. gl-editprofileproperty

  8. gl-importprofileproperties


Variations




  1. gl-fixvariationrelationships




 

[Sharepoint] Installation de MOSS sur une VPC

Voici un très bon site (sous wss 3.0 d'ailleurs) qui explique étape par étape comment installer MOSS 2007 sur une VPC.


http://www.pptspaces.com/sharepointreporterblog/Lists/Posts/AllPosts.aspx


Rien n'y est oublié, de l'installation du serveur (W2K3) à la configuration de SharePoint en passant par IIS, le framework.Net et SQL Server


Vraiment très utile.


Dans le Chapitre 18 de ce tutoriel, vous y trouverez aussi la description d'un outil permettant de précompiler et cacher une web application SharePoint.


Voici le lien vers cet outil : http://www.pptspaces.com/sharepointreporterblog/Shared%20Files/warmup.zip