#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. Если вы добавляете что-то в конфигурацию, отображается значение напрямую.