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

com.liferay.template.web.internal.display.context.WidgetTemplatesTemplateDisplayContext Maven / Gradle / Ivy

There is a newer version: 1.0.95
Show 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.template.web.internal.display.context;

import com.liferay.dynamic.data.mapping.model.DDMTemplate;
import com.liferay.dynamic.data.mapping.service.DDMTemplateServiceUtil;
import com.liferay.dynamic.data.mapping.util.comparator.TemplateIdComparator;
import com.liferay.dynamic.data.mapping.util.comparator.TemplateModifiedDateComparator;
import com.liferay.frontend.taglib.clay.servlet.taglib.util.DropdownItem;
import com.liferay.petra.function.transform.TransformUtil;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.kernel.dao.search.EmptyOnClickRowChecker;
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.model.Group;
import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
import com.liferay.portal.kernel.portlet.url.builder.PortletURLBuilder;
import com.liferay.portal.kernel.security.permission.ActionKeys;
import com.liferay.portal.kernel.service.GroupLocalServiceUtil;
import com.liferay.portal.kernel.template.TemplateHandler;
import com.liferay.portal.kernel.template.TemplateHandlerRegistryUtil;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portlet.display.template.PortletDisplayTemplate;
import com.liferay.template.web.internal.security.permissions.resource.DDMTemplatePermission;
import com.liferay.template.web.internal.util.DDMTemplateActionDropdownItemsProvider;

import java.util.List;
import java.util.Objects;

/**
 * @author Lourdes Fernández Besada
 */
public class WidgetTemplatesTemplateDisplayContext
	extends BaseTemplateDisplayContext {

	public WidgetTemplatesTemplateDisplayContext(
		LiferayPortletRequest liferayPortletRequest,
		LiferayPortletResponse liferayPortletResponse) {

		super(liferayPortletRequest, liferayPortletResponse);

		_portletDisplayTemplate =
			(PortletDisplayTemplate)liferayPortletRequest.getAttribute(
				PortletDisplayTemplate.class.getName());
	}

	public long[] getClassNameIds() {
		if (_classNameIds != null) {
			return _classNameIds;
		}

		_classNameIds = TransformUtil.transformToLongArray(
			_portletDisplayTemplate.getPortletDisplayTemplateHandlers(),
			templateHandler -> PortalUtil.getClassNameId(
				templateHandler.getClassName()));

		return _classNameIds;
	}

	public List getDDMTemplateActionDropdownItems(
		DDMTemplate ddmTemplate) {

		DDMTemplateActionDropdownItemsProvider
			ddmTemplateActionDropdownItemsProvider =
				new DDMTemplateActionDropdownItemsProvider(
					isAddButtonEnabled(), ddmTemplate,
					PortalUtil.getHttpServletRequest(liferayPortletRequest),
					liferayPortletResponse, getTabs1());

		return ddmTemplateActionDropdownItemsProvider.getActionDropdownItems();
	}

	public String getDDMTemplateEditURL(DDMTemplate ddmTemplate)
		throws PortalException {

		if (!isStagingGroup() ||
			!DDMTemplatePermission.contains(
				themeDisplay.getPermissionChecker(), ddmTemplate,
				ActionKeys.UPDATE)) {

			return StringPool.BLANK;
		}

		return PortletURLBuilder.createRenderURL(
			liferayPortletResponse
		).setMVCRenderCommandName(
			"/template/edit_ddm_template"
		).setRedirect(
			themeDisplay.getURLCurrent()
		).setTabs1(
			getTabs1()
		).setParameter(
			"ddmTemplateId", ddmTemplate.getTemplateId()
		).buildString();
	}

	public String getDDMTemplateScope(DDMTemplate ddmTemplate)
		throws PortalException {

		Group group = GroupLocalServiceUtil.getGroup(ddmTemplate.getGroupId());

		return LanguageUtil.get(
			themeDisplay.getLocale(), group.getScopeLabel(themeDisplay));
	}

	public long getResourceClassNameId() {
		if (_resourceClassNameId != null) {
			return _resourceClassNameId;
		}

		_resourceClassNameId = PortalUtil.getClassNameId(
			PortletDisplayTemplate.class);

		return _resourceClassNameId;
	}

	public SearchContainer getTemplateSearchContainer() {
		if (_ddmTemplateSearchContainer != null) {
			return _ddmTemplateSearchContainer;
		}

		SearchContainer ddmTemplateSearchContainer =
			new SearchContainer<>(
				liferayPortletRequest, getPortletURL(), null,
				"there-are-no-templates");

		ddmTemplateSearchContainer.setOrderByCol(getOrderByCol());
		ddmTemplateSearchContainer.setOrderByComparator(
			_getTemplateOrderByComparator());
		ddmTemplateSearchContainer.setOrderByType(getOrderByType());

		if (Validator.isNull(getKeywords())) {
			ddmTemplateSearchContainer.setResultsAndTotal(
				() -> DDMTemplateServiceUtil.getTemplates(
					themeDisplay.getCompanyId(),
					new long[] {themeDisplay.getScopeGroupId()},
					getClassNameIds(), null, getResourceClassNameId(),
					ddmTemplateSearchContainer.getStart(),
					ddmTemplateSearchContainer.getEnd(),
					ddmTemplateSearchContainer.getOrderByComparator()),
				DDMTemplateServiceUtil.getTemplatesCount(
					themeDisplay.getCompanyId(),
					new long[] {themeDisplay.getScopeGroupId()},
					getClassNameIds(), null, getResourceClassNameId()));
		}
		else {
			ddmTemplateSearchContainer.setResultsAndTotal(
				() -> DDMTemplateServiceUtil.search(
					themeDisplay.getCompanyId(),
					new long[] {themeDisplay.getScopeGroupId()},
					getClassNameIds(), null, getResourceClassNameId(),
					getKeywords(), StringPool.BLANK, StringPool.BLANK,
					WorkflowConstants.STATUS_ANY,
					ddmTemplateSearchContainer.getStart(),
					ddmTemplateSearchContainer.getEnd(),
					ddmTemplateSearchContainer.getOrderByComparator()),
				DDMTemplateServiceUtil.searchCount(
					themeDisplay.getCompanyId(),
					new long[] {themeDisplay.getScopeGroupId()},
					getClassNameIds(), null, getResourceClassNameId(),
					getKeywords(), StringPool.BLANK, StringPool.BLANK,
					WorkflowConstants.STATUS_ANY));
		}

		ddmTemplateSearchContainer.setRowChecker(
			new EmptyOnClickRowChecker(liferayPortletResponse));

		_ddmTemplateSearchContainer = ddmTemplateSearchContainer;

		return _ddmTemplateSearchContainer;
	}

	public String getTemplateTypeLabel(long classNameId) {
		TemplateHandler templateHandler =
			TemplateHandlerRegistryUtil.getTemplateHandler(classNameId);

		return templateHandler.getName(themeDisplay.getLocale());
	}

	private OrderByComparator _getTemplateOrderByComparator() {
		OrderByComparator orderByComparator = null;

		boolean orderByAsc = false;

		if (Objects.equals(getOrderByType(), "asc")) {
			orderByAsc = true;
		}

		if (Objects.equals(getOrderByCol(), "id")) {
			orderByComparator = TemplateIdComparator.getInstance(orderByAsc);
		}
		else if (Objects.equals(getOrderByCol(), "modified-date")) {
			orderByComparator = new TemplateModifiedDateComparator(orderByAsc);
		}

		return orderByComparator;
	}

	private long[] _classNameIds;
	private SearchContainer _ddmTemplateSearchContainer;
	private final PortletDisplayTemplate _portletDisplayTemplate;
	private Long _resourceClassNameId;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy