All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.knowledge.base.web.internal.display.context.KBArticleConfigurationDisplayContext 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.item.selector.ItemSelector;
import com.liferay.item.selector.criteria.InfoItemItemSelectorReturnType;
import com.liferay.item.selector.criteria.info.item.criterion.InfoItemItemSelectorCriterion;
import com.liferay.knowledge.base.model.KBArticle;
import com.liferay.knowledge.base.service.KBArticleService;
import com.liferay.knowledge.base.web.internal.configuration.KBArticlePortletInstanceConfiguration;
import com.liferay.knowledge.base.web.internal.social.SocialBookmarksUtil;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.configuration.metatype.util.ParameterMapUtil;
import com.liferay.portal.configuration.module.configuration.ConfigurationProviderUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.LayoutConstants;
import com.liferay.portal.kernel.module.configuration.ConfigurationException;
import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
import com.liferay.portal.kernel.portlet.RequestBackedPortletURLFactoryUtil;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.util.HashMapBuilder;
import com.liferay.portal.kernel.util.Portal;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.taglib.portlet.ActionURLTag;

import jakarta.portlet.PortletRequest;
import jakarta.portlet.PortletURL;

import jakarta.servlet.http.HttpServletRequest;

import java.util.Map;

/**
 * @author Adolfo Pérez
 */
public class KBArticleConfigurationDisplayContext {

	public KBArticleConfigurationDisplayContext(
		HttpServletRequest httpServletRequest, ItemSelector itemSelector,
		KBArticleService kbArticleService,
		LiferayPortletResponse liferayPortletResponse, Portal portal) {

		_httpServletRequest = httpServletRequest;
		_itemSelector = itemSelector;
		_kbArticleService = kbArticleService;
		_liferayPortletResponse = liferayPortletResponse;
		_portal = portal;
	}

	public Map getComponentContext()
		throws ConfigurationException {

		return HashMapBuilder.put(
			"eventName", _getItemSelectedEventName()
		).put(
			"namespace", _liferayPortletResponse.getNamespace()
		).put(
			"selectKBObjectURL", _getSelectKBObjectURL()
		).build();
	}

	public String getComponentId() {
		return _liferayPortletResponse.getNamespace() +
			"PortletConfigurationComponent";
	}

	public String getConfigurationActionURL() throws Exception {
		PortletURL portletURL = ActionURLTag.doTag(
			PortletRequest.ACTION_PHASE, null, null, null, null, null, null,
			null, null, LayoutConstants.DEFAULT_PLID,
			LayoutConstants.DEFAULT_PLID, null, null, null, 0, 0, true, null,
			null, _httpServletRequest);

		return portletURL.toString();
	}

	public String getKBArticleTitle() throws PortalException {
		KBArticle kbArticle = _kbArticleService.fetchLatestKBArticle(
			getResourcePrimKey(), WorkflowConstants.STATUS_APPROVED);

		if (kbArticle == null) {
			return StringPool.BLANK;
		}

		return kbArticle.getTitle();
	}

	public long getResourcePrimKey() throws ConfigurationException {
		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.resourcePrimKey();
	}

	public String getSocialBookmarksDisplayStyle()
		throws ConfigurationException {

		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.
			socialBookmarksDisplayStyle();
	}

	public String getSocialBookmarksTypes() throws ConfigurationException {
		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return SocialBookmarksUtil.getSocialBookmarksTypes(
			kbArticlePortletInstanceConfiguration.socialBookmarksTypes());
	}

	public boolean isKBArticleAssetLinksEnabled()
		throws ConfigurationException {

		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.
			enableKBArticleAssetLinks();
	}

	public boolean isKBArticleDescriptionEnabled()
		throws ConfigurationException {

		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.
			enableKBArticleDescription();
	}

	public boolean isKBArticleHistoryEnabled() throws ConfigurationException {
		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.enableKBArticleHistory();
	}

	public boolean isKBArticlePrintEnabled() throws ConfigurationException {
		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.enableKBArticlePrint();
	}

	public boolean isKBArticleRatingsEnabled() throws ConfigurationException {
		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.enableKBArticleRatings();
	}

	public boolean isKBArticleSubscriptionsEnabled()
		throws ConfigurationException {

		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.
			enableKBArticleSubscriptions();
	}

	public boolean isKBArticleViewCountIncrementEnabled()
		throws ConfigurationException {

		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.
			enableKBArticleViewCountIncrement();
	}

	public boolean isShowKBArticleAssetEntries() throws ConfigurationException {
		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.
			showKBArticleAssetEntries();
	}

	public boolean isShowKBArticleAttachments() throws ConfigurationException {
		KBArticlePortletInstanceConfiguration
			kbArticlePortletInstanceConfiguration =
				_getKBArticlePortletInstanceConfiguration();

		return kbArticlePortletInstanceConfiguration.showKBArticleAttachments();
	}

	private String _getItemSelectedEventName() {
		return _liferayPortletResponse.getNamespace() + "selectKBObject";
	}

	private KBArticlePortletInstanceConfiguration
			_getKBArticlePortletInstanceConfiguration()
		throws ConfigurationException {

		if (_kbArticlePortletInstanceConfiguration != null) {
			return _kbArticlePortletInstanceConfiguration;
		}

		_kbArticlePortletInstanceConfiguration =
			ParameterMapUtil.setParameterMap(
				KBArticlePortletInstanceConfiguration.class,
				ConfigurationProviderUtil.getPortletInstanceConfiguration(
					KBArticlePortletInstanceConfiguration.class,
					(ThemeDisplay)_httpServletRequest.getAttribute(
						WebKeys.THEME_DISPLAY)),
				_httpServletRequest.getParameterMap(), "preferences--", "--");

		return _kbArticlePortletInstanceConfiguration;
	}

	private String _getSelectKBObjectURL() throws ConfigurationException {
		InfoItemItemSelectorCriterion infoItemItemSelectorCriterion =
			new InfoItemItemSelectorCriterion();

		infoItemItemSelectorCriterion.setItemType(KBArticle.class.getName());
		infoItemItemSelectorCriterion.setMultiSelection(false);
		infoItemItemSelectorCriterion.setDesiredItemSelectorReturnTypes(
			new InfoItemItemSelectorReturnType());

		PortletURL portletURL = _itemSelector.getItemSelectorURL(
			RequestBackedPortletURLFactoryUtil.create(_httpServletRequest),
			_getItemSelectedEventName(), infoItemItemSelectorCriterion);

		return portletURL.toString();
	}

	private final HttpServletRequest _httpServletRequest;
	private final ItemSelector _itemSelector;
	private KBArticlePortletInstanceConfiguration
		_kbArticlePortletInstanceConfiguration;
	private final KBArticleService _kbArticleService;
	private final LiferayPortletResponse _liferayPortletResponse;
	private final Portal _portal;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy