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.Folder;
022 import com.liferay.portal.kernel.trash.TrashRenderer;
023 import com.liferay.portal.kernel.util.HtmlUtil;
024 import com.liferay.portal.kernel.workflow.WorkflowConstants;
025 import com.liferay.portal.security.permission.ActionKeys;
026 import com.liferay.portal.security.permission.PermissionChecker;
027 import com.liferay.portal.theme.ThemeDisplay;
028 import com.liferay.portal.util.PortletKeys;
029 import com.liferay.portal.util.WebKeys;
030 import com.liferay.portlet.asset.model.AssetRendererFactory;
031 import com.liferay.portlet.asset.model.BaseAssetRenderer;
032 import com.liferay.portlet.documentlibrary.model.DLFolder;
033 import com.liferay.portlet.documentlibrary.service.DLAppServiceUtil;
034 import com.liferay.portlet.documentlibrary.service.permission.DLFolderPermission;
035 import com.liferay.portlet.trash.util.TrashUtil;
036
037 import java.util.Date;
038 import java.util.Locale;
039
040 import javax.portlet.PortletRequest;
041 import javax.portlet.PortletURL;
042 import javax.portlet.RenderRequest;
043 import javax.portlet.RenderResponse;
044 import javax.portlet.WindowState;
045
046
049 public class DLFolderAssetRenderer
050 extends BaseAssetRenderer implements TrashRenderer {
051
052 public static final String TYPE = "folder";
053
054 public DLFolderAssetRenderer(Folder folder) {
055 _folder = folder;
056 }
057
058 @Override
059 public String getClassName() {
060 return DLFolder.class.getName();
061 }
062
063 @Override
064 public long getClassPK() {
065 return _folder.getPrimaryKey();
066 }
067
068 @Override
069 public Date getDisplayDate() {
070 return _folder.getModifiedDate();
071 }
072
073 @Override
074 public long getGroupId() {
075 return _folder.getGroupId();
076 }
077
078 @Override
079 public String getIconPath(ThemeDisplay themeDisplay) {
080 try {
081 if (DLAppServiceUtil.getFoldersAndFileEntriesAndFileShortcutsCount(
082 _folder.getRepositoryId(), _folder.getFolderId(),
083 WorkflowConstants.STATUS_APPROVED, true) > 0) {
084
085 return themeDisplay.getPathThemeImages() +
086 "/common/folder_full_document.png";
087 }
088 }
089 catch (Exception e) {
090 }
091
092 return themeDisplay.getPathThemeImages() + "/common/folder_empty.png";
093 }
094
095 @Override
096 public String getPortletId() {
097 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
098
099 return assetRendererFactory.getPortletId();
100 }
101
102 @Override
103 public String getSummary(Locale locale) {
104 return HtmlUtil.stripHtml(_folder.getDescription());
105 }
106
107 @Override
108 public String getThumbnailPath(PortletRequest portletRequest)
109 throws Exception {
110
111 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
112 WebKeys.THEME_DISPLAY);
113
114 int foldersCount = DLAppServiceUtil.getFoldersCount(
115 _folder.getRepositoryId(), _folder.getFolderId());
116 int entriesCount =
117 DLAppServiceUtil.getFileEntriesAndFileShortcutsCount(
118 _folder.getRepositoryId(), _folder.getFolderId(),
119 WorkflowConstants.STATUS_APPROVED);
120
121 if ((entriesCount > 0) || (foldersCount > 0)) {
122 return themeDisplay.getPathThemeImages() +
123 "/file_system/large/folder_full_document.png";
124 }
125
126 return themeDisplay.getPathThemeImages() +
127 "/file_system/large/folder_empty_document.png";
128 }
129
130 @Override
131 public String getTitle(Locale locale) {
132 return TrashUtil.getOriginalTitle(_folder.getName());
133 }
134
135 @Override
136 public String getType() {
137 return TYPE;
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_folder");
152 portletURL.setParameter(
153 "folderId", String.valueOf(_folder.getFolderId()));
154
155 return portletURL;
156 }
157
158 @Override
159 public PortletURL getURLView(
160 LiferayPortletResponse liferayPortletResponse,
161 WindowState windowState)
162 throws Exception {
163
164 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
165
166 PortletURL portletURL = assetRendererFactory.getURLView(
167 liferayPortletResponse, windowState);
168
169 portletURL.setParameter(
170 "struts_action", "/document_library_display/view");
171 portletURL.setParameter(
172 "folderId", String.valueOf(_folder.getFolderId()));
173 portletURL.setWindowState(windowState);
174
175 return portletURL;
176 }
177
178 @Override
179 public String getURLViewInContext(
180 LiferayPortletRequest liferayPortletRequest,
181 LiferayPortletResponse liferayPortletResponse,
182 String noSuchEntryRedirect) {
183
184 return getURLViewInContext(
185 liferayPortletRequest, noSuchEntryRedirect,
186 "/document_library/find_folder", "folderId", _folder.getFolderId());
187 }
188
189 @Override
190 public long getUserId() {
191 return _folder.getUserId();
192 }
193
194 @Override
195 public String getUserName() {
196 return _folder.getUserName();
197 }
198
199 @Override
200 public String getUuid() {
201 return _folder.getUuid();
202 }
203
204 @Override
205 public boolean hasViewPermission(PermissionChecker permissionChecker)
206 throws PortalException, SystemException {
207
208 return DLFolderPermission.contains(
209 permissionChecker, _folder, ActionKeys.VIEW);
210 }
211
212 @Override
213 public boolean isDisplayable() {
214 if (_folder.isMountPoint()) {
215 return false;
216 }
217
218 return true;
219 }
220
221 @Override
222 public String render(
223 RenderRequest renderRequest, RenderResponse renderResponse,
224 String template)
225 throws Exception {
226
227 if (template.equals(TEMPLATE_ABSTRACT) ||
228 template.equals(TEMPLATE_FULL_CONTENT)) {
229
230 renderRequest.setAttribute(
231 WebKeys.DOCUMENT_LIBRARY_FOLDER, _folder);
232
233 return "/html/portlet/document_library/asset/folder_" + template +
234 ".jsp";
235 }
236 else {
237 return null;
238 }
239 }
240
241 private Folder _folder;
242
243 }