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.util.HtmlUtil;
020 import com.liferay.portal.security.permission.ActionKeys;
021 import com.liferay.portal.security.permission.PermissionChecker;
022 import com.liferay.portal.theme.ThemeDisplay;
023 import com.liferay.portal.util.PortletKeys;
024 import com.liferay.portal.util.PropsValues;
025 import com.liferay.portal.util.WebKeys;
026 import com.liferay.portlet.asset.model.BaseAssetRenderer;
027 import com.liferay.portlet.wiki.model.WikiPage;
028 import com.liferay.portlet.wiki.model.WikiPageConstants;
029 import com.liferay.portlet.wiki.service.permission.WikiPagePermission;
030 import com.liferay.portlet.wiki.util.WikiUtil;
031
032 import java.util.Locale;
033
034 import javax.portlet.PortletRequest;
035 import javax.portlet.PortletURL;
036 import javax.portlet.RenderRequest;
037 import javax.portlet.RenderResponse;
038 import javax.portlet.WindowState;
039
040
044 public class WikiPageAssetRenderer extends BaseAssetRenderer {
045
046 public WikiPageAssetRenderer(WikiPage page) {
047 _page = page;
048 }
049
050 public long getClassPK() {
051 if (!_page.isApproved() &&
052 (_page.getVersion() != WikiPageConstants.VERSION_DEFAULT)) {
053
054 return _page.getPageId();
055 }
056 else {
057 return _page.getResourcePrimKey();
058 }
059 }
060
061 @Override
062 public String getDiscussionPath() {
063 if (PropsValues.WIKI_PAGE_COMMENTS_ENABLED) {
064 return "edit_page_discussion";
065 }
066 else {
067 return null;
068 }
069 }
070
071 public long getGroupId() {
072 return _page.getGroupId();
073 }
074
075 public String getSummary(Locale locale) {
076 String content = _page.getContent();
077
078 try {
079 content = HtmlUtil.extractText(
080 WikiUtil.convert(_page, null, null, null));
081 }
082 catch (Exception e) {
083 }
084
085 return content;
086 }
087
088 public String getTitle(Locale locale) {
089 return _page.getTitle();
090 }
091
092 @Override
093 public PortletURL getURLEdit(
094 LiferayPortletRequest liferayPortletRequest,
095 LiferayPortletResponse liferayPortletResponse)
096 throws Exception {
097
098 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
099 getControlPanelPlid(liferayPortletRequest), PortletKeys.WIKI,
100 PortletRequest.RENDER_PHASE);
101
102 portletURL.setParameter("struts_action", "/wiki/edit_page");
103 portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
104 portletURL.setParameter("title", _page.getTitle());
105
106 return portletURL;
107 }
108
109 @Override
110 public PortletURL getURLExport(
111 LiferayPortletRequest liferayPortletRequest,
112 LiferayPortletResponse liferayPortletResponse) {
113
114 PortletURL exportPortletURL = liferayPortletResponse.createActionURL();
115
116 exportPortletURL.setParameter(
117 "struts_action", "/asset_publisher/export_wiki_page");
118 exportPortletURL.setParameter(
119 "nodeId", String.valueOf(_page.getNodeId()));
120 exportPortletURL.setParameter("title", _page.getTitle());
121
122 return exportPortletURL;
123 }
124
125 @Override
126 public PortletURL getURLView(
127 LiferayPortletResponse liferayPortletResponse,
128 WindowState windowState)
129 throws Exception {
130
131 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
132 PortletKeys.WIKI, PortletRequest.RENDER_PHASE);
133
134 portletURL.setWindowState(windowState);
135
136 portletURL.setParameter("struts_action", "/wiki/view");
137 portletURL.setParameter("nodeId", String.valueOf(_page.getNodeId()));
138 portletURL.setParameter("title", _page.getTitle());
139
140 return portletURL;
141 }
142
143 @Override
144 public String getURLViewInContext(
145 LiferayPortletRequest liferayPortletRequest,
146 LiferayPortletResponse liferayPortletResponse,
147 String noSuchEntryRedirect) {
148
149 return getURLViewInContext(
150 liferayPortletRequest, noSuchEntryRedirect, "/wiki/find_page",
151 "pageResourcePrimKey", _page.getResourcePrimKey());
152 }
153
154 public long getUserId() {
155 return _page.getUserId();
156 }
157
158 public String getUuid() {
159 return _page.getUuid();
160 }
161
162 @Override
163 public boolean hasEditPermission(PermissionChecker permissionChecker) {
164 return WikiPagePermission.contains(
165 permissionChecker, _page, ActionKeys.UPDATE);
166 }
167
168 @Override
169 public boolean hasViewPermission(PermissionChecker permissionChecker) {
170 return WikiPagePermission.contains(
171 permissionChecker, _page, ActionKeys.VIEW);
172 }
173
174 @Override
175 public boolean isConvertible() {
176 return true;
177 }
178
179 @Override
180 public boolean isPrintable() {
181 return true;
182 }
183
184 public String render(
185 RenderRequest renderRequest, RenderResponse renderResponse,
186 String template)
187 throws Exception {
188
189 if (template.equals(TEMPLATE_ABSTRACT) ||
190 template.equals(TEMPLATE_FULL_CONTENT)) {
191
192 renderRequest.setAttribute(WebKeys.WIKI_PAGE, _page);
193
194 return "/html/portlet/wiki/asset/" + template + ".jsp";
195 }
196 else {
197 return null;
198 }
199 }
200
201 @Override
202 protected String getIconPath(ThemeDisplay themeDisplay) {
203 return themeDisplay.getPathThemeImages() + "/common/pages.png";
204 }
205
206 private WikiPage _page;
207
208 }