2011-10-19 34 views
7

我想弄清楚如何與Alfresco共享執行一些Inter Dashlet通信。 這裏是一個簡單的用例:Alfresco Share是否爲Inter Dashlet Communication提供任何機制?

我們確實有2個dashlets,我們稱它們爲A和B.我希望能夠在A中填寫一個字段「name」(假設值爲「Toto」),然後單擊在提交按鈕上。點擊A中的提交按鈕後,B應該更新爲「Good Morning Toto」等問候語。

謝謝你的回答。

感謝您的回答。你能詳細說一下關於「讓dashlet_b.get.html.ftl發佈到dashlet_a.post.html.ftl」嗎?

在dashlet_b.get.html.ftl你有類似的東西我想:

<form id="..." action="" method="POST"> 
    <input id="name" type="text" name="name" value=""/> 
    <input type="submit" id="send" value="Send" /></form> 

當您提交表單它會找dashlet_b.post.js吧?你怎麼真的把這個表格發送到dashlet_a.post.js?

+0

你還在尋找其他答案嗎?要回答您更新的目標webscript問題:

但這隻會將數據發佈到服務器,而不會在瀏覽器中更新您的dashlet A. – Florian

回答

0

這很簡單,我猜。

每個Dashlet實際上都是一個web腳本。所以你可以有多個webscript用於不同的用途。就像我有dashlet_a一樣。 得到 .html.ftl和dashlet_a。 post .html.ftl。 其實這兩個是相同的webscript,一個只是在一個帖子上,另一個在獲取。

所以你可以做的是讓dashlet_b。 得到 .html.ftl張貼東西到dashlet_a.post.html.ftl。因此,您提交了從b到a的值。

下一步是刷新dashlet_a,一種方法是進行整頁刷新,但這並不好。 最好是以下幾點: 在dashlet_a中。 post .html.ftl您只需通過YUI/JQuery設置在dashlet_a中定義的字段的值。 得到 .html.ftl。

看看默認的可配置Dashlet如何做,就像webview一樣。如果你把東西放在配置中,直接顯示值。

7

要創建這些動態dashlets,僅使用服務器端dashlet web腳本是不夠的。您需要在瀏覽器中使用JavaScript邏輯來通知其他方式的變化。這是怎樣的Alfresco通常不會說:

瀏覽器的JavaScript Dashlet答:

YAHOO.Bubbling.fire("interDashletMessage", 
{ 
    message: "Hello World." 
}); 

瀏覽器的JavaScript Dashlet B:

YAHOO.Bubbling.on("interDashletMessage", function(layer, args) { 
    var message = args[1].message; 
    alert(message); // or write it to the dashlets HTML content 
}); 

這將從dashlet一個發送郵件使用習慣dashlet乙事件稱爲「interDashletMessage」。

如果您的Dashlet B僅顯示幾條消息,則可能足以使用事件發送數據。如果它更復雜,您的dashlet A需要首先將其數據發佈到存儲庫,然後觸發「刷新」事件並讓dashlet B從存儲庫中刷新其內容。這將涉及您可能需要編寫的多個web腳本。

相關問題