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.AssetRendererFactory;
028 import com.liferay.portlet.asset.model.BaseAssetRenderer;
029 import com.liferay.portlet.trash.util.TrashUtil;
030 import com.liferay.portlet.wiki.model.WikiPage;
031 import com.liferay.portlet.wiki.model.WikiPageConstants;
032 import com.liferay.portlet.wiki.service.WikiPageLocalServiceUtil;
033 import com.liferay.portlet.wiki.service.permission.WikiPagePermission;
034 import com.liferay.portlet.wiki.util.WikiUtil;
035
036 import java.util.Date;
037 import java.util.Locale;
038
039 import javax.portlet.PortletRequest;
040 import javax.portlet.PortletResponse;
041 import javax.portlet.PortletURL;
042 import javax.portlet.RenderRequest;
043 import javax.portlet.RenderResponse;
044 import javax.portlet.WindowState;
045
046
050 public class WikiPageAssetRenderer
051 extends BaseAssetRenderer implements TrashRenderer {
052
053 public static final String TYPE = "wiki_page";
054
055 public static long getClassPK(WikiPage page) {
056 if (!page.isApproved() && !page.isDraft() && !page.isPending() &&
057 !page.isInTrash() &&
058 (page.getVersion() != WikiPageConstants.VERSION_DEFAULT)) {
059
060 return page.getPageId();
061 }
062 else {
063 return page.getResourcePrimKey();
064 }
065 }
066
067 public WikiPageAssetRenderer(WikiPage page) {
068 _page = page;
069 }
070
071 @Override
072 public String getClassName() {
073 return WikiPage.class.getName();
074 }
075
076 @Override
077 public long getClassPK() {
078 return getClassPK(_page);
079 }
080
081 @Override
082 public String getDiscussionPath() {
083 if (PropsValues.WIKI_PAGE_COMMENTS_ENABLED) {
084 return "edit_page_discussion";
085 }
086 else {
087 return null;
088 }
089 }
090
091 @Override
092 public Date getDisplayDate() {
093 return _page.getModifiedDate();
094 }
095
096 @Override
097 public long getGroupId() {
098 return _page.getGroupId();
099 }
100
101 @Override
102 public String getPortletId() {
103 return PortletKeys.WIKI;
104 }
105
106 @Override
107 public String getSummary(
108 PortletRequest portletRequest, PortletResponse portletResponse) {
109
110 String content = _page.getContent();
111
112 try {
113 content = HtmlUtil.extractText(
114 WikiUtil.convert(_page, null, null, null));
115 }
116 catch (Exception e) {
117 }
118
119 return content;
120 }
121
122 @Override
123 public String getThumbnailPath(PortletRequest portletRequest)
124 throws Exception {
125
126 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
127 WebKeys.THEME_DISPLAY);
128
129 return themeDisplay.getPathThemeImages() +
130 "/file_system/large/wiki_page.png";
131 }
132
133 @Override
134 public String getTitle(Locale locale) {
135 if (!_page.isInTrash()) {
136 return _page.getTitle();
137 }
138
139 return TrashUtil.getOriginalTitle(_page.getTitle());
140 }
141
142 @Override
143 public String getType() {
144 return TYPE;
145 }
146
147 @Override
148 public PortletURL getURLEdit(
149 LiferayPortletRequest liferayPortletRequest,
150 LiferayPortletResponse liferayPortletResponse)
151 throws Exception {
152
153 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
154 getControlPanelPlid(liferayPortletRequest), PortletKeys.WIKI,
155 PortletRequest.RENDER_PHASE);
156
157 portletURL.setParameter("struts_action", "/wiki/edit_page");
158 portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
159 portletURL.setParameter("title", _page.getTitle());
160
161 return portletURL;
162 }
163
164 @Override
165 public PortletURL getURLExport(
166 LiferayPortletRequest liferayPortletRequest,
167 LiferayPortletResponse liferayPortletResponse) {
168
169 PortletURL exportPortletURL = liferayPortletResponse.createActionURL();
170
171 exportPortletURL.setParameter(
172 "struts_action", "/asset_publisher/export_wiki_page");
173 exportPortletURL.setParameter(
174 "nodeId", String.valueOf(_page.getNodeId()));
175 exportPortletURL.setParameter("title", _page.getTitle());
176
177 return exportPortletURL;
178 }
179
180 @Override
181 public PortletURL getURLView(
182 LiferayPortletResponse liferayPortletResponse,
183 WindowState windowState)
184 throws Exception {
185
186 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
187
188 PortletURL portletURL = assetRendererFactory.getURLView(
189 liferayPortletResponse, windowState);
190
191 portletURL.setParameter("struts_action", "/wiki/view");
192 portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
193 portletURL.setParameter("title", _page.getTitle());
194 portletURL.setWindowState(windowState);
195
196 return portletURL;
197 }
198
199 @Override
200 public PortletURL getURLViewDiffs(
201 LiferayPortletRequest liferayPortletRequest,
202 LiferayPortletResponse liferayPortletResponse)
203 throws Exception {
204
205 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
206 getControlPanelPlid(liferayPortletRequest), PortletKeys.WIKI,
207 PortletRequest.RENDER_PHASE);
208
209 WikiPage previousVersionPage =
210 WikiPageLocalServiceUtil.getPreviousVersionPage(_page);
211
212 if (previousVersionPage.getVersion() == _page.getVersion()) {
213 return null;
214 }
215
216 portletURL.setParameter("struts_action", "/wiki/compare_versions");
217 portletURL.setParameter("groupId", String.valueOf(_page.getGroupId()));
218 portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
219 portletURL.setParameter("title", _page.getTitle());
220 portletURL.setParameter(
221 "sourceVersion", String.valueOf(previousVersionPage.getVersion()));
222 portletURL.setParameter(
223 "targetVersion", String.valueOf(_page.getVersion()));
224
225 return portletURL;
226 }
227
228 @Override
229 public String getURLViewInContext(
230 LiferayPortletRequest liferayPortletRequest,
231 LiferayPortletResponse liferayPortletResponse,
232 String noSuchEntryRedirect) {
233
234 return getURLViewInContext(
235 liferayPortletRequest, noSuchEntryRedirect, "/wiki/find_page",
236 "pageResourcePrimKey", _page.getResourcePrimKey());
237 }
238
239 @Override
240 public long getUserId() {
241 return _page.getUserId();
242 }
243
244 @Override
245 public String getUserName() {
246 return _page.getUserName();
247 }
248
249 @Override
250 public String getUuid() {
251 return _page.getUuid();
252 }
253
254 public boolean hasDeletePermission(PermissionChecker permissionChecker) {
255 return WikiPagePermission.contains(
256 permissionChecker, _page, ActionKeys.DELETE);
257 }
258
259 @Override
260 public boolean hasEditPermission(PermissionChecker permissionChecker) {
261 return WikiPagePermission.contains(
262 permissionChecker, _page, ActionKeys.UPDATE);
263 }
264
265 @Override
266 public boolean hasViewPermission(PermissionChecker permissionChecker) {
267 return WikiPagePermission.contains(
268 permissionChecker, _page, ActionKeys.VIEW);
269 }
270
271 @Override
272 public boolean isConvertible() {
273 return true;
274 }
275
276 @Override
277 public boolean isPrintable() {
278 return true;
279 }
280
281 @Override
282 public String render(
283 RenderRequest renderRequest, RenderResponse renderResponse,
284 String template)
285 throws Exception {
286
287 if (template.equals(TEMPLATE_ABSTRACT) ||
288 template.equals(TEMPLATE_FULL_CONTENT)) {
289
290 renderRequest.setAttribute(WebKeys.WIKI_PAGE, _page);
291
292 return "/html/portlet/wiki/asset/" + template + ".jsp";
293 }
294 else {
295 return null;
296 }
297 }
298
299 @Override
300 protected String getIconPath(ThemeDisplay themeDisplay) {
301 return themeDisplay.getPathThemeImages() + "/common/page.png";
302 }
303
304 private final WikiPage _page;
305
306 }