Creación de contenidos personalizados en Alfresco Share

Alfresco Share presenta en sus ultimas versiones (Community y Enterprise 3.4) importantes mejoras en la definición de formularios de tipos de contenidos, permitiendo definir plantillas personalizadas para los diferentes componentes o definir estilos css. La configuración básica se realiza por un lado en el archivo del esquema del modelo, donde definimos los tipos, aspectos, propiedades, asociaciones y constrains, y por otro, en el archivo de configuración de Alfresco Share, donde se configuran las visualizaciones de los formularios de creación, edición y búsqueda asociadas a los tipos de contenido.


El proceso básico de creación de un tipo de contenido especializado en Alfresco Share, es añadir un documento o carpeta base, y especializar el tipo a uno definido por el usuario. Posteriormente, en un segundo paso, es necesario rellenar sus metadatos. Este proceso en general es más bien poco usable, y se recurre en ocasiones a reglas de contenido que automaticen la especialización del tipo (al menos), en el proceso de creación. En este sentido, sorprende un poco, que en el proceso de subida de documentos o en el de creación de carpetas no se contemplen tipos especializados como se hacia en los wizards de contenido de Alfresco Explorer. Existen un par de workarounds para aliviar estas situaciones.

El primero es definir en un fichero de js las opciones (los diferentes tipos) de un combo con los tipos en el componente de upload de Alfresco Share. Esto se hace en:

$ALF_HOME/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/upload/flash-upload.get.js
 

var contentTypes = [
   {
      id: "cm:content",
      value: "cm_content"
   },
    {
      id: "ac:acta",
      value: "ac_acta"
   },
   {
      id: "fac:facturae",
      value: "fac_facturae"
   }
   {
      id: "bug:incidencia",
      value: "bug_incidencia"
   }
    ];


El resultado es el siguiente:

 


Con esta ligera modificación podemos subir un conjunto de documentos y asignar a cada uno los diferentes tipos documentales, como los definidos en el ejemplo, Acta, Factura o Incidencia. Eso sí, en un paso posterior tendremos que editar los metadatos. El componente de Records Management también modifica un poco el uploader de flash, y añade la posibilidad de definir un tipo seleccionable de un combo desplegable, que se aplica a todos los documentos que se suben a un espacio, y no individualmente como en este caso.

El segundo es a través de tipos de contenido con mimetype editable digamos, como documentos de texto, html o xml. Estos se pueden definir en un archivo de configuracion xml (repo-toolbar.get.config.xml). Para tipos de contenido tipo folder la cosa esta aún peor, ya que tenemos que servirnos en principio de las reglas de contenido. Sin embargo, podemos llegar a utilizar este componente create-content, ignorar el mimetype y asignarle un itemId relativo a nuestro tipo de contenido tipo carpeta. Con la configuración de formularios correcta en share-config-custom.xml el proceso de creación de una carpeta dará paso a un formulario de inserción de metadatos.

De este modo en:

$ALF_HOME/tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/documentlibrary/repo-toolbar.get.config.xml
<toolbar>
   <createContent>
      <content mimetype="text/plain" icon="plain-text" label="menu.create-content.text" />
      <content mimetype="text/html" icon="html" label="menu.create-content.html" />
      <content mimetype="text/xml" icon="xml" label="menu.create-content.xml" />
      <content icon="plain-text" label="Registro E/S" itemid="ud:registro"/>
   </createContent>
   <actionSets>
      <actionSet id="default">
         <action type="action-link" id="onActionCopyTo" label="menu.selected-items.copy" />
         <action type="action-link" id="onActionMoveTo" permission="delete" label="menu.selected-items.move" />
         <action type="action-link" id="onActionDelete" permission="delete" label="menu.selected-items.delete" />
         <action type="action-link" id="onActionAssignWorkflow" asset="document" label="menu.selected-items.assign-workflow" />
      </actionSet>
   </actionSets>
</toolbar>

donde Registro E/S es un tipo de contenido basado en cm:folder

 



La unica pega es que no esta del todo pensado para eso y una vez creado el formulario, el js de create-content-mgr lo redirige a las propiedades del documento (document-details). Podemos modificar un poco el js para que en cualquiera de los casos se redirija a la pantalla anterior, en vez de a las propiedades y listo. Esto se hace en los archivos:

$ALF_HOME/tomcat/webapps/share/components/create-content$ vim create-content-mgr.js
$ALF_HOME/tomcat/webapps/share/components/create-content$ vim create-content-mgr-min.js

//window.location.href = $siteURL("document-details?nodeRef=" + nodeRef.toString());
history.go(-1);

Enlaces:

 

00

More Blog Entries

0 Comments