2013-01-10 10 views
6

मेरे पास create_account.jsp के लिए एक हुक है। इस जेएसपी में मेरे पास जावास्क्रिप्ट कोड है जहां मैं एक आईफ्रेम पॉप-अप में पोर्टलेट खोलने या लिफ़ेरे से कुछ पॉप-अप खोलने का प्रयास करता हूं।पॉपलेट URL में एक और पोर्टलेट खोलने के लिए PortletURL

सवाल यह है:
पोर्टलेट यूआरएल कैसे देना है?
मैं इसे कैसे एक्सेस कर सकता हूं?
उस पोर्टलेट में मैं केवल YES या NO के साथ एक प्रश्न पूछना चाहता हूं, और उपयोगकर्ता उत्तर के आधार पर, किसी अन्य पृष्ठ पर रीडायरेक्ट करना चाहता हूं।

उत्तर

2

आप renderURL टैग का उपयोग कर सकते हैं। जेएसपी में बस एक फॉर्म डालें और अपने एमवीसीपीलेट क्लास के साथ ट्रेमैनेट को बनाएं।

<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" यह पोर्टलेट का पोर्टलेट है जिसे आप चाहते हैं खोलना।

    windowState="<%=LiferayWindowState.POP_UP.toString() %>" पॉप-अप में केवल पोर्टलेट दिखाने के लिए यह महत्वपूर्ण है, अन्यथा यह नेविगेशन और सभी के साथ पूर्ण जीवनकाल पृष्ठ खोल देगा।

  2. जावास्क्रिप्ट जो आप अपने JSP में लिख सकते हैं ऊपर URL का उपयोग करें और पॉपअप और भीतर portlet खोलने के लिए:

    :

    // 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. आप बस इन इस तरह जावास्क्रिप्ट कार्यों कुछ कॉल कर सकते हैं

    <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. portlet जो पॉप-अप की 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> 
    
  5. या के रूप में portal-ext.properties में संपत्ति portlet.add.default.resource.check.whitelist होना चाहिए:

    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 
    

इस कोड को कार्रवाई में आप से 2 portlets डाउनलोड करने और this liferay forum निर्देश का उल्लेख कर सकते बाहर की जाँच करने के लिए।

उम्मीद है कि यह जीवनभर बेहतर समझने में मदद करता है।

संबंधित मुद्दे