3

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

<liferay-ui:icon
    image="edit"
    label="true"
    message="news-edit-url"
    url="${oneNews.newsEditUrl}"
    />

編集 URL:

taglibEditURL = "javascript:Liferay.Util.openWindow({dialog: {width: 960}," + 
    "id: '" + renderResponse.getNamespace() + "'," +
    "title: '" + LanguageUtil.format(request.getLocale(), "edit-x", HtmlUtil.escape(assetRenderer.getTitle(request.getLocale()))) + "'," +
    "uri:'" + HtmlUtil.escapeURL(editPortletURLString) + "'});";

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

これに関するヘルプ...

4

2 に答える 2

8

ポップアップを閉じるコードは次のとおりです。これは、ポップアップを開く親ページに存在する必要があります。

ライフレイ バージョン 6.1

Liferay.provide(
        window,
        '<portlet:namespace />closePopup',
        function(popupIdToClose) {

            var A = AUI();

            A.DialogManager.closeByChild('#' + popupIdToClose);
        },
        ['aui-base','aui-dialog','aui-dialog-iframe']
    );

ライフレイ バージョン 6.2

Liferay.provide(
    window,
    '<portlet:namespace/>closePopup',
        function(popupIdToClose) {

            var popupDialog = Liferay.Util.Window.getById(popupIdToClose);

            popupDialog.destroy();
        },
        ['liferay-util-window']
    );

ポップアップを開いたポートレットを更新するコードを次に示します。これは、ポップアップを開く親ページに存在する必要があります。

Liferay.provide(
        window,
        '<portlet:namespace />refreshPortlet',
        function() {

            <%-- refreshing the portlet [Liferay.Util.getOpener().] --%>
            var curPortletBoundaryId = '#p_p_id<portlet:namespace />';

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

closePopup&refreshPortlet関数を呼び出す方法はあなた次第です。1 つの方法は、ポップアップを更新してclosePopup、リクエストが正常に処理された場合にのみポップアップ自体から関数を呼び出してrefreshPortletから、ポップアップからも関数を呼び出すことです。

ポップアップから親ページ関数を呼び出すのに役立つコード スニペットを次に示します。

Liferay.Util.getOpener().<portlet:namespace />closePopup(popupIdToClose);
Liferay.Util.getOpener().<portlet:namespace />refreshPortlet();

これは、次のようにポップアップを開くときに使用されるものpopupIdToCloseと同じです。id

taglibEditURL = "javascript:"
                +   Liferay.Util.openWindow({"
                +       "dialog: {width: 960},"
                +       "id: '" + renderResponse.getNamespace() + "'," // This is the "popupIdToClose"
                +       "title: '" + LanguageUtil.format(request.getLocale(), "edit-x", HtmlUtil.escape(assetRenderer.getTitle(request.getLocale()))) + "',"
                +       "uri:'" + HtmlUtil.escapeURL(editPortletURLString)
                +       "'}"
                +   ");";

お役に立てれば。

于 2012-10-05T10:21:54.093 に答える
1

6.2 バージョンの AUI taglib ソリューション。追加の JS は必要ありません。

<aui:button cssClass="close-panel" type="cancel" value="close" />

重要な部分はcssClass="close-panel"

于 2014-12-17T18:18:11.077 に答える