Fenêtre dialogue dashlet Share

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

Fenêtre dialogue dashlet Share

Bonjour à tous,
Je suis en train de créer un mini dashlet Share qui servira d'iframe toute simple. J'aimerai faire comme pour le dashlet RSS Feed, un petit lien "Configure" en dessous du titre du dashlet afin que quand on clique dessus une fenêtre de dialogue apparait et propose d'entrer l'URL de la page à inclure.

J'ai un peu regardé le code source du dashlet RSS Feed et la ligne qui m’intéresse est celle ci :

<#if userIsSiteManager>
<div class="toolbar">
<a href="#" id="${args.htmlid}-configFeed-link" class="theme-color-1">${msg("label.configure")}</a>
</div>
</#if>

Le problème c'est que le lien est "#" et que je ne vois pas d'évènement javascript "onClick", donc je suis un peu embêté pour voir un exemple d'utilisation. Je suppose qu'il doit y avoir une fonction javascript quelque part mais je ne la trouve pas, pouvez vous m'aider ?

Merci de votre aide !
7 Replies
kizux_3453
Member II

Re: Fenêtre dialogue dashlet Share

Je m'interroge aussi de savoir ou est persisté le lien, est ce un nœud ? ou est il ?
bertrandf
Active Member

Re: Fenêtre dialogue dashlet Share

Bonjour,

En ce qui concerne la fonction JavaScript qui se cache derrière le bouton, il faut aller faire un tour dans le fichier rssfeed.js dans /tomcat/webapps/share/components/dashlets/.

// Add click handler to config feed link that will be visible if user is site manager.
var configFeedLink = Dom.get(this.id + "-configFeed-link");
if (configFeedLink)
{
  Event.addListener(configFeedLink, "click", this.onConfigFeedClick, this, true);           
}

Après en ce qui concerne la sauvegarde, oui s'est persisté en nœud.
Dans le Node Browser, il faut aller faire un tour dans le store : avm://sitestore

Le lien est sauvegarder en fonction de l’emplacement de la dashlet RSSFeed, par exemple (c'est un nodeRef) :
avm://sitestore/-1;alfresco;site-data;components;page.component-2-1.user~admin~dashboard.xml
Dans cet exemple, ma dashlet RSS était située sur le dashboard utilisateur de l'admin, deuxieme colonne, 1ère dashlet (component-2-1.user~admin~dashboard.xml).

Il faut regarder le contenu du nœud :
<?xml version="1.0" encoding="UTF-8"?>

<component>
  <guid>page.component-2-1.user~admin~dashboard</guid>
  <scope>page</scope>
  <region-id>component-2-1</region-id>
  <source-id>user/admin/dashboard</source-id>
  <url>/components/dashlets/rssfeed</url>
  <properties>
    <feedurl>http://www.lequipe.fr/Xml/Football/Titres/actu_rss.xml</feedurl>
    <target>_blank</target>
  </properties>
</component>
kizux_3453
Member II

Re: Fenêtre dialogue dashlet Share

Merci de ta réponse !

Concernant :
Event.addListener(configFeedLink, "click", this.onConfigFeedClick, this, true);

Le premier paramètre c'est l'id, le second le type d'action et le 3ème la fonction a exécuter mais a quoi correspondent les deux derniers paramètres ?

Merci de ton aide  Smiley Very Happy
bertrandf
Active Member

Re: Fenêtre dialogue dashlet Share

Suffit d'aller faire un tour sur la documentation YUI : http://developer.yahoo.com/yui/docs/YAHOO.util.Event.html#method_addListener

addListener
static Boolean addListener ( el , sType , fn , obj , overrideContext )
Appends an event handler

Parameters:
    el <String|HTMLElement|Array|NodeList> An id, an element reference, or a collection of ids and/or elements to assign the listener to.
    sType <String> The type of event to append
    fn <Function> The method the event invokes
    obj <Object> An arbitrary object that will be passed as a parameter to the handler
    overrideContext <Boolean|object> If true, the obj passed in becomes the execution context of the listener. If an object, this object becomes the execution context.

Returns: Boolean
    True if the action was successful or defered, false if one or more of the elements could not have the listener attached, or if the operation throws an exception.
kizux_3453
Member II

Re: Fenêtre dialogue dashlet Share

Merci ! bon ca j'ai bien compris maintenant  :lol:

Par contre je regarde le fichier rssfeed.js depuis un petit moment et je ne trouve pas ou est ce qu'on crée le nœud pour persister l'Url du feed.
// Save url for new config dialog openings
this.options.feedURL = (rss && rss.feedURL) ? rss.feedURL : this.options.feedURL;
Cette ligne stock l'url dans le modèle (je pense) mais à quelle moment on crée ou modifie le noeud dans le repository ? Je suppose qu'il existe des fonctions prêtent à l'emploi pour ça mais j'ai un peu de mal à m'aiguiller : /
bertrandf
Active Member

Re: Fenêtre dialogue dashlet Share

La sauvegarde se fait dans un webscript coté Share : config-feed.post qui se trouve dans /tomcat/webapps/share/WEB-INF/classes/alfresco/site-webscripts/org/alfresco/modules/feed/

var c = sitedata.getComponent(url.templateArgs.componentId);
Ici, on récupère le nœud associé à la dashlet (component).

var uri = getValidRSSUri(String(json.get("url")));
c.properties["feedurl"] = uri;
La, le paramètre url est récupéré et persisté dans le component.
kizux_3453
Member II

Re: Fenêtre dialogue dashlet Share

Haaaaaaaa (cri de soulagement et de compréhension)

Ok j'ai compris pas mal de choses ce matin ! Je pense que je vais réussir à m'en sortir avec toutes ces informations. Merci beaucoup BertrandF, (malheureusement je n'arrive plus à noter les posts utiles  Smiley Indifferent )

Je repasserai sur le sujet pour dire si il est résolu le temps de tester un peu tout ca !