私はLiferayサイトのいたるところに行ってきましたが、うまくいく答えは見つかりませんでした。私がやりたいのは、カスタムポートレット内にAUIダイアログボックスを開くJavaScript関数を設定することです。このダイアログボックスには、完全に別のポートレットからのview.jspコンテンツが表示されます。
これが私がこれまでに得たものです:
AUI().ready('aui-dialog','aui-dialog-iframe','liferay-portlet-url', function(A) {
var url = Liferay.PortletURL.createResourceURL();
url.setPortletId("my_portlet_that_I_want_in_a_dialog");
url.setWindowState('pop_up');
#foreach ($parameter IN $parameters.getSiblings())
url.setParameter("${parameter.data}", "${parameter.value.data}");
#end
window.myDialog = new A.Dialog(
{
title: 'My Dialog',
width: 640,
centered: true
}
).plug(
A.Plugin.DialogIframe,
{
uri: url.toString(),
iframeCssClass: 'dialog-iframe'
}
)
});
次に、まったく異なるポートレットに、次を呼び出すJavaScript関数があります。
window.myDialog.render()
これだけはうまくいきます。ただし、ダイアログが表示されると、常に空白になるか、「読み込み中」のアニメーションが無限に表示されます。
おそらく関連している:Firebugコンソールで、私は見ています
「yui:ロードされていません:遅延タスク」
それが現在の問題に関連しているかどうかはわかりません。助けてくれてありがとう。
編集: URL変数をコンソールに記録し、URLをコピーして新しいタブに貼り付けると、応答が完全に空白になります。これにより、URLが正しく生成されていないか、ここで何らかのポートレット間アクセス許可の問題が発生していると思われます。