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