3

別のポートレット (以前に作成したポートレット) を表示しようとしていますが、ポップアップが空です。まず、renderURL を作成します。

<liferay-portlet:renderURL var="testPopupURL" portletName="<%=rule.getBannerPortletId() %>" windowState="<%=LiferayWindowState.POP_UP.toString() %>"></liferay-portlet:renderURL>

そして私はリンクをします:

<aui:a href="#" onClick="showPopup('${testPopupURL}')">View</aui:a> 

これは関数 showPopup です。

    function showPopup(url){
    console.log("En el showPopup ");
    AUI().ready('aui-dialog', 'aui-io', 'event', 'event-custom', function(A) {
        window.myDialog  = new A.Dialog({
            title: 'Banner',
            width: 640,
            centered: true
        }).plug(A.Plugin.DialogIframe, {
                uri: url.toString(),
                iframeCssClass: 'dialog-iframe'
        }).render();
    });
}

これを(ポップアップで開きたいポートレットの)liferay-portlet.xmlに入れました:

<add-default-resource>true</add-default-resource>

ポートレットはインスタンス化可能で、bannerPortletId は portletId です。

何か案が?

ありがとう

4

1 に答える 1

3

最後に、ポートレットを表示します。私はJavaScriptでURLを作成しました:

    var url;
    function createRenderURL(portletId) {
    AUI().ready('liferay-portlet-url', function(A) {
        var renderURL = Liferay.PortletURL.createRenderURL();
        renderURL.setName("Banner");
        renderURL .setPortletMode("edit");
        renderURL .setWindowState("pop_up"); 
        renderURL.setPortletId(portletId);
    url = renderURL.toString();
    });
}

ポップアップを表示するコードは同じですが、portletId をパラメーターのように渡し、関数 createRenderURL を呼び出します。

    var url;

function createRenderURL(portletId) {
    console.log("en el createRender");
    AUI().ready('liferay-portlet-url', function(A) {
        var renderURL = Liferay.PortletURL.createRenderURL();
        renderURL.setName("Banner");
        renderURL .setPortletMode("edit");
        renderURL .setWindowState("pop_up"); 
        renderURL.setPortletId(portletId);
        console.log(renderURL);
        url = renderURL.toString();
    });
}

これが誰かに役立つことを願っています。

于 2013-11-11T09:32:42.557 に答える