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