cancel
Showing results for 
Search instead for 
Did you mean: 

Problème récupération de site sur un Dashlet

alucard
Champ in-the-making
Champ in-the-making
Bonjour,

j'ai un petit souci par rapport, a la récupération de sites via un Dashlet, j'ai suivi le petit exemple de BertrandF (l'exemple ultra simple) donné ici :

http://forums.alfresco.com/fr/viewtopic.php?f=25&t=4638

pour voir si on arrive a récupérer quelque chose mais j'ai toujours l’éternelle erreur 500, il me signal que le problème vient du fichier test.get.html.ftl sur l’élément ${site}.

test.get.xml

<webscript>
   <shortname>TEST</shortname>
   <description>Dashlet de test</description>
   <family>site-dashlet</family>
   <url>/components/dashlets/test</url>
</webscript>

test.get.html.ftl

<div class="dashlet">
   <div class="title">TEST</div>
   <div class="body">
      ${site}
   </div>
</div>

test.get.js   (premier cas)

model.site = page.url.templateArgs.site;

en modifiant le fichier "test.get.js" en m'inspirant des fichiers par defauts de Share (deuxiemme cas):


   var result = remote.call("/api/sites/" + page.url.templateArgs.site);
   if (result.status == 200)
   {
      var site = eval('(' + result + ')').title;
   }

   model.site = site;


je me retrouve a avoir "org.mozilla.javascript.Undefined@1a26593" affiché sur mon Dashlet sous Share.

merci, et donc la je n'arrive tout simplement pas a trouver le moyen de récupérer mon site pour l'afficher dans le dashlet.
18 REPLIES 18

alucard
Champ in-the-making
Champ in-the-making
Bonjour,
voici le chemin

    …\share\WEB-INF\classes\alfresco\site-webscripts\org\lafresco\components\dashlets
donc tout les fichier sont dans le dossier dahlets ci dessus

    dashlets
                     |—test.get.html.ftl
                     |—test.get.desc.xml
                     |—test.get.js
tout les dashlets par défaut marche sans soucis, de même que pour le dashlet my site, ou my task, même mes dashlet perso marche, seul souci c'est quand j’essaye d'importer la liste des sites, alors que dans le dashlet par défaut cela fonctionne normalement, aucun conflit. merci

jayjayecl
Confirmed Champ
Confirmed Champ
Par contre vous citez des exemples de dashlets qui marchent, mais ce sont des dashlets d'utilisateurs …

On est d'accord que votre dashlet en question est un dashlet de site ?

alucard
Champ in-the-making
Champ in-the-making
Bonjour, quel est la difference entre un dashlet site, et un d'utilisateur?
si dans le fichier xml on déclare juste dashlet, on auras aucun souci?

test.get.desc.xml
<webscript>
<shortname>test</shortname>
<description>affiche les sites</description>
<family>dashlet</family>
<url>/components/dashlets/test</url>
</webscript>

mon but est de pouvoir rajouter un dashlet sur le tableau de bord ce dashlet personnalisé, pourras chercher les données choisis, exemple la je me base sur les sites crées sur toutes l'arborescence, et des que j'arrive a réaliser ça je passerais à d'autres type de recherche et de récupération exemple me ramener tous les fichier pdf et de les afficher, merci

bertrandf
Champ on-the-rise
Champ on-the-rise
Bonjour, quel est la difference entre un dashlet site, et un d'utilisateur?
Une dashlet utilisateur est faite pour le tableau de bord utilisateur (le paramètre page.url.templateArgs.site n'existe pas), une dashlet de site est faite pour le tableau de bord d'un site …

si dans le fichier xml on déclare juste dashlet, on auras aucun souci?
Si vous faites cela, la dashlet sera aussi bien accessible depuis le tableau de bord d'un utilisateur ou depuis le tableau de bord d'un site.
La problématique étant que certains paramètres sont accessibles seulement en fonction du "contexte", le paramètre page.url.templateArgs.site sera logiquement renseigné quand vous serez sur une dashlet de site, ce qui ne sera pas le cas dans une dashlet utilisateur.

Cependant, dans votre sujet, vous indiquez déclarer :
<family>site-dashlet</family>

Vous ne devriez donc pas avoir de problème avec le paramètre page.url.templateArgs.site.

alucard
Champ in-the-making
Champ in-the-making
Dacord, donc si j'ai bien compris le paramètre  ( page.url.templateArgs.site ) me permet de récupérer les la liste des sites, seulement depuis une dashlet situé dans un site, mais a partir d'une dashlet utilisateur, on devras utilisé un autre paramètre? j'ai remarqué que dans le fichier  (my-site.get.js) une dashlet par defaut de share on retrouve cette ligne

my-site.get.js
var result = remote.call("/api/people/" + stringUtils.urlEncode(user.name) + "/sites");
  

sachant que cette dashlet est dite utilisateur :

my-site.get.desc.xml
   <family>user-dashlet</family> 

donc sachant que c'est une dashlet à la quel on a accès sur le tableau de bord (administrateur) donc utilisateur, tous les dashlets de ce tableau de bord devrais comporter ce paramètre la, et donc une dashlet avec le précédent paramètre ( page.url.templateArgs.site ) ne fonctionnera pas ici et voila pourquoi je n'avait aucun resultat. c'est bien cela? merci

bertrandf
Champ on-the-rise
Champ on-the-rise
donc si j'ai bien compris le paramètre ( page.url.templateArgs.site ) me permet de récupérer les la liste des sites
Non !
page.url.templateArgs.site permet de récupérer l'identifiant du site courant, en aucun cas la liste des sites.

Dans le fichier my-site.get.js, justement il y a une récupération de la liste des sites de l'utilisateur courant, pour cela, il faut faire appel à un webscript coté entrepôt qui prend comme paramètre le username de l'utilisateur courant (user.name).

La dashlet est bien de type <family>user-dashlet</family> , ce qui signifie que c'est une dashlet faite pour le tableau de bord utilisateur (ca n'aurait pas de sens de lister les sites de l'utilisateur courant sur le tableau de bord d'un site).
Je ne pense pas que vous trouviez quelconque appel au paramètre "page.url.templateArgs.site" dans cette dashlet étant donné que ce dernier sera nul dans ce contexte.

Comprenez bien que les APIs coté Share sont très peu fournies comparées aux APIs coté entrepôt.
Les objets auxquels vous avez accès sont limités, voici ceux que vous utiliserez le plus :
    l'objet user permet de connaitre l'utilisateur courant
    l'objet remote qui permet de faire des appels aux webscripts situés coté entrepôt
    l'objet page qui est la page ou vous vous situez
http://wiki.alfresco.com/wiki/Surf_Platform_-_Freemarker_Template_and_JavaScript_API

alucard
Champ in-the-making
Champ in-the-making
très bien, merci pour l'explication, donc au final si je veut récupérer des informations, liste de sites ou de documents, je devrais soit faire appel a un webscript existant coté alfresco soit en crée un. bon faut s y mettre.

bertrandf
Champ on-the-rise
Champ on-the-rise
Oui c'est cela.
Sachant qu'avant de vous lancer dans la création de vos propres webscripts, essayez de fouiller pour voir si Alfresco ne l'a déjà pas fait, ça serait dommage de re-coder des choses qui sont déjà faites (notamment pour récupérer la liste des sites).
Le meilleur moyen est de regarder ce qui est déjà fait dans les dashlets de base.

Ce site regorge également d'exemples : http://code.google.com/p/share-extras/

Bon courage.

alucard
Champ in-the-making
Champ in-the-making
merci, je ferais ainsi et je tiendrais au courant du résultat pour résoudre le sujet.
Getting started

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.