/**
* 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.layout.admin.web.internal.display.context;
import com.liferay.application.list.GroupProvider;
import com.liferay.application.list.constants.ApplicationListWebKeys;
import com.liferay.exportimport.kernel.staging.StagingUtil;
import com.liferay.layout.admin.web.internal.constants.LayoutAdminPortletKeys;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.model.Layout;
import com.liferay.portal.kernel.model.LayoutConstants;
import com.liferay.portal.kernel.model.LayoutSet;
import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.service.LayoutLocalServiceUtil;
import com.liferay.portal.kernel.service.LayoutSetLocalServiceUtil;
import com.liferay.portal.kernel.service.permission.GroupPermissionUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.WebKeys;
import javax.portlet.PortletRequest;
import javax.portlet.PortletURL;
/**
* @author Julio Camarero
*/
public class BaseLayoutDisplayContext {
public BaseLayoutDisplayContext(
LiferayPortletRequest liferayPortletRequest,
LiferayPortletResponse liferayPortletResponse)
throws PortalException {
this.liferayPortletRequest = liferayPortletRequest;
this.liferayPortletResponse = liferayPortletResponse;
groupProvider = (GroupProvider)liferayPortletRequest.getAttribute(
ApplicationListWebKeys.GROUP_PROVIDER);
themeDisplay = (ThemeDisplay)liferayPortletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
}
public PortletURL getAddLayoutURL(long selPlid, Boolean privateLayout) {
PortletURL addLayoutURL = PortalUtil.getControlPanelPortletURL(
liferayPortletRequest, LayoutAdminPortletKeys.GROUP_PAGES,
PortletRequest.RENDER_PHASE);
addLayoutURL.setParameter("mvcPath", "/add_layout.jsp");
if (selPlid >= LayoutConstants.DEFAULT_PLID) {
addLayoutURL.setParameter("selPlid", String.valueOf(selPlid));
}
addLayoutURL.setParameter("groupId", String.valueOf(getSelGroupId()));
if (privateLayout != null) {
addLayoutURL.setParameter(
"privateLayout", String.valueOf(privateLayout));
}
return addLayoutURL;
}
public PortletURL getEditLayoutURL(long selPlid, Boolean privateLayout) {
PortletURL editLayoutURL = PortalUtil.getControlPanelPortletURL(
liferayPortletRequest, LayoutAdminPortletKeys.GROUP_PAGES,
PortletRequest.RENDER_PHASE);
if (selPlid >= LayoutConstants.DEFAULT_PLID) {
editLayoutURL.setParameter("selPlid", String.valueOf(selPlid));
}
if (privateLayout != null) {
editLayoutURL.setParameter(
"privateLayout", String.valueOf(privateLayout));
}
Group selGroup = getSelGroup();
editLayoutURL.setParameter(
"groupId", String.valueOf(selGroup.getGroupId()));
return editLayoutURL;
}
public Long getLayoutId() {
if (_layoutId != null) {
return _layoutId;
}
_layoutId = LayoutConstants.DEFAULT_PARENT_LAYOUT_ID;
Layout selLayout = getSelLayout();
if (selLayout != null) {
_layoutId = selLayout.getLayoutId();
}
return _layoutId;
}
public String getRootNodeName() {
if (_rootNodeName != null) {
return _rootNodeName;
}
_rootNodeName = getRootNodeName(isPrivateLayout());
return _rootNodeName;
}
public String getRootNodeName(boolean privateLayout) {
Group liveGroup = getLiveGroup();
return liveGroup.getLayoutRootNodeName(
privateLayout, themeDisplay.getLocale());
}
public long getSelGroupId() {
Group selGroup = getSelGroup();
if (selGroup != null) {
return selGroup.getGroupId();
}
return 0;
}
public Layout getSelLayout() {
if (_selLayout != null) {
return _selLayout;
}
if (getSelPlid() != LayoutConstants.DEFAULT_PLID) {
_selLayout = LayoutLocalServiceUtil.fetchLayout(getSelPlid());
}
return _selLayout;
}
public LayoutSet getSelLayoutSet() throws PortalException {
if (_selLayoutSet != null) {
return _selLayoutSet;
}
Group group = getStagingGroup();
if (group == null) {
group = getLiveGroup();
}
_selLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet(
group.getGroupId(), isPrivateLayout());
return _selLayoutSet;
}
public Long getSelPlid() {
if (_selPlid != null) {
return _selPlid;
}
_selPlid = ParamUtil.getLong(
liferayPortletRequest, "selPlid", LayoutConstants.DEFAULT_PLID);
return _selPlid;
}
public boolean isPrivateLayout() {
if (_privateLayout != null) {
return _privateLayout;
}
Group selGroup = getSelGroup();
if (selGroup.isLayoutSetPrototype() ||
selGroup.isLayoutSetPrototype()) {
_privateLayout = true;
return _privateLayout;
}
Layout selLayout = getSelLayout();
if (getSelLayout() != null) {
_privateLayout = selLayout.isPrivateLayout();
return _privateLayout;
}
Layout layout = themeDisplay.getLayout();
if (!layout.isTypeControlPanel()) {
_privateLayout = layout.isPrivateLayout();
return _privateLayout;
}
_privateLayout = ParamUtil.getBoolean(
liferayPortletRequest, "privateLayout");
return _privateLayout;
}
public boolean isShowAddRootLayoutButton() throws PortalException {
return GroupPermissionUtil.contains(
themeDisplay.getPermissionChecker(), getSelGroup(),
ActionKeys.ADD_LAYOUT);
}
protected Group getLiveGroup() {
if (_liveGroup != null) {
return _liveGroup;
}
_liveGroup = StagingUtil.getLiveGroup(getSelGroupId());
if (_liveGroup == null) {
_liveGroup = getSelGroup();
}
return _liveGroup;
}
protected Group getSelGroup() {
if (_selGroup != null) {
return _selGroup;
}
_selGroup = groupProvider.getGroup(
PortalUtil.getHttpServletRequest(liferayPortletRequest));
return _selGroup;
}
protected Group getStagingGroup() {
if (_stagingGroup != null) {
return _stagingGroup;
}
_stagingGroup = StagingUtil.getStagingGroup(getSelGroupId());
if (_stagingGroup == null) {
_stagingGroup = getSelGroup();
}
return _stagingGroup;
}
protected final GroupProvider groupProvider;
protected final LiferayPortletRequest liferayPortletRequest;
protected final LiferayPortletResponse liferayPortletResponse;
protected final ThemeDisplay themeDisplay;
private Long _layoutId;
private Group _liveGroup;
private Boolean _privateLayout;
private String _rootNodeName;
private Group _selGroup;
private Layout _selLayout;
private LayoutSet _selLayoutSet;
private Long _selPlid;
private Group _stagingGroup;
}