001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.blogs.asset;
016    
017    import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
018    import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
019    import com.liferay.portal.kernel.trash.TrashRenderer;
020    import com.liferay.portal.kernel.util.StringUtil;
021    import com.liferay.portal.kernel.util.Validator;
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.PropsValues;
027    import com.liferay.portal.util.WebKeys;
028    import com.liferay.portlet.asset.model.AssetRendererFactory;
029    import com.liferay.portlet.asset.model.BaseAssetRenderer;
030    import com.liferay.portlet.blogs.model.BlogsEntry;
031    import com.liferay.portlet.blogs.service.permission.BlogsEntryPermission;
032    
033    import java.util.Date;
034    import java.util.Locale;
035    
036    import javax.portlet.PortletRequest;
037    import javax.portlet.PortletResponse;
038    import javax.portlet.PortletURL;
039    import javax.portlet.WindowState;
040    
041    /**
042     * @author Jorge Ferrer
043     * @author Juan Fern??ndez
044     * @author Sergio Gonz??lez
045     * @author Zsolt Berentey
046     */
047    public class BlogsEntryAssetRenderer
048            extends BaseAssetRenderer implements TrashRenderer {
049    
050            public BlogsEntryAssetRenderer(BlogsEntry entry) {
051                    _entry = entry;
052            }
053    
054            @Override
055            public String getClassName() {
056                    return BlogsEntry.class.getName();
057            }
058    
059            @Override
060            public long getClassPK() {
061                    return _entry.getEntryId();
062            }
063    
064            @Override
065            public String getDiscussionPath() {
066                    if (PropsValues.BLOGS_ENTRY_COMMENTS_ENABLED) {
067                            return "edit_entry_discussion";
068                    }
069                    else {
070                            return null;
071                    }
072            }
073    
074            @Override
075            public Date getDisplayDate() {
076                    return _entry.getDisplayDate();
077            }
078    
079            @Override
080            public long getGroupId() {
081                    return _entry.getGroupId();
082            }
083    
084            @Override
085            public String getIconPath(ThemeDisplay themeDisplay) {
086                    return themeDisplay.getPathThemeImages() + "/blogs/blogs.png";
087            }
088    
089            @Override
090            public String getPortletId() {
091                    AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
092    
093                    return assetRendererFactory.getPortletId();
094            }
095    
096            @Override
097            public String getSummary(
098                    PortletRequest portletRequest, PortletResponse portletResponse) {
099    
100                    String summary = _entry.getDescription();
101    
102                    if (Validator.isNull(summary)) {
103                            summary = StringUtil.shorten(_entry.getContent(), 200);
104                    }
105    
106                    return summary;
107            }
108    
109            @Override
110            public String getThumbnailPath(PortletRequest portletRequest)
111                    throws Exception {
112    
113                    ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
114                            WebKeys.THEME_DISPLAY);
115    
116                    return themeDisplay.getPathThemeImages() +
117                            "/file_system/large/blog.png";
118            }
119    
120            @Override
121            public String getTitle(Locale locale) {
122                    return _entry.getTitle();
123            }
124    
125            @Override
126            public String getType() {
127                    return BlogsEntryAssetRendererFactory.TYPE;
128            }
129    
130            @Override
131            public PortletURL getURLEdit(
132                            LiferayPortletRequest liferayPortletRequest,
133                            LiferayPortletResponse liferayPortletResponse)
134                    throws Exception {
135    
136                    PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
137                            getControlPanelPlid(liferayPortletRequest), PortletKeys.BLOGS,
138                            PortletRequest.RENDER_PHASE);
139    
140                    portletURL.setParameter("struts_action", "/blogs/edit_entry");
141                    portletURL.setParameter("entryId", String.valueOf(_entry.getEntryId()));
142    
143                    return portletURL;
144            }
145    
146            @Override
147            public String getUrlTitle() {
148                    return _entry.getUrlTitle();
149            }
150    
151            @Override
152            public PortletURL getURLView(
153                            LiferayPortletResponse liferayPortletResponse,
154                            WindowState windowState)
155                    throws Exception {
156    
157                    AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
158    
159                    PortletURL portletURL = assetRendererFactory.getURLView(
160                            liferayPortletResponse, windowState);
161    
162                    portletURL.setParameter("struts_action", "/blogs/view_entry");
163                    portletURL.setParameter("entryId", String.valueOf(_entry.getEntryId()));
164                    portletURL.setWindowState(windowState);
165    
166                    return portletURL;
167            }
168    
169            @Override
170            public String getURLViewInContext(
171                    LiferayPortletRequest liferayPortletRequest,
172                    LiferayPortletResponse liferayPortletResponse,
173                    String noSuchEntryRedirect) {
174    
175                    return getURLViewInContext(
176                            liferayPortletRequest, noSuchEntryRedirect, "/blogs/find_entry",
177                            "entryId", _entry.getEntryId());
178            }
179    
180            @Override
181            public long getUserId() {
182                    return _entry.getUserId();
183            }
184    
185            @Override
186            public String getUserName() {
187                    return _entry.getUserName();
188            }
189    
190            @Override
191            public String getUuid() {
192                    return _entry.getUuid();
193            }
194    
195            public boolean hasDeletePermission(PermissionChecker permissionChecker) {
196                    return BlogsEntryPermission.contains(
197                            permissionChecker, _entry, ActionKeys.DELETE);
198            }
199    
200            @Override
201            public boolean hasEditPermission(PermissionChecker permissionChecker) {
202                    return BlogsEntryPermission.contains(
203                            permissionChecker, _entry, ActionKeys.UPDATE);
204            }
205    
206            @Override
207            public boolean hasViewPermission(PermissionChecker permissionChecker) {
208                    return BlogsEntryPermission.contains(
209                            permissionChecker, _entry, ActionKeys.VIEW);
210            }
211    
212            @Override
213            public boolean isPrintable() {
214                    return true;
215            }
216    
217            @Override
218            public String render(
219                            PortletRequest portletRequest, PortletResponse portletResponse,
220                            String template)
221                    throws Exception {
222    
223                    if (template.equals(TEMPLATE_ABSTRACT) ||
224                            template.equals(TEMPLATE_FULL_CONTENT)) {
225    
226                            portletRequest.setAttribute(WebKeys.BLOGS_ENTRY, _entry);
227    
228                            return "/html/portlet/blogs/asset/" + template + ".jsp";
229                    }
230                    else {
231                            return null;
232                    }
233            }
234    
235            private final BlogsEntry _entry;
236    
237    }