Paginación en DataFormWebParts

Una de las formas de personalizar nuestra interfaz de SharePoint es trabajando con los DataFormWebParts. Con unos conocimientos intermedios de HTML, CSS y XSLT tenemos la posibilidad de lograr muchas cosas en cuanto a diseño.

Dentro de la personalización de nuestros WebParts una de las necesidades que habremos tenido es la de modificar la apariencia de la paginación por defecto proporcionada por SharePoint.

El resultado de la personalización que trabajaremos es la siguiente:

Al inicio se mostrará un enlace para ver el Siguiente elemento.

 

Aparecerán los enlaces de Inicio y Anterior.

Al dar clic en Siguiente hasta llegar al último elemento desaparecerá el enlace Siguiente.

Si damos clic en Inicio volveremos al primer elemento, si damos clic en Anterior retrocederemos de uno en uno.

Para lograr esta personalización de la navegación debemos seguir estos pasos:

1. Buscar la sección donde se especifican los números $FirstRow y $LastRow que son empleados en la paginación y comentarlos.

 2. Ahora, cuando empecé a probar la paginación de mi DataFormWebPart noté que la flecha de anterior no funcionaba, este es un bug que puede ser resulto con el fix que se proporciona en este link: http://geekswithblogs.net/haniamr/archive/2011/05/31/paging-problem-in-data-form-webpart-sp2010.aspx

Así como lo dice el artículo, debemos buscar un <td> con clase ms-paging y pegar lo siguiente ANTES DE la etiqueta <td nowrap=»nowrap» class=»ms-paging» align=»right»>:

<xsl:variable namedvt_PrevPageData«>

<xsl:choose>

<xsl:when test=»($FirstRow – $RowLimit – 1) &gt; -1″>

<xsl:value-of select=»$FirstRow – $RowLimit – 1″ />

</xsl:when>

<xsl:otherwise>0</xsl:otherwise>

</xsl:choose>

</xsl:variable>

3. Luego buscar history.back() y cambiar esa linea por lo siguiente:

<xsl:attribute namehref«>javascript:<xsl:value-ofselect=»ddwrt:GenFireServerEvent(concat(‘dvt_firstrow={‘,$PrevRow,’};dvt_startposition={Paged=TRUE&amp;p_ID=’,$dvt_PrevPageData,’}’))»/>;</xsl:attribute>

 4. Ahora dar formato a las secciones de Inicio, Anterior y Siguiente, mediante el siguiente <div>: <div style=»font-size:medium;font-family:Arial;font-weight:bold;float:left;width:33.3%;text-align:center»>

Creando Page Layouts desde SharePoint designer 2010 – Parte 1

Muchas veces cuando trabajamos en nuestros portales requerimos personalizar  la estructura del contenido que publicamos. Esto lo podemos lograr mediante SharePoint designer, sin embargo tener que realizar este trabajo repetidas veces resulta ineficiente.

Sin embargo las personalizaciones de páginas pueden ser reutilizadas mediante el concepto de Page Layout.

A continuación se explican los pasos para habilitar esta funcionalidad:

Primero debemos habilitar en nuestro site collection la característica de Infraestructura de Publicación de SharePoint Server.

Adicionalmente debemos habilitar la característica de sitio Publicación de SharePoint Server.

 

 Para verificar que se habilitaron de manera correcta estas características, podemos verificar en las configuraciones del sitio que se muestre en la categoría Galerías «Páginas maestras y diseños de página».

 Para comenzar con la creación de nuestro page layout, debemos crear un content type del tipo Tipos de contenido de publicación y seleccionar como Tipo de contenido primario a Página. Podemos posteriormente agregar los campos que deseemos.

Ingresar desde SharePoint designer a nuestro portal y en la sección Page Layouts dar clic en New Page Layout en el ribbon. Se abrira una ventana donde debemos seleccionar el grupo Tipos de contenido personalizados y nuestro content type recientemente creado. Adicionalmente debemos especificar el nombre de la página y la url.

Posteriormente editar el Page Layout, aparecerá el siguiente mensaje:

En nuestro Page Layout entre las etiquetas <asp:Content ContentPlaceholderID=»PlaceHolderMain» runat=»server»> y </asp:Content>, denemos ingresar la estructura HTML de DIVs que deseemos.

Yo utilice la que se muestra en la imagen:

 

 A continuación dentro de la estructura de DIVs debemos agregar los WebPart Zones y colocarles su nombre respectivo.

Finalmente debemos Proteger (Check in) a nuestro Page Layout.

Seleccionar Publish a major version y dar clic en OK.

En la Galería de páginas principales en nuestro site collection aprobar el Page Layout.

Seleccionar Aprobado y clic en Aceptar.

 Ahora, debemos ubicar la biblioteca Páginas existente por defecto en el site collection.

 

Podemos observar los content types existentes, al final se muestra nuestro content type recientemente agregado.

Ordenamos para que nuestro content type se muestre primero.

 En la biblioteca al podemos seleccionar nuestra plantilla.

Le ponemos el nombre a nuestra página, por defecto se encuentra seleccionada nuestra plantilla.

Podemos observar que al editar la página se muestra la estructura que definimos.

Creando Page Layouts desde SharePoint designer 2010 – Parte 2 (Agregando Ratings y Comments)

En el primer post vimos como podemos aprovechar el uso de los Page layouts en nuestros portales. en este post les mostraré algunas opciones adicionales que podemos incorporar a nuestros page layouts para obtener mayores ventajas.

Las características de Enterprise Social Networking ofrecidas en SharePoint tales como los Ratings y Comentarios pueden resultar muy útiles cuando creamos páginas tales como artículos o noticias.

Para este post me base en un artículo muy bueno que lo pueden encontrar en el siguiente link: http://weblogs.asp.net/bsimser/archive/2011/09/18/adding-ratings-and-comments-to-sharepoint-publishing-pages.aspx

Ahora a aplicar lo visto!

En la siguiente imagen podemos ver como se ha agregado un WebPart de Ratings en nuestra página basada en un page layout.

Para lograr el resultado de la imagen, previamente debemos habilitar la característica de ratings a la biblioteca de páginas.

Luego en el page layout debemos agregar primero la siguiente referencia:

<%@ Register TagPrefix=«SharePointPortalControls« Namespace=«Microsoft.SharePoint.Portal.WebControls« 

Assembly=«Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c« %>

Finalmente en un DIV que debemos crear (DIV Footer) agregar lo siguiente:

<SharePointPortalControls:AverageRatingFieldControl ID=«PageRatingControl« 

FieldName=«AverageRating« runat=«server«/>

Ahora, si queremos agregar el WebPart de comentarios tal como se muestra en la imagen:

Tenemos que agregar lo siguiente:

Comment on this article:<br/>  <SharePointPortalControls:SocialCommentControl ID=«CommentControl« runat=«server«/>

Mostrando ventanas PopUp al acceder a la página principal del Portal

Es muy común en páginas web encontrar las ventanas pop up, aquellas que aparecen cuando accedemos a un URL. Los pop up son utilizados para llamar la atención de los usuarios, y generalmente son empleados para mostrar promociones o anuncios importantes.

Agregar estos popups a nuestro portal de SharePoint 2010 es muy sencillo, tal como lo agregamos a cualquier página web.

Primero debemos editar nuestra página y agregar el siguiente script entre <asp:Content ContentPlaceHolderId=»PlaceHolderAdditionalPageHead» runat=»server»> y </asp:Content> en la parte final:

window.open(«MiPagina.aspx»,»Mi Titulo»,»menubar=no,width=350px,height=240px,toolbar=no»);

El resultado finalmente será el siguiente:

Publicando InfoPath Web Forms con código

Aquellos que han trabajado con InfoPath en modo cliente o desde el navegador (InfoPath Forms Services) se habrán dado cuenta de los grandes beneficios que nos brinda esta herramienta para construir formularios electrónico de manera sencilla y rápida.

Lógicamente InfoPath tiene sus limitaciones y hay casos en los cuales no es recomendable utilizarlo, por ejemplo para reemplazar a un sistema transaccional. Generalmente InfoPath es recomendable emplearlo para automatizar procesos de negocio que requieran de un input básico de información. Sin embargo InfoPath es bastante flexible y a través de VSTA nos permite realizar muchas cosas.

No es recomendable llenar de código a nuestro InfoPath, pero en ciertos casos el uso de porciones de código mesuradas nos puede permitir lograr implementar requerimientos de negocio interesantes.

En este post les explicaré  como publicar un formulario en la web con código:

Para publicar un formulario con código debemos usar el metodo de publicación aprobado por el administrador, para eso ir a: File -> Publish -> SharePoint Server

Ingresar la URL de nuestro portal en donde deseamos publicar ell InfoPath.

Seleccionar Enable this form to be filled out by using a browser y Administrator-approved form template (advanced).

Deberemos especificar una ubicación física donde guardaremos nuestra plantilla.

A continuación seleccionar los campos que deseemos publicar.

 

Finalmente presionar Publish.

En la administración central ir a General Application Settings y en la categoría InfoPath Forms Services clic en Upload form template.

Finalmente cargar nuestro plantilla. 

Si la plantilla no tiene problemas nos aparecerá el siguiente mensaje, dar clic en OK.

 Seleccionar la plantilla y clic en Activate to a Site Collection.

 Podemos verificar que el Feature se activó en el site collection donde lo publicamos.

 Finalmente en nuestra biblioteca de formularios debemos agregar nuestra plantilla como un nuevo content type.

 y listo! podemos ahora utilizar nuestra plantilla de InfoPath.

Documentos relacionados en SharePoint 2010

El víncular documentos en SharePoint es un requerimiento muy solicitado, ya sea como documentos anexos o referencias a otros documentos, resulta muy importante para los usuarios disponer de una vista única que consolide todas estas relaciones.

Generalmente para estos casos el uso de las columnas lookup resultan ser la solución. Las columnas lookup nos permiten inclusive poder seleccionar múltiples elementos de una lista o biblioteca, pero aún así son muy limitados. Los inconvenientes surgen cuando queremos mediante una vista filtrar los elementos relacionados, pues cuando la columna lookup tienes múltiples elementos no se puede lograr este resultado.

 Una solución alternativa es manejar las relaciones en una lista separada y para esto el uso de InfoPath Forms services ofrece varios beneficios.

El resultado esperado es el que se muestra en la siguiente imagen:

 Como podemos apreciar podemos filtrar los documentos relacionados al documento que seleccionemos.

Si damos clic en el enlace Relacionar aparecerá un formulario de infopath web como el siguiente:

El formulario captura el ID del documento de manera automática, y permite seleccionar un documento para relacionar. 

Ahora si, los pasos para lograr este resultado:

 1. Crear un InfoPath con los siguientes campos básicos: IDPadre, DocRelacionado, FormatoDoc. El formulario tendrá un botón Relacionar que enviará los datos a una biblioteca de formularios.

 2. Crear una conexión secundaria hacia la biblioteca donde esta los documentos que deseamos referenciar. Los campos a llamar: Título, CT, FormatoArchivo. Los campos CT y FormatoArchivo son automáticamente actualizados mediante un workflow.

3. Como vemos en la siguiente imagen. El CT nos permitirá identificar si el elemento es una carpeta o un documento, de tal manera que podamos filtrar y no se muestre en el drop down los elementos tipo Carpeta.

 

 4. Creamos el flujo para actualizar el campo CT con el Content Type de nuestro elemento actual.

 

 

 5. En el InfoPath, en el control Drop Down realizar el filtro para que no muestre los elementos que son carpetas.

 

 6. En el Loading Event del formulario agregar el código para capturar el ID del elemento actual y asignarlo a uno de los campos del InfoPath (El código se muestra en la imágen).

 

 7. Desde SharePoint Designer editar la vista y agregar el enlace Relacionar para automáticamente abrir el Formulario de InfoPath en el navegador y adicionalmente proporcionar el parámetro ID.

 

 8. Finalmente agregar una vista que obtenga los datos de la biblioteca de formularios con las relaciones. Que en la vista se agregue un enlace al documento real que esta en la biblioteca de documentos originales.

9. Finalmente realizar la conexión entre los WebParts, seguir las opciones que se muestran en las siguientes imágenes:

 

 

Restaurando el Managed Metadata Service y Content Type Hub de Desarrollo a Producción – Parte 2

En este segundo post explicaré los pasos para restaurar el content type hub y asociarlo con el servicio de metadatos recientemente restaurado.

 Lo primero que debemos hacer es crear un nuevo site collection en blanco sobre el cual restauraremos el content type hub.

Posteriormente debemos ejecutar el siguiente comando:

Restore-SPSite -Identity http://miportal/soluciones/contenttypehub -Path \rutaCTHU.bak -Force

Abremos restaurado el CTHUB y deberemos cambiar el administrador de la colección de sitios.

 A continuación debemos asociar este CTHUB con el servicio de metadatos para lo cual debemos ejecutar el siguiente comando:

Set-SPMetadataServiceApplication –Identity “Managed Metadata Service” –HubURI “http://miportal/soluciones/contenttypehub”

 Finalmente deberemos seleccionar las siguiente opciones en las propiedades del servicio de metadatos:

Marquesinas de elementos de listas en SharePoint 2010

En este post les mostraré como habilitar una funcionalidad bastante interesante generalmente empleada para mostrar promociones o anuncios que quieran ser resaltadas a la vista de los usuarios. Esta característica es la marquesina. Para que esta marquesina pueda mostrar elementos de una lista de manera dinámica no es tan sencillo como incluir una etiqueta html para marquesina.

Tomé como base el siguiente artículo: http://themossblog.com/articles/how-to-build-a-scrolling-marquee-of-blog-postings-from-a-sub-site/

El resultado final debería ser el siguiente:

Para lograr esto, primero debemos desde SharePoint Designer, en una página web definir una división (DIV) donde insertaremos nuestro WebPart, aquí podremos definir el color de fondo además de la altura de esta sección.

<div id=»MiMarquee»  style=»background-color:·D9FDFF;height:18px»>

 Deberemos insertar nuestro DataFormWebPart de nuestra lista en mi caso una lista de anuncios, y debemos especificar el parámetro FrameType=»None» para poder mostrar el color de fondo del DIV.

En la plantilla dvt_1.body se debe especificar lo siguiente:

 <marquee onmouseover=»this.stop();» onmouseout=»this.start();» truespeed=»» scrollamount=»1″ scrollDelay=»30″ direction=»left» valing=»middle»>

 En la plantilla dvt_1.rowview digitar lo siguiente: <a href=»{concat(‘http://intranetdemo/Lists/Anuncios/DispForm.aspx?ID=’,@ID)}»><xsl:value-of select=» @Title»/></a> |

Y listo, hemos creado nuestra marquesina que mostrará nuestros anuncios de manera dinámica.

Cambiando el icono del browser de nuestro site collection

Nos abremos dado cuenta que cada vez que agregamos a nuestros Favoritos páginas tales como Facebook, Youtube, Linkedin entre otros nos es mas facil ubicar estos enlaces debido a el icono que los identifica.

Esto es factible lograrlo en nuestros portales de SharePoint donde probablemente tengamos el escenario de disponer de múltiples soluciones independientes que requieran ser identificadas con un icono distinto.

Para lograr este efecto me base en el siguiente articulo: http://blog.techgalaxy.net/archives/3059

Para poder crear los iconos utilice la siguiente herramienta online: http://tools.dynamicdrive.com/favicon/

El proceso es sencillo, primero debemos editar nuestro master page, puede ser el master page por defecto (v4.master) o cualquier otro personalizado.

A continuación debemos ubicar la siguiente sección en nuestro Master Page: <SharePoint:SPShortcutIcon runat=»server» IconUrl=»/_layouts/images/favicon.ico»/>

Aquí se especifica la ruta de nuestro icono.

Debemos copiar nuestro icono en la siguiente ruta: C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14TEMPLATEIMAGESMiPortal

Finalmente debemos cambiar la ruta según en donde este ubicado nuestro nuevo icono.

 

Finalmente guardar todos los cambios de nuestro Master Page y podremos ver los resultados al refrescar nuestro Portal.

 

FAST Search – Creando ámbitos de búsqueda – Parte 1

 En este post les explicaré como crear ámbitos de búsqueda para FAST Search.

Como sabemos al implementar FAST Search e integrarlo a nuestra granja de SharePoint 2010 se deben crear 2 aplicaciones de servicio de búsqueda uno de ellos encargado de atender las consultas de búsquedas (FAST  Query SSA) el cual enviará dicha consulta hacia un segundo servicio encargado de proporcionar el contenido además de realizar el rastreo de este (FAST Content SSA).

FAST Query SSA a su vez esta encargado el rastreo de perfiles de usuario y nos proporciona una interfaz muy similar a la del servicio de búsqueda de la plataforma SharePoint, proporcionando configuración de ámbitos, reglas de rastreo y propiedad administradas entre otros, mientras que FAST Content SSA proporciona opciones limitadas en cuanto a interfaz, esto debido a que las configuraciones adicionales son requeridas realizarlas vía PowerShell.

Como primer ejemplo para poder crear un ámbito para el contenido rastreado con el FAST Content SSA, tendremos que ejecutar el siguiente comando:

New-SPEnterpriseSearchQueryScope –SearchApplication “FAST Query SSA” –Name “MiAmbito” –Description “Ámbito de búsqueda” –DisplayInAdminUI 1

Posteriormente debemos crear las reglas del Scope, en este caso la regla estará basada en uno de mis origenes de contenido.

$scope = Get-SPEnterpriseSearchQueryScope –SearchApplication “FAST Query SSA” –Identity “Mi contenido”

$scope.Filter = “contentsource:MiAmbito”

$scope.Update()

 

 Desde la Administración central deberemos consultar el ámbito pero entrando a la interfaz de administración del FAST Query SSA, nos sorprenderemos al ver que no se muestran reglas creadas ni tampoco resultados del ámbito, esto no nos debe preocupar pues es el comportamiento común.

Probemos nuestro ámbito y tendremos resultados éxitosos!!!