Categorías y Aspectos con WebScript

RECU-0083 (Recurso Ejemplo)

Descripción

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

<webscript>
  <shortname>GestionCategorias</shortname>
  <description>Operaciones que se puede realizar con categorias en Alfresco</description>
  <url>/sample/GestionCategorias</url>
  <format default="html">argument</format>
  <authentication>guest</authentication>
</webscript>

Código correspondiente al archivo GestionCategorias.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 GestionCategorias.get.js

Inicializamos las variables necesarias

model.salida="";
var espacio="<br>";
var nomFile="prueba.txt";
var folder = roothome.childByNamePath("Company Home");
var documento = roothome.childByNamePath(nomFile);

Obtenemos el documento con el cual vamos a trabajar

var query="PATH:\"/";
    query= query + folder.qnamePath;
    query= query + "//*\" ";
    query= query + "AND TYPE:\"cm:content\" ";
    var a= folder.qnamePath;
    var nodes = search.luceneSearch( query);
    for(var i=0;i<nodes.length;i++)
    {
   
        if(nodes[i].name==nomFile)
        {
        var doc=nodes[i];
        }
   
    }

Creamos la categoria

classification.createRootCategory("cm:generalclassifiable","categoriatest");
    model.salida+="Categoria creada"+espacio;

Añadimos el aspecto al documento para que se pueda clasificar mediante categorías

doc.addAspect("cm:generalclassifiable");
    doc.save();

Obtenemos las categorías del documento

var catNodeRef = search.luceneSearch("PATH:\"/cm:generalclassifiable//cm:categoriatest\"")[0]  ;
    var cats = doc.properties["cm:categories"];
   
   
    if(cats==null)
    {
    cats=new Array();
    }
   
    model.salida+="el numero de categorias que tiene el documento son :"+cats.length+espacio;

Añadimos la categoría a las propiedades del documento

var newCats = new Array();
    for (var i=0; i < cats.length; i++)
    {
          newCats[i] = cats[i];
    }
   
    newCats.push(catNodeRef);

Guardamos las categorías en el documento

doc.properties["cm:categories"] = newCats;
        doc.save();

Quitamos la categoria al documento

var catsActuales = doc.properties["cm:categories"];
    var newCatsActuales = new Array();
   
    model.salida+="el documento tiene "+catsActuales.length+"categorias"+espacio;
   
    if(catsActuales.length<=1)
    {
    doc.properties["cm:categories"]=newCatsActuales;
    }
    else
    {
   
        for (var i=0; i < catsActuales.length; i++)
        {   
            if(catsActuales[i].properties.name!=catNodeRef.properties.name)
            {
              newCatsActuales.push(catsActuales[i]);             
            }           
        }
        doc.properties["cm:categories"] = newCatsActuales;       
   
    }

Guardamos los cambios en el documento

doc.save();

Quitamos el aspecto del documento

doc.removeAspect("cm:generalclassifiable");
    doc.save();

Eliminamos la categoría si exite

var categorias = classification.getAllCategoryNodes("cm:generalclassifiable");
     model.salida+="el numero de categorias es :"+categorias.length+espacio;
    for(var i=0;i<categorias.length;i++)
    {     
     if(categorias[i].name=="categoriatest")
     {
          categorias[i].removeCategory();
     }   
    }
    model.salida+="La categoria ha sido eliminada correctamente"+espacio;