Предоставляет ли общий ресурс на открытом воздухе какой-либо механизм для взаимодействия между дашлетами?

#share #alfresco

#Поделиться #alfresco

Вопрос:

Я пытаюсь выяснить, как выполнить некоторое взаимодействие между dashlet с 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 ?

Комментарии:

1. Вы все еще ищете другой ответ? Чтобы ответить на ваш обновленный вопрос для целевого веб-скрипта: <form action=»/url/to/dashlet_a»> но это только отправит данные на сервер, а не обновит ваш dashlet A в браузере.

Ответ №1:

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

Дашлет Javascript в браузере 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
});
  

Это отправит сообщение из dashlet A в dashlet B с использованием настраиваемого события под названием «interDashletMessage».

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

Ответ №2:

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

Каждый дашлет на самом деле является веб-скриптом. Таким образом, у вас может быть несколько webscript для разного использования. Например, у меня есть dashlet_a.get.html.ftl и dashlet_a.post.html.ftl. На самом деле это один и тот же веб-скрипт, один просто работает с post, а другой — с 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.

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