cancel
Showing results for 
Search instead for 
Did you mean: 

Accès au repository

pilate
Champ in-the-making
Champ in-the-making
Bonjour,

Je suis en train de faire un test de dashlet mais je n'ai pas d'acces au repo avec l'EL ${space.name}. Alfresco me dit :

Expression space is undefined on line 15, column 31 in com/domain/mon-dashlet.get.html.ftl

Voici mes fichiers :

mon-dashlet.get.desc.xml

<webscript>
   <shortname>Mon Dashlet</shortname>
   <description>Dashlet de test d'accès au repository</description>
   <family>site-dashlet</family>
   <url>/com/domain/mon-dashlet</url>
   <authentication>user</authentication>
</webscript>
mon-dashlet.get.html.ftl

<div class="dashlet">
<div class="title">Mon Dashlet</div>
Test dashlet<br>
<table style="width: 100%; text-align: left;" border="1" cellpadding="5"
   cellspacing="0">
   <tbody>
      <tr>
         <td>HelloWorld</td>
      </tr>
      <tr>
         <td>HelloWorld</td>
         <td>${space.name}</td>
      </tr>
   </tbody>
</table>
<hr>
</div>

Ai-je oublié d'inclure un template ? Si oui, comment puis-je le faire ?

EDIT : alors pour le placement des fichiers, j'ai mis ça dans tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\com\domain et j'ai aussi essayé dans shared/classes/alfresco/site-webscripts\com\domain. Je peux mettre mon WS dans le tableau de bord de mon site mais à l'affichage, j'obtiens l'erreur sus-citée.

Merci pour votre aide.
17 REPLIES 17

pilate
Champ in-the-making
Champ in-the-making
Bonjour,

Je ne comprends pas, dans vos exemple, vous faites :

toto = eval('(' + result + ')');

Si je laisse les guillemets, j'obtiens cette erreur :

Cannot parse XML: Scanner State 24 not Recognized  (file:/
Si je les retire, ça passe. Pourtant dans tous les codes javascript des sources, il y a bien les guillemets.

Pourquoi j'ai cette erreur ?

pilate
Champ in-the-making
Champ in-the-making
Il vous suffit pour cela de créer :
un webscript coté Alfresco :
- 1 fichier freemarker (.json.ftl par exemple)
Est-il possible ici de créer un fichier freemarker au format html ? Si oui comment récupérer les données côtés Share, autrement dit, ces données seront-elles directement interprétée en html ou dois-je les retravailler en javascript côté Share ?

bertrandf
Champ on-the-rise
Champ on-the-rise
Est-il possible ici de créer un fichier freemarker au format html ? Si oui comment récupérer les données côtés Share, autrement dit, ces données seront-elles directement interprétée en html ou dois-je les retravailler en javascript côté Share ?

Oui mais c'est "moins propre" (enfin ca dépend ce que vous voulez faire).

Coté Share, même principe que lorsque vous récupérez du JSON avec l'eval en moins.

Dans le fichier JavaScript (version courte, sans gestion des erreurs, …) :
var connector = remote.connect("alfresco");
model.result = connector.get("/com/domain/votre-webscript-coté-alfresco-html);
Dans le template coté Share :
${result}

pilate
Champ in-the-making
Champ in-the-making
Oui c'est pas très mais ça fonctionne Smiley Very Happy

Par contre, j'ai besoin du nodeRef du site côté Alfresco. De quel côté puis-je le récupérer et surtout comment ?   Smiley Very Happy

bertrandf
Champ on-the-rise
Champ on-the-rise
Par contre, j'ai besoin du nodeRef du site côté Alfresco. De quel côté puis-je le récupérer et surtout comment ?   Smiley Very Happy
Je dirai qu'il faut que vous récupériez le nom du site dans votre webscript coté share puis que vous le passiez en paramètre lors de l'appel à votre webscript situé coté entrepôt.
Dans votre webscript coté alfresco, vous recherchez le noeud dans /company_home/sites/ à l'aide de l'API Search : http://wiki.alfresco.com/wiki/3.2_JavaScript_API#Search_API

Par exemple :
var siteNode = companyhome.childrenByXPath("st:sites/cm:" + args.site.toLowerCase())[0];

pilate
Champ in-the-making
Champ in-the-making
Vous me conseillez à plusieurs reprises d'utiliser le json pour transmettre mes données. Pourrais-je les récupérer et les mettre en forme HTML côté Share ?

var siteNode = companyhome.childrenByXPath("st:sites/cm:" + args.site.toLowerCase())[0];

Si je fais ça côté Alfresco, je n'ai pas accès à args.site. Peut-être est-ce dû à ma version qui est la 3.3  :?:

pilate
Champ in-the-making
Champ in-the-making
C'est bon j'ai compris le truc, mon dashlet fonctionne. Merci beaucoup pour ton aide Bertrand.

J'ai maintenant compris à quoi peut servir la formation pour développeur.  :mrgreen:

C'est vraiment immense toutes ces nouvelles technos java moi qui en étais resté à Struts et jsp …  :roll:

pilate
Champ in-the-making
Champ in-the-making
Bonjour à tou(te)s,

En regardant les quelques codes javascript, j'en viens à me poser une question.

Peut-on à partir d'un noeud récupérer tous les fils avec un critère du style requête lucene ? Exemple :


postNodes = node.searchChildrenByXPath("fm:post");