jueves, 17 de octubre de 2013

Personalización de Alfresco Share II - cómo deshabilitar custom actions

En nuestro último webinar mostramos cómo personalizar Alfresco Share mediante el uso de custom actions, templates y componentes. A lo largo de las próximas semanas explicaremos paso a paso los detalles que se mostraron en el webinar y llegaremos a comprender los conceptos claves para llevar a cabo la personalización que exponemos en nuestro ejemplo y cualquier otra de este tipo.

En esta entrada explicaremos de forma sencilla cómo eliminar custom actions, de la lista de opciones que los usuarios tienen disponible a través de Alfresco Share.

Objetivo: deshabilitar custom actions
Eliminar las opciones (custom actions) "Subir nueva versión" y  "Editar fuera de línea"


¿Qué es un custom action?
Una acción, ya sea en Share o en el propio repositorio de Alfresco, hace referencia a una función que puede ser ejecutada sobre un elemento del repositorio de forma unitaria, es decir, aquellas funciones que se llevan a cabo sobre un nodo dentro del repositorio, por ejemplo: copiar, mover, eliminar, editar, descargar, publicar, etc.

Las acciones que Alfresco Share trae de fábrica las podemos encontrar en el archivo share-documentlibrary-config.xml situado en <tomcat>/webapps/share/WEB-INF/classes/alfresco. Revisando este archivo localizamos los identificadores de las acciones que queremos eliminar:
  • document-upload-new-version
  • document-edit-offline
Deshabilitar custom actions
Crearemos nuestro propio archivo de configuración de Share (share-config-custom.xml) para incluir nuestros cambios. Utilizaremos el id de estas acciones e indicaremos su deshabilitación mediante un evaluador (evaluator) para que no se muestren:

<config evaluator="string-compare" condition="DocLibActions">
  <actions>
    <!--Disable Upload New Version Action-->
    <action id="document-upload-new-version">
      <evaluator>evaluator.doclib.action.disableAction</evaluator></action>
    <!--Disable Edit Offline Action-->
    <action id="document-edit-offline">
      <evaluator>evaluator.doclib.action.disableAction</evaluator>
    </action>
  </actions>
</config> 

El evaluador que estamos utilizando es uno de los que Alfresco trae por defecto y sirve exclusivamente para deshabilitar acciones (Referencia: https://wiki.alfresco.com/wiki/Document_Library_Predefined_Evaluators#Evaluators)

Evaluador personalizado Debemos tener en cuenta que el evaluador "disableAction" oculta el custom action para cualquier tipo de contenido, en nuestro ejemplo vamos a ocultar las acciones sólo cuando el contenido sea una imagen. Para ello tendremos que crear un evaluador a medida que verifique el mime type de un archivo. Crearemos un archivo de contexto de Spring (evaluator-context.xml) donde definiremos nuestro evaluador personalizado para imágenes:

<bean id="imageTool.evaluator.mimeType" parent="evaluator.doclib.action.isMimetype">
  <property name="mimetypes">
    <list>
      <value>image/jpeg</value>
      <value>image/png</value>
      <value>image/bmp</value>
      <value>image/gif</value>
    </list>
  </property>
</bean>

En share-config-custom.xml haremos referencia al nuevo evaluador mediante su identificador e incluiremos el parámetro "negate" con valor "true" para deshabilitar las acciones cuando se cumpla el nuevo evaluador:

<config evaluator="string-compare" condition="DocLibActions">
  <actions>
    <!--Disable Upload New Version Action-->
    <action id="document-upload-new-version">
      <evaluator negate="true">imageTool.evaluator.mimeType</evaluator>
    <!--Disable Edit Offline Action-->
    <action id="document-edit-offline">
      <evaluator negate="true">imageTool.evaluator.mimeType</evaluator>
    </action>
  </actions>
</config> 

Cómo integrar nuestra personalización en Alfresco Share
Para incluir nuestros cambios en Alfresco Share debemos colocar los nuevos archivos, share-config-custom.xml y evaluator-context.xml, en el directorio de extensión de Alfresco, <tomcat>/shared/classes/alfresco/web-extension

Próximo paso
En nuestra próxima entrada explicaremos cómo añadir nuevos custom actions a la lista de opciones en Alfresco Share.

Código de ejemplo
Pueden bajar el código relacionado con este ejemplo de nuestro repositorio en LINE-OF-SIGHT

1 comentario:

  1. Hola:
    Necesito deshabilitar custom actions para todos los usuarios excepto el "admin".
    ¿Cómo sería el evaluador personalizado en este caso?
    Desde ya muchas gracias.
    Saludos

    ResponderEliminar