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