Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
com.liferay.wiki.asset.WikiPageAssetRenderer Maven / Gradle / Ivy
/**
* 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.wiki.asset;
import com.liferay.asset.kernel.model.AssetRendererFactory;
import com.liferay.asset.kernel.model.BaseJSPAssetRenderer;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.module.configuration.ConfigurationProviderUtil;
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.security.permission.PermissionChecker;
import com.liferay.portal.kernel.service.GroupLocalServiceUtil;
import com.liferay.portal.kernel.settings.GroupServiceSettingsLocator;
import com.liferay.portal.kernel.theme.ThemeDisplay;
import com.liferay.portal.kernel.trash.TrashRenderer;
import com.liferay.portal.kernel.util.HtmlUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.trash.kernel.util.TrashUtil;
import com.liferay.wiki.configuration.WikiGroupServiceOverriddenConfiguration;
import com.liferay.wiki.constants.WikiConstants;
import com.liferay.wiki.constants.WikiPortletKeys;
import com.liferay.wiki.constants.WikiWebKeys;
import com.liferay.wiki.engine.impl.WikiEngineRenderer;
import com.liferay.wiki.model.WikiPage;
import com.liferay.wiki.model.WikiPageConstants;
import com.liferay.wiki.service.WikiPageLocalServiceUtil;
import com.liferay.wiki.service.permission.WikiPagePermissionChecker;
import java.util.Date;
import java.util.Locale;
import javax.portlet.PortletRequest;
import javax.portlet.PortletResponse;
import javax.portlet.PortletURL;
import javax.portlet.WindowState;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author Julio Camarero
* @author Sergio González
*/
public class WikiPageAssetRenderer
extends BaseJSPAssetRenderer implements TrashRenderer {
public static final String TYPE = "wiki_page";
public static long getClassPK(WikiPage page) {
if (!page.isApproved() && !page.isDraft() && !page.isPending() &&
!page.isInTrash() &&
(page.getVersion() != WikiPageConstants.VERSION_DEFAULT)) {
return page.getPageId();
}
return page.getResourcePrimKey();
}
public WikiPageAssetRenderer(
WikiPage page, WikiEngineRenderer wikiEngineRenderer) {
_page = page;
_wikiEngineRenderer = wikiEngineRenderer;
}
@Override
public WikiPage getAssetObject() {
return _page;
}
@Override
public String getClassName() {
return WikiPage.class.getName();
}
@Override
public long getClassPK() {
return getClassPK(_page);
}
@Override
public String getDiscussionPath() {
if (_wikiGroupServiceOverriddenConfiguration == null) {
try {
_wikiGroupServiceOverriddenConfiguration =
ConfigurationProviderUtil.getConfiguration(
WikiGroupServiceOverriddenConfiguration.class,
new GroupServiceSettingsLocator(
_page.getGroupId(), WikiConstants.SERVICE_NAME));
}
catch (Exception e) {
_log.error(e, e);
return null;
}
}
if (_wikiGroupServiceOverriddenConfiguration.pageCommentsEnabled()) {
return "edit_page_discussion";
}
return null;
}
/**
* @deprecated As of Judson (7.1.x), with no direct replacement
*/
@Deprecated
@Override
public Date getDisplayDate() {
return _page.getModifiedDate();
}
@Override
public long getGroupId() {
return _page.getGroupId();
}
@Override
public String getJspPath(HttpServletRequest request, String template) {
if (template.equals(TEMPLATE_ABSTRACT) ||
template.equals(TEMPLATE_FULL_CONTENT)) {
return "/wiki/asset/" + template + ".jsp";
}
return null;
}
@Override
public String getPortletId() {
return WikiPortletKeys.WIKI;
}
@Override
public int getStatus() {
return _page.getStatus();
}
@Override
public String getSummary(
PortletRequest portletRequest, PortletResponse portletResponse) {
String content = _page.getContent();
try {
content = HtmlUtil.extractText(
_wikiEngineRenderer.convert(_page, null, null, null));
}
catch (Exception e) {
}
return content;
}
@Override
public String getTitle(Locale locale) {
if (!_page.isInTrash()) {
return _page.getTitle();
}
return TrashUtil.getOriginalTitle(_page.getTitle());
}
@Override
public String getType() {
return TYPE;
}
@Override
public PortletURL getURLEdit(
LiferayPortletRequest liferayPortletRequest,
LiferayPortletResponse liferayPortletResponse)
throws Exception {
Group group = GroupLocalServiceUtil.fetchGroup(_page.getGroupId());
if (group.isCompany()) {
ThemeDisplay themeDisplay =
(ThemeDisplay)liferayPortletRequest.getAttribute(
WebKeys.THEME_DISPLAY);
group = themeDisplay.getScopeGroup();
}
PortletURL portletURL = PortalUtil.getControlPanelPortletURL(
liferayPortletRequest, group, WikiPortletKeys.WIKI, 0, 0,
PortletRequest.RENDER_PHASE);
portletURL.setParameter("mvcRenderCommandName", "/wiki/edit_page");
portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
portletURL.setParameter("title", _page.getTitle());
return portletURL;
}
@Override
public PortletURL getURLExport(
LiferayPortletRequest liferayPortletRequest,
LiferayPortletResponse liferayPortletResponse)
throws Exception {
PortletURL portletURL = PortalUtil.getControlPanelPortletURL(
liferayPortletRequest, WikiPortletKeys.WIKI,
PortletRequest.RENDER_PHASE);
portletURL.setParameter("mvcRenderCommandName", "/wiki/export_page");
portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
portletURL.setParameter("title", _page.getTitle());
return portletURL;
}
@Override
public String getURLView(
LiferayPortletResponse liferayPortletResponse,
WindowState windowState)
throws Exception {
AssetRendererFactory assetRendererFactory =
getAssetRendererFactory();
PortletURL portletURL = assetRendererFactory.getURLView(
liferayPortletResponse, windowState);
portletURL.setParameter("mvcRenderCommandName", "/wiki/view");
portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
portletURL.setParameter("title", _page.getTitle());
portletURL.setWindowState(windowState);
return portletURL.toString();
}
@Override
public PortletURL getURLViewDiffs(
LiferayPortletRequest liferayPortletRequest,
LiferayPortletResponse liferayPortletResponse)
throws Exception {
PortletURL portletURL = PortalUtil.getControlPanelPortletURL(
liferayPortletRequest, WikiPortletKeys.WIKI,
PortletRequest.RENDER_PHASE);
WikiPage previousVersionPage =
WikiPageLocalServiceUtil.getPreviousVersionPage(_page);
if (previousVersionPage.getVersion() == _page.getVersion()) {
return null;
}
portletURL.setParameter(
"mvcRenderCommandName", "/wiki/compare_versions");
portletURL.setParameter("groupId", String.valueOf(_page.getGroupId()));
portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
portletURL.setParameter("title", _page.getTitle());
portletURL.setParameter(
"sourceVersion", String.valueOf(previousVersionPage.getVersion()));
portletURL.setParameter(
"targetVersion", String.valueOf(_page.getVersion()));
return portletURL;
}
@Override
public String getURLViewInContext(
LiferayPortletRequest liferayPortletRequest,
LiferayPortletResponse liferayPortletResponse,
String noSuchEntryRedirect) {
return getURLViewInContext(
liferayPortletRequest, noSuchEntryRedirect, "/wiki/find_page",
"pageResourcePrimKey", _page.getResourcePrimKey());
}
@Override
public long getUserId() {
return _page.getUserId();
}
@Override
public String getUserName() {
return _page.getUserName();
}
@Override
public String getUuid() {
return _page.getUuid();
}
public boolean hasDeletePermission(PermissionChecker permissionChecker) {
return WikiPagePermissionChecker.contains(
permissionChecker, _page, ActionKeys.DELETE);
}
@Override
public boolean hasEditPermission(PermissionChecker permissionChecker) {
return WikiPagePermissionChecker.contains(
permissionChecker, _page, ActionKeys.UPDATE);
}
@Override
public boolean hasViewPermission(PermissionChecker permissionChecker) {
return WikiPagePermissionChecker.contains(
permissionChecker, _page, ActionKeys.VIEW);
}
@Override
public boolean include(
HttpServletRequest request, HttpServletResponse response,
String template)
throws Exception {
request.setAttribute(WikiWebKeys.WIKI_PAGE, _page);
return super.include(request, response, template);
}
@Override
public boolean isConvertible() {
return true;
}
@Override
public boolean isPrintable() {
return true;
}
private static final Log _log = LogFactoryUtil.getLog(
WikiPageAssetRenderer.class);
private final WikiPage _page;
private final WikiEngineRenderer _wikiEngineRenderer;
private WikiGroupServiceOverriddenConfiguration
_wikiGroupServiceOverriddenConfiguration;
}