001
014
015 package com.liferay.portlet.wiki.asset;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
019 import com.liferay.portal.kernel.portlet.LiferayPortletURL;
020 import com.liferay.portal.security.permission.PermissionChecker;
021 import com.liferay.portal.theme.ThemeDisplay;
022 import com.liferay.portal.util.PortletKeys;
023 import com.liferay.portlet.asset.model.AssetRenderer;
024 import com.liferay.portlet.asset.model.BaseAssetRendererFactory;
025 import com.liferay.portlet.wiki.model.WikiPage;
026 import com.liferay.portlet.wiki.model.WikiPageResource;
027 import com.liferay.portlet.wiki.service.WikiPageLocalServiceUtil;
028 import com.liferay.portlet.wiki.service.WikiPageResourceLocalServiceUtil;
029 import com.liferay.portlet.wiki.service.permission.WikiPagePermission;
030
031 import javax.portlet.PortletRequest;
032 import javax.portlet.PortletURL;
033 import javax.portlet.WindowState;
034 import javax.portlet.WindowStateException;
035
036
043 public class WikiPageAssetRendererFactory extends BaseAssetRendererFactory {
044
045 public static final String TYPE = "wiki";
046
047 public WikiPageAssetRendererFactory() {
048 setLinkable(true);
049 }
050
051 @Override
052 public AssetRenderer getAssetRenderer(long classPK, int type)
053 throws PortalException {
054
055 WikiPage page = WikiPageLocalServiceUtil.fetchWikiPage(classPK);
056
057 if (page == null) {
058 if (type == TYPE_LATEST_APPROVED) {
059 page = WikiPageLocalServiceUtil.getPage(classPK);
060 }
061 else {
062 WikiPageResource pageResource =
063 WikiPageResourceLocalServiceUtil.getPageResource(classPK);
064
065 page = WikiPageLocalServiceUtil.getPage(
066 pageResource.getNodeId(), pageResource.getTitle(), null);
067 }
068 }
069
070 WikiPageAssetRenderer wikiPageAssetRenderer = new WikiPageAssetRenderer(
071 page);
072
073 wikiPageAssetRenderer.setAssetRendererType(type);
074
075 return wikiPageAssetRenderer;
076 }
077
078 @Override
079 public String getClassName() {
080 return WikiPage.class.getName();
081 }
082
083 @Override
084 public String getIconCssClass() {
085 return "icon-file-alt";
086 }
087
088 @Override
089 public String getType() {
090 return TYPE;
091 }
092
093 @Override
094 public PortletURL getURLView(
095 LiferayPortletResponse liferayPortletResponse,
096 WindowState windowState) {
097
098 LiferayPortletURL liferayPortletURL =
099 liferayPortletResponse.createLiferayPortletURL(
100 PortletKeys.WIKI, PortletRequest.RENDER_PHASE);
101
102 try {
103 liferayPortletURL.setWindowState(windowState);
104 }
105 catch (WindowStateException wse) {
106 }
107
108 return liferayPortletURL;
109 }
110
111 @Override
112 public boolean hasPermission(
113 PermissionChecker permissionChecker, long classPK, String actionId)
114 throws Exception {
115
116 return WikiPagePermission.contains(
117 permissionChecker, classPK, actionId);
118 }
119
120 @Override
121 protected String getIconPath(ThemeDisplay themeDisplay) {
122 return themeDisplay.getPathThemeImages() + "/common/pages.png";
123 }
124
125 }