
com.liferay.knowledge.base.web.internal.display.context.KBSelectParentDisplayContext Maven / Gradle / Ivy
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.knowledge.base.web.internal.display.context;
import com.liferay.knowledge.base.constants.KBFolderConstants;
import com.liferay.knowledge.base.model.KBArticle;
import com.liferay.knowledge.base.model.KBFolder;
import com.liferay.knowledge.base.service.KBArticleLocalServiceUtil;
import com.liferay.knowledge.base.service.KBArticleServiceUtil;
import com.liferay.knowledge.base.service.KBFolderLocalServiceUtil;
import com.liferay.knowledge.base.service.KBFolderServiceUtil;
import com.liferay.knowledge.base.util.comparator.KBObjectsTitleComparator;
import com.liferay.knowledge.base.web.internal.constants.KBWebKeys;
import com.liferay.knowledge.base.web.internal.security.permission.resource.KBArticlePermission;
import com.liferay.knowledge.base.web.internal.security.permission.resource.KBFolderPermission;
import com.liferay.portal.kernel.dao.search.SearchContainer;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.language.LanguageUtil;
import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
import com.liferay.portal.kernel.portlet.PortletURLUtil;
import com.liferay.portal.kernel.portlet.url.builder.PortletURLBuilder;
import com.liferay.portal.kernel.security.permission.ActionKeys;
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 com.liferay.portal.kernel.workflow.WorkflowConstants;
import jakarta.portlet.PortletURL;
import jakarta.portlet.RenderRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.ArrayList;
/**
* @author Sergio González
*/
public class KBSelectParentDisplayContext {
public KBSelectParentDisplayContext(
HttpServletRequest httpServletRequest,
LiferayPortletRequest liferayPortletRequest,
LiferayPortletResponse liferayPortletResponse,
RenderRequest renderRequest)
throws PortalException {
_httpServletRequest = httpServletRequest;
_liferayPortletRequest = liferayPortletRequest;
_liferayPortletResponse = liferayPortletResponse;
_renderRequest = renderRequest;
_themeDisplay = (ThemeDisplay)httpServletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
_initParentData();
}
public long getParentResourceClassNameId() {
return _parentResourceClassNameId;
}
public long getParentResourcePrimKey() {
return _parentResourcePrimKey;
}
public String getParentTitle() throws PortalException {
long resourcePrimKey = getParentResourcePrimKey();
if (resourcePrimKey == KBFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
return LanguageUtil.get(_httpServletRequest, "home");
}
else if (getParentResourceClassNameId() == PortalUtil.getClassNameId(
KBFolderConstants.getClassName())) {
KBFolder kbFolder = KBFolderServiceUtil.getKBFolder(
resourcePrimKey);
return kbFolder.getName();
}
KBArticle kbArticle = KBArticleServiceUtil.getLatestKBArticle(
resourcePrimKey, WorkflowConstants.STATUS_APPROVED);
return kbArticle.getTitle();
}
public long getResourceClassNameId() {
if (_resourceClassNameId != null) {
return _resourceClassNameId;
}
_resourceClassNameId = ParamUtil.getLong(
_httpServletRequest, "resourceClassNameId");
return _resourceClassNameId;
}
public SearchContainer> getSearchContainer() throws PortalException {
if (_searchContainer != null) {
return _searchContainer;
}
_searchContainer = new SearchContainer(
_renderRequest, null, null, SearchContainer.DEFAULT_CUR_PARAM,
SearchContainer.DEFAULT_DELTA,
PortletURLUtil.getCurrent(
_liferayPortletRequest, _liferayPortletResponse),
null, "there-are-no-entries");
if (isKBFolderView()) {
_searchContainer.setResultsAndTotal(
() -> new ArrayList<>(
KBFolderServiceUtil.getKBFolders(
_themeDisplay.getScopeGroupId(),
getParentResourcePrimKey(), _searchContainer.getStart(),
_searchContainer.getEnd())),
KBFolderServiceUtil.getKBFoldersCount(
_themeDisplay.getScopeGroupId(),
getParentResourcePrimKey()));
}
else {
_searchContainer.setResultsAndTotal(
() -> new ArrayList<>(
KBFolderServiceUtil.getKBFoldersAndKBArticles(
_themeDisplay.getScopeGroupId(),
getParentResourcePrimKey(), getTargetStatus(),
_searchContainer.getStart(), _searchContainer.getEnd(),
new KBObjectsTitleComparator
© 2015 - 2025 Weber Informatics LLC | Privacy Policy