cancel
Showing results for 
Search instead for 
Did you mean: 

[Débutant] Comment écrire un dashlet ?

lil
Champ in-the-making
Champ in-the-making
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 7

rguinot
Confirmed Champ
Confirmed Champ
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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
Confirmed Champ
Confirmed Champ
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
Champ in-the-making
Champ in-the-making
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
Confirmed Champ
Confirmed Champ
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
Champ in-the-making
Champ in-the-making
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: