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