Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

Creación de contenidos personalizados en Alfresco Share

Cesar Capillas
Cesar Capillas

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:

 

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *