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