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