Social Icons

jueves, 30 de abril de 2009

Agregar Tipo de resultado y/o Restricciones de propiedades

Uf ya se me había olvidado cómo se llamaba el blog :)

No, en realidad es que he estado liado y un poco falto de inspiración ¿Cuándo he andado yo sobrao de eso? estos últimos dos meses. ¡¡DOS MESES!!

Bueno, a lo que voy.

Modificar el webpart Cuadro de búsqueda avanzado da un poco de miedo, pero la verdad es que si nos acostumbramos a su interfaz podemos lograr cositas muy interesantes con muy poco esfuerzo.

Por ejemplo:

Tengo un ámbito creado (MiAmbito) que contiene solo los elementos de una lista y dentro de esa lista tengo un metadato que se llama TextoLista que está dado de alta en las Asignaciones de propiedades de metadatos. ¿Podría añadir yo a mi sitio de Buscador avanzado un Tipo de resultado llamado “Mi lista” y una Restricción de propiedad específica para mi metadato “TextoLista”?

Pues nada más fácil.

Primero editamos el webpart Cuadro de búsqueda avanzado y abrimos el texto que se esconde en Propiedades—> Propiedades:

image

En la ventana que se nos abre podremos ver muy mal por cierto, mejor que trabajar ahí es hacer un c&p al visual studio un xml que (entre otras cosas) define las propiedades que estarán disponibles para los tipos de resultado <PropertyDefs> y los diferentes tipos de resultado que se mostrarán en el webpart de búsqueda <ResultTypes>

Bien pues a trabajar. Añadiremos nuestra propiedad “TextoLista” dentro de PropertyDefs para poderla usar luego.

<PropertyDefs>
<PropertyDef Name="Path" DataType="text" DisplayName="dirección URL"/>
<PropertyDef Name="Size" DataType="integer" DisplayName="Tamaño"/>
<PropertyDef Name="Write" DataType="datetime" DisplayName="Fecha de la última modificación"/>
<PropertyDef Name="FileName" DataType="text" DisplayName="nombre"/>
<PropertyDef Name="Description" DataType="text" DisplayName="descripción"/>
<PropertyDef Name="Title" DataType="text" DisplayName="Título"/>
<PropertyDef Name="Author" DataType="text" DisplayName="autor"/>
<PropertyDef Name="DocSubject" DataType="text" DisplayName="tema"/>
<PropertyDef Name="DocKeywords" DataType="text" DisplayName="palabras clave"/>
<PropertyDef Name="DocComments" DataType="text" DisplayName="comentarios"/>
<PropertyDef Name="Manager" DataType="text" DisplayName="jefe"/>
<PropertyDef Name="Company" DataType="text" DisplayName="compañía"/>
<PropertyDef Name="Created" DataType="datetime" DisplayName="fecha de creación"/>
<PropertyDef Name="CreatedBy" DataType="text" DisplayName="creado por"/>
<PropertyDef Name="ModifiedBy" DataType="text" DisplayName="modificado por última vez por"/>
<PropertyDef Name="TipoResolucion" DataType="text" DisplayName="Tipo de resolución"/>
</PropertyDefs>

Y por último añadiremos un nuevo ResultType dentro de ResultTypes, así:

<ResultTypes>
<ResultType DisplayName="Todos los resultados" Name="default">
<Query/>
<PropertyRef Name="Author" />
<PropertyRef Name="Description" />
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
</ResultType>
<ResultType DisplayName="Documentos" Name="documents">
<Query>IsDocument=1</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
<ResultType DisplayName="Documentos de Word" Name="worddocuments">
<Query>FileExtension='doc' Or FileExtension='docx' Or FileExtension='dot'</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
<ResultType DisplayName="Documentos de Excel" Name="exceldocuments">
<Query>FileExtension='xls' Or FileExtension='xlsx' Or FileExtension='xlt'</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
<ResultType DisplayName="Presentaciones" Name="presentations">
<Query>FileExtension='ppt'</Query>
<PropertyRef Name="Author" />
<PropertyRef Name="DocComments"/>
<PropertyRef Name="Description" />
<PropertyRef Name="DocKeywords"/>
<PropertyRef Name="FileName" />
<PropertyRef Name="Size" />
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="Write" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="Manager" />
<PropertyRef Name="Company"/>
</ResultType>
<ResultType DisplayName="Mi lista" Name="MiLista">
<Query>"scope"='MiAmbito'</Query>
<PropertyRef Name="DocSubject"/>
<PropertyRef Name="Path" />
<PropertyRef Name="Created" />
<PropertyRef Name="CreatedBy" />
<PropertyRef Name="ModifiedBy" />
<PropertyRef Name="Title"/>
<PropertyRef Name="TextoLista"/>
</ResultType>
</ResultTypes>

Aceptamos, aceptamos publicamos y probamos.

A mi me ha funcionado ¿y a ti?

2 comentarios:

Unknown dijo...

Buenas tardes,

Tengo un problema para adaptar las búsquedas a mi cliente y me gustaría saber si es posible que el campo en el que se introduce el valor de la propiedad que se está buscando puede convertirse en un desplegable.
Es decir, ¿Se puede hacer un desplegable con los distintos valores de una variable si esta es de tipo ratio?

Muchas gracias

Er Chan dijo...

Vaya, me has pillado en un momento en el que no tengo ni un minuto para investigar :( además no parece tan trivial, no he visto que lo hayan hecho en ninguna parte... A mi me huele a que no se va a poder hacer y que si se pudiese sería creando los propertydefs con choices o algo asi.
Por otro lado mi consejo cuando se necesitan formularios de búsqueda muy específicos es crearlos desde cero SharePoint los admite bien y se gana mucha potencia. Además se pierde menos tiempo que modificado el webpart por defecto :)

Saludos,