Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

The Mit's Blog

En plus d'intégrer et skier, il sait même écrire !
(Blog de Renaud Comte)

Actualités


  • Ancien MVP SharePoint 8 ans ...
    Des projets .Net, SharePoint 2013 ou Office 365 ??

    Contactez-nous :

Archives

CQWP : ce qu’il est bon de savoir sur le dev/debug (part 2)

Comme promis je reviens sur le sujet du CQWP. Maintenant que vous avez certainement lu le BABA conseillé du premier article, nous allons allez un peu plus loin

Rappel :

Parlons un peu plus Dev et méthode ou “ Comment faire pour coder une XSL dans mon SharePoint sans en faire de crise existentielle”

La réponse est multiple car elle est à vrai dire contextuel à votre besoin, comme bien souvent sous SharePoint

Commençons :

A) le packaging

Oui j’insiste encore sur ce sujet, mais il est toujours bon de préparer son package de déploiement avant même de commencer son développement. Ca reste une opération peut être un poil fastidieux mais une fois qu’une solution/feature déploie, elle déploie toujours.

image

Clairement, un outils comme le WSPBuilder est bien pratique, mais pas forcement indispensable

Dans le cas de la CQWP, il faut

  • une Feature pour “uploader” les fichiers
    • soit un module pour la galerie des WebPart pour le .WebPart
    • un autre module pour vos 2/3 XSLs de transformation
      • un double de ItemStyle.xsl, header.xsl et ContentMainQuery.xsl
  • en options, une dll si vous dérivez/étendez  le code
    • bien sur signé avec SNK
    • en GAC ou Bin avec CAS
  • très important : les fichiers de ressources pour les libéllés !!!
    • resx dans le dossier de la feature pour sa propre regionalisation
    • resx en ressources pour les .WebParts

Le tout accompagné de petit script pour déployer, activer et compagnie

B) le Jeu de test

la CQWP est un composant d’agrégation donc difficile à tester sans jeu de test …

Donc il faut avant tout déployer, en fonction de vos besoins

  • des documents
  • des pages de news
  • des vignettes et des images pour les pages de publications
  • du contenu dans les layouts et les Content Types associés

Evidement, plus l’agrégation est spécifique plus les projet de WCM, Gabarit, CT seront à faire en premier …

En ce qui concerne les données, quelques astuces cependant

  • utiliser les sites de news, de collection ou autre pour créer du contenu dans une collection vierge,
    • Eviter les sites trop “Fun” , quoi que, tout dépend de l’image de vos démos
      Genre gourmand chti

      image
    • plus le contenu est complet, plus vous être proche de la réalité
      • il n’y a que des développeurs pour croire que le corps de news est lipsum botum avec coucou en titre
      • les titres sont longs
      • les articles sont riches
      • il y a toujours plein d’accents et de caractères exotiques
    • faire un package de son jeu de test grâce à l’API PRIME, et son sympathique outils :
      CDW_ExportSelect.jpg
      http://www.codeplex.com/SPDeploymentWizard
    • Limite, faites donc un export d’un jeu de pages de votre client, rien de mieux pour valider maquette et contenu

C) Préparez votre site de test

Tout dépend de votre approche, mais j’aime assez avoir une variation de VPC par client ou au minimum, une collection par projet pour éviter de

  • mélanger les codes
  • limiter les effets de bords

Comme la CQWP n’existe que dans le monde WCM vous devez créer donc une Site Collection sur un modèle de Publishing
Cependant la CQWP peut s’exécuter sur n’importe quelle page à WebPart

>>> Pensez donc à créer un bibliothèque de document avec comme modèle par défaut, les pages à WebPart. Puis vous créez une simple page à WP pour y drag and dropper votre custom CQWP

Ainsi, vous allez pouvoir sur abuser du F5/CtrlF5 sans devoir vous affranchir du fastidieux “publish” des pages WCM
Après tout, vous n’avez pas besoin de versionning de contenu pour coder une XSL

D) votre ami SharePoint Designer

C’est toujours drôle à rappeler mais SPD reste le meilleur ami du développeur SharePoint à qui sait l’utiliser intelligemment

Si si, je persiste et signe :

  • dupliquez modifiez en 3 cliques les .WebParts, les XSL et les pages à WebParts
  • modifiez le paramétrages des WebParts directement dans les pages : cool, pour ajouter de nouveaux contenu à agréger
  • exporter les fichiers une fois codés
  • écrire et modifier “live” les XSL

Genre

image

image

Limite, vous pouvez déjà coder votre XSL et le .WebPart sans  même devoir préparer de solution puisque vous pouvez intervenir dans les galeries de votre collection de Publishing . A voir

Idem pour les layouts, soit dit en passant

Et en plus, il est gratuit désormais !
http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=baa3ad86-bfc1-4bd4-9812-d9e710d44f42&displaylang=en

E) il faut faire du XSL …

Bon voila tout est dit, XSL c’est du XSL

Comme disais un collègue , il y a longtemps, “XSL n’est pas une langage mais plus une philosophie”

Ca se discute, s’argumente et se constate et ca se critique en fonction des expériences.

Clairement, il faut faire un petit effort pour s’y mettre mais le pas n’est lourd si vous lisez un peu

je vous conseille de bien suivre les exemples et la structure du http://www.w3schools.com/xsl/

image

Et ensuite, l’expérience et la persévérance paye toujours. Un conseil, ne vous lancez pas ASAP dans des feuilles XSL trop complexes

  • analysez des exemples
  • tester les démos
  • détailler bien les XSL de la CQWP, certes riches mais vraiment pleine d’enseignement

N’oubliez pas de jeter un œil sur XPath ensuite …

Vous ne le regretterez pas :

  • pour faire du rendu à base d’XML et du corps client, c’est génial
  • flexibilité totale pour le rendu
  • notion de modèle
  • extensible par code (si si)
  • n’oubliez pas que vous n’avez pas le choix dans le cas
    • de la CQWP
    • la Dataform WP
    • le rendu du search engine
    • le futur (j’en dis pas plus)

F) Debugger son XSL

il existe plein de technique diverses et variés mais surtout plein d’outil que ce soit XMLSpy et ce cher vieux VS 2008

je ne vais pas les détailler ici, mais au moins vous donner 2, 3 trucs bien pratiques

Obtenir le flux de base de la CQWP
==> En modifiant les XSL de la CQWP, vous pouvez obtenir le RAW XML, il faut juste remplacez dans le ContentQueryMain.xsl, le code suivant

<xsl:template match="/">
   <xsl:call-template name="OuterTemplate" />
</xsl:template>
Par
<xsl:template match="/">
   <xmp><xsl:copy-of select="*"/></xmp>
</xsl:template>

Vous découvrirez que le flux de sortie est vraiment simple

image

>>> En pratique, quand vous écrivez votre ItemStyle.xsl, vous ne travaillez que sur les item ROW et ses attributs, tout simplement

Obtenir les attributs disponibles dans la CQWP
==>Ce flux à placer dans ItemStyle, vous donne l’ensemble des attributs, ensuite, vous n’avez plus qu’à composer

<xsl:template name="MyCustomStyle" match="Row[@Style='MyCustomStyle']" mode="itemstyle">
<xsl:for-each select="@*">
    <B><xsl:value-of select="name()" /></B><BR/>
</xsl:for-each>
<HR/>
</xsl:template>

Capturer2

G) tester et appliquer

la CQWP à un comportement bien pratique en production mais vraiment embêtant en développement.
>>> elle fait toujours du cache des données, de la transformation XSL et compagnie

Conseil simple : au lieu d’utiliser le F5 dans votre page à WebPart, travaillez plutôt en mode SharedView, pardon, en édition des paramètres de la WebPart.

image >>>  image

==> Chaque fois que vous mettez à jour la XSL via SPD, passez à votre navigateur et cliquez sur Apply. Le résultat est directe et sans cache !

Ensuite, quand tout fonctionne, vous exportez les fichiers , les intégrer dans votre Sln, un coup de package et vous pouvez livrer !

E) et bien encore

Désormais, vous êtes bien en selle pour coder/étendre vos CQWPs? je met fin à ce post pour éviter les rallonges à l’infinie. Mais ne vous inquiétez pas, la suite vas arriver, il y a encore bien des choses à dire

A bientôt

Renaud Comte aka TheMit (CQWP junkie)
Member of WygTeam
http://www.wygwam.com

Mots clés Technorati : ,,,,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 7 août 2009 13:49 par themit

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01