Componentes

Modificar el formato de los formularios de SharePoint

En varias ocasiones, diferentes usuarios me han comentado que no entienden porque los formularios que genera SharePoint muestran la descripción de los campos bajo el área de edición de los mismos. Resulta poco “usable” y no es lógico tener que ir al final de campo para leer una explicación sobre el mismo.

En realidad, si miramos los formularios de administración de SharePoint (al modificar el título o la descripción de un sitio, al añadir una columna o al configurar los parámetros se seguridad) los textos con la explicación de los campos a introducir, aparecen bajo el título del mismo, en el área situada a la izquierda del formulario.

Formulario de sistema

He estado analizando la forma en que ShrarePoint renderiza los formularios y he creado una sencilla utilidad que nos permite aplicar la misma configuración estética sobre nuestras listas y bibliotecas de documentos.

Básicamente, esta utilidad permite pasar de esta situación:

Antes de la modificación

 A esta:

Después de la modificación

SharePoint utiliza un conjunto de plantillas (RenderingTemplate’s) para crear los formularios (edit/display/new) de las listas y bibliotecas de documentos. Estas plantillas están situadas en los ficheros ASCX situados en el directorio de SharePoint: 12\Templates\ControlTemplates.

Si creamos nuestros própios controles y los depositamos en este directorio podremos redefinir algunos de los comportamientos estándar. En nuestro caso, redefiniremos uno de los templates existentes llamado “CompositeField”. Este template se encarga de generar cada una de las filas de la tabla del formulario. Para cada campo se crea una fila (tr) en base a esta definición. Si miramos el template original, situado en el fichero DefaultTemplates.ascx, podremos ver que crea dos columnas (TD), una para el título (<SharePoint:FieldLabel …) y otra para el campo y la descripción (<SharePoint:FormField … y <SharePoint:FieldDescription …).

<SharePoint:RenderingTemplate ID="CompositeField" runat="server">
 <Template>
  <TD nowrap="true" valign="top" width="190px"><H3><SharePoint:FieldLabel runat="server"/></H3></TD>
  <TD valign="top" width="400px">
  <!-- FieldName="<SharePoint:FieldProperty PropertyName="Title" runat="server"/>"
    FieldInternalName="<SharePoint:FieldProperty PropertyName="InternalName" runat="server"/>"
    FieldType="SPField<SharePoint:FieldProperty PropertyName="Type" runat="server"/>"
    -->
   <SharePoint:FormField runat="server"/>
   <SharePoint:FieldDescription runat="server"/>
   <SharePoint:AppendOnlyHistory runat="server"/>
  </TD>
 </Template>
</SharePoint:RenderingTemplate>

Lo que tenemos que hacer es crear un nuevo fichero ASCX con el RenderingTemplate y depositarlo en el directorio. Para este nuevo template trasladamos el FieldDescription a la primera TD bajo el título.

<SharePoint:RenderingTemplate ID="CompositeField" runat="server">
 <Template>
  <TD nowrap="true" valign="top" width="190px">
   <H3><SharePoint:FieldLabel runat="server"/></h3>
   <table><tr><td class="ms-descriptiontext"><SharePoint:FieldDescription runat="server"/></td></tr></table>
  </TD>
  <TD valign="top" width="400px">
  <!-- FieldName="<SharePoint:FieldProperty PropertyName="Title" runat="server"/>"
    FieldInternalName="<SharePoint:FieldProperty PropertyName="InternalName" runat="server"/>"
    FieldType="SPField<SharePoint:FieldProperty PropertyName="Type" runat="server"/>"
    -->
   <SharePoint:FormField runat="server"/>
   <SharePoint:AppendOnlyHistory runat="server"/>
  </TD>
 </Template>
</SharePoint:RenderingTemplate>

Para que SharePoint lo tenga en cuenta y lo aplique, es necesario realizar un IISReset en el servidor.

Pudes descargarte tanto el código fuente como una solución que podrás desplegar directamente en tu servidor desde el área CodePlex de Kaldeera.

Kalddera ScanIN

Logo Kaldeera ScanIN

Desde Kaldeera tenemos el placer de presentar nuestro nuevo producto Kaldeera ScanIN. Una herramienta que permite escanear y publicar documentos directamente sobre las bibliotecas de documentos de SharePoint de forma totalmente integrada. ScanIN también ofrece la posibilidad de escanear documentos para ser adjuntados a cualquier elemento de las listas de nuestro sistema.

En definitiva, una herramienta de gran utilidad para aquellos usuarios que realizan la entrada y registro de documentos sobre sistemas de gestión documental y un complemente ideal a los flujos de trabajo desarrollados con Kaldeera Workflow Designer.