2013-01-10 35 views
6

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

質問があります:
ポートレットURLの指定方法は?
どうすればアクセスできますか?
そのポートレットでは、「はい」または「いいえ」で質問し、ユーザーの回答に基づいて、別のページにリダイレクトします。

答えて

2

renderURLタグを使用できます。 JSPでフォームを作成し、MVCPortletクラスで必要なtreatemnetを作成します。

<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

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"を使用できますこれは、必要なポートレットのポートレットIDです 開く。

    windowState="<%=LiferayWindowState.POP_UP.toString() %>"これはちょうど、ポップアップでポートレットを表示することが重要である、またはそうでなければ、ナビゲーション、すべてを完全にLiferayのページを開くでしょう。

    :あなたは、単にこのような何かこれらの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'] 
    ); 
    
  2. あなたは上記のURLを使用するようにJSPで書くと内ポップアップやポートレットを開くことができますジャバスクリプト

    <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> 
    
  3. ポップアップのiframeの内側に表示されるいずれかのようliferay-portlet.xml<add-default-resource>true</add-default-resource>を持っている必要がありポートレット:

    <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> 
    
  4. それともとしてportal-ext.propertiesでプロパティportlet.add.default.resource.check.whitelistを持っている必要があります:あなたはから2つのポートレットをダウンロードし、this liferay forumの指示を参照することができ、アクションにこのコードをチェックアウトするに

    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 
    

これは生涯をよりよく理解するのに役立ちます。

関連する問題