5

次のコードを使用して、ポップアップ ウィンドウに WebContent 編集ポートレットをロードします。

<liferay-ui:icon 
    image="edit" 
    message="Edit" 
    url="<%= editUrl %>"
/>

editUrl の値は次のとおりです。

editUrl = "javascript:Liferay.Util.openWindow({ 
dialog:{
    width: 960, 
    modal:true, 
    destroyOnClose: true
}, 
id: '" + liferayPortletResponse.getNamespace() + "', 
title: '" + article.getTitle(Locale.UK, true) + "', 
uri:'" + HtmlUtil.escapeURL(editPortletURLString) + "'});";

コンテンツが保存または公開されると、ポートレットがポップアップ ウィンドウに読み込まれます。ポップアップ ウィンドウを閉じて、editURL リンクを含むポートレットを更新します。

4

2 に答える 2

3

編集が成功し、ポップアップが更新された場合にのみ、ポップアップから次のjavascript関数を呼び出すことができます。

Liferay.provide(
        window,
        'closePopUpAndRefreshPortlet',
        function(customPopUpId) {

            var A = AUI();

            A.DialogManager.closeByChild('#' + customPopUpId);

            var curPortletBoundaryId = '#p_p_id<portlet:namespace />';

            Liferay.Portlet.refresh(curPortletBoundaryId);
        },
        ['aui-dialog','aui-dialog-iframe']
    );

説明

ポップアップのを's関数に提供することid: '" + liferayPortletResponse.getNamespace() + "'により、ポップアップは閉じられます。DialogManagercloseByChild

Liferayは、ajaxを介してポートレットを更新するユーティリティメソッドを定義しているため、ポートレットを<div id="p_p_id_MyWCDPortlet_">関数にrefresh渡すだけで済みます。

したがって、更新が成功した後にポップアップが更新されると、関数を呼び出すと、closePopUpAndRefreshPortlet("customPopUpID")最初にそれ自体が閉じてから<div>、ポートレットを含む親が更新されます。

お役に立てれば。

于 2012-07-03T06:06:42.550 に答える