Dashlet personnalisée - Atomfeed

cancel
Showing results for 
Search instead for 
Did you mean: 
nancygaillard
Active Member

Dashlet personnalisée - Atomfeed

Bonjour,

je suis en train de faire une dashlet personnalisée.
Je ne sais pas comment s'y prendre pour récupérer les informations de flux ATOM pour les afficher dans ma vue.
Je suis en recherche, mais quelques aides seront les bienvenues Smiley Happy

résultat souhaité :
avoir sur mon tableau de bord Alfresco utilisateur, une dashlet qui liste les listes de données du site "gestion".

Pour ce faire, dans tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/dashlets/

j'ai ajouté 3 fichiers:
- datalists-list.get.desc.xml

<webscript>
    <shortname>Appels et Courriers</shortname>
    <description>Liste des listes d'appels et de courriers</description>
    <family>user-dashlet</family>
      <url>/components/dashlets/datalists-list</url>
</webscript>

- datalists-list.get.js
<javascript>
//format atomfeed
var json = remote.call("/cmis/p/Sites/gestion/dataLists/children");
/* que faut-il faire ici?*/
</javascript>
- datalists-list.get.html.ftl

<@markup id="js">
   <#– Your JavaScript file. You actually only need the my-dashlet-min.js file (unless in development mode), but we usually keep the original source in my-dashlet.js there so we can change it later.–>
   <@script type="text/javascript" src="${url.context}/res/components/dashlets/datalists-list.js" group="dashlets"/>
</@>
<@markup id="html">
  <@uniqueIdDiv>
      <div class="dashlet">
         <div class="title">Lites d appels et de courriers</div>
         <div class="body">
            MA DASHLET   
         </div>
      </div>
   </@>
</@>


Alfresco Community 4.2.e sur Windows 7 64 bits

Cordialement,

Nancy
5 Replies
nancygaillard
Active Member

Re: Dashlet personnalisée - Atomfeed

alors maintenant, grâce à <a href="https://forums.alfresco.com/forum/developer-discussions/alfresco-share-development/cmis-dashlet-0513..."> ce post </a> et <a href="https://alfresco123.wordpress.com/2011/11/03/making-a-dashlet-work-in-alfresco-share/">ce site</a>, j'ai un peu avancé, en sorte que j'ai mon javascript comme suit maintenant :
<javascript>
ar rep = remote.call("/cmis/p/Sites/gestion/dataLists/children");
var dos = [];
var lec = [];
if(rep.status == 200){
   var feed = atom.toFeed(rep);
   var size = feed.getEntries().size();
   for(var i=0; i < size ; i++){
      var entry = feed.getEntries().get(i);
      dos = entry;
      //var path = entry.getExtension(atom.names.cmis_object).path.value;
      lec = entry.title+" "+atom.names.cmisra_object;
   }
}
model.dos = dos;
model.lec = lec;
</javascript>

et mon ftl comme suit :

<@markup id="js">
   <#– Your JavaScript file. You actually only need the my-dashlet-min.js file (unless in development mode), but we usually keep the original source in my-dashlet.js there so we can change it later.–>
   <@script type="text/javascript" src="${url.context}/res/components/dashlets/datalists-list.js" group="dashlets"/>
</@>
<@markup id="html">
  <@uniqueIdDiv>
      <div class="dashlet">
         <div class="title">Lites d appels et de courriers</div>
         <div class="body">
            ${dos?size}<br/>
            <#list lec as d>
               ${d}<br/>
            </#list>
         </div>
      </div>
   </@>
</@>


Peut-être que vous avez remarqué : je suis en train de chercher à savoir comment accéder à à l'élément "cmisSmiley Tongueath" de chaque item de mon flux atom.

dans le xml (pour simplifier j'ai enlever beaucoup d'élément:

<entry>
   <cmisra:object>
      <cmis:properties>
         <cmis:propertyString queryName="cmis:path" displayName="Path" propertyDefinitionId="cmis:path">
            <cmis:value>/Sites/gestion/dataLists/a006d3e3-0922-4252-95b3-6614381b1e55</cmis:value>
         </cmis:propertyString>
         <cmis:propertyId queryName="cmis:objectTypeId" displayName="Object Type Id" propertyDefinitionId="cmis:objectTypeId">
            <cmis:value>F:dl:dataList</cmis:value>
         </cmis:propertyId>
         <cmis:propertyString queryName="cmis:name" displayName="Name" propertyDefinitionId="cmis:name">
            <cmis:value>a006d3e3-0922-4252-95b3-6614381b1e55</cmis:value>
         </cmis:propertyString>
      </cmis:properties>
</cmisra:object>
</entry>


quelqu'un sait-il comment accéder au path?
nancygaillard
Active Member

Re: Dashlet personnalisée - Atomfeed

en écrivant dans mon javascript
<javascript>
for(var x in atom){
   lec+=x+":"+atom[x]+"<br/>";
}
model.lec = lec;
</javascript>

et en affichant lec dans mon ftl, j'ai obtenu cette information :

j'ai obtenu
toAtom:function toAtom() {/* org.apache.abdera.model.Element toAtom(java.lang.String) org.apache.abdera.model.Element toAtom(org.springframework.extensions.surf.util.Content) */}
notifyAll:function notifyAll() {/* void notifyAll() */}
toFeed:function toFeed() {/* org.apache.abdera.model.Feed toFeed(java.lang.String) org.apache.abdera.model.Feed toFeed(org.springframework.extensions.surf.util.Content) */}
createQName:function createQName() {/* javax.xml.namespace.QName createQName(java.lang.String,java.lang.String) */}
equals:function equals() {/* boolean equals(java.lang.Object) */}
notify:function notify() {/* void notify() */}
createEntry:function createEntry() {/* org.apache.abdera.model.Entry createEntry() */}
toEntry:function toEntry() {/* org.apache.abdera.model.Entry toEntry(org.springframework.extensions.surf.util.Content) org.apache.abdera.model.Entry toEntry(java.lang.String) */}
class:class org.springframework.extensions.webscripts.atom.AtomService
names:null
toMimeType:function toMimeType() {/* java.lang.String toMimeType(org.apache.abdera.model.Entry) */}
createFeed:function createFeed() {/* org.apache.abdera.model.Feed createFeed() */}
setAbderaService:function setAbderaService() {/* void setAbderaService(org.springframework.extensions.webscripts.atom.AbderaService) */}
wait:function wait() {/* void wait(long,int) void wait(long) void wait() */}
toString:function toString() {/* java.lang.String toString() */}
hashCode:function hashCode() {/* int hashCode() */}
toService:function toService() {/* org.apache.abdera.model.Service toService(org.springframework.extensions.surf.util.Content) org.apache.abdera.model.Service toService(java.lang.String) */}
abderaService:undefined
getClass:function getClass() {/* java.lang.Class getClass() */}
getNames:function getNames() {/* java.util.Map getNames() */}

J'avance! mais c'est difficile
nancygaillard
Active Member

Re: Dashlet personnalisée - Atomfeed

Bon, j'ai été capable de récupérer le titre de ma liste et son lien dans le javascript.
Je cherche travaille maintenant à l'affichage de ces informations. J'irai sur le forum anglophone pour plus d'informations sinon, et je reviens dès que j'ai une évolution (et pour mettre à jour mon code)
cleseach
Active Member II

Re: Dashlet personnalisée - Atomfeed

Bonjour,

Avez-vous regardé du côté des webscripts Alfresco ?
Il en existe en effet un qui vous permet de récupérer la liste des listes pour un site au format JSON… beaucoup plus simple à utiliser qu'un format Atom.
Essayez donc cette URL : http://localhost:8080/alfresco/s/slingshot/datalists/lists/site/gestion/dataLists
et regarder comment les résultats sont exploités dans le webscript "/components/dashlets/site-datalists"

Je suis sûr que ce webscript pourra être une source d'idées particulièrement intéressante par rapport à l'objectif que vous décrivez.

Cordialement,
Charles Le Seac'h
nancygaillard
Active Member

Re: Dashlet personnalisée - Atomfeed

Merci beaucoup. ça m'a permis de résoudre totalement mon problème Smiley Happy

datalists-list.get.js
<javascript>
var rep = remote.call("/slingshot/datalists/lists/site/gestion/dataLists");
var lists = [];
if(rep.status == 200){
   var json = eval('('+rep+')');
   lists = json["datalists"];
}
model.lists = lists;
</javascript>

datalists-list.get.html.ftl

<@markup id="js">
   <#– Your JavaScript file. You actually only need the my-dashlet-min.js file (unless in development mode), but we usually keep the original source in my-dashlet.js there so we can change it later.–>
   <@script type="text/javascript" src="${url.context}/res/components/dashlets/datalists-list.js" group="dashlets"/>
</@>
<@markup id="html">
  <@uniqueIdDiv>
      <div class="dashlet">
         <div class="title">Lites d'appels et de courriers</div>
         <div class="body scrollableList">
            <#if lists?size != 0>
               <#list lists as l>
                  <div class="detail-list-item">
                     <div class="details">
                        <a href="/share/page/site/gestion/data-lists?list=${l.name}">${l.title}</a>
                     </div>
                  </div>
               </#list>
               <div class="">
               </div>
            <#else>
               Il n'y a pas de liste disponible
            </#if>
         </div>
      </div>
   </@>
</@>


Voilà !