personalización y extensión del webpart de consulta de contenidos (cqwp)

30
Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo Cristian M. Zaragoza Gómez CyB200002 Desarrollador SharePoint – Colaboración y Búsqueda MCTS, SharePoint 2010, Configuración & Desarrollo [email protected]

Upload: solidq

Post on 25-Jun-2015

183 views

Category:

Documents


1 download

DESCRIPTION

http://summit.solidq.com/ A lo largo de esta sesión, veremos como puede Windows PowerShell ayudar en tareas de desarrollo para SharePoint 2010. Empezaremos con un breve repaso a la programación en Windows PowerShell, para seguidamente poner todo en práctica, desarrollando scripts con los que resolver en segundos, problemas cotidianos que pueden llevar horas.

TRANSCRIPT

Page 1: Personalización y extensión del webPart de consulta de contenidos (CQWP)

Personalización y extensión del WebPart de Consulta de Contenidos (CQWP): Tu otro nuevo mejor amigo Cristian M. Zaragoza Gómez

CyB200002

Desarrollador SharePoint – Colaboración y Búsqueda MCTS, SharePoint 2010, Configuración & Desarrollo

[email protected]

Page 2: Personalización y extensión del webPart de consulta de contenidos (CQWP)

Objetivos de la sesión

Conocer el funcionamiento base y el alcance.

Aprender cómo personalizar el aspecto visual.

Aprender cómo extender la funcionalidad nativa.

Llamar a funciones .NET personalizadas desde el propio XSLT.

Page 3: Personalización y extensión del webPart de consulta de contenidos (CQWP)

¿Qué es el Content By Query Web Part?

Demo 1: Toma de contacto

¿Qué lo hace especial?

Personalización del aspecto visual

Demo 2: Slider de imágenes

Agenda

CQWP para la gente de a pie

Page 4: Personalización y extensión del webPart de consulta de contenidos (CQWP)

¿Eso es todo?

Cómo extender CQWP paso a paso

Demo 4: Paginación + filtrado dinámico

Insisto, ¿Eso es todo?

.NET desde XSLT

Demo 5: Invocando funciones .NET desde CQWP

Agenda

CQWP para superhéroes

Page 5: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para la gente de a pie

Page 6: Personalización y extensión del webPart de consulta de contenidos (CQWP)

Herramienta orientada a diseñadores/desarrolladores, que…

permite reunir “trozos” de información con diferentes orígenes (listas, sitios…).

para después filtrar la información obtenida según se requiera…

y finalmente mostrar el conjunto de información filtrada en un único bloque.

CQWP para la gente de a pie

¿Qué es el Content By Query Web Part?

Page 7: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para la gente de a pie

¿Qué es el Content By Query Web Part?

3 5

4 1

9 7

3 5

7 9

Lista de SharePoint CQWP Query Resultado

Page 8: Personalización y extensión del webPart de consulta de contenidos (CQWP)

DEMO Demo 1: Toma de contacto con CQWP

Page 9: Personalización y extensión del webPart de consulta de contenidos (CQWP)

Herramienta Nativa (OOTB) SharePoint Server (2007 y 2010)

Separación de capas: datos y presentación.

Mejorado en 2010 con los “Slots”.

Sencillo personalizar aspecto visual. Requiere conocimientos en XSLT.

RENDIMIENTO

CQWP para la gente de a pie

¿Qué lo hace especial? (1)

Page 10: Personalización y extensión del webPart de consulta de contenidos (CQWP)

Implementa un sistema de caché para optimizar las consultas.

Para ello se apoya en dos clases:

CrossListQueryCache

CrossListQueryInfo

A su vez éstas usan internamente SPSiteDataQuery.

CQWP para la gente de a pie

¿Qué lo hace especial? (2)

SPSiteDataQuery

Caché

CQWP

CrossListQueryCache

Page 11: Personalización y extensión del webPart de consulta de contenidos (CQWP)

¿Qué lo hace especial? (3)

CQWP para la gente de a pie

Page 12: Personalización y extensión del webPart de consulta de contenidos (CQWP)
Page 13: Personalización y extensión del webPart de consulta de contenidos (CQWP)
Page 14: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para la gente de a pie

Personalización del aspecto visual (1)

Archivo Descripción

ContentQueryMain.xsl

Contiene la lógica que genera las llamadas adecuadas a

las plantillas de encabezado y elemento para cada

elemento.

ItemStyle.xsl

Contiene plantillas que definen cómo mostrar un

elemento. Estas plantillas reciben y procesan una fila de

datos cada vez, lo que permite garantizar que el estilo y

los datos de las filas de elementos sean coherentes.

Header.xsl

Contiene plantillas que definen cómo mostrar un

encabezado y garantizan la coherencia de los

encabezados de grupo.

Page 15: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para la gente de a pie

Personalización del aspecto visual (2)

XML

ContentQueryMain.xsl

Header.xsl

ItemStyle.xsl

HTML

Page 16: Personalización y extensión del webPart de consulta de contenidos (CQWP)

En SharePoint 2010 aparece el concepto de slot.

Los slots permiten crear plantillas de presentación semánticas y reusables.

¿Cómo funcionan?

CQWP para la gente de a pie

Personalización del aspecto visual (3)

Page 17: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para la gente de a pie

Personalización del aspecto visual (4) <xsl:template name="DetailedOverview" match="Row[@Style='DetailedOverview']" mode="itemstyle">

<xsl:variable name="SafeLinkUrl">

<xsl:call-template name="OuterTemplate.GetSafeLink">

<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>

</xsl:call-template>

</xsl:variable>

<xsl:variable name="DisplayTitle">

<xsl:call-template name="OuterTemplate.GetTitle">

<xsl:with-param name="Title" select="''"/>

<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>

<xsl:with-param name="UseFileName" select="1"/>

</xsl:call-template>

</xsl:variable>

<p>

<strong><xsl:value-of select="$DisplayTitle"/></strong><br />

<xsl:value-of select="@Author"/>, <xsl:value-of select="@Date"/> </p>

<p>

<xsl:value-of select="@RollupImage"/>

<xsl:value-of select="@Details"/> </p>

<p>

<a href="{$SafeLinkUrl}">Read more</a>

</p>

</xsl:template>

Page 18: Personalización y extensión del webPart de consulta de contenidos (CQWP)

DEMO Demo 2: Slider de imágenes

Page 19: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para superhéroes

Page 20: Personalización y extensión del webPart de consulta de contenidos (CQWP)

En muchas ocasiones, podemos necesitar “algo más”: Mostrar contenidos según idioma.

Paginar elementos.

Parámetros propios.

Filtrados dinámicos.

Contenidos aleatorios.

Etc.

Tendencia natural Desarrollar un nuevo Web Part.

Nueva tendencia natural Extender CQWP.

CQWP para superhéroes

¿Eso es todo?

Page 21: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para superhéroes Cómo extender CQWP paso a paso (1)

' Incluir DLL y referencia.

Imports Microsoft.SharePoint.Publishing.WebControls

Public Class CQWPEx

Inherits ContentByQueryWebPart

Protected Overrides Sub CreateChildControls()

End Sub

End Class

Page 22: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para superhéroes Cómo extender CQWP paso a paso (2)

' Añadir parámetros al fichero XSLT.

Protected Overrides Sub ModifyXsltArgumentList(ByVal e As System.EventArgs) ...

argList.AddParameter(“Locale", "", “1033”)

MyBase.ModifyXsltArgumentList(argList)

End Sub

Page 23: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para superhéroes Cómo extender CQWP paso a paso (3)

' Sobrescribir esta función para filtrados dinámicos.

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

MyBase.OnLoad(e)

' Operador lógico (And, Or)

Me.Filter1ChainingOperator = FilterChainingOperator.And

' ID de la lista en la que vamos a filtrar

Dim filterField1ID As Guid = miLista.Id

Me.FilterField1 = filterField1ID.ToString

' Valor que ha de cumplir. Ej: Valor de la Query String

Me.FilterValue1 = “Categoria 1”

End Sub

Page 24: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para superhéroes Cómo extender CQWP paso a paso (4)

'A esta función llegamos después de haber filtrado.

'Podemos “refinar” los resultados Paginado

'También podemos establecer configuración extra Ficheros XSLT

Protected Overrides Sub OnInit(ByVal e As System.EventArgs)

MyBase.OnInit(e)

' Establecemos ficheros XSLT propios

Me.ItemXslLink = "/.../ItemStyleEx.xsl"

Me.MainXslLink = "/.../ContentQueryMainEx.xsl"

...

End Sub

Page 25: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para superhéroes Cómo extender CQWP paso a paso (5)

' Recibe un DataTable con las filas ya procesadas (filtradas)

' Devuelve otro DataTable que será con que se cree el XML final.

' ¿Paginación?.

Protected Function processData(ByVal dt As DataTable) As DataTable

...

End Sub

Page 26: Personalización y extensión del webPart de consulta de contenidos (CQWP)

DEMO Demo 4: Paginación + filtrado dinámico

Page 27: Personalización y extensión del webPart de consulta de contenidos (CQWP)

CQWP para superhéroes

Insisto, ¿Eso es todo?

Page 28: Personalización y extensión del webPart de consulta de contenidos (CQWP)

Con CQWP hay que tocar XSLT…

y no es el mejor amigo del desarrollador.

.NET si puede serlo…

Sería genial ejecutar .NET desde XSLT, ¿verdad?

CQWP aprueba esta “unión”

CQWP prácticamente para todo.

CQWP para superhéroes

.NET desde XSLT

Page 29: Personalización y extensión del webPart de consulta de contenidos (CQWP)

DEMO Demo 5: Invocado funciones .NET desde CQWP

Page 30: Personalización y extensión del webPart de consulta de contenidos (CQWP)

Si quieres disfrutar de las mejores sesiones de

nuestros mentores de España y Latino América,

ésta es tu oportunidad.

http://summit.solidq.com/madrid/

Síguenos: