AnsweredAssumed Answered

WEBSCRIPT : Consulta general de Grupos y Miembros

Question asked by venzia on Jun 9, 2009
Latest reply on Dec 2, 2010 by cmarguello
Bueno, creo oportuno aportar mi "granito de arena".
El siguiente webscript se encarga de mostrar una tabla con la relación de Grupos de Usuarios del repositorio y sus Miembros asignados (agiliza bastante el trabajo cuando se realizan pruebas con permisos sobre grupos y se van cambiando con regularidad los usuarios de los mismos).

fichero grupos.get.js :
//mediante consulta lucene devolvemos todos los grupos del store correspondiente
var grupos=search.luceneSearch("user://alfrescoUserStore","TYPE:\"{http://www.alfresco.org/model/user/1.0}authorityContainer\"");
var miembros=[];
var usuarios_del_grupo="";

if (grupos == null || grupos==undefined)
{
   status.code = 404;
   status.message = "No se han encontrado grupos";
   status.redirect = true;
}
else
   for(var i=0;i<grupos.length;i++){   
   //comprobamos que el grupo tenga miembros
   if(grupos[i].properties["usr:members"]!=null && grupos[i].properties["usr:members"]!=undefined)
      //recorremos la coleccion de estos
      for(var j=0;j<grupos[i].properties["usr:members"].length;j++)
         //vamos creando una cadena que recoja estos valores y los presente en la misma columna
         usuarios_del_grupo="-"+grupos[i].properties["usr:members"][j]+"-"+usuarios_del_grupo;
   else//si no tiene miembros metemos un valor vacio ya que debe existir
      //el mismo numero de miembros que de grupos para la plantilla de presentacion
      usuarios_del_grupo=" ";

//   OTRA FORMA UN POCO MAS "CLARA" DE HACER LO MISMO SERÍA
//   var grupo=people.getGroup(grupos[i].properties["usr:authorityName"]);
//   if(grupo.properties["usr:members"]!=null && grupo.properties["usr:members"]!=undefined)
//      for(var j=0;j<grupo.properties["usr:members"].length;j++)
//         usuarios_del_grupo="-"+grupo.properties["usr:members"][j]+"-"+usuarios_del_grupo;
//   else
//      usuarios_del_grupo=" ";

   //añadimos la cadena a la coleccion de miembros para cada grupo
   miembros.push(usuarios_del_grupo);
   usuarios_del_grupo="";
   }

model.members=miembros;
model.groups = grupos;

Fichero grupos.get.html.ftl :
<h3>WEBSCRIPT PARA CONSULTA GENERAL DE GRUPOS Y SUS MIEMBROS</h3>

<style type="text/css">
td.estilo_de_celda1 {
   background-color: #FFFFFF; color: #003366;
}
td.estilo_de_celda2 {
   background-color: #DEE5EC; color: #003366;
}
td.estilo_de_celda3 {
   background-color: #C6D8EB; color: #003366;
}
</style>

<#assign estilo_aplicado=1>
<#assign cont=0>
<table cellpadding=2>
   <tr>
      <td class="estilo_de_celda3"><b>Grupo</b></td>
      <td class="estilo_de_celda3"><b>Miembros</b></td>
   </tr>
   <#list groups as group>
         <tr>
            <#if estilo_aplicado==1>
            <td class="estilo_de_celda1">${group.properties["usr:authorityName"]}</td>
            <td class="estilo_de_celda1">${members[cont]}</td>
             <#assign estilo_aplicado=0>
             <#else>
            <td class="estilo_de_celda2">${group.properties["usr:authorityName"]}</td>
            <td class="estilo_de_celda2">${members[cont]}</td>
             <#assign estilo_aplicado=1>
             </#if>
        </tr>
     <#assign cont=cont+1>
   </#list>
</table>

Fichero grupos.get.desc.xml :
<webscript>
   <shortname>Consulta general de Grupos y Miembros</shortname>
   <description>
      Muestra una tabla con los Grupos de usuario y sus Miembros
   </description>
   <url>/api/grupos</url>
   <format default="html" />
   <authentication>user</authentication>
   <transaction>required</transaction>
</webscript>

El siguiente "reto" será visualizarlo en formato árbol  :P.
Espero que sirva de ayuda.
Saludos,

Outcomes