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