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