1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.documentlibrary.asset;
16  
17  import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
18  import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
19  import com.liferay.portal.kernel.util.HtmlUtil;
20  import com.liferay.portal.kernel.util.HttpUtil;
21  import com.liferay.portal.security.permission.ActionKeys;
22  import com.liferay.portal.theme.ThemeDisplay;
23  import com.liferay.portal.util.PortletKeys;
24  import com.liferay.portal.util.PropsValues;
25  import com.liferay.portal.util.WebKeys;
26  import com.liferay.portlet.asset.model.BaseAssetRenderer;
27  import com.liferay.portlet.documentlibrary.model.DLFileEntry;
28  import com.liferay.portlet.documentlibrary.service.permission.DLPermission;
29  
30  import javax.portlet.PortletURL;
31  import javax.portlet.RenderRequest;
32  import javax.portlet.RenderResponse;
33  
34  /**
35   * <a href="DLFileEntryAssetRenderer.java.html"><b><i>View Source</i></b></a>
36   *
37   * @author Julio Camarero
38   */
39  public class DLFileEntryAssetRenderer extends BaseAssetRenderer {
40  
41      public DLFileEntryAssetRenderer(DLFileEntry entry) {
42          _entry = entry;
43      }
44  
45      public long getClassPK() {
46          return _entry.getFileEntryId();
47      }
48  
49      public String getDiscussionPath() {
50          if (PropsValues.DL_FILE_ENTRY_COMMENTS_ENABLED) {
51              return "edit_file_entry_discussion";
52          }
53          else {
54              return null;
55          }
56      }
57  
58      public long getGroupId() {
59          return _entry.getGroupId();
60      }
61  
62      public String getSummary() {
63          return HtmlUtil.stripHtml(_entry.getDescription());
64      }
65  
66      public String getTitle() {
67          return _entry.getTitle();
68      }
69  
70      public PortletURL getURLEdit(
71          LiferayPortletRequest liferayPortletRequest,
72          LiferayPortletResponse liferayPortletResponse) {
73  
74          ThemeDisplay themeDisplay =
75              (ThemeDisplay)liferayPortletRequest.getAttribute(
76                  WebKeys.THEME_DISPLAY);
77  
78          PortletURL editPortletURL = null;
79  
80          if (DLPermission.contains(
81                  themeDisplay.getPermissionChecker(),
82                  themeDisplay.getScopeGroupId(), ActionKeys.ADD_DOCUMENT)) {
83  
84              editPortletURL = liferayPortletResponse.createRenderURL(
85                  PortletKeys.DOCUMENT_LIBRARY);
86  
87              editPortletURL.setParameter(
88                  "struts_action", "/document_library/edit_file_entry");
89              editPortletURL.setParameter(
90                  "folderId", String.valueOf(_entry.getFolderId()));
91              editPortletURL.setParameter(
92                  "name", String.valueOf(_entry.getName()));
93          }
94  
95          return editPortletURL;
96      }
97  
98      public PortletURL getURLExport(
99          LiferayPortletRequest liferayPortletRequest,
100         LiferayPortletResponse liferayPortletResponse) {
101 
102         PortletURL exportPortletURL = liferayPortletResponse.createActionURL();
103 
104         exportPortletURL.setParameter(
105             "struts_action", "/asset_publisher/get_file");
106         exportPortletURL.setParameter(
107             "groupId", String.valueOf(_entry.getGroupId()));
108         exportPortletURL.setParameter(
109             "folderId", String.valueOf(_entry.getFolderId()));
110         exportPortletURL.setParameter(
111             "title", String.valueOf(_entry.getTitle()));
112 
113         return exportPortletURL;
114     }
115 
116     public String getURLViewInContext(
117         LiferayPortletRequest liferayPortletRequest,
118         LiferayPortletResponse liferayPortletResponse,
119         String noSuchEntryRedirect) {
120 
121         ThemeDisplay themeDisplay =
122             (ThemeDisplay)liferayPortletRequest.getAttribute(
123                 WebKeys.THEME_DISPLAY);
124 
125         return themeDisplay.getPathMain() +
126             "/document_library/get_file?p_l_id=" + themeDisplay.getPlid() +
127                 "&folderId=" + _entry.getFolderId() + "&title=" +
128                     HttpUtil.encodeURL(_entry.getTitle());
129     }
130 
131     public long getUserId() {
132         return _entry.getUserId();
133     }
134 
135     public boolean isConvertible() {
136         return true;
137     }
138 
139     public boolean isPrintable() {
140         return false;
141     }
142 
143     public String render(
144             RenderRequest renderRequest, RenderResponse renderResponse,
145             String template)
146         throws Exception {
147 
148         if (template.equals(TEMPLATE_ABSTRACT) ||
149             template.equals(TEMPLATE_FULL_CONTENT)) {
150 
151             renderRequest.setAttribute(
152                 WebKeys.DOCUMENT_LIBRARY_FILE_ENTRY, _entry);
153 
154             return "/html/portlet/document_library/asset/" + template + ".jsp";
155         }
156         else {
157             return null;
158         }
159     }
160 
161     private DLFileEntry _entry;
162 
163 }