[Débutant] Comment écrire un dashlet ?

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

[Débutant] Comment écrire un dashlet ?

Salut,

J'aimerais écrire un dashlet que les utilisateurs pourront ajouter à leur page "My Alfresco" et qui affichera une liste des derniers documents d'un certain "content type" (tous auteurs confondus).

Est-ce qu'une bonne âme pourrait me mettre sur la voie ?

Merci d'avance
Lilian
7 Replies
rguinot
Customer

Re: [Débutant] Comment écrire un dashlet ?

Il vous faudra un minuscule bout de JSP (http://wiki.alfresco.com/wiki/User_Configurable_Dashboards) , et un template Freemarker : http://wiki.alfresco.com/wiki/Template_Guide.

C'est la technique "classique" d'écriture de dashlets.
Vous pourrez bien entendu l'enrichir  de JavaScript, de beans customs, de Web Scripts, mais  les liens ci-dessus devraient amplement suffir à répondre a votre besoin.
lil
Member II

Re: [Débutant] Comment écrire un dashlet ?

Merci. En fait j'ai déjà vu ces documentations. J'ai du mal pour la mise en oeuvre… Voilà ce que j'ai besoin de savoir :
1. Fichier de template
===================
- Comment le nommer ? J'ai cru comprendre que le nom ou plutôt l'extension doit correspondre au contenu. Donc si c'est du html c'est monTemplate.html.ftl et si c'est du freemarker (c'est par défaut), c'est monTemplate.ftl ?
- Où le placer ? Je ne trouve pas le dossier cité ici et je suppose que le plus "propre" est de placer le template dans le dépôt d'alfresco. Donc je crée mon template puis je l'ajoute où je veux dans mon dépôt comme n'importe quel document ?

2. Accéder aux données
====================
- Où se trouve la référence pour l'API ? Si j'ai bien compris, il s'agit de JCR qui est un truc standard mais je n'ai pas trouvé de documentation claire.
- Comment récupérer tous les documents de type "monNamespace:monContentType" quel que soit leurs space ?

Pour l'instant, j'ai créé une page jsp monDashlet.jsp que j'ai placé dans tomcat/webapps/alfresco/jsp/dashboards/dashlets :
<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>


<r:template template="workspace://SpacesStore/d06669dc-41ed-11dd-aa62-251f03501ab9" />

J'ai créé le template correspondant dans Company Home > Data Dictionary > Presentation Templates en le nommant monTemplate.ftl :
<#– Liste des documents de type "monNamespace:monContentType" –>
<#– Shows the Icon and link to the content for the doc, also the size in KB and lock status –>
<#assign rowcount=0>
<table>
   <tr style='background-color: #C6D8EB'>
      <td></td>
      <td><b>Name</b></td>
      <td><b>Size</b></td>
      <td><b>Modified Date</b></td>
      <td><b>Locked By</b></td>
   </tr>
   <#list userhome.children as child>
      <#if child.isDocument>
         <#if rowcount % 2 = 0><tr><#else><tr style='background-color: #DEE5EC'></#if>
            <td><a href="/alfresco${child.url}" target="new"><img src="/alfresco${child.icon16}" border=0></a></td>
            <td><a href="/alfresco${child.url}" target="new">${child.properties.name}</a></td>
            <td>${(child.size / 1000)?string("0.##")} KB</td>
            <td>${child.properties.modified?datetime}</td>
            <td> <#if child.isLocked>${child.properties.lockOwner}</#if></td>
         </tr>
         <#assign rowcount=rowcount+1>
      </#if>
   </#list>
</table>
pour l'instant c'est juste une copie du fichier my_docs.ftl qui existait déjà. Ca marche. Enfin plutôt il n'y a pas d'erreurs mais ça n'affiche rien. Reste à adapter pour obtenir ce que je veux.

Encore merci
Lilian
lil
Member II

Re: [Débutant] Comment écrire un dashlet ?

J'ai l'impression qu'il n'est pas possible de récupérer les noeuds correspondants à un content type… J'ai donc essayé de faire autrement.

J'ai ajouté à mon content type une propriété bidon à laquelle j'affecte une valeur par défaut. Je n'affiche jamais cette propriété mais elle est prise en compte et je peux faire une requête xpath pour récupérer tous les documents dont la propriété "truc" contient la valeur "machin".
rguinot
Customer

Re: [Débutant] Comment écrire un dashlet ?

pour chercher les noeuds d'un content type particulier,c'est possible via Lucene avec le mot clé TYPE : http://wiki.alfresco.com/wiki/Search#Finding_Nodes_By_Type
lil
Member II

Re: [Débutant] Comment écrire un dashlet ?

pour chercher les noeuds d'un content type particulier,c'est possible via Lucene avec le mot clé TYPE : http://wiki.alfresco.com/wiki/Search#Finding_Nodes_By_Type

Merci, il faudrait que je creuse un peu pour voir comment utiliser ça dans un template mais pour l'instant la solution que j'ai trouvé est convenable.
[edit]En fait j'ai trouvé, ça devrait être qqch comme ça : http://wiki.alfresco.com/wiki/FreeMarker_Template_Cookbook#Using_Lucene_Full-Text_Search mais je ne sais pas comment traduire
TYPE:"{http://www.alfresco.org/model/content/1.0}content"
en
TYPE:"monNamespace:monType"[/edit]

Je cherche maintenant comment trier le résultat pour pouvoir l'afficher en ordre inverse. Là je récupère mes news par ordre de création. Mais j'ai besoin d'avoir la plus récemment créée en premier.
rguinot
Customer

Re: [Débutant] Comment écrire un dashlet ?

il s'agit du mot clé "reverse" tout simplement, comme indiqué dans la doc freemarker : http://freemarker.sourceforge.net/docs/ref_builtins_sequence.html
lil
Member II

Re: [Débutant] Comment écrire un dashlet ?

il s'agit du mot clé "reverse" tout simplement, comme indiqué dans la doc freemarker : http://freemarker.sourceforge.net/docs/ref_builtins_sequence.html

C'est parfait, merci  Smiley Happy

Je n'aurais pas pensé à chercher ça sous "built-in"  Smiley Surprisedops: