Dashlet personnalisée - Atomfeed

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-28-2014 06:20 PM
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
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
- 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
Alfresco Community 4.2.e sur Windows 7 64 bits
Cordialement,
Nancy
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

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
Labels:
- Labels:
-
Archive
5 REPLIES 5

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-29-2014 01:14 PM
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 :
Peut-être que vous avez remarqué : je suis en train de chercher à savoir comment accéder à à l'élément "cmis
ath" de chaque item de mon flux atom.
dans le xml (pour simplifier j'ai enlever beaucoup d'élément:
quelqu'un sait-il comment accéder au path?
<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 "cmis

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?

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-29-2014 02:36 PM
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
<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

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-30-2014 10:00 AM
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)
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)
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-31-2014 06:32 AM
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
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

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-31-2014 02:38 PM
Merci beaucoup. ça m'a permis de résoudre totalement mon problème 
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
Voilà !

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à !
