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