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í.

martes, 29 de diciembre de 2009

Desplegando soluciones SandBox en SharePoint 2010

Muchos de vosotros habréis oído hablar de las maravillas de las soluciones SandBox de SharePoint 2010. Como sabréis, la teoría dice que si trabajamos en ese modo podremos subir nuestras soluciones a SharePoint Online sin ningún trabajo extra, y que la funcionalidad que incluyamos en nuestras soluciones no afectará a otros desarrollos de la misma manera que otros desarrollos no afectarán al nuestro. Bien, antes de empezar a trabajar en “modo SandBox” es necesario saber un par de cosas básicas.

Lo primero, si creamos una solución de este tipo y intentamos desplegarla en nuestro servidor de desarrollo nos podemos encontrar con el siguiente error:

Error occurred in deployment step 'Retract Solution': Cannot start service SPUserCodeV4 on computer 'DEVELOPMENT'.

Según parece hay un servicio que no está iniciado por defecto. Si vamos a buscarlo encontraremos el servicio Windows SharePoint Services User Code Host V4 deshabilitado.

image

Bastará con habilitarlo e iniciarlo para dejar de obtener el mensaje anterior. Si intentamos desplegar de nuevo obtendremos un mensaje distinto:

Error occurred in deployment step 'Activate Features': This feature cannot be activated at this time. The contents of the feature's solution requires the Solution Sandbox service to be running.

Después de investigar un poco encontré que en este caso el mensaje habla de un servicio de SharePoint y no de Windows así que, para solucionar el error accederemos a la sección Manage services on server de la Administración Central de SharePoint.

image

Ahí encontraremos que el servicio Microsoft SharePoint Foundation User Code Service está parado, tal y como muestra la figura.

image
A partir de este momento ya podemos empezar a desplegar soluciones SandBox.