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