Archivo de la categoría: customizar

Ocultando Iconos en Share (3.4)

Muy buenas.

Hace poco un cliente me pidió customizar y ocultar algunos componentes para que los usuarios que no tuvieran permisos de administrador no los vieran. En concreto me refiero a los de la cabecera:

icons_share

Pues bien, os quiero enseñar cómo hacerlo siguiendo las buenas prácticas en Alfresco.

Para filtrar los iconos, puedes configurarlo en el share-config-custom.xml (que debes tener ubicado en /shared/clases/alfresco/web-extension/), entre los tags de <header> y </header> tal y como muestro en la siguiente captura:

share_header

Este fragmento, podéis copiarlo desde share-config.xml que tenéis ubicado en /webapps/share/WEB-INF/classes/alfresco/ y podeis pegarlo en vuestro share-config personalizado dentro de web-extension como os comenté más arriba.

Si observáis, lo único que debéis es añadir en el apartado que queráis ocultar permission="admin" y de esta forma solo será visible para éste.

Por ejemplo:

<item type="link" id="repository" permission="admin">/repository</item>

Con esa línea le decimos a Share que nos oculte el icono del repositorio para todos aquellos usuarios que no sean administradores.

El cliente necesitaba ocultar, además de estos iconos, la búsqueda del share que encontramos arriba a la derecha en el dashboard del usuario:

search_sharePero desafortunadamente, para Alfresco 3.4 no es posible controlarlo en el header como los anteriores iconos. Así que optamos por lo más sencillo: Ocultarlo mediante una clase que la declaramos en un css con un display:none.

Espero que os haya servido de ayuda. De todas formas, a medida que vaya trabajando y sacando más cosillas os la iré compartiendo :-)

Un saludo!

[Share] Ocultar la opción «crear sitio» en 3.4.0 Enterprise

¡Buenas a todos!

Hace algún tiempo publiqué un post en el que explicaba brevemente como ocultar los enlaces de crear sitio en los Alfresco versión 3.3.x pues bien (aquí el post), gracias a nuestro compañero nermp de los foros de alfresco de la comunidad Española , os comento como debe hacerse para la versión 3.4.0 enterprise que es la que he probado (supongo que valdrá para las posteriores 3.4.x):

En realidad era una tontería porque hay que seguir exactamente los pasos del post que publiqué pero en vez de tocar el archivo header.get.html.ftl hay que tocar sites.get.html.ftl

Os pego qué hay que modificar:

Copiar el archivo desde:

Alfresco340\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\modules\header\sites.get.html.ftl

En el del directorio de shared como se explica en el anterior post:

Alfresco340\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\modules\header\sites.get.html.ftl

Las líneas que hay que tocar son desde la 35 a la 39 y embeberlo con el <#if user.isAdmin>, tal que así:

<#if user.isAdmin>
 <ul class="create-site-menuitem">
 <li>
 <span><a href="#" onclick='Alfresco.util.ComponentManager.get("${id_js}").showCreateSite(); return false;'>${msg("label.create-site")}</a></span>
 </li>
 </ul>
 </#if>

Y listo =)

El resto es exactamente igual que en el post anterior.

Espero que os sirva de ayuda ^__^

¡¡Un saludooooo!!

[Alfresco & Share] Buenas Prácticas

Buenas de nuevo.

Todo el mundo ha escuchado siempre hablar de la llamada “Buenas prácticas” en alfresco pero.. ¿Alguien ha visto algo al respecto? Sobre todo hago referencia a temas relacionados con Share, que es el futuro.

Pues bien, escribo esta entrada en relación a este post en el foro de Alfresco.. Ahí fue cuando realmente me di cuenta de que las “buenas prácticas” como tal se van aprendiendo a medida que uno va probando, testeando y solucionando los quebraderos de cabezas a la hora de trabajar con el web client o con el share.

Como no hay nada oficial en cuanto al Share, os propongo que hagamos una cosa: Yo comparto lo que sé, y si a medida que vais leyendo si se os va ocurriendo algo que no haya referenciado posteadlo en los comentarios, así voy añadiéndolo y si en un futuro alguien lo busca por internet tendrá este post como referencia =)

Sin más, paso a explicaros:

  • Despliegue de archivos (que hemos modificado).

Regla de oro: Nunca poner nuestros archivos personalizados sobre el despliegue.

¿Qué qué es el despliegue y a que me refiero? Cuando arrancamos Alfresco por primera vez, lo que realmente está haciendo es coger el alfresco.war y el share.war que hay dentro de la carpeta webapps los abre y descomprime el primero en la carpeta alfresco y el segundo en la carpeta share. Esas carpetas son el despliegue.

Cada vez que arranquemos nuestro Alfresco leerá y cargará los archivos que haya en ambas carpetas, es decir webappsalfresco* para alfresco, o si accedemos al share webappsshare*

Normalmente las personas hacen una mala práctica en base a esto que os estoy explicando y el razonamiento erróneo suele ser: Si lo primero que carga es lo que hay en el despliegue, voy a copiar mi archivo y lo sustituyo por el que haya ahí así cuando arranque alfresco lo carga.

MAL HECHO, imaginaros que os tiráis horas y horas de curro y vais metiendo dentro de esas carpetas vuestros archivos modificados. Imaginad que tenéis que actualizar por el motivo que sea… Cuando pongáis el alfresco.war y el share.war nuevo para actualizar, al arrancar los descomprimirá y los cargará en webappsalfresco* y webappsshare* borrando todo lo que hubiera en ellas y con ello todo vuestro trabajo.

¿Entonces no hay alternativa? Sí que la hay :D La solución a ello (y con ello la buena práctica) es copiar vuestros archivos modificados dentro de $ALF_HOME/shared/classes/alfresco/extension para las personalizaciones de alfresco y $ALF_HOME/shared/classes/alfresco/web-extension para las personalizaciones del share

Creo que esto os ayudará a más de uno y además me da que es uno de los pilares básicos para cuando queramos hacer nuestras propias personalizaciones.

Si se os va ocurriendo más posteadlo en los comentarios y las voy agregando ^^

¡¡Un saludo!!

[Share] Creación de un Dashboard personalizado

Como sabemos en Share tenemos dos tipos de dashboard: El del usuario al logarse compuesto de sus dashlets:

Y el propio de un sitio cuando lo creamos:

Uno de los potenciales de Share es que prácticamente el 100% es modificable y personalizable, a fin de cuenta si navegáis por los archivos veréis que todas las acciones del Share no son más que simples webscripts, por lo que es relativamente sencillo personalizar nuestro Share según nos convenga.

Como aquí todo el mundo parte de cero (sí, pegándonos contra el portátil/PC hasta sacar lo que nos hayan pedido) pues he decidido ir publicando poco a poco las cosas que he ido descubriendo para que os vaya ahorrando quebraderos de cabeza. Recordad siempre: Hoy por ti, mañana por mí. =)

Hoy os voy a explicar cómo debéis hacer para personalizar un dashboard sea de un sitio o de los usuarios. Cosas a tener en cuenta antes de tocar nada:

  • Cuando damos de alta un nuevo dashboard de tipo sitio lo que realmente estamos es creando un nuevo tipo de sitio personalizado, es decir, que cuando hagamos la acción de “Crear Sitio” en el desplegable de las opciones aparecerá el nuestro personalizado (con el nombre y dashlets que hayamos definido).
  • El dashboard del usuario es común para todos los usuarios de nuestro sistema.
  • Si creamos un dashboard de cualquier tipo, todos los anteriores creados en nuestro share no se verán afectados. A partir de que nosotros lo creemos será efectivo el cambio al crear usuarios o un sitio de nuestro tipo.
  • Cuando se hace una personalización siempre tenemos en mente las llamadas buenas prácticas (extender dentro de ../tomcat/shared/ y no sobre ../share/WEB-INF/), pero en este caso detecté un bug en el que uno de los ficheros que modificamos no lo coge desde el web-extension, por lo que debemos extenderlo directamente en el despliegue (../webapps/share/WEB-INF..). Este bug está reconocido tanto para la 3.3.2 como para la 3.3.4, y sé que no está en la versión 3.2.x, por lo que de forma excepcional y si usáis alguna de estas distribuciones, deberemos desplegar directamente en el despliegue.
  • Todos estos archivos los sacaremos de dentro de ..webapps\share\WEB-INF\classes\alfresco\* Todo lo que queramos desplegar sobre shared\classes\alfresco\web-extension\ deberemos copiar y respetar la estructura de las carpetas.
  • P.e. si copiamos site-data\presets\preset.xml lo tomamos de dentro de WEB-INF\classes\alfresco\site-data\presets\preset.xml y copiaremos tal cual la estructura dentro de shared\classes\alfresco\web-extension\
    Pues bien, una vez explicados esos puntos vamos a pasar manos a la obra =)
    Archivos a modificar, ruta donde desplegaremos y breve explicación:

    * presets.xml
    $ALF_HOMEtomcatsharedclassesalfrescoweb-extensionsite-datapresetspresets.xml
    Archivo donde declararemos los  dashboards personalizados.
    create-site.get.js
    $ALF_HOME tomcatsharedclassesalfrescoweb-extensionsite-webscriptsorgalfrescomodulescreate-site.get.js
    Archivo que registra los diferentes dashboards que hay declarados en nuestro Share.
    create-site.get.properties
    $ALF_HOME tomcatsharedclassesalfrescoweb-extensionsite-webscriptsorgalfrescomodulescreate-site.get.properties
    Traducciones de los labels personalizados que hemos creado.