/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.asset.publisher.layout.prototype.internal.instance.lifecycle; import com.liferay.asset.categories.navigation.web.constants.AssetCategoriesNavigationPortletKeys; import com.liferay.asset.publisher.web.constants.AssetPublisherPortletKeys; import com.liferay.asset.tags.navigation.web.constants.AssetTagsNavigationPortletKeys; import com.liferay.portal.instance.lifecycle.BasePortalInstanceLifecycleListener; import com.liferay.portal.instance.lifecycle.PortalInstanceLifecycleListener; import com.liferay.portal.kernel.dao.orm.QueryUtil; import com.liferay.portal.kernel.model.Company; import com.liferay.portal.kernel.model.Layout; import com.liferay.portal.kernel.model.LayoutPrototype; import com.liferay.portal.kernel.model.LayoutTypePortletConstants; import com.liferay.portal.kernel.model.Portlet; import com.liferay.portal.kernel.module.framework.ModuleServiceLifecycle; import com.liferay.portal.kernel.service.LayoutLocalService; import com.liferay.portal.kernel.service.LayoutPrototypeLocalService; import com.liferay.portal.kernel.service.UserLocalService; import com.liferay.portal.kernel.util.AggregateResourceBundleLoader; import com.liferay.portal.kernel.util.DefaultLayoutPrototypesUtil; import com.liferay.portal.kernel.util.ResourceBundleLoader; import com.liferay.portal.kernel.util.ResourceBundleUtil; import com.liferay.portal.kernel.util.UnicodeProperties; import com.liferay.portal.language.LanguageResources; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * Provides the implementation of <code>PortalInstanceLifecycleListener</code> * (in the <code>com.liferay.portal.instance.lifecycle</code> module), which * adds a default layout prototype for the content display page when a new * portal instance is registered. * * @author Juergen Kappler */ @Component(immediate = true, service = PortalInstanceLifecycleListener.class) public class AddLayoutPrototypePortalInstanceLifecycleListener extends BasePortalInstanceLifecycleListener { @Override public void portalInstanceRegistered(Company company) throws Exception { long defaultUserId = _userLocalService.getDefaultUserId( company.getCompanyId()); List<LayoutPrototype> layoutPrototypes = _layoutPrototypeLocalService.search( company.getCompanyId(), null, QueryUtil.ALL_POS, QueryUtil.ALL_POS, null); addWebContentPage( company.getCompanyId(), defaultUserId, layoutPrototypes); } protected void addWebContentPage( long companyId, long defaultUserId, List<LayoutPrototype> layoutPrototypes) throws Exception { ResourceBundleLoader resourceBundleLoader = new AggregateResourceBundleLoader( ResourceBundleUtil.getResourceBundleLoader( "content.Language", getClassLoader()), LanguageResources.RESOURCE_BUNDLE_LOADER); Map<Locale, String> nameMap = ResourceBundleUtil.getLocalizationMap( resourceBundleLoader, "layout-prototype-web-content-title"); Map<Locale, String> descriptionMap = ResourceBundleUtil.getLocalizationMap( resourceBundleLoader, "layout-prototype-web-content-description"); Layout layout = DefaultLayoutPrototypesUtil.addLayoutPrototype( companyId, defaultUserId, nameMap, descriptionMap, "2_columns_ii", layoutPrototypes); if (layout == null) { return; } DefaultLayoutPrototypesUtil.addPortletId( layout, AssetTagsNavigationPortletKeys.ASSET_TAGS_NAVIGATION, "column-1"); DefaultLayoutPrototypesUtil.addPortletId( layout, AssetCategoriesNavigationPortletKeys.ASSET_CATEGORIES_NAVIGATION, "column-1"); String portletId = DefaultLayoutPrototypesUtil.addPortletId( layout, AssetPublisherPortletKeys.ASSET_PUBLISHER, "column-2"); Map<String, String> preferences = new HashMap<>(); preferences.put("showOnlyLayoutAssets", Boolean.TRUE.toString()); DefaultLayoutPrototypesUtil.updatePortletSetup( layout, portletId, preferences); UnicodeProperties typeSettingsProperties = layout.getTypeSettingsProperties(); typeSettingsProperties.setProperty( LayoutTypePortletConstants.DEFAULT_ASSET_PUBLISHER_PORTLET_ID, portletId); _layoutLocalService.updateLayout( layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(), layout.getTypeSettings()); } @Reference( target = "(javax.portlet.name=" + AssetCategoriesNavigationPortletKeys.ASSET_CATEGORIES_NAVIGATION + ")", unbind = "-" ) protected void setAssetCategoriesNavigationPortlet(Portlet portlet) { } @Reference( target = "(javax.portlet.name=" + AssetPublisherPortletKeys.ASSET_PUBLISHER + ")", unbind = "-" ) protected void setAssetPublisherPortlet(Portlet portlet) { } @Reference( target = "(javax.portlet.name=" + AssetTagsNavigationPortletKeys.ASSET_TAGS_NAVIGATION + ")", unbind = "-" ) protected void setAssetTagsNavigationPortlet(Portlet portlet) { } @Reference(unbind = "-") protected void setLayoutLocalService( LayoutLocalService layoutLocalService) { _layoutLocalService = layoutLocalService; } @Reference(unbind = "-") protected void setLayoutPrototypeLocalService( LayoutPrototypeLocalService layoutPrototypeLocalService) { _layoutPrototypeLocalService = layoutPrototypeLocalService; } @Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED, unbind = "-") protected void setModuleServiceLifecycle( ModuleServiceLifecycle moduleServiceLifecycle) { } @Reference(unbind = "-") protected void setUserLocalService(UserLocalService userLocalService) { _userLocalService = userLocalService; } private LayoutLocalService _layoutLocalService; private LayoutPrototypeLocalService _layoutPrototypeLocalService; private UserLocalService _userLocalService; }