001
014
015 package com.liferay.portlet.documentlibrary.asset;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
020 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
021 import com.liferay.portal.kernel.repository.model.FileEntry;
022 import com.liferay.portal.kernel.repository.model.FileVersion;
023 import com.liferay.portal.kernel.trash.TrashRenderer;
024 import com.liferay.portal.kernel.util.HtmlUtil;
025 import com.liferay.portal.kernel.util.ParamUtil;
026 import com.liferay.portal.kernel.util.StringPool;
027 import com.liferay.portal.kernel.util.Validator;
028 import com.liferay.portal.security.permission.ActionKeys;
029 import com.liferay.portal.security.permission.PermissionChecker;
030 import com.liferay.portal.theme.ThemeDisplay;
031 import com.liferay.portal.util.PortletKeys;
032 import com.liferay.portal.util.PropsValues;
033 import com.liferay.portal.util.WebKeys;
034 import com.liferay.portlet.asset.model.AssetRendererFactory;
035 import com.liferay.portlet.asset.model.BaseAssetRenderer;
036 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
037 import com.liferay.portlet.documentlibrary.model.DLFileEntryConstants;
038 import com.liferay.portlet.documentlibrary.service.permission.DLFileEntryPermission;
039 import com.liferay.portlet.documentlibrary.util.DLUtil;
040 import com.liferay.portlet.trash.util.TrashUtil;
041
042 import java.util.Date;
043 import java.util.Locale;
044
045 import javax.portlet.PortletRequest;
046 import javax.portlet.PortletURL;
047 import javax.portlet.RenderRequest;
048 import javax.portlet.RenderResponse;
049
050
056 public class DLFileEntryAssetRenderer
057 extends BaseAssetRenderer implements TrashRenderer {
058
059 public DLFileEntryAssetRenderer(
060 FileEntry fileEntry, FileVersion fileVersion, int type) {
061
062 _fileEntry = fileEntry;
063 _fileVersion = fileVersion;
064 _type = type;
065 }
066
067 public String getClassName() {
068 return DLFileEntry.class.getName();
069 }
070
071 public long getClassPK() {
072 if (!_fileVersion.isApproved() && _fileVersion.isDraft() &&
073 !_fileVersion.isPending() &&
074 !_fileVersion.getVersion().equals(
075 DLFileEntryConstants.VERSION_DEFAULT)) {
076
077 return _fileVersion.getFileVersionId();
078 }
079 else {
080 return _fileEntry.getFileEntryId();
081 }
082 }
083
084 @Override
085 public String getDiscussionPath() {
086 if (PropsValues.DL_FILE_ENTRY_COMMENTS_ENABLED) {
087 return "edit_file_entry_discussion";
088 }
089 else {
090 return null;
091 }
092 }
093
094 @Override
095 public Date getDisplayDate() {
096 return _fileEntry.getModifiedDate();
097 }
098
099 public long getGroupId() {
100 return _fileEntry.getGroupId();
101 }
102
103 @Override
104 public String getIconPath(ThemeDisplay themeDisplay) {
105 return themeDisplay.getPathThemeImages() + "/file_system/small/" +
106 _fileEntry.getIcon() + ".png";
107 }
108
109 public String getPortletId() {
110 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
111
112 return assetRendererFactory.getPortletId();
113 }
114
115 public String getSummary(Locale locale) {
116 return HtmlUtil.stripHtml(_fileEntry.getDescription());
117 }
118
119 @Override
120 public String getThumbnailPath(PortletRequest portletRequest)
121 throws Exception {
122
123 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
124 WebKeys.THEME_DISPLAY);
125
126 String thumbnailSrc = DLUtil.getThumbnailSrc(
127 _fileEntry, null, themeDisplay);
128
129 if (Validator.isNotNull(thumbnailSrc)) {
130 return thumbnailSrc;
131 }
132
133 return themeDisplay.getPathThemeImages() +
134 "/file_system/large/document.png";
135 }
136
137 public String getTitle(Locale locale) {
138 String title = null;
139
140 if (_type == AssetRendererFactory.TYPE_LATEST) {
141 title = _fileVersion.getTitle();
142 }
143 else {
144 title = _fileEntry.getTitle();
145 }
146
147 return TrashUtil.getOriginalTitle(title);
148 }
149
150 public String getType() {
151 return DLFileEntryAssetRendererFactory.TYPE;
152 }
153
154 @Override
155 public String getURLDownload(ThemeDisplay themeDisplay) {
156 return DLUtil.getPreviewURL(
157 _fileEntry, _fileVersion, themeDisplay, StringPool.BLANK);
158 }
159
160 @Override
161 public PortletURL getURLEdit(
162 LiferayPortletRequest liferayPortletRequest,
163 LiferayPortletResponse liferayPortletResponse)
164 throws Exception {
165
166 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
167 getControlPanelPlid(liferayPortletRequest),
168 PortletKeys.DOCUMENT_LIBRARY, PortletRequest.RENDER_PHASE);
169
170 portletURL.setParameter(
171 "struts_action", "/document_library/edit_file_entry");
172 portletURL.setParameter(
173 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
174
175 return portletURL;
176 }
177
178 @Override
179 public PortletURL getURLExport(
180 LiferayPortletRequest liferayPortletRequest,
181 LiferayPortletResponse liferayPortletResponse) {
182
183 PortletURL portletURL = liferayPortletResponse.createActionURL();
184
185 portletURL.setParameter("struts_action", "/asset_publisher/get_file");
186 portletURL.setParameter(
187 "groupId", String.valueOf(_fileEntry.getRepositoryId()));
188 portletURL.setParameter(
189 "folderId", String.valueOf(_fileEntry.getFolderId()));
190 portletURL.setParameter("title", String.valueOf(_fileEntry.getTitle()));
191
192 return portletURL;
193 }
194
195 @Override
196 public String getURLImagePreview(PortletRequest portletRequest)
197 throws Exception {
198
199 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
200 WebKeys.THEME_DISPLAY);
201
202 return DLUtil.getImagePreviewURL(
203 _fileEntry, _fileVersion, themeDisplay);
204 }
205
206 @Override
207 public String getURLViewInContext(
208 LiferayPortletRequest liferayPortletRequest,
209 LiferayPortletResponse liferayPortletResponse,
210 String noSuchEntryRedirect) {
211
212 return getURLViewInContext(
213 liferayPortletRequest, noSuchEntryRedirect,
214 "/document_library/find_file_entry", "fileEntryId",
215 _fileEntry.getFileEntryId());
216 }
217
218 public long getUserId() {
219 return _fileEntry.getUserId();
220 }
221
222 public String getUserName() {
223 return _fileEntry.getUserName();
224 }
225
226 public String getUuid() {
227 return _fileEntry.getUuid();
228 }
229
230 public boolean hasDeletePermission(PermissionChecker permissionChecker)
231 throws PortalException, SystemException {
232
233 return DLFileEntryPermission.contains(
234 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.DELETE);
235 }
236
237 @Override
238 public boolean hasEditPermission(PermissionChecker permissionChecker)
239 throws PortalException, SystemException {
240
241 return DLFileEntryPermission.contains(
242 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.UPDATE);
243 }
244
245 @Override
246 public boolean hasViewPermission(PermissionChecker permissionChecker)
247 throws PortalException, SystemException {
248
249 return DLFileEntryPermission.contains(
250 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.VIEW);
251 }
252
253 @Override
254 public boolean isConvertible() {
255 return true;
256 }
257
258 @Override
259 public boolean isPrintable() {
260 return false;
261 }
262
263 public String render(
264 RenderRequest renderRequest, RenderResponse renderResponse,
265 String template)
266 throws Exception {
267
268 if (template.equals(TEMPLATE_ABSTRACT) ||
269 template.equals(TEMPLATE_FULL_CONTENT)) {
270
271 renderRequest.setAttribute(
272 WebKeys.DOCUMENT_LIBRARY_FILE_ENTRY, _fileEntry);
273
274 String version = ParamUtil.getString(renderRequest, "version");
275
276 if ((_type == AssetRendererFactory.TYPE_LATEST) ||
277 Validator.isNotNull(version)) {
278
279 if ((_fileEntry != null) && Validator.isNotNull(version)) {
280 _fileVersion = _fileEntry.getFileVersion(version);
281 }
282
283 renderRequest.setAttribute(
284 WebKeys.DOCUMENT_LIBRARY_FILE_VERSION, _fileVersion);
285 }
286
287 return "/html/portlet/document_library/asset/file_entry_" +
288 template + ".jsp";
289 }
290 else {
291 return null;
292 }
293 }
294
295 private FileEntry _fileEntry;
296 private FileVersion _fileVersion;
297 private int _type;
298
299 }