001
014
015 package com.liferay.portlet.bookmarks.asset;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
019 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
020 import com.liferay.portal.kernel.trash.TrashRenderer;
021 import com.liferay.portal.kernel.workflow.WorkflowConstants;
022 import com.liferay.portal.security.permission.ActionKeys;
023 import com.liferay.portal.security.permission.PermissionChecker;
024 import com.liferay.portal.theme.ThemeDisplay;
025 import com.liferay.portal.util.PortletKeys;
026 import com.liferay.portal.util.WebKeys;
027 import com.liferay.portlet.asset.model.AssetRendererFactory;
028 import com.liferay.portlet.asset.model.BaseAssetRenderer;
029 import com.liferay.portlet.bookmarks.model.BookmarksFolder;
030 import com.liferay.portlet.bookmarks.service.BookmarksEntryServiceUtil;
031 import com.liferay.portlet.bookmarks.service.BookmarksFolderServiceUtil;
032 import com.liferay.portlet.bookmarks.service.permission.BookmarksFolderPermission;
033 import com.liferay.portlet.trash.util.TrashUtil;
034
035 import java.util.Date;
036 import java.util.Locale;
037
038 import javax.portlet.PortletRequest;
039 import javax.portlet.PortletResponse;
040 import javax.portlet.PortletURL;
041 import javax.portlet.RenderRequest;
042 import javax.portlet.RenderResponse;
043 import javax.portlet.WindowState;
044
045
049 public class BookmarksFolderAssetRenderer
050 extends BaseAssetRenderer implements TrashRenderer {
051
052 public static final String TYPE = "bookmarks_folder";
053
054 public BookmarksFolderAssetRenderer(BookmarksFolder folder) {
055 _folder = folder;
056 }
057
058 @Override
059 public String getClassName() {
060 return BookmarksFolder.class.getName();
061 }
062
063 @Override
064 public long getClassPK() {
065 return _folder.getFolderId();
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 getIconCssClass() throws PortalException {
080 if (BookmarksFolderServiceUtil.getFoldersAndEntriesCount(
081 _folder.getGroupId(), _folder.getFolderId()) > 0) {
082
083 return "icon-folder-close";
084 }
085
086 return super.getIconCssClass();
087 }
088
089 @Override
090 public String getIconPath(ThemeDisplay themeDisplay) {
091 try {
092 if (BookmarksFolderServiceUtil.getFoldersAndEntriesCount(
093 _folder.getGroupId(), _folder.getFolderId(),
094 WorkflowConstants.STATUS_APPROVED) > 0) {
095
096 return themeDisplay.getPathThemeImages() +
097 "/common/folder_full_document.png";
098 }
099 }
100 catch (Exception e) {
101 }
102
103 return themeDisplay.getPathThemeImages() + "/common/folder_empty.png";
104 }
105
106 @Override
107 public String getPortletId() {
108 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
109
110 return assetRendererFactory.getPortletId();
111 }
112
113 @Override
114 public String getSummary(
115 PortletRequest portletRequest, PortletResponse portletResponse) {
116
117 return _folder.getDescription();
118 }
119
120 @Override
121 public String getThumbnailPath(PortletRequest portletRequest)
122 throws Exception {
123
124 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
125 WebKeys.THEME_DISPLAY);
126
127 int entriesCount = BookmarksEntryServiceUtil.getEntriesCount(
128 _folder.getGroupId(), _folder.getFolderId());
129 int foldersCount = BookmarksFolderServiceUtil.getFoldersCount(
130 _folder.getGroupId(), _folder.getFolderId());
131
132 if ((entriesCount > 0) || (foldersCount > 0)) {
133 return themeDisplay.getPathThemeImages() +
134 "/file_system/large/folder_full_bookmark.png";
135 }
136
137 return themeDisplay.getPathThemeImages() +
138 "/file_system/large/folder_empty_bookmark.png";
139 }
140
141 @Override
142 public String getTitle(Locale locale) {
143 return TrashUtil.getOriginalTitle(_folder.getName());
144 }
145
146 @Override
147 public String getType() {
148 return TYPE;
149 }
150
151 @Override
152 public PortletURL getURLEdit(
153 LiferayPortletRequest liferayPortletRequest,
154 LiferayPortletResponse liferayPortletResponse)
155 throws Exception {
156
157 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
158 getControlPanelPlid(liferayPortletRequest),
159 PortletKeys.BOOKMARKS_ADMIN, PortletRequest.RENDER_PHASE);
160
161 portletURL.setParameter("struts_action", "/bookmarks/edit_folder");
162 portletURL.setParameter(
163 "folderId", String.valueOf(_folder.getFolderId()));
164
165 return portletURL;
166 }
167
168 @Override
169 public PortletURL getURLView(
170 LiferayPortletResponse liferayPortletResponse,
171 WindowState windowState)
172 throws Exception {
173
174 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
175
176 PortletURL portletURL = assetRendererFactory.getURLView(
177 liferayPortletResponse, windowState);
178
179 portletURL.setParameter("struts_action", "/bookmarks/view");
180 portletURL.setParameter(
181 "folderId", String.valueOf(_folder.getFolderId()));
182 portletURL.setWindowState(windowState);
183
184 return portletURL;
185 }
186
187 @Override
188 public String getURLViewInContext(
189 LiferayPortletRequest liferayPortletRequest,
190 LiferayPortletResponse liferayPortletResponse,
191 String noSuchEntryRedirect) {
192
193 return getURLViewInContext(
194 liferayPortletRequest, noSuchEntryRedirect,
195 "/bookmarks/find_folder", "folderId", _folder.getFolderId());
196 }
197
198 @Override
199 public long getUserId() {
200 return _folder.getUserId();
201 }
202
203 @Override
204 public String getUserName() {
205 return _folder.getUserName();
206 }
207
208 @Override
209 public String getUuid() {
210 return _folder.getUuid();
211 }
212
213 @Override
214 public boolean hasEditPermission(PermissionChecker permissionChecker)
215 throws PortalException {
216
217 return BookmarksFolderPermission.contains(
218 permissionChecker, _folder, ActionKeys.UPDATE);
219 }
220
221 @Override
222 public boolean hasViewPermission(PermissionChecker permissionChecker)
223 throws PortalException {
224
225 return BookmarksFolderPermission.contains(
226 permissionChecker, _folder, ActionKeys.VIEW);
227 }
228
229 @Override
230 public String render(
231 RenderRequest renderRequest, RenderResponse renderResponse,
232 String template)
233 throws Exception {
234
235 if (template.equals(TEMPLATE_FULL_CONTENT)) {
236 renderRequest.setAttribute(WebKeys.BOOKMARKS_FOLDER, _folder);
237
238 return "/html/portlet/bookmarks/asset/folder_" + template + ".jsp";
239 }
240 else {
241 return null;
242 }
243 }
244
245 private final BookmarksFolder _folder;
246
247 }