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 getUserName() {
159 return _page.getUserName();
160 }
161
162 public String getUuid() {
163 return _page.getUuid();
164 }
165
166 @Override
167 public boolean hasEditPermission(PermissionChecker permissionChecker) {
168 return WikiPagePermission.contains(
169 permissionChecker, _page, ActionKeys.UPDATE);
170 }
171
172 @Override
173 public boolean hasViewPermission(PermissionChecker permissionChecker) {
174 return WikiPagePermission.contains(
175 permissionChecker, _page, ActionKeys.VIEW);
176 }
177
178 @Override
179 public boolean isConvertible() {
180 return true;
181 }
182
183 @Override
184 public boolean isPrintable() {
185 return true;
186 }
187
188 public String render(
189 RenderRequest renderRequest, RenderResponse renderResponse,
190 String template)
191 throws Exception {
192
193 if (template.equals(TEMPLATE_ABSTRACT) ||
194 template.equals(TEMPLATE_FULL_CONTENT)) {
195
196 renderRequest.setAttribute(WebKeys.WIKI_PAGE, _page);
197
198 return "/html/portlet/wiki/asset/" + template + ".jsp";
199 }
200 else {
201 return null;
202 }
203 }
204
205 @Override
206 protected String getIconPath(ThemeDisplay themeDisplay) {
207 return themeDisplay.getPathThemeImages() + "/common/pages.png";
208 }
209
210 private WikiPage _page;
211
212 }