Я просмотрел все сайты Liferay и не нашел ответа, который работает. Я хочу иметь функцию JavaScript внутри моего настраиваемого портлета, которая будет открывать диалоговое окно AUI, и это диалоговое окно показывает содержимое view.jsp из совершенно отдельного портлета.
Вот что у меня есть на данный момент:
AUI().ready('aui-dialog','aui-dialog-iframe','liferay-portlet-url', function(A) {
var url = Liferay.PortletURL.createResourceURL();
url.setPortletId("my_portlet_that_I_want_in_a_dialog");
url.setWindowState('pop_up');
#foreach ($parameter IN $parameters.getSiblings())
url.setParameter("${parameter.data}", "${parameter.value.data}");
#end
window.myDialog = new A.Dialog(
{
title: 'My Dialog',
width: 640,
centered: true
}
).plug(
A.Plugin.DialogIframe,
{
uri: url.toString(),
iframeCssClass: 'dialog-iframe'
}
)
});
Затем в совершенно другом портлете у меня есть функция JavaScript, которая вызывает:
window.myDialog.render()
Это много работает. Однако, когда появляется диалоговое окно, оно всегда пустое или бесконечно показывает анимацию «Загрузка».
Возможно, связано: в консоли Firebug я вижу
"yui: НЕ загружен: отложенная задача"
Не уверен, связано ли это с текущей проблемой или нет. Спасибо за помощь.
РЕДАКТИРОВАТЬ: Если я регистрирую переменную URL-адреса в консоли, а затем копирую и вставляю URL-адрес в новую вкладку, ответ будет полностью пустым. Это наводит меня на мысль, что я либо неправильно генерирую URL-адрес, либо здесь происходит какая-то проблема с разрешениями между портлетами.
delayed-task
не загружается, что приводит к поломке всего скрипта. В противном случае ваш код выглядит хорошо. - person rp.   schedule 18.01.2012