6

のフックがありcreate_account.jspます。このjspには、iframeポップアップまたはLiferayからのポップアップでポートレットを開こうとするjavascriptコードがあります。

問題は
、ポートレットの URL を指定する方法です。
どうすればアクセスできますか?
そのポートレットでは、YES または NO で質問をしたいだけで、ユーザーの回答に基づいて、他のページにリダイレクトします。

4

2 に答える 2

9
  1. URL を作成するには、<portlet:renderURL>またはを使用できます。<liferay-portlet:renderURL>

    <liferay-portlet:renderURL
        var="testPopupURL"
        portletName="testPopup_WAR_testPopupportlet"
        windowState="<%=LiferayWindowState.POP_UP.toString() %>">
        <liferay-portlet:param name="paramToPopup" value="customParameterToThePortlet" />
    </liferay-portlet:renderURL>
    

    portletName="testPopup_WAR_testPopupportlet"これは、開くポートレットの portletId です。

    windowState="<%=LiferayWindowState.POP_UP.toString() %>"これは、ポップアップにポートレットを表示するだけであることが重要です。そうしないと、ナビゲーションとすべてを含む完全な liferay ページが開きます。

  2. 上記の URL を使用してポップアップとポートレットを開くために JSP に記述できる JavaScript:

    // this is one of creating function
    function <portlet:namespace />showPopup(url) {
    
        var url = url;
    
        // this is one way of calling a pop-up in liferay
        // this way is specific to liferay
        Liferay.Util.openWindow(
                {
                    dialog: {
                        cache: false,
                        width:800,
                        modal: true
                    },
                    id: 'testPopupIdUnique',                
                    uri: url
                }
            );
        }
    
    // this is another way of creating a function in liferay
    Liferay.provide(
            window,
            '<portlet:namespace />showAUIPopUP',
            function(url) {
                var A = AUI();
    
                // this is another way of calling a iframe pop-up
                // this way is not specific to liferay
                popupDialog = new A.Dialog(
                    {
                        id: 'testPopupIdUnique',
                        centered: true,
                        draggable: true,
                        resizable: true,
                        width: 800,
                        stack: true
                    }
                ).plug(
                    A.Plugin.DialogIframe,
                    {
                        uri: url,
                        iframeCssClass: 'ogilvy-dialog-iframe'
                    }
                );
    
                popupDialog.render();
            },
        ['aui-dialog','aui-dialog-iframe']
    );
    
  3. これらの JavaScript 関数を次のように簡単に呼び出すことができます。

    <a href="javascript: <portlet:namespace />showPopup('<%=testPopupURL%>')">
        Popup using Liferay open-window
    </a>
    
    <a href="javascript: <portlet:namespace />showAUIPopUP('<%=testPopupURL%>')">
        Pop-up using Alloy UI dialog
    </a>
    
  4. iframeポップアップ内に表示されるポートレットには、次のいずれかが必要<add-default-resource>true</add-default-resource>ですliferay-portlet.xml

    <portlet>
        <portlet-name>testPopup</portlet-name>
        <icon>/icon.png</icon>
        <instanceable>false</instanceable>
        <header-portlet-css>/css/main.css</header-portlet-css>
        <footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
        <css-class-wrapper>testPopup-portlet</css-class-wrapper>
        <!-- This property is necessary otherwise you would see a "Access denied for portlet" message when you try to open this portlet dynamically -->
        <add-default-resource>true</add-default-resource>
    </portlet>
    
  5. または、プロパティportlet.add.default.resource.check.whitelistportal-ext.properties次のように設定する必要があります。

    portlet.add.default.resource.check.whitelist=3,56_INSTANCE_0000,58,82,86,87,88,103,113,145,164,166,170,177,testPopup_WAR_testPopupportlet
    

このコードの動作を確認するには、この liferay フォーラムから 2 つのポートレットをダウンロードして、手順を参照してください。

これがliferayをよりよく理解するのに役立つことを願っています.

于 2013-01-11T13:28:05.993 に答える
2

renderURL タグを使用できます。JSP では、フォームを配置して、MVCPortlet クラスで必要な扱いを作成するだけです。

<portlet:renderURL var="myPopuURL"windowState="<%= LiferayWindowState.EXCLUSIVE.toString() %>">
    <portlet:param name="mvcPath" value="/myJspWithYesOrNo.jsp" />
</portlet:renderURL>

<script>
   my_function_to_open_popup_with_url('<%=myPopuURL%>');
</sricpt>

Liferay は AUI でポップアップを作成する方法を提供していることに注意してください: http://www.liferay.com/community/liferay-projects/alloy-ui/demo?title=community-liferay-projects-alloy-ui-demos-dialog

于 2013-01-11T05:40:09.217 に答える