001    /**
002     * Copyright (c) 2000-2012 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.bookmarks.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.HtmlUtil;
021    import com.liferay.portal.security.permission.ActionKeys;
022    import com.liferay.portal.security.permission.PermissionChecker;
023    import com.liferay.portal.theme.ThemeDisplay;
024    import com.liferay.portal.util.PortletKeys;
025    import com.liferay.portal.util.WebKeys;
026    import com.liferay.portlet.asset.model.AssetRendererFactory;
027    import com.liferay.portlet.asset.model.BaseAssetRenderer;
028    import com.liferay.portlet.bookmarks.model.BookmarksEntry;
029    import com.liferay.portlet.bookmarks.service.permission.BookmarksEntryPermission;
030    
031    import java.util.Locale;
032    
033    import javax.portlet.PortletRequest;
034    import javax.portlet.PortletURL;
035    import javax.portlet.RenderRequest;
036    import javax.portlet.RenderResponse;
037    
038    /**
039     * @author Julio Camarero
040     * @author Juan Fernández
041     * @author Sergio González
042     */
043    public class BookmarksEntryAssetRenderer
044            extends BaseAssetRenderer implements TrashRenderer {
045    
046            public BookmarksEntryAssetRenderer(BookmarksEntry entry) {
047                    _entry = entry;
048            }
049    
050            public String getAssetRendererFactoryClassName() {
051                    return BookmarksEntryAssetRendererFactory.CLASS_NAME;
052            }
053    
054            public String getClassName() {
055                    return BookmarksEntry.class.getName();
056            }
057    
058            public long getClassPK() {
059                    return _entry.getEntryId();
060            }
061    
062            public long getGroupId() {
063                    return _entry.getGroupId();
064            }
065    
066            @Override
067            public String getIconPath(ThemeDisplay themeDisplay) {
068                    return themeDisplay.getPathThemeImages() + "/ratings/star_hover.png";
069            }
070    
071            public String getPortletId() {
072                    AssetRendererFactory assetRendererFactory = getAssetRendererFactory();
073    
074                    return assetRendererFactory.getPortletId();
075            }
076    
077            public String getSummary(Locale locale) {
078                    return HtmlUtil.stripHtml(_entry.getDescription());
079            }
080    
081            public String getTitle(Locale locale) {
082                    return _entry.getName();
083            }
084    
085            public String getType() {
086                    return BookmarksEntryAssetRendererFactory.TYPE;
087            }
088    
089            @Override
090            public PortletURL getURLEdit(
091                            LiferayPortletRequest liferayPortletRequest,
092                            LiferayPortletResponse liferayPortletResponse)
093                    throws Exception {
094    
095                    PortletURL portletURL = liferayPortletResponse.createLiferayPortletURL(
096                            getControlPanelPlid(liferayPortletRequest), PortletKeys.BOOKMARKS,
097                            PortletRequest.RENDER_PHASE);
098    
099                    portletURL.setParameter("struts_action", "/bookmarks/edit_entry");
100                    portletURL.setParameter(
101                            "folderId", String.valueOf(_entry.getFolderId()));
102                    portletURL.setParameter("entryId", String.valueOf(_entry.getEntryId()));
103    
104                    return portletURL;
105            }
106    
107            @Override
108            public String getURLViewInContext(
109                    LiferayPortletRequest liferayPortletRequest,
110                    LiferayPortletResponse liferayPortletResponse,
111                    String noSuchEntryRedirect) {
112    
113                    return getURLViewInContext(
114                            liferayPortletRequest, noSuchEntryRedirect, "/bookmarks/find_entry",
115                            "entryId", _entry.getEntryId());
116            }
117    
118            public long getUserId() {
119                    return _entry.getUserId();
120            }
121    
122            public String getUserName() {
123                    return _entry.getUserName();
124            }
125    
126            public String getUuid() {
127                    return _entry.getUuid();
128            }
129    
130            @Override
131            public boolean hasEditPermission(PermissionChecker permissionChecker) {
132                    try {
133                            return BookmarksEntryPermission.contains(
134                                    permissionChecker, _entry, ActionKeys.UPDATE);
135                    }
136                    catch (Exception e) {
137                    }
138    
139                    return false;
140            }
141    
142            @Override
143            public boolean hasViewPermission(PermissionChecker permissionChecker) {
144                    try {
145                            return BookmarksEntryPermission.contains(
146                                    permissionChecker, _entry, ActionKeys.VIEW);
147                    }
148                    catch (Exception e) {
149                    }
150    
151                    return true;
152            }
153    
154            @Override
155            public boolean isPrintable() {
156                    return true;
157            }
158    
159            public String render(
160                            RenderRequest renderRequest, RenderResponse renderResponse,
161                            String template)
162                    throws Exception {
163    
164                    if (template.equals(TEMPLATE_FULL_CONTENT)) {
165                            renderRequest.setAttribute(WebKeys.BOOKMARKS_ENTRY, _entry);
166    
167                            return "/html/portlet/bookmarks/asset/" + template + ".jsp";
168                    }
169                    else {
170                            return null;
171                    }
172            }
173    
174            private BookmarksEntry _entry;
175    
176    }