001
014
015 package com.liferay.portlet.asset.model;
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.portlet.LiferayPortletURL;
022 import com.liferay.portal.kernel.util.HttpUtil;
023 import com.liferay.portal.kernel.util.ParamUtil;
024 import com.liferay.portal.kernel.util.StringBundler;
025 import com.liferay.portal.kernel.util.StringPool;
026 import com.liferay.portal.kernel.util.Validator;
027 import com.liferay.portal.kernel.util.WebKeys;
028 import com.liferay.portal.model.Group;
029 import com.liferay.portal.model.Layout;
030 import com.liferay.portal.security.permission.PermissionChecker;
031 import com.liferay.portal.theme.PortletDisplay;
032 import com.liferay.portal.theme.ThemeDisplay;
033 import com.liferay.portal.util.PortalUtil;
034 import com.liferay.portal.util.PortletKeys;
035 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
036 import com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil;
037 import com.liferay.portlet.assetpublisher.util.AssetPublisherUtil;
038 import com.liferay.portlet.trash.util.TrashUtil;
039
040 import java.util.Date;
041 import java.util.Locale;
042
043 import javax.portlet.PortletMode;
044 import javax.portlet.PortletPreferences;
045 import javax.portlet.PortletRequest;
046 import javax.portlet.PortletResponse;
047 import javax.portlet.PortletURL;
048 import javax.portlet.RenderRequest;
049 import javax.portlet.RenderResponse;
050 import javax.portlet.WindowState;
051
052
056 public abstract class BaseAssetRenderer implements AssetRenderer {
057
058 @Override
059 public String getAddToPagePortletId() throws Exception {
060 return PortletKeys.ASSET_PUBLISHER;
061 }
062
063 public AssetRendererFactory getAssetRendererFactory() {
064 if (_assetRendererFactory != null) {
065 return _assetRendererFactory;
066 }
067
068 _assetRendererFactory =
069 AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
070 getClassName());
071
072 return _assetRendererFactory;
073 }
074
075 @Override
076 public int getAssetRendererType() {
077 return _assetRendererType;
078 }
079
080 @Override
081 public String[] getAvailableLanguageIds() {
082 return _AVAILABLE_LANGUAGE_IDS;
083 }
084
085
088 @Override
089 public String[] getAvailableLocales() {
090 return getAvailableLanguageIds();
091 }
092
093 @Override
094 public String getDiscussionPath() {
095 return null;
096 }
097
098 @Override
099 public Date getDisplayDate() {
100 return null;
101 }
102
103 @Override
104 public String getIconPath(PortletRequest portletRequest) {
105 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
106 WebKeys.THEME_DISPLAY);
107
108 return getIconPath(themeDisplay);
109 }
110
111 @Override
112 public String getNewName(String oldName, String token) {
113 return TrashUtil.getNewName(oldName, token);
114 }
115
116 @Override
117 public String getPreviewPath(
118 PortletRequest portletRequest, PortletResponse PortletResponse)
119 throws Exception {
120
121 return "/html/portlet/asset_publisher/display/preview.jsp";
122 }
123
124 @Override
125 public String getSearchSummary(Locale locale) {
126 return getSummary(locale);
127 }
128
129 @Override
130 public String getThumbnailPath(PortletRequest portletRequest)
131 throws Exception {
132
133 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
134 WebKeys.THEME_DISPLAY);
135
136 return themeDisplay.getPathThemeImages() +
137 "/file_system/large/default.png";
138 }
139
140 @Override
141 public String getURLDownload(ThemeDisplay themeDisplay) {
142 return null;
143 }
144
145 @Override
146 public PortletURL getURLEdit(
147 LiferayPortletRequest liferayPortletRequest,
148 LiferayPortletResponse liferayPortletResponse)
149 throws Exception {
150
151 return null;
152 }
153
154 @Override
155 public PortletURL getURLEdit(
156 LiferayPortletRequest liferayPortletRequest,
157 LiferayPortletResponse liferayPortletResponse,
158 WindowState windowState, PortletURL redirectURL)
159 throws Exception {
160
161 LiferayPortletURL editPortletURL = (LiferayPortletURL)getURLEdit(
162 liferayPortletRequest, liferayPortletResponse);
163
164 if (editPortletURL == null) {
165 return null;
166 }
167
168 ThemeDisplay themeDisplay =
169 (ThemeDisplay)liferayPortletRequest.getAttribute(
170 WebKeys.THEME_DISPLAY);
171
172 Group group = themeDisplay.getScopeGroup();
173
174 if (group.isLayout()) {
175 Layout layout = themeDisplay.getLayout();
176
177 group = layout.getGroup();
178 }
179
180 if (group.hasStagingGroup()) {
181 return null;
182 }
183
184 editPortletURL.setDoAsGroupId(getGroupId());
185
186 editPortletURL.setParameter("redirect", redirectURL.toString());
187 editPortletURL.setParameter("originalRedirect", redirectURL.toString());
188
189 PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
190
191 String portletResource = ParamUtil.getString(
192 liferayPortletRequest, "portletResource", portletDisplay.getId());
193
194 if (Validator.isNotNull(portletResource)) {
195 editPortletURL.setParameter(
196 "referringPortletResource", portletResource);
197 }
198 else {
199 editPortletURL.setParameter(
200 "referringPortletResource", portletDisplay.getId());
201 }
202
203 editPortletURL.setPortletMode(PortletMode.VIEW);
204 editPortletURL.setRefererPlid(themeDisplay.getPlid());
205 editPortletURL.setWindowState(windowState);
206
207 return editPortletURL;
208 }
209
210 @Override
211 public PortletURL getURLExport(
212 LiferayPortletRequest liferayPortletRequest,
213 LiferayPortletResponse liferayPortletResponse)
214 throws Exception {
215
216 return null;
217 }
218
219 @Override
220 public String getURLImagePreview(PortletRequest portletRequest)
221 throws Exception {
222
223 return getThumbnailPath(portletRequest);
224 }
225
226 @Override
227 public String getUrlTitle() {
228 return null;
229 }
230
231 @Override
232 public PortletURL getURLView(
233 LiferayPortletResponse liferayPortletResponse,
234 WindowState windowState)
235 throws Exception {
236
237 return null;
238 }
239
240 @Override
241 public String getURLViewInContext(
242 LiferayPortletRequest liferayPortletRequest,
243 LiferayPortletResponse liferayPortletResponse,
244 String noSuchEntryRedirect)
245 throws Exception {
246
247 return null;
248 }
249
250 @Override
251 public String getViewInContextMessage() {
252 return "view-in-context";
253 }
254
255 @Override
256 @SuppressWarnings("unused")
257 public boolean hasEditPermission(PermissionChecker permissionChecker)
258 throws PortalException, SystemException {
259
260 return false;
261 }
262
263 @Override
264 @SuppressWarnings("unused")
265 public boolean hasViewPermission(PermissionChecker permissionChecker)
266 throws PortalException, SystemException {
267
268 return true;
269 }
270
271 @Override
272 public boolean isConvertible() {
273 return false;
274 }
275
276 @Override
277 public boolean isDisplayable() {
278 return true;
279 }
280
281 @Override
282 public boolean isLocalizable() {
283 return false;
284 }
285
286 @Override
287 public boolean isPreviewInContext() {
288 return false;
289 }
290
291 @Override
292 public boolean isPrintable() {
293 return false;
294 }
295
296 public String renderActions(
297 RenderRequest renderRequest, RenderResponse renderResponse)
298 throws Exception {
299
300 return null;
301 }
302
303 @Override
304 public void setAddToPagePreferences(
305 PortletPreferences preferences, String portletId,
306 ThemeDisplay themeDisplay)
307 throws Exception {
308
309 preferences.setValue("displayStyle", "full-content");
310 preferences.setValue(
311 "emailAssetEntryAddedEnabled", Boolean.FALSE.toString());
312 preferences.setValue("selectionStyle", "manual");
313 preferences.setValue("showAddContentButton", Boolean.FALSE.toString());
314
315 AssetEntry entry = AssetEntryLocalServiceUtil.getEntry(
316 getClassName(), getClassPK());
317
318 AssetPublisherUtil.addSelection(
319 themeDisplay, preferences, portletId, entry.getEntryId(), -1,
320 entry.getClassName());
321 }
322
323 public void setAssetRendererType(int assetRendererType) {
324 _assetRendererType = assetRendererType;
325 }
326
327 protected long getControlPanelPlid(
328 LiferayPortletRequest liferayPortletRequest)
329 throws PortalException, SystemException {
330
331 return PortalUtil.getControlPanelPlid(liferayPortletRequest);
332 }
333
334 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
335 throws PortalException, SystemException {
336
337 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
338 }
339
340 protected String getIconPath(ThemeDisplay themeDisplay) {
341 return themeDisplay.getPathThemeImages() + "/common/page.png";
342 }
343
344 protected String getURLViewInContext(
345 LiferayPortletRequest liferayPortletRequest, String noSuchEntryRedirect,
346 String path, String primaryKeyParameterName,
347 long primaryKeyParameterValue) {
348
349 ThemeDisplay themeDisplay =
350 (ThemeDisplay)liferayPortletRequest.getAttribute(
351 WebKeys.THEME_DISPLAY);
352
353 StringBundler sb = new StringBundler(11);
354
355 sb.append(themeDisplay.getPortalURL());
356 sb.append(themeDisplay.getPathMain());
357 sb.append(path);
358 sb.append("?p_l_id=");
359 sb.append(themeDisplay.getPlid());
360 sb.append("&noSuchEntryRedirect=");
361 sb.append(HttpUtil.encodeURL(noSuchEntryRedirect));
362 sb.append(StringPool.AMPERSAND);
363 sb.append(primaryKeyParameterName);
364 sb.append(StringPool.EQUAL);
365 sb.append(primaryKeyParameterValue);
366
367 return sb.toString();
368 }
369
370 private static final String[] _AVAILABLE_LANGUAGE_IDS = new String[0];
371
372 private AssetRendererFactory _assetRendererFactory;
373 private int _assetRendererType = AssetRendererFactory.TYPE_LATEST_APPROVED;
374
375 }