WEBSCRIPT : Consulta general de Grupos y Miembros

cancel
Showing results for 
Search instead for 
Did you mean: 
venzia
Senior Member

WEBSCRIPT : Consulta general de Grupos y Miembros

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  Smiley Tongue.
Espero que sirva de ayuda.
Saludos,
5 Replies
pjcaracuel_2349
Active Member II

Re: WEBSCRIPT : Consulta general de Grupos y Miembros

Muchas gracias por la aportacion. Por que no lo subes a share dentro de Web Script Samples

Por decir algo vamos.

Saludos
venzia
Senior Member

Re: WEBSCRIPT : Consulta general de Grupos y Miembros

Hola Pedro. También lo había pensando, aunque en ese caso es a Bill a quien le toca decidirlo (y subirlo :rollSmiley Happy. Lo que se le puede plantear es ir subiendo los mas interesantes.
Este puede ser un buen sitio de referencia para añadir contenido a ese espacio de Contenido de la Comunidad.
De todas formas creo que deberíamos tenerlo también por aqui ya que permite realizar comentarios (sugerencias o dudas) sobre los mismos como habitualmente lo hacemos con los demás temas.
Un saludo,
godie100
Member II

Re: WEBSCRIPT : Consulta general de Grupos y Miembros

Hola a Todos.

Estoy empezando en el mundo de Alfresco y he visto este tema de los WebScripts, pero la verdad no he entiendo mucho, me gustaría saber como puedo ejecutar estos scripts.

Muchas Gracias.
cmarguello
Member II

Re: WEBSCRIPT : Consulta general de Grupos y Miembros

Buenos dias.
Que pena revivir este post, pero me he topado con un problema.
El ejemplo me funciona perfectamente en alfresco, pero cuando lo quiero usar en share no me funciona, me lanza lo siguiente.

Error Message: 10300124 Failed to load script 'classpath*:alfresco/site-webscripts/org/alfresco/components/dashlets/grupos.get.js': 10300123 ReferenceError: "search" is not defined.

Adicionalmente he intentado hacer mas ejemplos utilizando Search API, pero me lanza el mismo error.
Se debe hacer algun import? alguna configuracion especial?

Gracias.

Cristian
cmarguello
Member II

Re: WEBSCRIPT : Consulta general de Grupos y Miembros

Mi problema lo resolví haciendo un llamado a alfresco.
En el js…

var scriptURL= "/consulta/search?nombre="+searchText+"&sitio="+sitio;
var connector = remote.connect("alfresco");
var result = connector.call(scriptURL);
model.body = result;

Gracias