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