Posts

Showing posts from 2016

Embed portlet in liferay 7 FTL theme

To include portlet in liferay 7 ftl theme , use the code as follows. <@liferay_portlet["runtime"] defaultPreferences="${freeMarkerPortletPreferences}" portletProviderAction=portletProviderAction.VIEW instanceId="blablabla1" portletName="com_liferay_site_navigation_directory_web_portlet_SitesDirectoryPortlet" /> where , instanceId="blablabla1" have to be given only for instanceable portlet, "com_liferay_site_navigation_directory_web_portlet_SitesDirectoryPortlet" is portletId.

Creating PortletURL in Javascript

At times, we are supposed to create PortletURL in Javascript. We can do like this as follows. <aui:script use = "liferay-util-window,liferay-portlet-url" > var portletURL = Liferay.PortletURL.createRenderURL(); portletURL.setPortletId(' <%= PortletKeys . SOME_PORTLET %>'); portletURL.setPlid(15932); portletURL.setWindowState(' <%= LiferayWindowState . POP_UP . toString () %>'); portletURL.setParameter('param1', param1); portletURL.setParameter('param2', param2); portletURL.setParameter('mvcPath', '/html/my_portlet/my_page.jsp'); // Now we can use the URL console.log(portletURL.toString()); </aui:script> Similarly you can also create other URL type as needed: Liferay.PortletURL.createActionURL() Liferay.PortletURL.createPermissionURL() Liferay.PortletURL.createResourceURL() Liferay.PortletURL.createURL()

Liferay 7 overriding MVC Commands

MVCActionCommand : An interface that allows the portlet to process a particular action request. By extending  BaseMVCActionCommand , we can customize processAction method. MVCRenderCommand : An interface that handles the render phase of the portlet. By   extending  BaseMVCRenderCommand , we can customize render method. MVCResourceCommand : An interface that allows the portlet to serve a resource. By  extending  BaseMVCResourceCommand , we can customize serveResource method. Now , we will see how to customize processAction method. Step 1: Initially, Create one module as mentioned in Liferay 7 document. Step 2: In controller class, write the component property depends on which modules you are customizing, for eg., if we customize create account page, write as following @Component( property = { "javax.portlet.name=com_liferay_login_web_portlet_FastLoginPortlet", "javax.portlet.name=com_liferay_login_web_portlet_LoginPortlet

Liferay Popups

1. Displaying content as pop up <script> function showDependancyPopup() {               var content = $('#id').html();         AUI().use('aui-base', 'aui-io-plugin-deprecated',                 'liferay-util-window', function(A) {                     var popUpWindow = Liferay.Util.Window.getWindow({                         dialog : {                             centered : true,                             constrain2view : true,                             modal : true,                             resizable : false,                             width : 600,                             bodyContent : content,                              buttons:[{                                text:'OK',handler:function() {                                 this.close();                }                                }]                         }                     }).plug(A.Plugin.IO, {                         autoLoad : false        

Set page permissions to role programmatically

In JSP, // getting list of all public pages List<Layout> pageList = LayoutLocalServiceUtil.getLayouts(themeDisplay.getScopeGroupId(), false); for(Layout pages : pageList){ <input type="checkbox" name='<portlet:namespace/>page' value="<%=pages.getPlid() %>" <%=checked%> /><%=pages.getName() %><%=pages.getPlid()  %> } In Controller, String[] pages = ParamUtil.getParameterValues(request, "page");   for(String page : pages){  long plId = Long.parseLong(page); Layout layout = null; try { layout = LayoutLocalServiceUtil.getLayout(plId); } catch (SystemException e) { }    ResourcePermissionServiceUtil.setIndividualResourcePermissions(themeDisplay.getScopeGroupId(),    themeDisplay.getCompanyId(), Layout.class.getName(), String.valueOf(layout.getPrimaryKey()),    role.getRoleId(), new String[] { ActionKeys.VIEW }); }

Display portlet as popup in theme

Step 1: Open the portal-normal.vm file and write the below code.  portal-normal.vm  #set ($popupUrl = $portletURLFactory.create($request, " login_WAR_portlet ",$page.getPlid(), "RENDER_PHASE")) $popupUrl .setParameter("p_p_state", "exclusive") $popupUrl .setPortletMode("view")    <a href="#" onClick = "showPopup()">Show Popup </a> where ' login_WAR_portlet ' is the portlet name .     Step 2: Write the javascript code for popup in portal-normal.vm or any other .js file. < aui:script > AUI().use('aui-base', 'aui-io-plugin-deprecated', 'liferay-util-window', function(A) { function showPopup(){ var popUpWindow=Liferay.Util.Window.getWindow( { dialog: { centered: true, constrain2view: true, //cssClass: 'yourCSSclassName', modal: true, resizable: false, width: 475 }