miércoles, 30 de diciembre de 2009

Rating de contenidos de publicación en SharePoint 2010

Hoy toca hablar de otra de las novedades que vienen en SharePoint 2010: la valoración (o rating) de elementos. En la versión anterior de SharePoint, mediante el uso de algún componente de terceros como el SharePoint Podcasting Kit (http://www.codeplex.com/pks) podíamos tener la capacidad de valorar contenidos de una manera gráfica. Esto nos permitía disponer de una de las típicas funcionalidades de WEB 2.0 más comunes. Con la aparición de la nueva versión de la nueva versión de SharePoint disponemos de esa funcionalidad de una manera estándar. No obstante, no es el funcionamiento estándar cuando creas una lista, sino que es necesario realizar algunas acciones. En esta entrada os voy a explicar un caso práctico concreto: cómo habilitar esta funcionalidad para portales de publicación de manera sencilla.

La idea es simple: quiero tener un tipo de contenido que los visitantes de mi portal puedan valorar mediante el habitual control de estrellitas. Es el típico requerimiento con el que te encuentras a la hora de desplegar un portal público y que , cuando hablábamos de SharePoint, su desarrollo empezaba con un ligero temblor de dientes. Esta vez, antes de empezar a desarrollar nada, os voy a enseñar qué nos da de serie SharePoint 2010. Para ello empezaremos como siempre, creando un tipo de contenidos y una plantilla de página asociada a dicho tipo de contenidos, y configurando la lista de páginas de un sitio de SharePoint para que acepte el nuevo tipo de contenidos que hemos creado. Hasta aquí no hay cambios respecto a la versión 2007. Vayamos ahora a por las novedades:

Lo primero, si accedemos a la configuración de la lista de páginas encontramos la opción Rating settings tal y como muestra la figura.

image

Si accedemos a la opción Rating settings observaremos como, por defecto, la lista no está preparada para admitir valoraciones así que, lo primero que haremos, será establecer el valor a .

image

A partir de este momento, si editamos las propiedades de cualquier elemento de la lista tendremos la posibilidad de valorarlo de manera gráfica, tal y como muestra la figura:

image

Ahora lo que querríamos hacer es ofrecer la misma funcionalidad para todos aquellos usuarios que están navegando por nuestro portal y que, obviamente, no pueden (ni deben) editar las propiedades de nuestros elementos. Realizar esto resulto más complicado que lo que hemos hecho hasta ahora. Lo primero que intenté fue incluir el campo Rating en la plantilla de página que había creado previamente desde SharePoint Designer, pero el campo no estaba disponible en la lista de campos de la página ni del tipo de contenido. Después de buscar un poco por la estructura de la carpeta 14 encontré algunas pistas que me guiaron hasta la solución.

Si editamos el fichero C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML\fldtypes_Ratings.xml encontramos la definición del tipo de datos.

image

Vemos que se el tipo de datos se llama AverageRatingField, y está en el ensamblado Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. En este caso estamos hablando de la clase que define el tipo de datos, así que si seguimos la lógica de otros controles el control debería llamarse AverageRatingFieldControl. Para probarlo, lo único que tenemos que hacer es añadir a la plantilla de página que antes hemos creado las siguientes cosas:

Para empezar, al inicio de la plantilla, la directiva de página que permite obtener controles del ensamblado anteriormente citado:

  1. <%@ Register Tagprefix="PortalWebControls" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>

Seguidamente, allá donde queramos mostrar nuestro valorador, tenemos que añadir el campo de la lista que mantiene esta información. Por defecto, el nombre de la columna creada es  Rating_x0020__x0028_0_x002d_5_x0029_, así que la línea a añadir sería algo similar a:

  1. <PortalWebControls:AverageRatingFieldControl FieldName="Rating_x0020__x0028_0_x002d_5_x0029_" runat="server"></PortalWebControls:AverageRatingFieldControl>

Si guardamos la plantilla y accedemos a alguna de las páginas creadas con nuestro tipo de contenidos veremos algo similar a lo siguiente:

image

A partir de ahora nuestros contenidos pueden ser valorados por los visitantes de nuestro portal y el esfuerzo para conseguir esto ha sido mínimo. Por cierto, si refrescamos la página veremo que el valor que hemos indicado en nuestra valoración se pierde. No os preocupéis que no es un error. SharePoint actualiza las medias de las valoraciones de los usuarios cada hora mediante un job. Esto puede ser configurado por un administrador o incluso se puede forzar la ejecución del proceso para poder hacer pruebas de funcionamiento pero, para el caso que nos ocupa, voy a dejarlo aquí.

1 comentarios:

Anónimo dijo...

Es muy interesante lo que comentas, David, aunque creo que los ratings de SharePoint son una pulsión de los sentidos. Si estás interesado en la tuna aburrida, puedes visitar http://www.youtube.com/watch?v=rUbWjIKxrrs