over 9 years ago
Hello Guys
We can add nested portlets through code in liferay. Liferay provide this funcationlity, for complete example I will assume that you want to add nested portlet to current page using another portlets action handler.
Add these methods to your code :
- private static String addPortlet(final long p_userId, final Layout p_layout, final String p_portletId, final String p_columnId, final int p_position, final boolean p_checkPermission)
- throws PortalException, SystemException
- {
- if (p_layout.isTypePortlet()) {
- final LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) p_layout.getLayoutType();
- final String portletId = layoutTypePortlet.addPortletId(p_userId, p_portletId, p_columnId, p_position, p_checkPermission);
- if (portletId != null) {
- final String rootPortletId = PortletConstants.getRootPortletId(portletId);
- final String portletPrimaryKey = PortletPermissionUtil.getPrimaryKey(p_layout.getPlid(), portletId);
- ResourceLocalServiceUtil.addResources(p_layout.getCompanyId(), p_layout.getGroupId(), 0, rootPortletId, portletPrimaryKey, true, true, true);
- LayoutLocalServiceUtil.updateLayout(p_layout.getGroupId(), p_layout.isPrivateLayout(), p_layout.getLayoutId(), p_layout.getTypeSettings());
- }
- return portletId;
- }
- return null;
- }
- private static void addNestedPortlet(final PortletRequest p_request) throws PortalException, SystemException {
- final ThemeDisplay themeDisplay = (ThemeDisplay) p_request.getAttribute(WebKeys.THEME_DISPLAY);
- final Layout layout = themeDisplay.getLayout();
- long userId = themeDisplay.getUserId();
- //create nested portlet and add it to "column-1"
- final String nestedPortletId = addPortlet(userId, layout, "118", "column-1", -1, false);
- //this will be used to target nested portlet's columns
- final String nestedColumnPrefix = "_" + nestedPortletId + "__";
- //default page layout (used by nested portlet) has two columns
- //we'll add two portlets (in this example two iframe portlets), one portlet to each column
- addPortlet(userId, layout, "48", nestedColumnPrefix + "column-1", -1, false);
- addPortlet(userId, layout, "48", nestedColumnPrefix + "column-2", -1, false);
- }
private static String addPortlet(final long p_userId, final Layout p_layout, final String p_portletId, final String p_columnId, final int p_position, final boolean p_checkPermission) throws PortalException, SystemException { if (p_layout.isTypePortlet()) { final LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) p_layout.getLayoutType(); final String portletId = layoutTypePortlet.addPortletId(p_userId, p_portletId, p_columnId, p_position, p_checkPermission); if (portletId != null) { final String rootPortletId = PortletConstants.getRootPortletId(portletId); final String portletPrimaryKey = PortletPermissionUtil.getPrimaryKey(p_layout.getPlid(), portletId); ResourceLocalServiceUtil.addResources(p_layout.getCompanyId(), p_layout.getGroupId(), 0, rootPortletId, portletPrimaryKey, true, true, true); LayoutLocalServiceUtil.updateLayout(p_layout.getGroupId(), p_layout.isPrivateLayout(), p_layout.getLayoutId(), p_layout.getTypeSettings()); } return portletId; } return null; } private static void addNestedPortlet(final PortletRequest p_request) throws PortalException, SystemException { final ThemeDisplay themeDisplay = (ThemeDisplay) p_request.getAttribute(WebKeys.THEME_DISPLAY); final Layout layout = themeDisplay.getLayout(); long userId = themeDisplay.getUserId(); //create nested portlet and add it to "column-1" final String nestedPortletId = addPortlet(userId, layout, "118", "column-1", -1, false); //this will be used to target nested portlet's columns final String nestedColumnPrefix = "_" + nestedPortletId + "__"; //default page layout (used by nested portlet) has two columns //we'll add two portlets (in this example two iframe portlets), one portlet to each column addPortlet(userId, layout, "48", nestedColumnPrefix + "column-1", -1, false); addPortlet(userId, layout, "48", nestedColumnPrefix + "column-2", -1, false); }
Can you help out the community by solving one of the following Javascript problems?
Do activity (Answer, Blog) > Earn Rep Points > Improve Rank > Get more opportunities to work and get paid!
For more topics, questions and answers, please visit the Tech Q&A page.
0 Comment(s)