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!!!

Personalizando el Search Center en SharePoint 2010 – Parte 4 (Iconos según Content Type de resultados)

Dentro de los requerimientos de personalización de los resultados de búsqueda, se me presentó un escenario bastante interesante en el cual se requería mostrar un icono distinto según el content type del resultado de búsqueda. Para complicar más el escenario esta funcionalidad se debía lograr mediante FAST Search Server.

Para lograr esto se necesitan realizar los siguiente pasos:

1. Crear una nueva propiedad administrada en FAST que tenga asociada el tipo de contenido (ows_ContentType).

2. Ejecutar un Full Crawl.

3. Agregar la nueva columna en el webpart de resultados de búsqueda.

4. Modificar el XSLT de los resultados de búsqueda para modificar la sección Srch-Icon y especificar el icono correspondiente de acuerdo al Content Type del elemento.

 El primer paso consiste en la configuración de la propiedad administrada desde FAST, esto únicamente se puede lograr mediante la consola de PowerShell de FAST.

Ejecutar el siguiente comando para crearlo:

$mp = New-FASTSearchMetadataManagedProperty -Name MyContentType -Type 1

Verificar que se creo correctamente:

Get-FASTSearchMetadataManagedProperty -Name MyContentType

Obtener el atributo del content type:

$cp = Get-FASTSearchMetadataCrawledProperty -Name ows_ContentType

 Asociar al propiedad administrada con el atributo de content type:

$pm = New-FASTSearchMetadataCrawledPropertyMapping -CrawledProperty $cp -ManagedProperty $mp

 El siguiente paso es agregar nuestra nueva columna en el webpart de resultados de búsqueda. Para esto en la sección de Propiedad recuperadas copiar todo el contenido y llevarlo a un notepad u otro editor para modificarlo.

Agregar a estas columnas la siguiente columna: <Column Name=»MyContentType»/>

Finalmente en el XSLT del webpart de resultados de búsqueda identificar el DIV con clase: srch-Icon y agregar el siguiente XSLT:

 <div class=»srch-Icon» id=»{concat($currentId,’_Icon’)}»>
<xsl:choose>
      <xsl:when test=’mycontenttype=»Cartelera»‘>
           <img src=»
http://miportal/_layouts/images/SocialTagsAndNotes_24.png»  border=»0″/>
      </xsl:when>
      <xsl:otherwise>
           <img align=»absmiddle» src=»{imageurl}» border=»0″ alt=»
{imageurl/@imageurldescription}» />       
      </xsl:otherwise>
</xsl:choose>
</div>

 Guardar los cambios y hacer las pruebas.

Como se puede ver en la imagen se ha cambiado el Icono del contenido «RESTORE PROCESS» que tiene un tipo de contenido especifico.

Enviando parámetros de búsqueda de manera dinámica

Una necesidad reciente de un cliente me llevó a analizar la forma de obtener resultados de búsqueda en base a una página de SharePoint filtrada por parámetros.

El cliente disponía de un conjunto de páginas que utilizaban parámetros para filtrar el contenido de mostrado y personalizado, el inconveniente surgía cuando se deseaba buscar contenido solo en los datos de esa página filtrada.

Para lograr esto primero era necesario disponer de los ámbitos de búsqueda, esto se tenía que lograr utilizando los valores de los parámetros como atributos del contenido. Una vez creados los ámbitos el siguiente reto era ver la manera de asignar dinámicamente el ámbito al resultado de búsqueda según los parámetros de la página actual. La primera alternativa que se me ocurrió fue usar Javascript para lograr este resultado.

Mediante Javascript realizaría los siguientes pasos:

1. Capturar la página actual.

2. Verificar que valores se encuentran asignados a los parámetros.

3. De acuerdo a los valores identificados definir cual es el ámbito correspondiente.

4. Construir una cadena de resultados de búsqueda en base a la página de resultados, el ámbito (definido por s= ) y el término ingresado en una caja de texto (definido por k= ).

5. Redireccionar la URL hacia la página de resultados de búsqueda.

El diseño del buscador debería ser como la imágen, tan solo una caja de texto y un botón para buscar.

 Después de ingresar la palabra clave y presionar el botón somos redirigido a la página de resultados.

Desde SharePoint Designer debemos agregar nuestro HTML tal como se muestra en la imagen.

El HTML de ejemplo es el siguiente:

<div>
 <input name=»btnKeyTerm» id=»myKeyTerm» value=»» style=»height:15px» />
 <input type=»button» name=»btnSearch» onclick=»EnviaURL();» style=»width:20px;height:20px;background-image:url(http://intranet/_layouts/images/gosearchhover15.png);border-style:none»/>
</div>

Posteriormente deberemos agregar el código Javascript.

El código Javascript debe ser agregado entre las etiquetas: <asp:Content ContentPlaceHolderId=»PlaceHolderAdditionalPageHead» runat=»server»> y </asp:Content> después del HTML.

El Javascript de ejemplo es el siguiente:

<script type=»text/javascript»>

function EnviaURL(){

var miURL;

miURL = document.URL;

var keyTerm;

//keyTerm = document.MiForm.btnKeyTerm.value;

keyTerm = document.getElementById(‘myKeyTerm’).value;

//keyTerm = «pruebas»;

var verifyURL;
verifyURL = miURL.indexOf(‘Search’);

if(verifyURL != -1){

Scope= «intranet»;

searchResult = «http://intranet/ESCenter/Paginas/results.aspx«;

urlResult = searchResult + «?k=» + keyTerm + «&s=» + Scope;

window.location.href = urlResult;
}

}

</script>