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.model.Group;
029 import com.liferay.portal.model.Layout;
030 import com.liferay.portal.security.permission.PermissionChecker;
031 import com.liferay.portal.theme.PortletDisplay;
032 import com.liferay.portal.theme.ThemeDisplay;
033 import com.liferay.portal.util.PortalUtil;
034 import com.liferay.portal.util.PortletKeys;
035 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
036 import com.liferay.portlet.asset.provider.DisplayPortletProvider;
037 import com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil;
038 import com.liferay.portlet.assetpublisher.util.AssetPublisherUtil;
039 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
040 import com.liferay.portlet.trash.util.TrashUtil;
041 import com.liferay.registry.collections.ServiceTrackerCollections;
042 import com.liferay.registry.collections.ServiceTrackerMap;
043
044 import java.util.Date;
045 import java.util.Locale;
046
047 import javax.portlet.PortletMode;
048 import javax.portlet.PortletPreferences;
049 import javax.portlet.PortletRequest;
050 import javax.portlet.PortletResponse;
051 import javax.portlet.PortletURL;
052 import javax.portlet.RenderRequest;
053 import javax.portlet.RenderResponse;
054 import javax.portlet.WindowState;
055
056
060 public abstract class BaseAssetRenderer implements AssetRenderer {
061
062 @Override
063 public String getAddToPagePortletId() throws Exception {
064 DisplayPortletProvider displayPortletProvider =
065 _serviceTrackerMap.getService(getClassName());
066
067 if (displayPortletProvider != null) {
068 return displayPortletProvider.getPortletId();
069 }
070
071 return PortletKeys.ASSET_PUBLISHER;
072 }
073
074 public AssetRendererFactory getAssetRendererFactory() {
075 if (_assetRendererFactory != null) {
076 return _assetRendererFactory;
077 }
078
079 _assetRendererFactory =
080 AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
081 getClassName());
082
083 return _assetRendererFactory;
084 }
085
086 @Override
087 public int getAssetRendererType() {
088 return _assetRendererType;
089 }
090
091 @Override
092 public String[] getAvailableLanguageIds() {
093 return _AVAILABLE_LANGUAGE_IDS;
094 }
095
096
099 @Deprecated
100 @Override
101 public String[] getAvailableLocales() {
102 return getAvailableLanguageIds();
103 }
104
105 @Override
106 public DDMFieldReader getDDMFieldReader() {
107 return _nullDDMFieldReader;
108 }
109
110 @Override
111 public String getDiscussionPath() {
112 return null;
113 }
114
115 @Override
116 public Date getDisplayDate() {
117 return null;
118 }
119
120 @Override
121 @SuppressWarnings("unused")
122 public String getIconCssClass() throws PortalException {
123 return getAssetRendererFactory().getIconCssClass();
124 }
125
126 @Override
127 public String getIconPath(PortletRequest portletRequest) {
128 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
129 WebKeys.THEME_DISPLAY);
130
131 return getIconPath(themeDisplay);
132 }
133
134 @Override
135 public String getNewName(String oldName, String token) {
136 return TrashUtil.getNewName(oldName, token);
137 }
138
139 @Override
140 public String getPreviewPath(
141 PortletRequest portletRequest, PortletResponse PortletResponse)
142 throws Exception {
143
144 return "/html/portlet/asset_publisher/display/preview.jsp";
145 }
146
147 @Override
148 public String getSearchSummary(Locale locale) {
149 return getSummary(null, null);
150 }
151
152 @Override
153 public String getSummary() {
154 return getSummary(null, null);
155 }
156
157
161 @Deprecated
162 @Override
163 public String getSummary(Locale locale) {
164 return getSummary(null, null);
165 }
166
167 @Override
168 public String[] getSupportedConversions() {
169 return null;
170 }
171
172 @Override
173 public String getThumbnailPath(PortletRequest portletRequest)
174 throws Exception {
175
176 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
177 WebKeys.THEME_DISPLAY);
178
179 return themeDisplay.getPathThemeImages() +
180 "/file_system/large/default.png";
181 }
182
183 @Override
184 public String getURLDownload(ThemeDisplay themeDisplay) {
185 return null;
186 }
187
188 @Override
189 public PortletURL getURLEdit(
190 LiferayPortletRequest liferayPortletRequest,
191 LiferayPortletResponse liferayPortletResponse)
192 throws Exception {
193
194 return null;
195 }
196
197 @Override
198 public PortletURL getURLEdit(
199 LiferayPortletRequest liferayPortletRequest,
200 LiferayPortletResponse liferayPortletResponse,
201 WindowState windowState, PortletURL redirectURL)
202 throws Exception {
203
204 LiferayPortletURL editPortletURL = (LiferayPortletURL)getURLEdit(
205 liferayPortletRequest, liferayPortletResponse);
206
207 if (editPortletURL == null) {
208 return null;
209 }
210
211 ThemeDisplay themeDisplay =
212 (ThemeDisplay)liferayPortletRequest.getAttribute(
213 WebKeys.THEME_DISPLAY);
214
215 Group group = themeDisplay.getScopeGroup();
216
217 if (group.isLayout()) {
218 Layout layout = themeDisplay.getLayout();
219
220 group = layout.getGroup();
221 }
222
223 if (group.hasStagingGroup()) {
224 return null;
225 }
226
227 editPortletURL.setDoAsGroupId(getGroupId());
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 PortletURL getURLView(
275 LiferayPortletResponse liferayPortletResponse,
276 WindowState windowState)
277 throws Exception {
278
279 return null;
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 isConvertible() {
324 return false;
325 }
326
327 @Override
328 public boolean isDisplayable() {
329 return true;
330 }
331
332 @Override
333 public boolean isLocalizable() {
334 return false;
335 }
336
337 @Override
338 public boolean isPreviewInContext() {
339 return false;
340 }
341
342 @Override
343 public boolean isPrintable() {
344 return false;
345 }
346
347 public String renderActions(
348 RenderRequest renderRequest, RenderResponse renderResponse)
349 throws Exception {
350
351 return null;
352 }
353
354 @Override
355 public void setAddToPagePreferences(
356 PortletPreferences portletPreferences, String portletId,
357 ThemeDisplay themeDisplay)
358 throws Exception {
359
360 DisplayPortletProvider displayPortletProvider =
361 _serviceTrackerMap.getService(getClassName());
362
363 if (displayPortletProvider != null) {
364 displayPortletProvider.setPortletPreferences(
365 portletPreferences, portletId, getClassName(), getClassPK(),
366 themeDisplay);
367
368 return;
369 }
370
371 portletPreferences.setValue("displayStyle", "full-content");
372 portletPreferences.setValue(
373 "emailAssetEntryAddedEnabled", Boolean.FALSE.toString());
374 portletPreferences.setValue("selectionStyle", "manual");
375 portletPreferences.setValue(
376 "showAddContentButton", Boolean.FALSE.toString());
377
378 AssetEntry assetEntry = AssetEntryLocalServiceUtil.getEntry(
379 getClassName(), getClassPK());
380
381 AssetPublisherUtil.addSelection(
382 themeDisplay, portletPreferences, portletId,
383 assetEntry.getEntryId(), -1, assetEntry.getClassName());
384 }
385
386 public void setAssetRendererType(int assetRendererType) {
387 _assetRendererType = assetRendererType;
388 }
389
390 protected long getControlPanelPlid(
391 LiferayPortletRequest liferayPortletRequest)
392 throws PortalException {
393
394 return PortalUtil.getControlPanelPlid(liferayPortletRequest);
395 }
396
397 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
398 throws PortalException {
399
400 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
401 }
402
403 protected String getIconPath(ThemeDisplay themeDisplay) {
404 return themeDisplay.getPathThemeImages() + "/common/page.png";
405 }
406
407 protected Locale getLocale(PortletRequest portletRequest) {
408 if (portletRequest != null) {
409 return portletRequest.getLocale();
410 }
411
412 return LocaleUtil.getMostRelevantLocale();
413 }
414
415 protected String getURLViewInContext(
416 LiferayPortletRequest liferayPortletRequest, String noSuchEntryRedirect,
417 String path, String primaryKeyParameterName,
418 long primaryKeyParameterValue) {
419
420 ThemeDisplay themeDisplay =
421 (ThemeDisplay)liferayPortletRequest.getAttribute(
422 WebKeys.THEME_DISPLAY);
423
424 StringBundler sb = new StringBundler(11);
425
426 sb.append(themeDisplay.getPortalURL());
427 sb.append(themeDisplay.getPathMain());
428 sb.append(path);
429 sb.append("?p_l_id=");
430 sb.append(themeDisplay.getPlid());
431 sb.append("&noSuchEntryRedirect=");
432 sb.append(HttpUtil.encodeURL(noSuchEntryRedirect));
433 sb.append(StringPool.AMPERSAND);
434 sb.append(primaryKeyParameterName);
435 sb.append(StringPool.EQUAL);
436 sb.append(primaryKeyParameterValue);
437
438 return PortalUtil.addPreservedParameters(themeDisplay, sb.toString());
439 }
440
441 private static final String[] _AVAILABLE_LANGUAGE_IDS = new String[0];
442
443 private static final DDMFieldReader _nullDDMFieldReader =
444 new NullDDMFieldReader();
445 private static final ServiceTrackerMap<String, DisplayPortletProvider>
446 _serviceTrackerMap = ServiceTrackerCollections.singleValueMap(
447 DisplayPortletProvider.class, "model.class.name");
448
449 static {
450 _serviceTrackerMap.open();
451 }
452
453 private AssetRendererFactory _assetRendererFactory;
454 private int _assetRendererType = AssetRendererFactory.TYPE_LATEST_APPROVED;
455
456 private static final class NullDDMFieldReader implements DDMFieldReader {
457
458 @Override
459 public Fields getFields() {
460 return new Fields();
461 }
462
463 @Override
464 public Fields getFields(String ddmType) {
465 return getFields();
466 }
467
468 }
469
470 }