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.Locale;
043
044 import javax.portlet.PortletRequest;
045 import javax.portlet.PortletURL;
046 import javax.portlet.RenderRequest;
047 import javax.portlet.RenderResponse;
048
049
055 public class DLFileEntryAssetRenderer
056 extends BaseAssetRenderer implements TrashRenderer {
057
058 public DLFileEntryAssetRenderer(
059 FileEntry fileEntry, FileVersion fileVersion, int type) {
060
061 _fileEntry = fileEntry;
062 _fileVersion = fileVersion;
063 _type = type;
064 }
065
066 public String getAssetRendererFactoryClassName() {
067 return DLFileEntryAssetRendererFactory.CLASS_NAME;
068 }
069
070 public String getClassName() {
071 return DLFileEntry.class.getName();
072 }
073
074 public long getClassPK() {
075 if (!_fileVersion.isApproved() && _fileVersion.isDraft() &&
076 !_fileVersion.isPending() &&
077 !_fileVersion.getVersion().equals(
078 DLFileEntryConstants.VERSION_DEFAULT)) {
079
080 return _fileVersion.getFileVersionId();
081 }
082 else {
083 return _fileEntry.getFileEntryId();
084 }
085 }
086
087 @Override
088 public String getDiscussionPath() {
089 if (PropsValues.DL_FILE_ENTRY_COMMENTS_ENABLED) {
090 return "edit_file_entry_discussion";
091 }
092 else {
093 return null;
094 }
095 }
096
097 public long getGroupId() {
098 return _fileEntry.getGroupId();
099 }
100
101 @Override
102 public String getIconPath(ThemeDisplay themeDisplay) {
103 return themeDisplay.getPathThemeImages() + "/file_system/small/" +
104 _fileEntry.getIcon() + ".png";
105 }
106
107 public String getPortletId() {
108 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
109
110 return assetRendererFactory.getPortletId();
111 }
112
113 public String getSummary(Locale locale) {
114 return HtmlUtil.stripHtml(_fileEntry.getDescription());
115 }
116
117 public String getTitle(Locale locale) {
118 String title = null;
119
120 if (_type == AssetRendererFactory.TYPE_LATEST) {
121 title = _fileVersion.getTitle();
122 }
123 else {
124 title = _fileEntry.getTitle();
125 }
126
127 return TrashUtil.getOriginalTitle(title);
128 }
129
130 public String getType() {
131 return DLFileEntryAssetRendererFactory.TYPE;
132 }
133
134 @Override
135 public String getURLDownload(ThemeDisplay themeDisplay) {
136 return DLUtil.getPreviewURL(
137 _fileEntry, _fileVersion, themeDisplay, StringPool.BLANK);
138 }
139
140 @Override
141 public PortletURL getURLEdit(
142 LiferayPortletRequest liferayPortletRequest,
143 LiferayPortletResponse liferayPortletResponse)
144 throws Exception {
145
146 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
147 getControlPanelPlid(liferayPortletRequest),
148 PortletKeys.DOCUMENT_LIBRARY, PortletRequest.RENDER_PHASE);
149
150 portletURL.setParameter(
151 "struts_action", "/document_library/edit_file_entry");
152 portletURL.setParameter(
153 "fileEntryId", String.valueOf(_fileEntry.getFileEntryId()));
154
155 return portletURL;
156 }
157
158 @Override
159 public PortletURL getURLExport(
160 LiferayPortletRequest liferayPortletRequest,
161 LiferayPortletResponse liferayPortletResponse) {
162
163 PortletURL portletURL = liferayPortletResponse.createActionURL();
164
165 portletURL.setParameter("struts_action", "/asset_publisher/get_file");
166 portletURL.setParameter(
167 "groupId", String.valueOf(_fileEntry.getRepositoryId()));
168 portletURL.setParameter(
169 "folderId", String.valueOf(_fileEntry.getFolderId()));
170 portletURL.setParameter("title", String.valueOf(_fileEntry.getTitle()));
171
172 return portletURL;
173 }
174
175 @Override
176 public String getURLViewInContext(
177 LiferayPortletRequest liferayPortletRequest,
178 LiferayPortletResponse liferayPortletResponse,
179 String noSuchEntryRedirect) {
180
181 return getURLViewInContext(
182 liferayPortletRequest, noSuchEntryRedirect,
183 "/document_library/find_file_entry", "fileEntryId",
184 _fileEntry.getFileEntryId());
185 }
186
187 public long getUserId() {
188 return _fileEntry.getUserId();
189 }
190
191 public String getUserName() {
192 return _fileEntry.getUserName();
193 }
194
195 public String getUuid() {
196 return _fileEntry.getUuid();
197 }
198
199 public boolean hasDeletePermission(PermissionChecker permissionChecker)
200 throws PortalException, SystemException {
201
202 return DLFileEntryPermission.contains(
203 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.DELETE);
204 }
205
206 @Override
207 public boolean hasEditPermission(PermissionChecker permissionChecker)
208 throws PortalException, SystemException {
209
210 return DLFileEntryPermission.contains(
211 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.UPDATE);
212 }
213
214 @Override
215 public boolean hasViewPermission(PermissionChecker permissionChecker)
216 throws PortalException, SystemException {
217
218 return DLFileEntryPermission.contains(
219 permissionChecker, _fileEntry.getFileEntryId(), ActionKeys.VIEW);
220 }
221
222 @Override
223 public boolean isConvertible() {
224 return true;
225 }
226
227 @Override
228 public boolean isPrintable() {
229 return false;
230 }
231
232 public String render(
233 RenderRequest renderRequest, RenderResponse renderResponse,
234 String template)
235 throws Exception {
236
237 if (template.equals(TEMPLATE_ABSTRACT) ||
238 template.equals(TEMPLATE_FULL_CONTENT)) {
239
240 renderRequest.setAttribute(
241 WebKeys.DOCUMENT_LIBRARY_FILE_ENTRY, _fileEntry);
242
243 String version = ParamUtil.getString(renderRequest, "version");
244
245 if ((_type == AssetRendererFactory.TYPE_LATEST) ||
246 Validator.isNotNull(version)) {
247
248 if ((_fileEntry != null) && Validator.isNotNull(version)) {
249 _fileVersion = _fileEntry.getFileVersion(version);
250 }
251
252 renderRequest.setAttribute(
253 WebKeys.DOCUMENT_LIBRARY_FILE_VERSION, _fileVersion);
254 }
255
256 return "/html/portlet/document_library/asset/" + template + ".jsp";
257 }
258 else {
259 return null;
260 }
261 }
262
263 private FileEntry _fileEntry;
264 private FileVersion _fileVersion;
265 private int _type;
266
267 }