GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Asociar una Plantilla de Documento con un Tipo de Contenido (Content Type) en SharePoint 2010 con Visual Studio 2010


El presente artículo detalla cómo asociar una Plantilla de Documento con un Tipo de Contenido (Content Type) en SharePoint 2010 utilizando Visual Studio 2010, tanto en una Solución de tipo Granja (Farm Solution) en la que desplegaremos la Plantilla de Documento en el sistema de ficheros de los Frontales de MOSS (_layouts), como en una Solución Sandboxed en la que desplegaremos la Plantilla de Documento en el interior de la Base de Datos de Contenido del Site Correspondiente (_cts).

Hace poco estuvimos hablando sobre cómo crear Tipos de Contenido (Content Types) con Visual Studio 2010 en SharePoint 2010, dónde básicamente introducíamos la manera de crear Tipos de Contenido en Visual Studio, tanto utilizando código (con la API) como utilizando el correspondiente fichero de descripción XML (elements.xml).

En esta ocasión vamos a dar un pasito más con los Tipos de Contenido (Content Types). En particular, vamos a ver cómo crear un Tipo de Contenido (Content Type) que herede de Document y cómo especificar qué Plantilla de Documento debe utilizar, la cual deberá ser desplegada también como parte de nuestra Solución. Dado que existen diferencias importantes en como acometer esta tarea, en función de si estamos desarrollando una Solución de tipo Granja (Farm Solution) o una Solución Sandboxed, veremos los dos casos en este mismo artículo. Dicho esto, empezamos.

Asociar una Plantilla de Documento con un Tipo de Contenido (Content Type) en una Solución de tipo Granja

Abriremos Visual Studio 2010, crearemos un nuevo proyecto de tipo Empty SharePoint Project que llamaremos ChangeRequest, y seleccionaremos desplegarlo como una solución de Granja (Deploy as a farm solution).

Abriremos Visual Studio 2010, crearemos un nuevo proyecto de tipo Empty SharePoint Project que llamaremos ChangeRequest, y seleccionaremos desplegarlo como una solución de Granja (Deploy as a farm solution).

En el Solution Explorer, seleccionaremos la opción Add SharePoint Layouts Mapped Folder, para de este modo tener mapeado en nuestro proyecto de Visual Studio, una carpeta que podamos utilizar para almacenar los contenidos que deseemos desplegar al directorio virtual /_layouts de SharePoint.

En el Solution Explorer, seleccionaremos la opción Add SharePoint Layouts Mapped Folder, para de este modo tener mapeado en nuestro proyecto de Visual Studio, una carpeta que podamos utilizar para almacenar los contenidos que deseemos desplegar al directorio virtual /_layouts de SharePoint.

Al hacer esto, se creará automáticamente una subcarpeta con el nombre del proyecto de Visual Studio, con el objetivo de que utilicemos esta subcarpeta para el despliegue de los contenidos que deseemos, ya que si todas las soluciones desplegasen sus contenidos en la raíz de /_layouts, sería muy probable que pudiéramos tener conflictos entre los ficheros desplegados por unas y otras soluciones. Siguiendo con nuestro caso de ejemplo, añadiremos un fichero DOTX a nuestra carpeta Layouts con una plantilla de Word que utilizaremos más adelante en un Tipo de Contenido (Content Type), para lo cual, utilizaremos la opción Add Existing Item del menú contextual en el Solution Explorer.

Al hacer esto, se creará automáticamente una subcarpeta con el nombre del proyecto de Visual Studio, con el objetivo de que utilicemos esta subcarpeta para el despliegue de los contenidos que deseemos, ya que si todas las soluciones desplegasen sus contenidos en la raíz de /_layouts, sería muy probable que pudiéramos tener conflictos entre los ficheros desplegados por unas y otras soluciones. Siguiendo con nuestro caso de ejemplo, añadiremos un fichero DOTX a nuestra carpeta Layouts con una plantilla de Word que utilizaremos más adelante en un Tipo de Contenido (Content Type), para lo cual, utilizaremos la opción Add Existing Item del menú contextual en el Solution Explorer.

Muy importante. Realizado esto, ya sería posible desplegar la solución, aún sin tener ninguna Característica (Feature), de tal modo que conseguiríamos el despliegue de ficheros en SharePoint. En particular, conseguiríamos desplegar contenidos por debajo de la ruta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS de cada Frontal Web (es decir, en el sistema de ficheros dónde esté instalado SharePoint, en lugar de almacenarlo en Base de Datos), y a los que posteriormente podríamos acceder por debajo de /_layouts. Del mismo modo, el quitar la solución de la Granja (retract), los ficheros desplegados desaparecerían del sistema de ficheros de los Frontales Web.

Muy importante. Realizado esto, ya sería posible desplegar la solución, aún sin tener ninguna Característica (Feature), de tal modo que conseguiríamos el despliegue de ficheros en SharePoint. En particular, conseguiríamos desplegar contenidos por debajo de la ruta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS de cada Frontal Web (es decir, en el sistema de ficheros en lugar de almacenarlo en Base de Datos), y a los que posteriormente podríamos acceder por debajo de /_layouts. Del mismo modo, el quitar la solución de la Granja (retract), los ficheros desplegados desaparecerían del sistema de ficheros de los Frontales Web.

Continuando con nuestro ejemplo, ahora vamos a crear una nueva Característica (Feature) en nuestro proyecto de Visual Studio, utilizando la opción Add Feature del menú contextual.

Continuando con nuestro ejemplo, ahora vamos a crear una nueva Característica (Feature) en nuestro proyecto de Visual Studio, utilizando la opción Add Feature del menú contextual.

Asignaremos el nombre deseado a nuestra Característica (Feature).

Asignaremos el nombre deseado a nuestra Característica (Feature).

Seguidamente, a través de la opción Add New Item, añadiremos a nuestro proyecto de Visual Studio un nuevo elemento Tipo de Contenido (Content Type), el cual será añadido automáticamente a la Característica (Feature) que acabamos de crear.

Seguidamente, a través de la opción Add New Item, añadiremos a nuestro proyecto de Visual Studio un nuevo elemento Tipo de Contenido (Content Type), el cual será añadido automáticamente a la Característica (Feature) que acabamos de crear.

En el asistente de creación del nuevo Tipo de Contenido (Content Type), seleccionaremos Document como tipo base.

En el asistente de creación del nuevo Tipo de Contenido (Content Type), seleccionaremos Document como tipo base.

Modificaremos el  fichero Elements.xml del nuevo Tipo de Contenido (Content Type) para poner la descripción que deseemos, y muy importante, añadiremos un tag DocumentTemplate para especificarle al Tipo de Contenido la Plantilla de Documento que deseamos utilizar al crear nuevos documentos, para lo cual indicaremos la URL de la plantilla de documento que vamos a desplegar por debajo de /_layouts.

Modificaremos el  fichero Elements.xml del nuevo Tipo de Contenido (Content Type) para poner la descripción que deseemos, y muy importante, añadiremos un tag DocumentTemplate para especificarle al Tipo de Contenido la Plantilla de Documento que deseamos utilizar al crear nuevos documentos, para lo cual indicaremos la URL de la plantilla de documento que vamos a desplegar por debajo de /_layouts.

Realizado esto, ya habremos finalizado, por lo que si lo deseamos, podremos compilar, desplegar y probar nuestra solución de Visual Studio. Como curiosidad, y para comparar con el ejercicio que haremos a continuación (Solución Sandboxed), aprovechamos para mostrar el contenido del directorio _cts desde SharePoint Designer.

Realizado esto, ya habremos finalizado, por lo que si lo deseamos, podremos compilar, desplegar y probar nuestra solución de Visual Studio. Como curiosidad, y para comparar con el ejercicio que haremos a continuación (Solución Sandboxed), aprovechamos para mostrar el contenido del directorio _cts desde SharePoint Designer.

Para probar correctamente nuestra Solución, deberemos crearnos una Biblioteca de Documentos y asociarla el Tipo de Contenido que acabamos de crear. Del mismo modo al caso anterior, para comparar el resultado de este ejercicio (Farm Solution) con el siguiente (Sandboxed Solution), aprovechamos para mostrar desde SharePoint Designer el contenido de la carpeta Folder dentro de la Biblioteca de Documentos a la que hemos asociado nuestro Tipo de Contenido.

Para probar correctamente nuestra Solución, deberemos crearnos una Biblioteca de Documentos y asociarla el Tipo de Contenido que acabamos de crear. Del mismo modo al caso anterior, para comparar el resultado de este ejercicio (Farm Solution) con el siguiente (Sandboxed Solution), aprovechamos para mostrar desde SharePoint Designer el contenido de la carpeta Folder dentro de la Biblioteca de Documentos a la que hemos asociado nuestro Tipo de Contenido.

Ya está todo hecho. Ahora sí, que podemos agregar un nuevo elemento a nuestra Biblioteca de Documentos, de tal modo que si utilizamos el tipo que acabamos de crear, se abrirá Microsoft Word con la Plantilla de Documento que hemos asociado al Tipo de Contenido.

Asociar una Plantilla de Documento con un Tipo de Contenido (Content Type) en una Solución Sandboxed

Abriremos Visual Studio 2010, crearemos un nuevo proyecto de tipo Content Type que llamaremos ChangeRequestSB, y seleccionaremos desplegarlo como una solución Sandboxed (Deploy as a sandboxed solution).

Abriremos Visual Studio 2010, crearemos un nuevo proyecto de tipo Content Type que llamaremos ChangeRequestSB, y seleccionaremos desplegarlo como una solución Sandboxed (Deploy as a sandboxed solution).

En el asistente de creación del nuevo Tipo de Contenido (Content Type), seleccionaremos Document como tipo base.

En el asistente de creación del nuevo Tipo de Contenido (Content Type), seleccionaremos Document como tipo base.

Una vez finalizado el asistente, ya tendremos creado nuestro proyecto en Visual Studio 2010. Para continuar, click con el botón derecho sobre el Tipo de Contenido en el Solution Explorer, y seguidamente, seleccionaremos la opción Add – New Item del menú contextual. Se mostrará el diálogo para añadir un nuevo elemento a nuestro proyecto de Visual Studio, donde seleccionaremos crear un nuevo Módulo (Module) e indicaremos el nombre deseado (ej: DocTemplate).

Una vez finalizado el asistente, ya tendremos creado nuestro proyecto en Visual Studio 2010. Para continuar, click con el botón derecho sobre el Tipo de Contenido en el Solution Explorer, y seguidamente, seleccionaremos la opción Add – New Item del menú contextual. Se mostrará el diálogo para añadir un nuevo elemento a nuestro proyecto de Visual Studio, donde seleccionaremos crear un nuevo Módulo (Module) e indicaremos el nombre deseado (ej: DocTemplate).

Al crear el nuevo Módulo, se incluirán dos ficheros por debajo de él en el Solution Explorer (Elements.xml y Sample.txt). Eliminaremos ambos ficheros. También podemos aprovechar para renombrar el Tipo de Contenido (Content Type). En nuestro caso de ejemplo, lo hemos renombrado como Change Request Sandboxed Deployed Content Type.

Al crear el nuevo Módulo, se incluirán dos ficheros por debajo de él en el Solution Explorer (Elements.xml y Sample.txt). Eliminaremos ambos ficheros. También podemos aprovechar para renombrar el Tipo de Contenido (Content Type). En nuestro caso de ejemplo, lo hemos renombrado como Change Request Sandboxed Deployed Content Type.

A continuación, deberemos añadir al proyecto de Visual Studio el fichero que deseamos utilizar como Plantilla de Documento. Para ello, en el Solution Explorer, click con el botón derecho sobre el Módulo recién creado (DocTemplate), y seguidamente click en la opción Add – Existing Item.

A continuación, deberemos añadir al proyecto de Visual Studio el fichero que deseamos utilizar como Plantilla de Documento. Para ello, en el Solution Explorer, click con el botón derecho sobre el Módulo recién creado (DocTemplate), y seguidamente click en la opción Add – Existing Item.

Hasta aquí, todo ha sido bastante fácil. Ahora llega la parte más delicada, modificar el fichero Elements.xml del Tipo de Contenido de manera correcta. Realmente, no es que sea muy complicado, pero hay que tener cuidado, ya que cualquier error tipográfico nos puede ocasionar muchos problemas e incluso requerir mucho tiempo para su depuración. En nuestro caso de ejemplo, hemos realizado las siguientes modificaciones sobre el fichero Elements.xml:

  • Hemos especificado el Nombre (Name) y Descripción (Description) que deseamos asignar a nuestro Tipo de Contenido (Content Type).
  • Hemos añadido un Tag de tipo Module, que hemos llamado ChangeRequestModule. En su interior, hemos añadido un Tag de tipo file, dónde hemos definido cómo deseamos publicar en SharePoint el fichero que utilizaremos como Plantilla de Documento. El atributo Path indica la ubicación del fichero dentro del proyecto de Visual Studio, mientras que el atributo Url indica dónde lo deseamos publicar dentro de SharePoint.
  • Hemos añadido un Tag de tipo Document Template, en el que especificamos cuál es el fichero de Plantilla de Documento que deseamos utilizar en este Tipo de Contenido (Content Type), en nuestro caso el fichero Change Request.dotx.

Téngase en cuenta, que la carpeta o directorio virtual _cts es una carpeta del sistema utilizada para almacenar recursos de los Tipos de Contenido (Content Types), existiendo una subcarpeta para cada Tipo de Contenido, por debajo de la cual deberemos almacenar sus recursos. 

Ahora llega la parte más delicada, modificar el fichero Elements.xml del Tipo de Contenido de manera correcta

Realizado esto, habremos acabado nuestro trabajo. Ahora ya sólo nos queda compilar y desplegar nuestro proyecto de Visual Studio, tras lo cual, si nos conectamos con SharePoint Designer 2010, podremos ver que efectivamente existe una subcarpeta para nuestro Tipo de Contenido por debajo de _cts, la cual contiene el fichero de Plantilla de Documento que hemos desplegado a través de nuestra Solución Sandboxed.

Realizado esto, habremos acabado nuestro trabajo. Ahora ya sólo nos queda compilar y desplegar nuestro proyecto de Visual Studio, tras lo cual, si nos conectamos con SharePoint Designer 2010, podremos ver que efectivamente existe una subcarpeta para nuestro Tipo de Contenido por debajo de _cts, la cual contiene el fichero de Plantilla de Documento que hemos desplegado a través de nuestra Solución Sandboxed.

Sin embargo, para probar bien nuestra Solución Sandboxed, deberemos crearnos una Librería de Documentos, y asociarla el Tipo de Contenido (Content Type) que acabamos de crear y desplegar. Así que, crearemos una Librería que llamaremos Test, y la asociaremos nuestro nuevo Tipo de Contenido (Content Type) tal y como se muestra en la siguiente pantalla capturada. Nótese, que en la carpeta Forms por debajo de nuestra Librería, existe una subcarpeta para nuestro Tipo de Contenido que contiene una copia de la Plantilla de Documento.

Sin embargo, para probar bien nuestra Solución Sandboxed, deberemos crearnos una Librería de Documentos, y asociarla el Tipo de Contenido (Content Type) que acabamos de crear y desplegar. Así que, crearemos una Librería que llamaremos Test, y la asociaremos nuestro nuevo Tipo de Contenido (Content Type) tal y como se muestra en la siguiente pantalla capturada. Nótese, que en la carpeta Forms por debajo de nuestra Librería, existe una subcarpeta para nuestro Tipo de Contenido que contiene una copia de la Plantilla de Documento.

Y ahora llega la prueba del algodón. En SharePoint, crearemos un nuevo elemento del tipo ChangeRequestSBCT, y… tata-chán ! funcioná! Se abre el Word e inmediatamente se descarga nuestra Plantilla de Documento.

Y ahora llega la prueba del algodón. En SharePoint, crearemos un nuevo elemento del tipo ChangeRequestSBCT, y… tata-chán ! funcioná! Se abre el Word e inmediatamente se descarga nuestra Plantilla de Documento.

Despedida y Cierre

En el presente artículo, hemos visto cómo crear Tipos de Contenido (Content Types) asociados a Plantillas de Documento con Visual Studio 2010, incluyendo el despliegue de dichas Plantillas de Documento en la misma Solución de SharePoint, tanto para el caso de Soluciones de Granja (Farm Solutions) cómo para el caso de Soluciones Sandboxed.

Es muy importante conocer el concepto de las Carpetas Mapeadas (Mapped Folders), introducido en Visual Studio 2010, ya que nos provee un mecanismo para desplegar ficheros a SharePoint en Soluciones de Granja, independientemente de qué tipo de fichero sea (páginas web, imágenes, documentos de office, etc.). El principal inconveniente, es que no funciona en Soluciones Sandboxed, ya que desplegará los ficheros en el sistema de ficheros de los frontales de SharePoint.

En el caso de las Soluciones Sandboxed, tenemos la posibilidad de desplegar la Plantilla de Documento por debajo de la carpeta _cts, de tal modo que se almacenará en la Base de Datos de Contenido (en lugar de en el sistema de ficheros). Sin embargo, esta técnica sólo debe utilizarse para los Tipos de Contenido.

Llegados a este punto, ya sólo queda incluir los enlaces de descarga correspondientes a los proyectos de Visual Studio realizados durante la creación del presente artículo.

Descargar ZIP con Proyecto Visual Studio para crear Tipos de Contenido con Plantillas de Documento en modo Farm Solution (ContentTypeDocumentTemplateFarmSolution.zip)

Descargar ZIP con Proyecto Visual Studio para crear Tipos de Contenido con Plantillas de Documento en modo Sandboxed Solution (ContentTypeDocumentTemplateSandboxedSolution.zip)

Poco más por hoy. Como siempre, confío que la lectura resulte de interés.

 


Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.