[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!

Deja un comentario