001
014
015 package com.liferay.portlet.wiki.asset;
016
017 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
018 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
019 import com.liferay.portal.kernel.trash.TrashRenderer;
020 import com.liferay.portal.kernel.util.HtmlUtil;
021 import com.liferay.portal.security.permission.ActionKeys;
022 import com.liferay.portal.security.permission.PermissionChecker;
023 import com.liferay.portal.theme.ThemeDisplay;
024 import com.liferay.portal.util.PortletKeys;
025 import com.liferay.portal.util.PropsValues;
026 import com.liferay.portal.util.WebKeys;
027 import com.liferay.portlet.asset.model.BaseAssetRenderer;
028 import com.liferay.portlet.trash.util.TrashUtil;
029 import com.liferay.portlet.wiki.model.WikiPage;
030 import com.liferay.portlet.wiki.model.WikiPageConstants;
031 import com.liferay.portlet.wiki.service.permission.WikiPagePermission;
032 import com.liferay.portlet.wiki.util.WikiUtil;
033
034 import java.util.Locale;
035
036 import javax.portlet.PortletRequest;
037 import javax.portlet.PortletURL;
038 import javax.portlet.RenderRequest;
039 import javax.portlet.RenderResponse;
040 import javax.portlet.WindowState;
041
042
046 public class WikiPageAssetRenderer
047 extends BaseAssetRenderer implements TrashRenderer {
048
049 public static final String TYPE = "wiki_page";
050
051 public static long getClassPK(WikiPage page) {
052 if (!page.isApproved() && !page.isDraft() && !page.isPending() &&
053 !page.isInTrash() &&
054 (page.getVersion() != WikiPageConstants.VERSION_DEFAULT)) {
055
056 return page.getPageId();
057 }
058 else {
059 return page.getResourcePrimKey();
060 }
061 }
062
063 public WikiPageAssetRenderer(WikiPage page) {
064 _page = page;
065 }
066
067 public String getAssetRendererFactoryClassName() {
068 return WikiPageAssetRendererFactory.CLASS_NAME;
069 }
070
071 public long getClassPK() {
072 return getClassPK(_page);
073 }
074
075 @Override
076 public String getDiscussionPath() {
077 if (PropsValues.WIKI_PAGE_COMMENTS_ENABLED) {
078 return "edit_page_discussion";
079 }
080 else {
081 return null;
082 }
083 }
084
085 public long getGroupId() {
086 return _page.getGroupId();
087 }
088
089 public String getPortletId() {
090 return PortletKeys.WIKI;
091 }
092
093 public String getSummary(Locale locale) {
094 String content = _page.getContent();
095
096 try {
097 content = HtmlUtil.extractText(
098 WikiUtil.convert(_page, null, null, null));
099 }
100 catch (Exception e) {
101 }
102
103 return content;
104 }
105
106 public String getTitle(Locale locale) {
107 if (!_page.isInTrash()) {
108 return _page.getTitle();
109 }
110
111 return TrashUtil.stripTrashNamespace(_page.getTitle());
112 }
113
114 public String getType() {
115 return TYPE;
116 }
117
118 @Override
119 public PortletURL getURLEdit(
120 LiferayPortletRequest liferayPortletRequest,
121 LiferayPortletResponse liferayPortletResponse)
122 throws Exception {
123
124 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
125 getControlPanelPlid(liferayPortletRequest), PortletKeys.WIKI,
126 PortletRequest.RENDER_PHASE);
127
128 portletURL.setParameter("struts_action", "/wiki/edit_page");
129 portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
130 portletURL.setParameter("title", _page.getTitle());
131
132 return portletURL;
133 }
134
135 @Override
136 public PortletURL getURLExport(
137 LiferayPortletRequest liferayPortletRequest,
138 LiferayPortletResponse liferayPortletResponse) {
139
140 PortletURL exportPortletURL = liferayPortletResponse.createActionURL();
141
142 exportPortletURL.setParameter(
143 "struts_action", "/asset_publisher/export_wiki_page");
144 exportPortletURL.setParameter(
145 "nodeId", String.valueOf(_page.getNodeId()));
146 exportPortletURL.setParameter("title", _page.getTitle());
147
148 return exportPortletURL;
149 }
150
151 @Override
152 public PortletURL getURLView(
153 LiferayPortletResponse liferayPortletResponse,
154 WindowState windowState)
155 throws Exception {
156
157 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
158 PortletKeys.WIKI, PortletRequest.RENDER_PHASE);
159
160 portletURL.setWindowState(windowState);
161
162 portletURL.setParameter("struts_action", "/wiki/view");
163 portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
164 portletURL.setParameter("title", _page.getTitle());
165
166 return portletURL;
167 }
168
169 @Override
170 public String getURLViewInContext(
171 LiferayPortletRequest liferayPortletRequest,
172 LiferayPortletResponse liferayPortletResponse,
173 String noSuchEntryRedirect) {
174
175 return getURLViewInContext(
176 liferayPortletRequest, noSuchEntryRedirect, "/wiki/find_page",
177 "pageResourcePrimKey", _page.getResourcePrimKey());
178 }
179
180 public long getUserId() {
181 return _page.getUserId();
182 }
183
184 public String getUserName() {
185 return _page.getUserName();
186 }
187
188 public String getUuid() {
189 return _page.getUuid();
190 }
191
192 public boolean hasDeletePermission(PermissionChecker permissionChecker) {
193 return WikiPagePermission.contains(
194 permissionChecker, _page, ActionKeys.DELETE);
195 }
196
197 @Override
198 public boolean hasEditPermission(PermissionChecker permissionChecker) {
199 return WikiPagePermission.contains(
200 permissionChecker, _page, ActionKeys.UPDATE);
201 }
202
203 @Override
204 public boolean hasViewPermission(PermissionChecker permissionChecker) {
205 return WikiPagePermission.contains(
206 permissionChecker, _page, ActionKeys.VIEW);
207 }
208
209 @Override
210 public boolean isConvertible() {
211 return true;
212 }
213
214 @Override
215 public boolean isPrintable() {
216 return true;
217 }
218
219 public String render(
220 RenderRequest renderRequest, RenderResponse renderResponse,
221 String template)
222 throws Exception {
223
224 if (template.equals(TEMPLATE_ABSTRACT) ||
225 template.equals(TEMPLATE_FULL_CONTENT)) {
226
227 renderRequest.setAttribute(WebKeys.WIKI_PAGE, _page);
228
229 return "/html/portlet/wiki/asset/" + template + ".jsp";
230 }
231 else {
232 return null;
233 }
234 }
235
236 @Override
237 protected String getIconPath(ThemeDisplay themeDisplay) {
238 return themeDisplay.getPathThemeImages() + "/common/page.png";
239 }
240
241 private WikiPage _page;
242
243 }