如何关闭Liferay中的弹出窗口?

时间:2012-10-05 08:31:14

标签: popup liferay liferay-6

我使用以下代码在弹出窗口中加载WebContent编辑portlet:

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

editUrl:

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) + "'});";

保存或发布内容时,将在弹出窗口中加载portlet。我希望弹出窗口关闭,并使用editURL链接刷新portlet。

对此有任何帮助......

2 个答案:

答案 0 :(得分:8)

以下是关闭弹出窗口的代码,这应该出现在打​​开弹出窗口的父页面中:

Liferay版本6.1

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

            var A = AUI();

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

Liferay版本6.2

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

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

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

这是刷新打开弹出窗口的portlet的代码。这应该出现在打​​开弹出窗口的父页面中:

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&amp; refreshPortlet功能。一种方法是,只有在成功处理请求后,弹出窗口才能弹出并从弹出窗口调用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)
                +       "'}"
                +   ");";

希望这有帮助。

答案 1 :(得分:1)

适用于6.2版本的AUI taglib解决方案。不需要额外的JS。

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

重要部分是 cssClass="close-panel"