09-30-2009 11:42 AM
<webscript>
<shortname>Affichage documents</shortname>
<description>Test2</description>
<url>/repo</url>
<url>/repo/node/{nodeid}</url>
<url>/repo/node/path/{path}</url>
<format default="html">argument</format>
<authentication>guest</authentication>
<transaction>required</transaction>
</webscript>
mon template : arbo.get.html.flt
<#assign spaces = results.spaces>
<#assign docs = result.documents>
<html>
<body>
<b>Spaces:</b><br/>
<#list spaces as space>
<a href="${url.serviceContext}/repo/node/${space.id}">${space.name}</a><br/>
</#list>
<hr/>
<b>Documents:</b><br/>
<#list docs as doc>
<a href="$url.serviceContext}/repo/node/${doc.id}">${doc.name}</a><br/>
</#list/
<hr/>
</body>
</html>
mon javascript : arbo.get.js
<import resource="classpath:alfresco/extension/templates/webscripts/org/alfresco/util/json.js">
var curNode = companyhome;
if (url.extension != "") {
if (url.match == "/alfresco/service/repo/node/path/") {
var expr = "company Home/";
var str = url.extension.replace(expr,"");
if (str != "") {
curNode = companyhome.childByNamePath(str);
}
} else if (url.match == "/alfresco/service/repo/node/") {
curNode = search.findNode("workspace://SpaceStore/" + URL.extension);
}
}
var children = curNode.children;
var results = {};
var numDocs = 0;
var numSpaces = 0;
results.node = curNode;
results.spaces = new Array();
results.documents = new Array();
for (var i=0; i < children.length; i++){
var index = 0;
if (children[i].isContainer) {
results.spaces[numSpace] = children[i];
index = numSpaces++;
} else if (children[i].isDocument) {
results.documents[numDocs] = children[i];
index = numDocs++;
}
}
model.results = results;
10-01-2009 02:20 AM
10-01-2009 05:33 AM
10-01-2009 07:47 AM
var nodeId = url.templateArgs["nodeid"];
var path = url.templateArgs["path"];
if(nodeId != null){
curNode = search.findNode("workspace://SpaceStore/" + nodeId);
}
else if(path != null){
var expr = "company Home/";
var str = path.replace(expr,"");
if (str != "") {
curNode = companyhome.childByNamePath(str);
}
}
10-01-2009 09:45 AM
10-01-2009 10:08 AM
Bon alors, j'ai testé votre WebScript,
1- Il faut que vous enleviez l'import inutile (json.js)
2- Dans votre fichier JS, ligne 30 (après suppression de l'import), la variable "numSpace" n'existe pas.
Au passage je ne comprends pas l'utilité de la variable "index" qui est incrémentée mais jamais utilisée.
3- Votre fichier freemarker et mal nommé (du moins dans votre sujet sur le forum), l'extension freemarker est .ftl et non .flt
4- En ce qui concerne votre template :
4.1- Il y a une erreur de syntaxe ligne 15 pour fermer votre boucle (</#list/ => </#list>)
4.2- Ligne 2 : vous avez oublié un "s" à "result" => results.documents
Avec ces modifications, j'ai réussi à faire fonctionner le WebScript en allant à l'adresse :
http://localhost:8080/alfresco/service/repo
Après avec les paramètres ca n'a pas vraiment l'air de fonctionner … Je pense qu'il faut revoir la façon dont vous récupérez vos paramètres.
Pourquoi ne pas utiliser url.templateArgs["nom-du-paramètre"] et tester la nullité de ce qui est récupéré?
Voici un exemple :var nodeId = url.templateArgs["nodeid"];
var path = url.templateArgs["path"];
if(nodeId != null){
curNode = search.findNode("workspace://SpaceStore/" + nodeId);
}
else if(path != null){
var expr = "company Home/";
var str = path.replace(expr,"");
if (str != "") {
curNode = companyhome.childByNamePath(str);
}
}
PS :
Je ne sais pas vraiment à quoi va vous servir le WebScript mais faites attention quand vous faites le "curNode.children" car si le nœud est un fichier cela déclenchera une erreur.
Je vous conseillerai donc d'utiliser "isContainer" sur le nœud avant de récupérer ses enfants.
Allez sur le wiki Alfresco pour voir les possibilités offertes par l'API JavaScript : http://wiki.alfresco.com/wiki/JavaScript_API
En espérant vous avoir aidé.
Cordialement.
10-01-2009 11:22 AM
J'ai trouvé un exemple à cet endroit : http://files.meetup.com/511466/Alfresco_WebScripts.pdf
mais d'après ce que vous me dites, je vais plutôt chercher aller ailleurs…
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.