Можно ли в Liferay открыть отдельный портлет в новом диалоговом окне AUI?

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


person nerdabilly    schedule 17.01.2012    source источник
comment
Вероятно, что delayed-task не загружается, что приводит к поломке всего скрипта. В противном случае ваш код выглядит хорошо.   -  person rp.    schedule 18.01.2012
comment
Я думал то же самое, но не могу найти никакой информации о том, как это загрузить. в папке Alloy в ROOT.war есть папка отложенной задачи.   -  person nerdabilly    schedule 18.01.2012
comment
Также я обнаружил, что issues.liferay.com/browse/LPS-13893 может быть причина вашей проблемы и убедитесь, что она исправлена ​​в RC1. Какую версию 6.1 вы используете?   -  person rp.    schedule 18.01.2012
comment
Насколько я могу судить, это Liferay 6.0.6 в комплекте с JBoss.   -  person nerdabilly    schedule 18.01.2012


Ответы (1)


После трех дней, когда я бился головой о стену, пытаясь понять это, и рылся в ужасной документации Liferay, решение было довольно простым.

Вместо того

url.setWindowState('pop_up'); 

Это должно быть:

url.setWindowState('exclusive');

Как только я это сделал, все заработало отлично.

person nerdabilly    schedule 18.01.2012