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 public AssetRendererFactory<T> getAssetRendererFactory() {
071 if (_assetRendererFactory != null) {
072 return _assetRendererFactory;
073 }
074
075 _assetRendererFactory =
076 (AssetRendererFactory<T>)
077 AssetRendererFactoryRegistryUtil.
078 getAssetRendererFactoryByClassName(getClassName());
079
080 return _assetRendererFactory;
081 }
082
083 @Override
084 public int getAssetRendererType() {
085 return _assetRendererType;
086 }
087
088 @Override
089 public String[] getAvailableLanguageIds() {
090 return _AVAILABLE_LANGUAGE_IDS;
091 }
092
093
096 @Deprecated
097 @Override
098 public String[] getAvailableLocales() {
099 return getAvailableLanguageIds();
100 }
101
102 @Override
103 public DDMFormValuesReader getDDMFormValuesReader() {
104 return _nullDDMFormValuesReader;
105 }
106
107 @Override
108 public String getDiscussionPath() {
109 return null;
110 }
111
112 @Override
113 public Date getDisplayDate() {
114 return null;
115 }
116
117 @Override
118 @SuppressWarnings("unused")
119 public String getIconCssClass() throws PortalException {
120 return getAssetRendererFactory().getIconCssClass();
121 }
122
123 @Override
124 public String getIconPath(PortletRequest portletRequest) {
125 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
126 WebKeys.THEME_DISPLAY);
127
128 return getIconPath(themeDisplay);
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 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
183 WebKeys.THEME_DISPLAY);
184
185 return themeDisplay.getPathThemeImages() +
186 "/file_system/large/default.png";
187 }
188
189 @Override
190 public String getURLDownload(ThemeDisplay themeDisplay) {
191 return null;
192 }
193
194 @Override
195 public PortletURL getURLEdit(
196 LiferayPortletRequest liferayPortletRequest,
197 LiferayPortletResponse liferayPortletResponse)
198 throws Exception {
199
200 return null;
201 }
202
203 @Override
204 public PortletURL getURLEdit(
205 LiferayPortletRequest liferayPortletRequest,
206 LiferayPortletResponse liferayPortletResponse,
207 WindowState windowState, PortletURL redirectURL)
208 throws Exception {
209
210 LiferayPortletURL editPortletURL = (LiferayPortletURL)getURLEdit(
211 liferayPortletRequest, liferayPortletResponse);
212
213 if (editPortletURL == null) {
214 return null;
215 }
216
217 ThemeDisplay themeDisplay =
218 (ThemeDisplay)liferayPortletRequest.getAttribute(
219 WebKeys.THEME_DISPLAY);
220
221 Group group = themeDisplay.getScopeGroup();
222
223 if (group.isLayout()) {
224 Layout layout = themeDisplay.getLayout();
225
226 group = layout.getGroup();
227 }
228
229 if (group.hasStagingGroup()) {
230 return null;
231 }
232
233 editPortletURL.setParameter("redirect", redirectURL.toString());
234
235 PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
236
237 String portletResource = ParamUtil.getString(
238 liferayPortletRequest, "portletResource", portletDisplay.getId());
239
240 if (Validator.isNotNull(portletResource)) {
241 editPortletURL.setParameter(
242 "referringPortletResource", portletResource);
243 }
244 else {
245 editPortletURL.setParameter(
246 "referringPortletResource", portletDisplay.getId());
247 }
248
249 editPortletURL.setPortletMode(PortletMode.VIEW);
250 editPortletURL.setRefererPlid(themeDisplay.getPlid());
251 editPortletURL.setWindowState(windowState);
252
253 return editPortletURL;
254 }
255
256 @Override
257 public PortletURL getURLExport(
258 LiferayPortletRequest liferayPortletRequest,
259 LiferayPortletResponse liferayPortletResponse)
260 throws Exception {
261
262 return null;
263 }
264
265 @Override
266 public String getURLImagePreview(PortletRequest portletRequest)
267 throws Exception {
268
269 return getThumbnailPath(portletRequest);
270 }
271
272 @Override
273 public String getUrlTitle() {
274 return null;
275 }
276
277 @Override
278 public PortletURL getURLView(
279 LiferayPortletResponse liferayPortletResponse,
280 WindowState windowState)
281 throws Exception {
282
283 return null;
284 }
285
286 @Override
287 public PortletURL getURLViewDiffs(
288 LiferayPortletRequest liferayPortletRequest,
289 LiferayPortletResponse liferayPortletResponse)
290 throws Exception {
291
292 return null;
293 }
294
295 @Override
296 public String getURLViewInContext(
297 LiferayPortletRequest liferayPortletRequest,
298 LiferayPortletResponse liferayPortletResponse,
299 String noSuchEntryRedirect)
300 throws Exception {
301
302 return null;
303 }
304
305 @Override
306 public String getViewInContextMessage() {
307 return "view-in-context";
308 }
309
310 @Override
311 @SuppressWarnings("unused")
312 public boolean hasEditPermission(PermissionChecker permissionChecker)
313 throws PortalException {
314
315 return false;
316 }
317
318 @Override
319 @SuppressWarnings("unused")
320 public boolean hasViewPermission(PermissionChecker permissionChecker)
321 throws PortalException {
322
323 return true;
324 }
325
326 @Override
327 public boolean isConvertible() {
328 return false;
329 }
330
331 @Override
332 public boolean isDisplayable() {
333 return true;
334 }
335
336 @Override
337 public boolean isLocalizable() {
338 return false;
339 }
340
341 @Override
342 public boolean isPreviewInContext() {
343 return false;
344 }
345
346 @Override
347 public boolean isPrintable() {
348 return false;
349 }
350
351 public String renderActions(
352 RenderRequest renderRequest, RenderResponse renderResponse)
353 throws Exception {
354
355 return null;
356 }
357
358
361 @Deprecated
362 @Override
363 public void setAddToPagePreferences(
364 PortletPreferences portletPreferences, String portletId,
365 ThemeDisplay themeDisplay)
366 throws Exception {
367 }
368
369 public void setAssetRendererType(int assetRendererType) {
370 _assetRendererType = assetRendererType;
371 }
372
373 protected long getControlPanelPlid(
374 LiferayPortletRequest liferayPortletRequest)
375 throws PortalException {
376
377 return PortalUtil.getControlPanelPlid(liferayPortletRequest);
378 }
379
380 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
381 throws PortalException {
382
383 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
384 }
385
386 protected String getIconPath(ThemeDisplay themeDisplay) {
387 return themeDisplay.getPathThemeImages() + "/common/page.png";
388 }
389
390 protected Locale getLocale(PortletRequest portletRequest) {
391 if (portletRequest != null) {
392 return portletRequest.getLocale();
393 }
394
395 return LocaleUtil.getMostRelevantLocale();
396 }
397
398 protected String getURLViewInContext(
399 LiferayPortletRequest liferayPortletRequest, String noSuchEntryRedirect,
400 String path, String primaryKeyParameterName,
401 long primaryKeyParameterValue) {
402
403 ThemeDisplay themeDisplay =
404 (ThemeDisplay)liferayPortletRequest.getAttribute(
405 WebKeys.THEME_DISPLAY);
406
407 StringBundler sb = new StringBundler(11);
408
409 sb.append(themeDisplay.getPortalURL());
410 sb.append(themeDisplay.getPathMain());
411 sb.append(path);
412 sb.append("?p_l_id=");
413 sb.append(themeDisplay.getPlid());
414 sb.append("&noSuchEntryRedirect=");
415 sb.append(HttpUtil.encodeURL(noSuchEntryRedirect));
416 sb.append(StringPool.AMPERSAND);
417 sb.append(primaryKeyParameterName);
418 sb.append(StringPool.EQUAL);
419 sb.append(primaryKeyParameterValue);
420
421 return PortalUtil.addPreservedParameters(themeDisplay, sb.toString());
422 }
423
424 private static final String[] _AVAILABLE_LANGUAGE_IDS = new String[0];
425
426 private static final DDMFormValuesReader _nullDDMFormValuesReader =
427 new NullDDMFormValuesReader();
428
429 private AssetRendererFactory<T> _assetRendererFactory;
430 private int _assetRendererType = AssetRendererFactory.TYPE_LATEST_APPROVED;
431
432 private static final class NullDDMFormValuesReader
433 implements DDMFormValuesReader {
434
435 @Override
436 public List<DDMFormFieldValue> getDDMFormFieldValues(
437 String ddmFormFieldType) {
438
439 return Collections.emptyList();
440 }
441
442 @Override
443 public DDMFormValues getDDMFormValues() {
444 return new DDMFormValues(new DDMForm());
445 }
446
447 }
448
449 }