<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;
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);
}
}
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.
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…
Content from pre 2016 and from language groups that have been closed.
Content is read-only.
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.