001
014
015 package com.liferay.portlet.journal.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.journal.model.JournalFolder;
032 import com.liferay.portlet.journal.service.JournalArticleServiceUtil;
033 import com.liferay.portlet.journal.service.JournalFolderServiceUtil;
034 import com.liferay.portlet.journal.service.permission.JournalFolderPermission;
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 JournalFolderAssetRenderer
050 extends BaseAssetRenderer implements TrashRenderer {
051
052 public static final String TYPE = "folder";
053
054 public JournalFolderAssetRenderer(JournalFolder folder) {
055 _folder = folder;
056 }
057
058 @Override
059 public String getClassName() {
060 return JournalFolder.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 getIconPath(ThemeDisplay themeDisplay) {
080 try {
081 if (JournalFolderServiceUtil.getFoldersAndArticlesCount(
082 _folder.getGroupId(), _folder.getFolderId(),
083 WorkflowConstants.STATUS_APPROVED) > 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 articlesCount = JournalArticleServiceUtil.getArticlesCount(
115 _folder.getGroupId(), _folder.getFolderId());
116 int foldersCount = JournalFolderServiceUtil.getFoldersCount(
117 _folder.getGroupId(), _folder.getFolderId());
118
119 if ((articlesCount > 0) || (foldersCount > 0)) {
120 return themeDisplay.getPathThemeImages() +
121 "/file_system/large/folder_full_article.png";
122 }
123
124 return themeDisplay.getPathThemeImages() +
125 "/file_system/large/folder_empty_article.png";
126 }
127
128 @Override
129 public String getTitle(Locale locale) {
130 return TrashUtil.getOriginalTitle(_folder.getName());
131 }
132
133 @Override
134 public String getType() {
135 return TYPE;
136 }
137
138 @Override
139 public PortletURL getURLEdit(
140 LiferayPortletRequest liferayPortletRequest,
141 LiferayPortletResponse liferayPortletResponse)
142 throws Exception {
143
144 PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
145 getControlPanelPlid(liferayPortletRequest), PortletKeys.JOURNAL,
146 PortletRequest.RENDER_PHASE);
147
148 portletURL.setParameter("struts_action", "/journal/edit_folder");
149 portletURL.setParameter(
150 "folderId", String.valueOf(_folder.getFolderId()));
151
152 return portletURL;
153 }
154
155 @Override
156 public PortletURL getURLView(
157 LiferayPortletResponse liferayPortletResponse,
158 WindowState windowState)
159 throws Exception {
160
161 AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
162
163 PortletURL portletURL = assetRendererFactory.getURLView(
164 liferayPortletResponse, windowState);
165
166 portletURL.setParameter("struts_action", "/journal/view");
167 portletURL.setParameter(
168 "folderId", String.valueOf(_folder.getFolderId()));
169 portletURL.setWindowState(windowState);
170
171 return portletURL;
172 }
173
174 @Override
175 public String getURLViewInContext(
176 LiferayPortletRequest liferayPortletRequest,
177 LiferayPortletResponse liferayPortletResponse,
178 String noSuchEntryRedirect) {
179
180 return getURLViewInContext(
181 liferayPortletRequest, noSuchEntryRedirect, "/journal/find_folder",
182 "folderId", _folder.getFolderId());
183 }
184
185 @Override
186 public long getUserId() {
187 return _folder.getUserId();
188 }
189
190 @Override
191 public String getUserName() {
192 return _folder.getUserName();
193 }
194
195 @Override
196 public String getUuid() {
197 return _folder.getUuid();
198 }
199
200 @Override
201 public boolean hasViewPermission(PermissionChecker permissionChecker)
202 throws PortalException, SystemException {
203
204 return JournalFolderPermission.contains(
205 permissionChecker, _folder, ActionKeys.VIEW);
206 }
207
208 @Override
209 public String render(
210 RenderRequest renderRequest, RenderResponse renderResponse,
211 String template)
212 throws Exception {
213
214 if (template.equals(TEMPLATE_FULL_CONTENT)) {
215 renderRequest.setAttribute(WebKeys.JOURNAL_FOLDER, _folder);
216
217 return "/html/portlet/journal/asset/folder_" + template + ".jsp";
218 }
219 else {
220 return null;
221 }
222 }
223
224 private JournalFolder _folder;
225
226 }