Descargar WebScripts : http://forge.alfresco.com/projects/flexspaces/
Conceptos y ejemplo : http://www.zylk.net/web/guest/web-2-0/blog/-/blogs/usando-el-api-web-script-de-alfresco
Aquí no voy a explicar como se hace un webscript, con los links de arriba tendréis bastante para entenderlo y crear el vuestro propio.
El Script que os muestro es una modificación del que hay contenido en el rar que se puede descargar del primer link, en la sección XML Data WebScripts de la página.
Este código corresponde a la decripción del webscript en xml, properties.get.desc.xml
FlexSpaces get properties data Gets properties of a doc or folder /flexspaces/getProperties?nodeid={nodeid}&tipo={tipo}&desc={desc}&resp={resp}&ot={ot}&pro={pro}&cli={cli}&sol={sol}&exo={exo}&rp={rp}&dob={dob} /flexspaces/getProperties?nodeid={nodeid} /flexspaces/getProperties?storeid={storeid}&path={path} /flexspaces/getProperties?path={path} argument user required false
El siguiente código corresponde a la respuesta, en este caso en xml, properties.get.xml.ftl
${node.name} ${node.id} ${node.displayPath}/${node.name} <#if node.isContainer> <#assign isFolder="true"> <#assign size=""> <#assign encoding=""> <#assign mimetype=""> <#else> <#assign isFolder="false"> <#assign size=node.size/1024 + " KB"> <#assign encoding=node.properties.content.encoding!> <#assign mimetype=node.properties.content.mimetype!>${node.icon16} ${node.icon32} ${isFolder} ${node.properties.title!} ${node.properties.description!} ${node.properties.author!} ${size} ${node.properties.creator} ${node.properties.created?datetime} ${node.properties.modifier} ${node.properties.modified?datetime} ${node.properties.editInline!} ${emailid} ${encoding} ${mimetype}
Por ultimo, esto es el javascript que se ejecutará al llamar a la url contenida en la descripción. properties.get.js
if ((args.nodeid) && (args.nodeid != ""))
{
model.node = search.findNode("workspace://SpacesStore/" + args.nodeid);
model.emailid=model.node.properties["{http://www.alfresco.org/model/system/1.0}node-dbid"];
if(args.tipo.equals("O"))
{
model.node.properties["{modelo.ejemplo}Descripcion"] = args.desc;
}
var permitted = model.node.getPermissions();
for (x = 0; x < permitted.length; x++) { var obje = permitted[x]; if(obje.search("NombrePermiso")>=0)
{
var cortado = permitted[x].split(";");
var user = cortado[1];
try
{
model.node.setInheritsPermissions(false);
model.node.removePermission("NombrePermiso", user);
model.node.setInheritsPermissions(true);
}
catch(e)
{
}
}
}
model.node.setPermission("NombrePermiso",args.resp);
model.node.save();
}
else if ( (args.storeid) && (args.storeid != "") && (args.path) && (args.path != "") )
{
// use avm storeid and path
var store = avm.lookupStore(args.storeid);
if (store != null)
{
var pathWithStore = args.storeid + ":" + args.path;
model.node = avm.lookupNode(pathWithStore);
model.emailid = "";
}
}
else
{
// use doc mgt path
if ((args.path) && (args.path != ""))
{
model.node = roothome.childByNamePath(args.path);
model.emailid=model.node.properties["{http://www.alfresco.org/model/system/1.0}node-dbid"];
}
}
He tenido que recurrir a un bucle ante la imposibilidad de utilizar la función removePermission("NombrePermiso"), en el bucle recorre todos los permisos y borra uno a uno los que coincidan con el nombre del mismo, ademas de quitar los permisos heredados antes de borrar cualquier permiso y volver a setearlos al terminar.
No hay comentarios:
Publicar un comentario