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