我使用以下代码在弹出窗口中加载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。
对此有任何帮助......
答案 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"
。