Récupérer un noeud

cancel
Showing results for 
Search instead for 
Did you mean: 
doublem
Member II

Récupérer un noeud

Bonjour,

J'essaye de récupérer le nœud d'un fichier (une image) stocké à la racine de l'espace documentaire d'un site share depuis le fichier
C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\title.js

j'ai essayer les solutions proposé sur le forum et sur le wiki mais rien ne marche, je désespère.

j'ai essayé par une recherche

search.luceneSearch("TEXT:image.jpg") -> j'obtiens une erreur: ReferenceError: "search" n'est pas défini

et avec le noeud space:

space.childByNamePath("image.jpg") -> j'obtiens une erreur: ReferenceError: "space" n'est pas défini ini

Je n'ai  accès à aucun  Root Scope Objects (companyhome, space, sites …), il provoque tous une ReferenceError: "xxxx" n'est pas déf


Faut il importer une ressource pour que ça fonctionne ?

Sinon existe t-il d'autres méthodes javascript pour récupérer un noeud ?

Merci de votre aide.
10 Replies
cleseach
Active Member II

Re: Récupérer un noeud

Bonjour,

Passer par la recherche est une option qui est intéressante pour récupérer des noeuds.
Concernant votre problème, il faudrait préciser la version d'Alfresco que vous utilisez.
Il faudrait également nous joindre le fichier tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\title.js que vous utilisez. Pour information, je n'en dispose pas sur mon système.

Cordialement,
Charles Le Seac'h
doublem
Member II

Re: Récupérer un noeud

Merci de ta réponse et de ton aide,

je me suis trompé sur le nom du fichier c'est:

C:\Alfresco\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\title\collaboration-title.get.js

J'utilise la version 4 d'Alfresco share.
cleseach
Active Member II

Re: Récupérer un noeud

Toujours pas !
Le seul fichier collaboration-title.get.js que je trouve se situe dans webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\title.

Pour que votre question soit précise, il faut :
  • préciser la version exacte d'Alfresco : 4.0a, 4.0b, 4.0c, 4.0d, 4.0 Entreprise ?

  • inclure entre balises "code" votre code modifié

  • inclure entre balises "code" les messages d'erreurs et les logs
Cordialement,
Charles Le Seac'h
doublem
Member II

Re: Récupérer un noeud

oui c'est bien ce fichier dont il s'agit !

c'est la version 4.0d

Le code que j'ai ajouté dans le fichier:

   var siteTitle = null;
   var json = remote.call("/api/sites/" + page.url.templateArgs.site);
    if (json.status == 200)
   {
       // Create javascript objects from the repo response
       var obj = eval('(' + json + ')');
       if (obj)
       {
         siteTitle = (obj.title.length != 0) ? obj.title : obj.shortName;
       }
   }
   
   var logoSite = space.childByNamePath("logo_"+siteTitle+".jpg");
    model.logoSite = (logoSite != null ? logoSite : "");
cleseach
Active Member II

Re: Récupérer un noeud

OK, je vois mieux.
Les objets racines "search", "space" ne sont définis que sur la partie référentiel, pas sur Share.

Dans votre cas, vous devez appeler le webscript de recherche depuis Share ou développer votre propre webscript (côté référentiel).
Depuis Share, vous pourrez faire un appel comme :
var monfichier = remote.call(monwebscript);

Tout ceci va vous permettre d'explorer un peu plus les webscripts et l'architecture Alfresco.

Cordialement,
Charles Le Seac'h
doublem
Member II

Re: Récupérer un noeud

Ok merci beaucoup.

Pouvez-vous me donner un exemple plus concret svp.

Pour récupérer un fichier nommé par exemple image sur un  site share nommé test, quel paramètre dois recevoir la méthode remote.call(…) ?


ceci est il correct ?

remote.call("/api/sites/" + page.url.templateArgs.site + "/image.jpg");

Merci
doublem
Member II

Re: Récupérer un noeud

C'est bon je viens de comprendre, il faut donc que je créé un webscript de recherche sur le référentiel et j'appel ce webscript dans le fichier
collaboration-title.get.js grâce à remote.call.

J'ai donc créé 6 fichiers dans org/alfresco/sample:

searchNode.get.atom.400.ftl
searchNode.get.atom.400.ftl
searchNode.get.html.400.ftl
searchNode.get.html.400.ftl
searchNode.get.desc.xml
searchNode.get.js


j'appel donc le méthode remote.call(/searchNode);

Mais comment fait-on pour lui passer des arguments ?
doublem
Member II

Re: Récupérer un noeud

Pour l'envoie des paramètre, il suffisait juste de rajouter ?q=valeur à l'url pour envoyer un paramètre q

Par contre je bloque sur comment transmettre depuis un webscript alfresco la réponse à un webscript share ?

car depuis mon webscript share je fais:

json = remote.call(webscript_Afresco);


mais comment lui renvoyer la réponse retourner par le webscript d'Alfresco ?


Merci
doublem
Member II

Re: Récupérer un noeud

Sujet résolu !

Pour ceux que ça intéresse, il suffisait de créer un fichier nom_du_script.get.json.ftl dans le même répertoire que le webscript coté entrepôt.

Coté share, il faut ensuite effectué un appel sur ce fichier avec    

var connector = remote.connect("alfresco");
var json = connector.get("url_du_script.json");