Предоставляет ли Alfresco Share какой-либо механизм для Inter Dashlet Communication? - PullRequest
7 голосов
/ 19 октября 2011

Я пытаюсь выяснить, как выполнить некоторое взаимодействие между дашлетами с Alfresco Share. Вот простой пример использования:

У нас есть 2 дашлета, давайте назовем их A и B. Я хочу иметь возможность заполнить поле «name» (скажем, значением «Toto») в A и нажать кнопку «Отправить». После нажатия кнопки «Отправить» в A. B должно появиться приветствие типа «Доброе утро, Тото».

Спасибо за ваши ответы.

Спасибо за ваш ответ. Не могли бы вы рассказать немного о том, что «пусть 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?

Ответы [ 2 ]

7 голосов
/ 20 октября 2011

Для создания этих динамических дашлетов недостаточно использовать веб-скрипт дашлета на стороне сервера.Вам нужна логика JavaScript в браузере, чтобы уведомить другой дашлет об изменениях.Вот как обычно это делает Alfresco:

Javascript Dashlet браузера A:

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
});

Это отправит сообщение из дашлета Aв дашлет B, используя пользовательское событие с именем "interDashletMessage".

Если ваш дашлет B отображает только несколько сообщений, этого может быть достаточно для отправки данных с использованием событий.Если он более сложен, ваш дашлет А должен сначала опубликовать свои данные в хранилище, а затем вызвать событие «обновить», и дашлет Б обновит его содержимое из хранилища.Это может включать несколько сценариев, которые вам, возможно, понадобится написать.

0 голосов
/ 20 октября 2011

Это довольно просто, я думаю.

Каждый Дашлет на самом деле является сценарием.Таким образом, вы можете иметь несколько webscript для различного использования.Как будто у меня есть dashlet_a. get .html.ftl и dashlet_a. post .html.ftl.На самом деле это два одинаковых веб-сценария, один действует только на сообщение, а другой на get.

Итак, что вы можете сделать, это позволить dashlet_b. get .html.ftl опубликовать что-тона dashlet_a.post.html.ftl.Следовательно, вы отправляете значения из b в a.

Следующим шагом является обновление dashlet_a, один из способов - полное обновление страницы, но это не очень хорошо.Что лучше, так это: В dashlet_a. post .html.ftl вы просто устанавливаете через YUI / JQuery значение поля, которое определено в dashlet_a. get .html.ftl.

Посмотрите, как настраиваемый дашлет по умолчанию делает это, например, веб-просмотр.Если вы введете что-то в конфигурацию, будет показано значение.

...