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