Configuración

Este tutorial recorrerá paso a paso el código necesario para crear una plantilla de proyecto personalizada. Puede descargar e instalar el paquete adjunto en un entorno local para seguirlo junto con el tutorial. También puede acceder al proyecto Maven completo alojado en GitHub.

Este tutorial asume algunos conocimientos básicos de prácticas de desarrollo de AEM y cierta familiaridad con la configuración del proyecto AEM Maven. Todo el código mencionado está diseñado para utilizarse como referencia y solo debe implementarse en una instancia de desarrollo local de AEM.

Estructura de una plantilla de proyecto

Las plantillas de proyecto deben colocarse bajo control de código fuente y deben residir debajo de la carpeta de la aplicación, en /apps. Lo ideal es que se coloquen en una subcarpeta con la convención de nombres de */projects/templates/<my-template>. Al colocar siguiendo esta convención de nombres, las nuevas plantillas personalizadas estarán disponibles automáticamente para los autores al crear un proyecto. La configuración de las plantillas de proyecto disponibles se establece en: /content/projects/jcr:content mediante la propiedad cq:allowedTemplates. De manera predeterminada, se trata de una expresión regular: /(apps|libs)/.*/projects/templates/.*

El nodo raíz de una plantilla de proyecto tendrá un jcr:primaryType de cq:Template. Debajo del nodo raíz de hay tres nodos: gadgets, roles y flujos de trabajo. Todos estos nodos son nt:unstructured. Debajo del nodo raíz también puede haber un archivo thumbnail.png que se muestra al seleccionar la plantilla en el asistente Crear proyecto.

La estructura del nodo completo:

/apps/<my-app>
    + projects (nt:folder)
         + templates (nt:folder)
              + <project-template-root> (cq:Template)
                   + gadgets (nt:unstructured)
                   + roles (nt:unstructured)
                   + workflows (nt:unstructured)

Raíz de plantilla de proyecto

El nodo raíz de la plantilla de proyecto es del tipo cq:Template. En este nodo puede configurar las propiedades jcr:title y jcr:description que se muestran en el Asistente para crear proyectos. También hay una propiedad denominada wizard que señala a un formulario que rellenará las propiedades del proyecto. El valor predeterminado de: /libs/cq/core/content/projects/wizard/steps/defaultproject.html debería funcionar bien en la mayoría de los casos, ya que permite al usuario rellenar las propiedades básicas del proyecto y agregar miembros al grupo.

*Tenga en cuenta que el Asistente para crear proyectos no utiliza el servlet Sling POST. En su lugar, los valores se publican en un servlet personalizado:com.adobe.cq.projects.impl.servlet.ProjectServlet. Esto debe tenerse en cuenta al agregar campos personalizados.

Se puede encontrar un ejemplo de asistente personalizado para la plantilla del proyecto de traducción: /libs/cq/core/content/projects/wizard/translationproject/defaultproject.

Gadgets

No hay propiedades adicionales en este nodo, pero los elementos secundarios del nodo de gadgets controlan qué mosaicos de proyecto rellenan el panel del proyecto cuando se crea un nuevo proyecto. Los mosaicos del proyecto (también conocidos como gadgets o pods) son tarjetas simples que rellenan el área de trabajo de un proyecto. Puede encontrar una lista completa de los mosaicos de ootb en: /libs/cq/gui/components/projects/admin/pod. ​ Los propietarios de proyectos siempre pueden agregar o quitar mosaicos después de crear un proyecto.