A continuación esta el codigo que nos permite crear una comunidad a partir de una comunidad existente,
Obtener comunidad template
Group templateGroup = GroupLocalServiceUtil.getGroupByFriendlyUrl("/template");
Crear una comunidad
String name = ParamUtil.getString(actionRequest, "name"); String description = ParamUtil.getString(actionRequest, "description"); String friendlyURL = ParamUtil.getString(actionRequest, "friendlyURL"); Group newGroup = GroupServiceUtil.addGroup(name, description, GroupImpl.TYPE_COMMUNITY_PRIVATE, StringPool.BLANK, true);
Copiar la configuración del LayoutSet
LayoutSet publicLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet(templateGroup.getGroupId(), false); LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(), false, publicLayoutSet.getThemeId(), publicLayoutSet .getColorSchemeId(), publicLayoutSet.getCss(), false); LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(), false, publicLayoutSet.getWapThemeId(), publicLayoutSet .getWapColorSchemeId(), StringPool.BLANK, true); LayoutSet privateLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet(templateGroup.getGroupId(), false); LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(), false, privateLayoutSet.getThemeId(), privateLayoutSet .getColorSchemeId(), privateLayoutSet.getCss(), false); LayoutSetServiceUtil.updateLookAndFeel(newGroup.getGroupId(), false, privateLayoutSet.getWapThemeId(), privateLayoutSet .getWapColorSchemeId(), StringPool.BLANK, true);
Definir que copiar
Map<String, String[]>; parameterMap = new HashMap<String, String[]>(); parameterMap.put(PortletDataHandlerKeys.PERMISSIONS, new String[] { Boolean.TRUE.toString() }); parameterMap.put(PortletDataHandlerKeys.USER_PERMISSIONS, new String[] { Boolean.TRUE.toString() }); parameterMap.put(PortletDataHandlerKeys.PORTLET_DATA, new String[] { Boolean.TRUE.toString() }); parameterMap.put(PortletDataHandlerKeys.PORTLET_SETUP, new String[] { Boolean.TRUE.toString() }); parameterMap.put(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS, new String[] { Boolean.TRUE.toString() }); parameterMap.put(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES, new String[] { Boolean.TRUE.toString() }); parameterMap.put(PortletDataHandlerKeys.THEME, new String[] { Boolean.TRUE.toString() });
Exportar datos de la comunidad template
byte[] publicOriginalGroup = LayoutServiceUtil.exportLayouts( templateGroupId, false, parameterMap, null, null); byte[] privateOriginalGroup = LayoutServiceUtil.exportLayouts( templateGroupId, true, parameterMap, null, null);
Importar datos a la nueva comunidad
LayoutServiceUtil.importLayouts(newGroup.getGroupId(), false, parameterMap, publicOriginalGroup); LayoutServiceUtil.importLayouts(newGroup.getGroupId(), true, parameterMap, privateOriginalGroup);

