Gestión de Espacios con WebScript

RECU-0080 (Recurso Ejemplo)

Descripción

Código correspondiente al archivo OperacionesEspacio.get.desc.xml

<webscript>
  <shortname>OperacionesEspacio</shortname>
  <description>Operaciones que se puede realizar con un espacio/directorio en Alfresco</description>
  <url>/sample/OperacionesEspacio?nombre={nom}</url>
  <format default="html">argument</format>
  <authentication>guest</authentication>
</webscript>

Código correspondiente al archivo OperacionesEspacio.get.html.ftl

<html>
  <body>
    <img src="/servicios/madeja/%24%7Burl.context%7D/images/logo/AlfrescoLogo32.png" alt="Alfresco" />
    ${salida}   
  </body>
</html>

Código correspondiente al archivo OperacionesEspacio.get.js

Declaramos la variable salida ,que nos servirá para posteriormente tener un log con los resultado de las operaciones

model.salida="";

Comprobamos que el parametro recibido sea valido.

if ((args.nombre) && (args.nombre!="")) 
{
    var parametro_entrada = args.nombre;
}
else
{
    model.salida += "Error en el paso de argumentos\n<br>";
}

Obtenemos el nodo Company Home ,que sera donde realizaremos las pruebas.

var folder = roothome.childByNamePath("Company Home");
model.salida=" parametro: "+parametro_entrada+"<br>";
   
if (folder == undefined || !folder.isContainer)
{
   status.code = 404;
   status.message = "Folder " + url.extension + " not found.";
   status.redirect = true;
}
else
{

Creamos Dos espacios con los cuales realizaremos las pruebas

folder.createFolder(parametro_entrada);
    folder.createFolder(parametro_entrada+"2");
    var dir1= folder.childByNamePath(parametro_entrada);
    var dir2= folder.childByNamePath(parametro_entrada+"2");
    model.salida+="Creación de espacios correcta <br>";

Movemos un espacio dentro de otro

if(dir2.move(dir1))
    {       
    model.salida+="espacio movido correctamente<br>";
    }
    else
    {
    model.salida+="fallo en el movimiento del directorio\n<br>";
    }

Renombramos el directorio creado

dir1.properties.name="TEST";
        dir1.save();
        model.salida+="Se ha producido correctamente el cambio de nombre del directorio<br>";

Le asignamos unos nuevos permisos al espacio, el usuario "Jose" obtendra el permiso de Consumer sobre el espacio creado

dir1.setInheritsPermissions(false);
    dir1.removePermission("Consumer","GROUP_GROUP_EVERYONE");
    dir1.setPermission("Consumer","jose");
    model.salida+="Se le han otorgado correctamente los permisos al usuario \"jose\" <br>";
}

Eliminamos el directorio creado

if(dir1.remove())
{
model.salida+="Se la eliminado correctamente el directorio<br>";
}
else
{
model.salida+="Se ha producido un fallo en la eliminación del directorio<br>";
}

Permisos

Para comprobar que el directorio tiene los permisos que se le han otorgado el siguiente código comprueba si el usuario tiene permisos de lectura y escritura, (Recuerda iniciar una sesión con el usuario que se le haya otorgado al espacio).

Código correspondiente al archivo permisos.get.desc.xml

<webscript>
  <shortname>Permisos</shortname>
  <description>WebScript para comprobar los permisos de un directorio en Alfresco</description>
  <url>/sample/permisos?nombre={nom}</url>
  <format default="html">argument</format>
  <authentication>guest</authentication>
</webscript>

Código correspondiente al archivo permisos.get.html.ftl

<html>
  <body>
    <img src="/servicios/madeja/%24%7Burl.context%7D/images/logo/AlfrescoLogo32.png" alt="Alfresco" />
    ${salida}   
  </body>
</html>

Código correspondiente al archivo permisos.get.js

Iniciamos la variable salida.

model.salida="";

Comprobamos que el parametro nombre sea valido y no este vacío,

if ((args.nombre) && (args.nombre!="")) 
{
    var parametro_entrada = args.nombre;
}
else
{
    model.salida += "Error en el paso de argumentos\n<br>";
}

Obtenemos el nodo Company Home

var folder = roothome.childByNamePath("Company Home");
var dir1= folder.childByNamePath(parametro_entrada);
if (folder == undefined || !folder.isContainer || dir1==null)
{
   status.code = 404;
   status.message = "Directorio " + url.extension + " no encontrado.";
   status.redirect = true;
}
else
{

Comprobamos si el usuario tiene permisos de escritura y lectura sobre el espacio indicado por parametro.

model.salida+="El espacio : \""+folder.qnamePath +"/" +parametro_entrada +"\" es un espacio valido <br>";
   
        if(dir1.hasPermission("Read"))
        {
        model.salida+="Si tiene permisos de lectura\n<br>";
        }
        else
        {
        model.salida+="No tiene permisos de lectura\n<br>";
        }
        if(dir1.hasPermission("Write"))
        {
        model.salida+="Si tiene permisos de Escritura\n<br>";
        }
        else
        {
        model.salida+="No tiene permisos de Escritura\n<br>";
        }
}