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