protected void populateElementLayoutMetadata(Element layoutElement, Layout layout) throws Exception { LayoutStagingHandler layoutStagingHandler = LayoutStagingUtil.getLayoutStagingHandler(layout); if (layoutStagingHandler != null) { LayoutRevision layoutRevision = layoutStagingHandler.getLayoutRevision(); if (layoutRevision != null) { layoutElement.addAttribute( "layout-revision-id", String.valueOf(layoutRevision.getLayoutRevisionId())); layoutElement.addAttribute( "layout-branch-id", String.valueOf(layoutRevision.getLayoutBranchId())); LayoutBranch layoutBranch = layoutRevision.getLayoutBranch(); layoutElement.addAttribute("layout-branch-name", String.valueOf(layoutBranch.getName())); } } layoutElement.addAttribute("layout-uuid", layout.getUuid()); layoutElement.addAttribute("layout-id", String.valueOf(layout.getLayoutId())); layoutElement.addAttribute("layout-priority", String.valueOf(layout.getPriority())); String layoutPrototypeUuid = layout.getLayoutPrototypeUuid(); if (Validator.isNotNull(layoutPrototypeUuid)) { LayoutPrototype layoutPrototype = _layoutPrototypeLocalService.getLayoutPrototypeByUuidAndCompanyId( layoutPrototypeUuid, layout.getCompanyId()); layoutElement.addAttribute("layout-prototype-uuid", layoutPrototypeUuid); layoutElement.addAttribute( "layout-prototype-name", layoutPrototype.getName(LocaleUtil.getDefault())); } }
protected void exportLayout( PortletDataContext portletDataContext, Portlet layoutConfigurationPortlet, LayoutCache layoutCache, List<Portlet> portlets, Map<String, Object[]> portletIds, boolean exportPermissions, boolean exportUserPermissions, Layout layout, Element layoutsElement) throws Exception { String path = portletDataContext.getLayoutPath(layout.getLayoutId()) + "/layout.xml"; if (!portletDataContext.isPathNotProcessed(path)) { return; } LayoutRevision layoutRevision = null; if (LayoutStagingUtil.isBranchingLayout(layout)) { ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext(); long layoutSetBranchId = ParamUtil.getLong(serviceContext, "layoutSetBranchId"); if (layoutSetBranchId <= 0) { return; } layoutRevision = LayoutRevisionUtil.fetchByL_H_P(layoutSetBranchId, true, layout.getPlid()); if (layoutRevision == null) { return; } LayoutStagingHandler layoutStagingHandler = LayoutStagingUtil.getLayoutStagingHandler(layout); layoutStagingHandler.setLayoutRevision(layoutRevision); } Element layoutElement = layoutsElement.addElement("layout"); if (layoutRevision != null) { layoutElement.addAttribute( "layout-revision-id", String.valueOf(layoutRevision.getLayoutRevisionId())); layoutElement.addAttribute( "layout-branch-id", String.valueOf(layoutRevision.getLayoutBranchId())); layoutElement.addAttribute( "layout-branch-name", String.valueOf(layoutRevision.getLayoutBranch().getName())); } layoutElement.addAttribute("layout-uuid", layout.getUuid()); layoutElement.addAttribute("layout-id", String.valueOf(layout.getLayoutId())); long parentLayoutId = layout.getParentLayoutId(); if (parentLayoutId != LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) { Layout parentLayout = LayoutLocalServiceUtil.getLayout( layout.getGroupId(), layout.isPrivateLayout(), parentLayoutId); if (parentLayout != null) { layoutElement.addAttribute("parent-layout-uuid", parentLayout.getUuid()); } } boolean deleteLayout = MapUtil.getBoolean(portletDataContext.getParameterMap(), "delete_" + layout.getPlid()); if (deleteLayout) { layoutElement.addAttribute("delete", String.valueOf(true)); return; } portletDataContext.setPlid(layout.getPlid()); if (layout.isIconImage()) { Image image = ImageLocalServiceUtil.getImage(layout.getIconImageId()); if (image != null) { String iconPath = getLayoutIconPath(portletDataContext, layout, image); layoutElement.addElement("icon-image-path").addText(iconPath); portletDataContext.addZipEntry(iconPath, image.getTextObj()); } } _portletExporter.exportPortletData( portletDataContext, layoutConfigurationPortlet, layout, null, layoutElement); // Layout permissions if (exportPermissions) { _permissionExporter.exportLayoutPermissions( portletDataContext, layoutCache, portletDataContext.getCompanyId(), portletDataContext.getScopeGroupId(), layout, layoutElement, exportUserPermissions); } if (layout.isTypeArticle()) { exportJournalArticle(portletDataContext, layout, layoutElement); } else if (layout.isTypeLinkToLayout()) { UnicodeProperties typeSettingsProperties = layout.getTypeSettingsProperties(); long linkToLayoutId = GetterUtil.getLong( typeSettingsProperties.getProperty("linkToLayoutId", StringPool.BLANK)); if (linkToLayoutId > 0) { try { Layout linkedToLayout = LayoutLocalServiceUtil.getLayout( portletDataContext.getScopeGroupId(), layout.isPrivateLayout(), linkToLayoutId); exportLayout( portletDataContext, layoutConfigurationPortlet, layoutCache, portlets, portletIds, exportPermissions, exportUserPermissions, linkedToLayout, layoutsElement); } catch (NoSuchLayoutException nsle) { } } } else if (layout.isTypePortlet()) { for (Portlet portlet : portlets) { if (portlet.isScopeable() && layout.hasScopeGroup()) { String key = PortletPermissionUtil.getPrimaryKey(layout.getPlid(), portlet.getPortletId()); portletIds.put( key, new Object[] { portlet.getPortletId(), layout.getPlid(), layout.getScopeGroup().getGroupId(), StringPool.BLANK, layout.getUuid() }); } } LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType(); for (String portletId : layoutTypePortlet.getPortletIds()) { javax.portlet.PortletPreferences jxPreferences = PortletPreferencesFactoryUtil.getLayoutPortletSetup(layout, portletId); String scopeType = GetterUtil.getString(jxPreferences.getValue("lfrScopeType", null)); String scopeLayoutUuid = GetterUtil.getString(jxPreferences.getValue("lfrScopeLayoutUuid", null)); long scopeGroupId = portletDataContext.getScopeGroupId(); if (Validator.isNotNull(scopeType)) { Group scopeGroup = null; if (scopeType.equals("company")) { scopeGroup = GroupLocalServiceUtil.getCompanyGroup(layout.getCompanyId()); } else if (scopeType.equals("layout")) { Layout scopeLayout = null; scopeLayout = LayoutLocalServiceUtil.fetchLayoutByUuidAndGroupId( scopeLayoutUuid, portletDataContext.getGroupId()); if (scopeLayout == null) { continue; } scopeGroup = scopeLayout.getScopeGroup(); } else { throw new IllegalArgumentException("Scope type " + scopeType + " is invalid"); } if (scopeGroup != null) { scopeGroupId = scopeGroup.getGroupId(); } } String key = PortletPermissionUtil.getPrimaryKey(layout.getPlid(), portletId); portletIds.put( key, new Object[] {portletId, layout.getPlid(), scopeGroupId, scopeType, scopeLayoutUuid}); } } fixTypeSettings(layout); layoutElement.addAttribute("path", path); portletDataContext.addExpando(layoutElement, path, layout); portletDataContext.addZipEntry(path, layout); }