WSS 3.0 & MOSS: ¿Qué pasa con la integración con SSRS 2008?

Como sabéis, con el SP2 de SQL Server 2006 y unos ciertos Add-In, se conseguía una integración realmente espectacular entre SQL Server Reporting Services 2005 (SSRS 2005) y SharePoint (Podéis encontrar información sobre esta integración en los posts I, II y III que escribimos hace tiempo). Pues bien, con SQL Server 2008 recién liberado, seguramente que muchos os preguntaréis que pasa con la integración de SSRS 2008…la respuesta es sencilla. Por un lado, al activar SSRS se nos pregunta por el el tipo de instalación: nativa o integrada con SharePoint (lógicamente, SQL Server 2008 ya ofrece a la caja esta posibilidad sin tener que instalar ningún SP adicional).

Una vez activado SSRS en modo integrado, necesitaremos instalarnos los Microsoft SQL Server 2008 Reporting Services Add-in for SharePoint Technologies (Reporting Services Add-in) que Microsoft acaba de liberar. Estos Add-in nos permiten aprovechar toda la capacidad de procesamiento y gestión que nos da SQL Server 2008 dentro de WSS 3.0 & MOSS. Tal y como podéis comprobar en la página de descarga del Add-in, las funcionalidades disponibles son las siguientes:

  • A Report Viewer Web Part that provides report viewing capability, export to other rendering formats, page navigation, search, print, and zoom.
  • Web application pages so that you can create subscriptions and schedules, and manage reports, models, and data sources.
  • Support for using standard Windows SharePoint Services features including document management, collaboration, security, and deployment with report server content types.

Ahora a ya sólo queda empezar a probar como de buena es la integración entre SharePoint y SSRS 2008 con estos Add-In…lo veremos en próximos capítulos.

WSS 3.0: Creando nuestras propias plantillas de páginas de Web Parts!

A la hora de visualizar información en la plataforma SharePoint, disponemos de un recurso bastante interesante: las páginas de web parts. Estas páginas de web parts se crean de acuerdo a una serie de plantillas predefinidas siguiendo el siguiente proceso:

  • Desde el menú Site Actions pulsamos la opción Create.
  • En la sección Web Pages elegimos Web Part Page.
  • En la pantalla que se abre (página spcf.aspx que reside en el directorio _layouts del serividor de SharePoint).
image image  

image

Hasta aquí todo perfecto, elegimos la plantilla, creamos la página y listo…pero aquí mi compañero Pablo me planteó una pregunta interesante: ¿Se podrán definir nuestras propias plantillas para crear páginas de Web Parts e ir más allá de las 8 que por defecto nos da SharePoint? Lógicamente, y conociendo las bondades de SharePoint, le contesté a Pablo sin conocer como hacerlo que seguro que sí…y efectivamente, claro que se puede…no me costó mucho encontrar en Google un par de pistas sobre como hacerlo:

  • En la primera, correspondiente a esta post, se comenta como se haría pero sin entrar en detalle.
  • A partir del post anterior, si que llegamos a como se hacía con la versión anterior de SharePoint que en WSS 3.0 & MOSS sigue funcionando. Se trata de este artículo de MSDN.

Bueno, pues con estas pistas vamos a ponernos manos a la obra para crear nuestra propia plantilla:

  • Lo primero que haremos es editar la página spcf.aspx y localizar la sección dónde se realiza la carga de las plantillas disponibles para añadir la referencia a nuestra plantilla. Esta página se encuentra en la siguiente ruta de nuestro servidor de SharePoint: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS.
  • La editamos con Visual Studio (por ejemplo) y buscamos la siguiente sección:

                                <Template_Control>

                                <SELECT id=”onetidWebPartPageTemplate” name=”WebPartPageTemplate” size=”9″ onchange=”DoTemplateOptionChange()”>

<OPTION value=”1″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option1%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”3″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option3%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”4″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option4%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”2″ selected=”true”><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option2%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”5″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option5%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”6″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option6%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”7″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option7%>” EncodeMethod=’HtmlEncode’/></OPTION>

<OPTION value=”8″><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,webpagecreation_layout_option8%>” EncodeMethod=’HtmlEncode’/></OPTION>                                            

                                 </SELECT>

</Template_Control>

 

  • Para añadir una nueva referencia, simplemente añadimos antes de la etiqueta </SELECT> una nueva opción. Por ejemplo: <OPTION value=”9″> Mi Plantilla Personalizada</OPTION>.
  • Además, tenemos que cambiar el valor del atributo size de la etiqueta SELECT de 8 a 9.
  • Guardamos los cambios en la página spcf.aspx.
  • Lo siguiente que vamos a hacer es crear una imagen para esta nueva opción. Las imágenes de las plantillas de páginas de web part se almacenan en la siguiente ruta: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\1033\IMAGES.
  • Las imágenes para las plantillas de páginas de web parts tienen un nombre característico: SPSTD#.GIF. Luego para la plantilla 9 simplemente añadimos SPSTD9.GIF (por facilidad, he creado esta imagen a partir de copiar una existente.
  • Si ahora refrescamos la página spcf.aspx, veremos que aparece la nueva opción con su imagen asociada.
image image  

image

Ya sólo nos queda añadir la plantilla física dónde corresponda. Este lugar no es otro que el path: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\1033\STS\DOCTEMP\SMARTPGS. Como vemos, este directorio contiene archivos .aspx con el nombre característico spstd#.aspx. Por lo tanto, para la nueva opción de plantilla (la número nueve), tendremos que crear una página .aspx con el nombre spstd9.aspx. Con esto ya tenemos todo:

  • Hacemos un iisreset para que la nueva página sea “tenida en cuenta” por SharePoint.
  • Le damos un nombre a la página a crear.
  • Tras pulsarle al botón Create, veremos que se produce un error en SharePoint nada explicativo. Esto se debe (como explica Raghu Bangalore en este post) a que la página spcf.aspx usa para todo el procesado que necesita la dll OWSSVR.dll ubicada en C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI…luego parece que su comportamiento y funcionalidad no puede ser alterado a priori.
image image  

Post_Plantillas_SharePoint_1image

Luego mi gozo en un pozo…y esto que todo parecía ir como la seda. Pero, ¿tenemos alguna alternativa? Pues sí, y esta no es otra que la que nos propone Raghu y el artículo de MSDN comentado: crear nuestra propia página personalizada spfc.aspx y añadir un vínculo a la misma en la página Create.aspx. Veamos cómo afrontar esta alternativa:

  • En primer lugar, nos creamos la página personalizada que emule el comportamiento de spfc.aspx. En mi caso he cogido la que el propio Raghu tiene disponible en su post.
  • Si editáis la página, veréis como añadir nuevas plantillas de creación de páginas de web parts sigue la filosofía comentada. De hecho, la clave está como ya vimos en añadir nuevas opciones a la etiqueta <SELECT> y llevar la cuenta ;-):

                             <SELECT id=”onetidWebPartPageTemplate” name=”WebPartPageTemplate” size=”9″       

                                 onchange=”DoTemplateOptionChange()”>

                               <OPTION value=”spstd1″>Template1</OPTION>

                               <OPTION value=”spstd2″>Template2</OPTION>

                               <OPTION value=”spstd3″>Template3</OPTION>

                               <OPTION value=”spstd4″ selected=”true”>Template4</OPTION>

                               <OPTION value=”spstd5″>Template5</OPTION>

                               <OPTION value=”spstd6″>Template6</OPTION>

                               <OPTION value=”spstd7″>Template7</OPTION>

                               <OPTION value=”spstd8″>Template8</OPTION>

                               <OPTION value=”spstd9″>Template9</OPTION>

                             </SELECT>

  • Copiamos nuestra página personalizada en el directorio _layouts.
  • Editamos la página Create.aspx y añadimos un enlace a la página que acabamos de crear (justo bajo la referencia a la opción estándar de creación de páginas de web parts…os marco en negrita lo que he añadido):

                                               <table style=”padding: 3px 0px 3px 4px;” class=”ms-itemstatic” onclick=”javascript:NavigateInnerHref(event)” onmouseover=”this.className=’ms-itemhover’;ShowListInformation(‘<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_title%>”/>’,'<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_desc%>”/>’,’/_layouts/images/ltsmrtpg.gif’)” onmouseout=”this.className=’ms-itemstatic’;HideListInformation()” cellspacing=”0″ cellpadding=”0″ width=”100%” border=”0″>

                                                <tr>

                                                 <td valign=”top” nowrap class=”ms-descriptiontext” style=”padding-top:1px”>

                                                  <IMG src=”/_layouts/images/setrect.gif” width=5px height=5px alt=”<SharePoint:EncodedLiteral runat=’server’ text='<%$Resources:wss,viewlsts_wp_page_desc%>’ EncodeMethod=’HtmlEncode’/>”>&nbsp;

                                                 </td>

                                                 <td valign=”top” width=100% class=”ms-descriptiontext”>

                                                  <a id=”onetidWebPartPage” href=”spcf.aspx” target=”_self”><SharePoint:EncodedLiteral runat=”server” text=”<%$Resources:wss,viewlsts_wp_page_title%>” EncodeMethod=’HtmlEncode’/></a>                                        

                                                 </td>

                                                </tr>

                                               </table>

                                               <table style=”padding: 3px 0px 3px 4px;” class=”ms-itemstatic” onclick=”javascript:NavigateInnerHref(event)” onmouseover=”this.className=’ms-itemhover’;ShowListInformation(‘<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_title%>”/>’,'<SharePoint:EncodedLiteral runat=”server” EncodeMethod=”EcmaScriptStringLiteralEncode” Text=”<%$Resources:wss,viewlsts_wp_page_desc%>”/>’,’/_layouts/images/ltsmrtpg.gif’)” onmouseout=”this.className=’ms-itemstatic’;HideListInformation()” cellspacing=”0″ cellpadding=”0″ width=”100%” border=”0″>

                                                <tr>

                                                 <td valign=”top” nowrap class=”ms-descriptiontext” style=”padding-top:1px”>

                                                  <IMG src=”/_layouts/images/setrect.gif” width=5px height=5px alt=”<SharePoint:EncodedLiteral runat=’server’ text='<%$Resources:wss,viewlsts_wp_page_desc%>’ EncodeMethod=’HtmlEncode’/>”>&nbsp;

                                                 </td>

                                                 <td valign=”top” width=100% class=”ms-descriptiontext”>

                                                  <a href=”custspcf.aspx” target=”_self” id=”MyCustomPage”>My Custom Web Part Page</a>

                                                 </td>

                                                </tr>

                                               </table>

Sin más, ya sólo nos queda probar que todo funciona como se espera:

  • Vamos a la página de creación y aparece la nueva opción bajo la sección Web Pages.
  • Al pulsar, veremos que la página de creación tiene 9 plantillas disponibles y que justo la novena es la nueva plantilla que hemos añadido.
  • Ahora al pulsar el botón Create, todo irá perfecto (sólo un pequeño detalle, las imágenes que utiliza esta spfc.aspx personalizada tienen que estar en el directorio C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\IMAGES).
Post_Plantillas_SharePoint_3 Post_Plantillas_SharePoint_4  

Post_Plantillas_SharePoint_5

Y hasta aquí llega este post sobre como crear plantillas de páginas de web parts para WSS 3.0. Espero que os haya resultado interesante.