Más sobre las plantillas de nodos y espacios en Alfresco Share

En más de una ocasión hemos hablado de las plantillas de nodos y espacios en Alfresco. Hoy vamos a comentar como potenciar esta característica Alfresco Share. En ciertas ocasiones es necesario, que diferentes usuarios en Alfresco vean plantillas diferentes y que además puedan editarlas convenientemente según sus necesidades. Por ejemplo, considerad dos sitios de Alfresco, en donde se agrupan dos conjuntos de usuarios de dos departamentos de una organización completamente diferentes. Digamos por un lado, un departamento de administración y otro dedicado al desarrollo de software, por ejemplo. Los usuarios del departamento de administración utilizan un sitio para las tareas administrativas, donde requieren de plantillas de dietas, contratos u ofertas, mientras que los usuarios de desarrollo utilizan plantillas de documentación de sus proyectos de sofware o actas de las reuniones de equipo. La solución de fábrica por parte de Alfresco para los documentos es ubicarlos en el espacio Plantillas de nodos del Diccionario de datos y dar los permisos adecuados en cada documento, uno a uno, a los grupos correspondientes. Esto puede ser farragoso cuando el número de plantillas es grande. Una solución es cambiar ligeramente la query para que ésta no sólo lea a primer nivel y de esta manera poder crear una estructura de carpetas por debajo del espacio Plantillas de nodo. Y de esta manera aplicaremos los permisos por grupos a nivel de los espacios correspondientes. Además de esta manera es posible dar permisos a ciertos resposables de cada grupo para agregar y borrar sus plantillas de manera conveniente, delegando el plantillado en cada grupo de trabajo.

Para ello se extendiende:

$TOMCAT_HOME/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/documentlibrary/node-templates.get.js

de manera que:

function main()
{
  var nodes  = search.luceneSearch("+TYPE:\"cm:content\" +PATH:\"/app:company_home/app:dictionary/app:node_templates//*\"");
  return nodes;
}

Por otro lado, en las versiones recientes de Alfresco (4.2.0 EE y 4.2.c) se ha añadido la funcionalidad de plantillas de espacio en Alfresco Share. Esto no funciona sin embargo con las implantaciones de Alfresco 4.1.x EE y 4.2.c CE por ejemplo. Sin embargo, con unas pequeñas modificaciones podemos tener una funcionalidad similar de plantillas de espacio, gestionandolos en su ubicación original en Diccionario de datos > Plantillas de espacio. Para ello modificamos dos ficheros esta vez. Por un lado (de nuevo):

$TOMCAT_HOME/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/documentlibrary/node-templates.get.js
 

function main()
{
    var nodes  = search.luceneSearch("+TYPE:\"cm:content\" +PATH:\"/app:company_home/app:dictionary/app:node_templates//*\"");
   var nodes2 = search.luceneSearch("+TYPE:\"cm:folder\" +PATH:\"/app:company_home/app:dictionary/app:space_templates/*\"");

   for each(var n in nodes2) {
     nodes.push(n);
   }
  return nodes;
}


Y por otro:

$TOMCAT_HOME/shared/classes/alfresco/extension/templates/webscripts/org/alfresco/slingshot/documentlibrary/node-templates.get.js

cambiando la línea:

model.result = sourceNode.copy(parentNode);

por:

model.result = sourceNode.copy(parentNode, true);

para que haga deep copy. Por supuesto, veremos los espacios en el mismo componente de las plantillas de nodo. Además en el caso de las plantillas de espacio, de manera natural les podemos aplicar los permisos adecuados para cada grupo. El resultado sería algo como esto, donde en primer lugar vemos las plantillas de documento (las que tienen extension) y después las plantillas de nodo (las que no tienen extensión).

00

More Blog Entries

0 Comments