001
014
015 package com.liferay.portlet.blogs.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.StringUtil;
021 import com.liferay.portal.kernel.util.Validator;
022 import com.liferay.portal.security.permission.ActionKeys;
023 import com.liferay.portal.security.permission.PermissionChecker;
024 import com.liferay.portal.theme.ThemeDisplay;
025 import com.liferay.portal.util.PortletKeys;
026 import com.liferay.portal.util.PropsValues;
027 import com.liferay.portal.util.WebKeys;
028 import com.liferay.portlet.asset.model.AssetRendererFactory;
029 import com.liferay.portlet.asset.model.BaseAssetRenderer;
030 import com.liferay.portlet.blogs.model.BlogsEntry;
031 import com.liferay.portlet.blogs.service.permission.BlogsEntryPermission;
032
033 import java.util.Date;
034 import java.util.Locale;
035
036 import javax.portlet.PortletRequest;
037 import javax.portlet.PortletResponse;
038 import javax.portlet.PortletURL;
039 import javax.portlet.WindowState;
040
041
047 public class BlogsEntryAssetRenderer
048 extends BaseAssetRenderer implements TrashRenderer {
049
050 public BlogsEntryAssetRenderer(BlogsEntry entry) {
051 _entry = entry;
052 }
053
054 @Override
055 public String getClassName() {
056 return BlogsEntry.class.getName();
057 }
058
059 @Override
060 public long getClassPK() {
061 return _entry.getEntryId();
062 }
063
064 @Override
065 public String getDiscussionPath() {
066 if (PropsValues.BLOGS_ENTRY_COMMENTS_ENABLED) {
067 return "edit_entry_discussion";
068 }
069 else {
070 return null;
071 }
072 }
073
074 @Override
075 public Date getDisplayDate() {
076 return _entry.getDisplayDate();
077 }
078
079 @Override
080 public long getGroupId() {
081 return _entry.getGroupId();
082 }
083
084 @Override
085 public String getIconPath(ThemeDisplay themeDisplay) {
086 return themeDisplay.getPathThemeImages() + "/blogs/blogs.png";
087 }
088
089 @Override
090 public String getPortletId() {
091 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
092
093 return assetRendererFactory.getPortletId();
094 }
095
096 @Override
097 public String getSummary(
098 PortletRequest portletRequest, PortletResponse portletResponse) {
099
100 String summary = _entry.getDescription();
101
102 if (Validator.isNull(summary)) {
103 summary = StringUtil.shorten(_entry.getContent(), 200);
104 }
105
106 return summary;
107 }
108
109 @Override
110 public String getThumbnailPath(PortletRequest portletRequest)
111 throws Exception {
112
113 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
114 WebKeys.THEME_DISPLAY);
115
116 return themeDisplay.getPathThemeImages() +
117 "/file_system/large/blog.png";
118 }
119
120 @Override
121 public String getTitle(Locale locale) {
122 return _entry.getTitle();
123 }
124
125 @Override
126 public String getType() {
127 return BlogsEntryAssetRendererFactory.TYPE;
128 }
129
130 @Override
131 public PortletURL getURLEdit(
132 LiferayPortletRequest liferayPortletRequest,
133 LiferayPortletResponse liferayPortletResponse)
134 throws Exception {
135
136 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
137 getControlPanelPlid(liferayPortletRequest), PortletKeys.BLOGS,
138 PortletRequest.RENDER_PHASE);
139
140 portletURL.setParameter("struts_action", "/blogs/edit_entry");
141 portletURL.setParameter("entryId", String.valueOf(_entry.getEntryId()));
142
143 return portletURL;
144 }
145
146 @Override
147 public String getUrlTitle() {
148 return _entry.getUrlTitle();
149 }
150
151 @Override
152 public PortletURL getURLView(
153 LiferayPortletResponse liferayPortletResponse,
154 WindowState windowState)
155 throws Exception {
156
157 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
158
159 PortletURL portletURL = assetRendererFactory.getURLView(
160 liferayPortletResponse, windowState);
161
162 portletURL.setParameter("struts_action", "/blogs/view_entry");
163 portletURL.setParameter("entryId", String.valueOf(_entry.getEntryId()));
164 portletURL.setWindowState(windowState);
165
166 return portletURL;
167 }
168
169 @Override
170 public String getURLViewInContext(
171 LiferayPortletRequest liferayPortletRequest,
172 LiferayPortletResponse liferayPortletResponse,
173 String noSuchEntryRedirect) {
174
175 return getURLViewInContext(
176 liferayPortletRequest, noSuchEntryRedirect, "/blogs/find_entry",
177 "entryId", _entry.getEntryId());
178 }
179
180 @Override
181 public long getUserId() {
182 return _entry.getUserId();
183 }
184
185 @Override
186 public String getUserName() {
187 return _entry.getUserName();
188 }
189
190 @Override
191 public String getUuid() {
192 return _entry.getUuid();
193 }
194
195 public boolean hasDeletePermission(PermissionChecker permissionChecker) {
196 return BlogsEntryPermission.contains(
197 permissionChecker, _entry, ActionKeys.DELETE);
198 }
199
200 @Override
201 public boolean hasEditPermission(PermissionChecker permissionChecker) {
202 return BlogsEntryPermission.contains(
203 permissionChecker, _entry, ActionKeys.UPDATE);
204 }
205
206 @Override
207 public boolean hasViewPermission(PermissionChecker permissionChecker) {
208 return BlogsEntryPermission.contains(
209 permissionChecker, _entry, ActionKeys.VIEW);
210 }
211
212 @Override
213 public boolean isPrintable() {
214 return true;
215 }
216
217 @Override
218 public String render(
219 PortletRequest portletRequest, PortletResponse portletResponse,
220 String template)
221 throws Exception {
222
223 if (template.equals(TEMPLATE_ABSTRACT) ||
224 template.equals(TEMPLATE_FULL_CONTENT)) {
225
226 portletRequest.setAttribute(WebKeys.BLOGS_ENTRY, _entry);
227
228 return "/html/portlet/blogs/asset/" + template + ".jsp";
229 }
230 else {
231 return null;
232 }
233 }
234
235 private final BlogsEntry _entry;
236
237 }