/** * 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.web.util; import com.liferay.asset.kernel.model.AssetEntry; import com.liferay.asset.kernel.model.AssetRenderer; import com.liferay.asset.kernel.model.AssetRendererFactory; import com.liferay.portal.kernel.portlet.LiferayPortletRequest; import com.liferay.portal.kernel.portlet.LiferayPortletResponse; import com.liferay.portal.kernel.theme.ThemeDisplay; import com.liferay.portal.kernel.util.HttpUtil; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.kernel.util.WebKeys; import java.util.Objects; import javax.portlet.PortletURL; /** * Provides utility methods to be used from Asset Publisher display templates. * This class is injected in the context of Asset Publisher display templates. * * @author Juan Fernández */ public class AssetPublisherHelper { public static String getAssetViewURL( LiferayPortletRequest liferayPortletRequest, LiferayPortletResponse liferayPortletResponse, AssetEntry assetEntry) { return getAssetViewURL( liferayPortletRequest, liferayPortletResponse, assetEntry, false); } public static String getAssetViewURL( LiferayPortletRequest liferayPortletRequest, LiferayPortletResponse liferayPortletResponse, AssetEntry assetEntry, boolean viewInContext) { AssetRenderer<?> assetRenderer = assetEntry.getAssetRenderer(); return getAssetViewURL( liferayPortletRequest, liferayPortletResponse, assetRenderer, assetEntry, viewInContext); } public static String getAssetViewURL( LiferayPortletRequest liferayPortletRequest, LiferayPortletResponse liferayPortletResponse, AssetRenderer<?> assetRenderer, AssetEntry assetEntry, boolean viewInContext) { PortletURL viewFullContentURL = liferayPortletResponse.createRenderURL(); viewFullContentURL.setParameter("mvcPath", "/view_content.jsp"); viewFullContentURL.setParameter( "assetEntryId", String.valueOf(assetEntry.getEntryId())); PortletURL redirectURL = liferayPortletResponse.createRenderURL(); int cur = ParamUtil.getInteger(liferayPortletRequest, "cur"); int delta = ParamUtil.getInteger(liferayPortletRequest, "delta"); boolean resetCur = ParamUtil.getBoolean( liferayPortletRequest, "resetCur"); redirectURL.setParameter("cur", String.valueOf(cur)); redirectURL.setParameter("delta", String.valueOf(delta)); redirectURL.setParameter("resetCur", String.valueOf(resetCur)); redirectURL.setParameter( "assetEntryId", String.valueOf(assetEntry.getEntryId())); viewFullContentURL.setParameter("redirect", redirectURL.toString()); AssetRendererFactory<?> assetRendererFactory = assetRenderer.getAssetRendererFactory(); viewFullContentURL.setParameter("type", assetRendererFactory.getType()); ThemeDisplay themeDisplay = (ThemeDisplay)liferayPortletRequest.getAttribute( WebKeys.THEME_DISPLAY); if (Validator.isNotNull(assetRenderer.getUrlTitle())) { if (assetRenderer.getGroupId() != themeDisplay.getScopeGroupId()) { viewFullContentURL.setParameter( "groupId", String.valueOf(assetRenderer.getGroupId())); } viewFullContentURL.setParameter( "urlTitle", assetRenderer.getUrlTitle()); } String viewURL = null; if (viewInContext) { try { String noSuchEntryRedirect = viewFullContentURL.toString(); viewURL = assetRenderer.getURLViewInContext( liferayPortletRequest, liferayPortletResponse, noSuchEntryRedirect); if (Validator.isNotNull(viewURL) && !Objects.equals(viewURL, noSuchEntryRedirect)) { viewURL = HttpUtil.setParameter( viewURL, "inheritRedirect", Boolean.TRUE); viewURL = HttpUtil.setParameter( viewURL, "redirect", PortalUtil.getCurrentURL(liferayPortletRequest)); } } catch (Exception e) { } } if (Validator.isNull(viewURL)) { viewURL = viewFullContentURL.toString(); } return viewURL; } }