001
014
015 package com.liferay.portlet.asset.model;
016
017 import com.liferay.dynamic.data.mapping.kernel.DDMForm;
018 import com.liferay.dynamic.data.mapping.kernel.DDMFormFieldValue;
019 import com.liferay.dynamic.data.mapping.kernel.DDMFormValues;
020 import com.liferay.portal.kernel.exception.PortalException;
021 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
022 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
023 import com.liferay.portal.kernel.portlet.LiferayPortletURL;
024 import com.liferay.portal.kernel.security.permission.PermissionChecker;
025 import com.liferay.portal.kernel.util.HttpUtil;
026 import com.liferay.portal.kernel.util.LocaleUtil;
027 import com.liferay.portal.kernel.util.ParamUtil;
028 import com.liferay.portal.kernel.util.StringBundler;
029 import com.liferay.portal.kernel.util.StringPool;
030 import com.liferay.portal.kernel.util.Validator;
031 import com.liferay.portal.kernel.util.WebKeys;
032 import com.liferay.portal.kernel.workflow.WorkflowConstants;
033 import com.liferay.portal.model.Group;
034 import com.liferay.portal.model.Layout;
035 import com.liferay.portal.theme.PortletDisplay;
036 import com.liferay.portal.theme.ThemeDisplay;
037 import com.liferay.portal.util.PortalUtil;
038 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
039 import com.liferay.portlet.trash.util.TrashUtil;
040
041 import java.util.Collections;
042 import java.util.Date;
043 import java.util.List;
044 import java.util.Locale;
045
046 import javax.portlet.PortletMode;
047 import javax.portlet.PortletPreferences;
048 import javax.portlet.PortletRequest;
049 import javax.portlet.PortletResponse;
050 import javax.portlet.PortletURL;
051 import javax.portlet.RenderRequest;
052 import javax.portlet.RenderResponse;
053 import javax.portlet.WindowState;
054
055
059 public abstract class BaseAssetRenderer<T> implements AssetRenderer<T> {
060
061
064 @Deprecated
065 @Override
066 public String getAddToPagePortletId() throws Exception {
067 return StringPool.BLANK;
068 }
069
070 @Override
071 public AssetRendererFactory<T> getAssetRendererFactory() {
072 if (_assetRendererFactory != null) {
073 return _assetRendererFactory;
074 }
075
076 _assetRendererFactory =
077 (AssetRendererFactory<T>)
078 AssetRendererFactoryRegistryUtil.
079 getAssetRendererFactoryByClassName(getClassName());
080
081 return _assetRendererFactory;
082 }
083
084 @Override
085 public int getAssetRendererType() {
086 return _assetRendererType;
087 }
088
089 @Override
090 public String[] getAvailableLanguageIds() {
091 return _AVAILABLE_LANGUAGE_IDS;
092 }
093
094 @Override
095 public DDMFormValuesReader getDDMFormValuesReader() {
096 return _nullDDMFormValuesReader;
097 }
098
099 @Override
100 public String getDiscussionPath() {
101 return null;
102 }
103
104 @Override
105 public Date getDisplayDate() {
106 return null;
107 }
108
109 @Override
110 @SuppressWarnings("unused")
111 public String getIconCssClass() throws PortalException {
112 return getAssetRendererFactory().getIconCssClass();
113 }
114
115
118 @Deprecated
119 @Override
120 public String getIconPath(PortletRequest portletRequest) {
121 return StringPool.BLANK;
122 }
123
124 @Override
125 public String getNewName(String oldName, String token) {
126 return TrashUtil.getNewName(oldName, token);
127 }
128
129
132 @Deprecated
133 @Override
134 public String getPreviewPath(
135 PortletRequest portletRequest, PortletResponse PortletResponse)
136 throws Exception {
137
138 return StringPool.BLANK;
139 }
140
141 @Override
142 public String getSearchSummary(Locale locale) {
143 return getSummary(null, null);
144 }
145
146 @Override
147 public int getStatus() {
148 return WorkflowConstants.STATUS_APPROVED;
149 }
150
151 @Override
152 public String getSummary() {
153 return getSummary(null, null);
154 }
155
156
160 @Deprecated
161 @Override
162 public String getSummary(Locale locale) {
163 return getSummary(null, null);
164 }
165
166 @Override
167 public String[] getSupportedConversions() {
168 return null;
169 }
170
171 @Override
172 public String getThumbnailPath(PortletRequest portletRequest)
173 throws Exception {
174
175 return null;
176 }
177
178 @Override
179 public String getURLDownload(ThemeDisplay themeDisplay) {
180 return null;
181 }
182
183 @Override
184 public PortletURL getURLEdit(
185 LiferayPortletRequest liferayPortletRequest,
186 LiferayPortletResponse liferayPortletResponse)
187 throws Exception {
188
189 return null;
190 }
191
192 @Override
193 public PortletURL getURLEdit(
194 LiferayPortletRequest liferayPortletRequest,
195 LiferayPortletResponse liferayPortletResponse,
196 WindowState windowState, PortletURL redirectURL)
197 throws Exception {
198
199 LiferayPortletURL editPortletURL = (LiferayPortletURL)getURLEdit(
200 liferayPortletRequest, liferayPortletResponse);
201
202 if (editPortletURL == null) {
203 return null;
204 }
205
206 ThemeDisplay themeDisplay =
207 (ThemeDisplay)liferayPortletRequest.getAttribute(
208 WebKeys.THEME_DISPLAY);
209
210 Group group = themeDisplay.getScopeGroup();
211
212 if (group.isLayout()) {
213 Layout layout = themeDisplay.getLayout();
214
215 group = layout.getGroup();
216 }
217
218 if (group.hasStagingGroup()) {
219 return null;
220 }
221
222 editPortletURL.setParameter("redirect", redirectURL.toString());
223
224 PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
225
226 String portletResource = ParamUtil.getString(
227 liferayPortletRequest, "portletResource", portletDisplay.getId());
228
229 if (Validator.isNotNull(portletResource)) {
230 editPortletURL.setParameter(
231 "referringPortletResource", portletResource);
232 }
233 else {
234 editPortletURL.setParameter(
235 "referringPortletResource", portletDisplay.getId());
236 }
237
238 editPortletURL.setPortletMode(PortletMode.VIEW);
239 editPortletURL.setRefererPlid(themeDisplay.getPlid());
240 editPortletURL.setWindowState(windowState);
241
242 return editPortletURL;
243 }
244
245 @Override
246 public PortletURL getURLExport(
247 LiferayPortletRequest liferayPortletRequest,
248 LiferayPortletResponse liferayPortletResponse)
249 throws Exception {
250
251 return null;
252 }
253
254 @Override
255 public String getURLImagePreview(PortletRequest portletRequest)
256 throws Exception {
257
258 return getThumbnailPath(portletRequest);
259 }
260
261 @Override
262 public String getUrlTitle() {
263 return null;
264 }
265
266 @Override
267 public String getURLView(
268 LiferayPortletResponse liferayPortletResponse,
269 WindowState windowState)
270 throws Exception {
271
272 return StringPool.BLANK;
273 }
274
275 @Override
276 public PortletURL getURLViewDiffs(
277 LiferayPortletRequest liferayPortletRequest,
278 LiferayPortletResponse liferayPortletResponse)
279 throws Exception {
280
281 return null;
282 }
283
284 @Override
285 public String getURLViewInContext(
286 LiferayPortletRequest liferayPortletRequest,
287 LiferayPortletResponse liferayPortletResponse,
288 String noSuchEntryRedirect)
289 throws Exception {
290
291 return null;
292 }
293
294 @Override
295 public String getViewInContextMessage() {
296 return "view-in-context";
297 }
298
299 @Override
300 @SuppressWarnings("unused")
301 public boolean hasEditPermission(PermissionChecker permissionChecker)
302 throws PortalException {
303
304 return false;
305 }
306
307 @Override
308 @SuppressWarnings("unused")
309 public boolean hasViewPermission(PermissionChecker permissionChecker)
310 throws PortalException {
311
312 return true;
313 }
314
315 @Override
316 public boolean isCommentable() {
317 if (Validator.isNull(getDiscussionPath())) {
318 return false;
319 }
320
321 return true;
322 }
323
324 @Override
325 public boolean isConvertible() {
326 return false;
327 }
328
329 @Override
330 public boolean isDisplayable() {
331 return true;
332 }
333
334 @Override
335 public boolean isLocalizable() {
336 return false;
337 }
338
339 @Override
340 public boolean isPreviewInContext() {
341 return false;
342 }
343
344 @Override
345 public boolean isPrintable() {
346 return false;
347 }
348
349 @Override
350 public boolean isRatable() {
351 return true;
352 }
353
354 public String renderActions(
355 RenderRequest renderRequest, RenderResponse renderResponse)
356 throws Exception {
357
358 return null;
359 }
360
361
364 @Deprecated
365 @Override
366 public void setAddToPagePreferences(
367 PortletPreferences portletPreferences, String portletId,
368 ThemeDisplay themeDisplay)
369 throws Exception {
370 }
371
372 public void setAssetRendererType(int assetRendererType) {
373 _assetRendererType = assetRendererType;
374 }
375
376 protected long getControlPanelPlid(
377 LiferayPortletRequest liferayPortletRequest)
378 throws PortalException {
379
380 return PortalUtil.getControlPanelPlid(liferayPortletRequest);
381 }
382
383 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
384 throws PortalException {
385
386 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
387 }
388
389 protected Locale getLocale(PortletRequest portletRequest) {
390 if (portletRequest != null) {
391 return portletRequest.getLocale();
392 }
393
394 return LocaleUtil.getMostRelevantLocale();
395 }
396
397 protected String getURLViewInContext(
398 LiferayPortletRequest liferayPortletRequest, String noSuchEntryRedirect,
399 String path, String primaryKeyParameterName,
400 long primaryKeyParameterValue) {
401
402 ThemeDisplay themeDisplay =
403 (ThemeDisplay)liferayPortletRequest.getAttribute(
404 WebKeys.THEME_DISPLAY);
405
406 StringBundler sb = new StringBundler(11);
407
408 sb.append(themeDisplay.getPortalURL());
409 sb.append(themeDisplay.getPathMain());
410 sb.append(path);
411 sb.append("?p_l_id=");
412 sb.append(themeDisplay.getPlid());
413 sb.append("&noSuchEntryRedirect=");
414 sb.append(HttpUtil.encodeURL(noSuchEntryRedirect));
415 sb.append(StringPool.AMPERSAND);
416 sb.append(primaryKeyParameterName);
417 sb.append(StringPool.EQUAL);
418 sb.append(primaryKeyParameterValue);
419
420 return PortalUtil.addPreservedParameters(themeDisplay, sb.toString());
421 }
422
423 private static final String[] _AVAILABLE_LANGUAGE_IDS = new String[0];
424
425 private static final DDMFormValuesReader _nullDDMFormValuesReader =
426 new NullDDMFormValuesReader();
427
428 private AssetRendererFactory<T> _assetRendererFactory;
429 private int _assetRendererType = AssetRendererFactory.TYPE_LATEST_APPROVED;
430
431 private static final class NullDDMFormValuesReader
432 implements DDMFormValuesReader {
433
434 @Override
435 public List<DDMFormFieldValue> getDDMFormFieldValues(
436 String ddmFormFieldType) {
437
438 return Collections.emptyList();
439 }
440
441 @Override
442 public DDMFormValues getDDMFormValues() {
443 return new DDMFormValues(new DDMForm());
444 }
445
446 }
447
448 }