Archivo de la categoría: share

[ERROR]: The amp will overwrite an existing file in the war

Buenas tardes.

Os dejo aquí este tip por si el día de mañana os ocurre para que no os volváis loc@s :-P

Un poco de historia…

Intentando instalar mis amps (carpetas amps/ y amps_share/) con el script apply_amps.sh en uno de mis módulos me daba el siguiente error y no lo instalaba:

06280001 An error was encountered during deployment of the AMP into the WAR: 06280000 ERROR: The amp will overwrite an existing file in the war ‘/themes/sampleTheme/images/alfresco-imagelib.png’. Execution halted. By specifying -force , you can force installation of AMP regardless of the current war state.

El problema es que, si utilizamos el -force como se indica en ese parrafo obligamos a alfresco a sobre escribir archivos que ya tuviera desplegados previamente. Pero más allá de eso: ¿Por qué Alfresco tiene una versión previa de mi archivo si estoy desplegando una nueva?

Si miramos un poco más y usamos el ./apply_amps.sh -force , tenemos lo siguiente:

– WARNING: The file ‘/themes/sampleTheme/images/alfresco-imagelib.png’ is being overwritten by this module. The original has been backed-up to ‘/WEB-INF/classes/alfresco/module/backup/f2d9c362-73b2-11e7-9166-857b2fac416e.bin’

Y nuestro problema vendrá cuando corrijamos esa ruta e intentemos desplegar esa misma imagen en una ruta distinta, veremos como Alfresco carga la que tiene en backup.

Solución.

  • Pongamos que nuestro Alfresco es el 5.2.
  • Cogemos el war limpio de la misma versión. ¿Qué significa limpio? Pues nos descargamos los fuentes de Alfresco, y tomamos el war de la misma versión que nosotros usamos. Vamos, que no haya sido utilizado nunca.
  • Tenemos que renombrar el war que queramos sustituir de nuestra instalación: Por ejemplo de alfresco.war a alfresco.war.previous o lo que queráis pero .lo-que-quieras para que no sea tenido en cuenta cuando cargue tomcat.
  • Copiamos el war en nuestro_alfresco/tomcat/webapps/
  • Ejecutamos ./apply_amps.sh (o bat si es para plataforma windows).
  • Veremos como habrá desaparecido tanto el error como los warnings.
  • Serás más feliz :-)

Espero que os sirva.

¡Un saludo!

[Tip] Alfresco: Cómo saber dónde autentica un usuario

¡Muy buenas!

Hace poco, en un cliente que tiene una instalación de Alfresco con autenticación habilitada para NTLM (nativo de Alfresco) y en ldap, tuve que chequear un problema de duplicidad de usuarios y necesité comprobar dónde se autenticaban los usuarios de Alfresco: Si tiraban de autenticación interna o lo hacían externamente.
Por si os ocurre alguna vez, me gustaría explicar cómo podéis comprobarlo y, además, así no se me olvida para el día de mañana ;-)

Sigue leyendo

[Share] Ocultar la opción “crear sitio” en 4.1.x Enterprise

Buenas a todos.

Hace algún tiempo hice esta entrada basada en la 3.4.0 Enterprise y recientemente he tenido que adaptarla para la versión 4.1.x y me gustaría compartirla con vosotros. Esta entrada sirve para la version 4.1.x, no lo he probado en 4.2. ( de hecho sabiendo los cambios que existen con respecto a Aikau, apostaría que no funciona).

Los archivos que tenemos que tocar son 3:

  1. El dashlet de “Mis sitios”
  2. En la barra de arriba, dentro del menú desplegable
  3. El Dashlet de bienvenida

Como nos gusta seguir con las buenas prácticas, tendremos que copiar estos tres archivos (dentro de webapps/share/):

1.- {share-path-webapp}/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/dashlets/my-sites.get.html.ftl
2.- {share-path-webapp}/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/modules/header/sites.get.html.ftl
3.- {share-path-webapp}/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/dashlets/dynamic-welcome.get.html.

Y pegarlos en tomcat/shared/classes/alfresco/web-extension/

1.- {share-path-shared}/web-extension/site-webscripts/org/alfresco/components/dashlets/my-sites.get.html.ftl
2.- {share-path-shared}/web-extension/site-webscripts/org/alfresco/modules/header/sites.get.html.ftl
3.- {share-path-shared}/web-extension/site-webscripts/org/alfresco/components/dashlets/dynamic-welcome.get.html.ftl

Si en web-extension no tenéis creada la estructura de carpeta, deberéis hacerlo ya que necesitamos replicar la misma estructura que se encuentra en el Share internamente. Una vez los tengamos en web-extension, vamos a proceder a modificarlos:

1.- Dashlet de “mis sitios” – my-sites.get.html.ftl

Vamos directamente a la linea 43 y en este framento de código:

                 <span class="align-right yui-button-align">
                    <span class="first-child">
                       <a href="#" id="${id}-createSite-button" class="theme-color-1">
                          <img src="${url.context}/res/components/images/site-16.png" style="vertical-align: text-bottom" />
                          ${msg("link.createSite")}</a>
                    </span>
                 </span>

Lo encapsularemos con un if que chequeará la seguridad. Nos debe quedar así:

 

         <#if user.isAdmin>
                 <span class="align-right yui-button-align">
                    <span class="first-child">
                       <a href="#" id="${id}-createSite-button" class="theme-color-1">
                          <img src="${url.context}/res/components/images/site-16.png" style="vertical-align: text-bottom" />
                          ${msg("link.createSite")}</a>
                    </span>
                 </span>
         </#if>

Con esto, cuando Share vaya a cargar el componente visual, chequeará si el usuario que tiene hecho login tiene permisos de administrador.

2.- Link menú desplegable – sites.get.html.ftl

Debemos ir a la línea 25, ahí encontraremos este fragmento donde se pinta el link:

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

Hacemos lo mismo en el caso anterior y lo encapsularemos en una comprobación para que chequee los permisos del usuario que quiera visualizarlo:

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

3.- Dashlet de bienvenida – dynamic-welcome.get.html.ftl

Este caso es algo especial porque si queremos que no pinte el link dentro del dashlet, deberemos tocar el javascript para manipular el número de columnas y que se “salte” la del sitio y, además, el freemarket (ftl) para retocar los estilos y que no se descuadre. En mi caso, sencillamente mostraré este dashlet solo a los usuarios administradores, y lo ocultaré para aquellos que no lo sean.
En este caso es sencillo: Tendremos que poner la condición arriba del todo y encapsular el dashlet completo:

Original:

 <#if showDashlet>
   <#assign el=args.htmlid?html>
   <script type="text/javascript">//<![CDATA[
   new Alfresco.dashlet.DynamicWelcome("${el}", "${dashboardUrl}", "${dashboardType}", "${siteNodeRef!""}").setMessages(${messages});
   //]]></script>
   <div class="dashlet dynamic-welcome">
      <a id="${el}-close-button" class="welcome-close-button" href="#">
         <img src="${url.context}/res/components/images/delete-16.png" />
         <span>${msg("welcome.close")}</span>
      </a>
    ...
    ...
              <div class="welcome-height-adjuster">&nbsp;</div>
         </div>
      </div>
    </div>
 </#if>

Modificado:

<#if user.isAdmin>
 <#if showDashlet>
   <#assign el=args.htmlid?html>
   <script type="text/javascript">//<![CDATA[
   new Alfresco.dashlet.DynamicWelcome("${el}", "${dashboardUrl}", "${dashboardType}", "${siteNodeRef!""}").setMessages(${messages});
   //]]></script>
   <div class="dashlet dynamic-welcome">
      <a id="${el}-close-button" class="welcome-close-button" href="#">
         <img src="${url.context}/res/components/images/delete-16.png" />
         <span>${msg("welcome.close")}</span>
      </a>
      ...
      ...
           <div class="welcome-height-adjuster">&nbsp;</div>
         </div>
      </div>
    </div>
 </#if>
</#if>

Y listo, con estas modificaciones Share cuando pinte el link, chequeará primero si el usuario que intenta visualizarlo tiene permisos de administrador o no.

Espero que sirva de ayuda,

¡Un saludo!

[Alfresco Companion] – Capitulo 2: Primeros pasos

Buenas a todos.

En este capítulo vamos a dar nuestros primeros pasos con la herramienta: Descargaremos el bundle (o paquete de instalación), lo instalaremos y comprobaremos que lo tenemos todo preparado para empezar a meternos en chicha. Mi intención, en los próximos capítulos, es ver un poco más allá y explicaros qué es lo que habéis instalado a nivel de despliegue (archivos, configuración, etc), así como el día a día del uso de la aplicación (acceder como un administrador, ver opciones disponibles, etc).

Lo primero que hacemos es irnos a la página de descargas de Alfresco y observamos esto:

Página de descargas

Si accedemos siempre a través de esta página, nos aseguraremos que descargamos siempre la última versión. En mi caso voy a escoger la versión Community 4.2.e para MacOS que es el Sistema operativo que tengo. Si os fijáis abajo a la izquierda, me sale resaltada la opción.
Una curiosidad: Las distribuciones que terminan por una letra, por ejemplo 3.4.d, corresponden a la versión Community, si por el contrario vemos que hay disponible una versión terminada en número, por ejemplo 4.1.6, estaríamos hablando de la versión One (antigua Enterprise).

La filosofía es: Alfresco trabaja sobre una versión Community, libre y gratuita, en la que la “comunidad” reporta errores que los ingenieros de Alfresco van solventando y cada N releases de esta Community sacan una versión estable, es decir, una versión One. La diferencia hasta aquí está clara, pero: ¿Debería usar Community o One? Respuesta sencilla: Depende de tus necesidades: Si lo que tienes es un entorno pequeño que vaya a ser usado por un número reducido de usuarios, entonces puedes usar la Community sin problemas. Si, por contra, estás en una empresa donde se prevee que haya cientos de usuarios, con una disponibilidad de 24h, 7 días… entonces directamente recomendaría la One. Obviamente, también puedes plantearte hacer un pequeño piloto en la versión Community y mas adelante, si tus necesidades van en aumento, dar el salto a la One.

Bueno, sin más pasemos a instalarnos un Alfresco :-)

NOTA añadida el 28/11/2014:
Echadle un vistazo a esta entrada antes de instalar vuestro alfresco!

¡Manos a la obra!

Instalando nuestro Alfresco

1. Ejecutamos el instalador que nos hemos descargado de la web de Alfresco y elegimos el idioma

Sigue leyendo