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.service.AssetEntryLocalServiceUtil;
037 import com.liferay.portlet.assetpublisher.util.AssetPublisherUtil;
038 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
039 import com.liferay.portlet.trash.util.TrashUtil;
040
041 import java.util.Date;
042 import java.util.Locale;
043
044 import javax.portlet.PortletMode;
045 import javax.portlet.PortletPreferences;
046 import javax.portlet.PortletRequest;
047 import javax.portlet.PortletResponse;
048 import javax.portlet.PortletURL;
049 import javax.portlet.RenderRequest;
050 import javax.portlet.RenderResponse;
051 import javax.portlet.WindowState;
052
053
057 public abstract class BaseAssetRenderer implements AssetRenderer {
058
059 @Override
060 public String getAddToPagePortletId() throws Exception {
061 return PortletKeys.ASSET_PUBLISHER;
062 }
063
064 public AssetRendererFactory getAssetRendererFactory() {
065 if (_assetRendererFactory != null) {
066 return _assetRendererFactory;
067 }
068
069 _assetRendererFactory =
070 AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
071 getClassName());
072
073 return _assetRendererFactory;
074 }
075
076 @Override
077 public int getAssetRendererType() {
078 return _assetRendererType;
079 }
080
081 @Override
082 public String[] getAvailableLanguageIds() {
083 return _AVAILABLE_LANGUAGE_IDS;
084 }
085
086
089 @Deprecated
090 @Override
091 public String[] getAvailableLocales() {
092 return getAvailableLanguageIds();
093 }
094
095 @Override
096 public DDMFieldReader getDDMFieldReader() {
097 return _nullDDMFieldReader;
098 }
099
100 @Override
101 public String getDiscussionPath() {
102 return null;
103 }
104
105 @Override
106 public Date getDisplayDate() {
107 return null;
108 }
109
110 @Override
111 @SuppressWarnings("unused")
112 public String getIconCssClass() throws PortalException {
113 return getAssetRendererFactory().getIconCssClass();
114 }
115
116 @Override
117 public String getIconPath(PortletRequest portletRequest) {
118 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
119 WebKeys.THEME_DISPLAY);
120
121 return getIconPath(themeDisplay);
122 }
123
124 @Override
125 public String getNewName(String oldName, String token) {
126 return TrashUtil.getNewName(oldName, token);
127 }
128
129 @Override
130 public String getPreviewPath(
131 PortletRequest portletRequest, PortletResponse PortletResponse)
132 throws Exception {
133
134 return "/html/portlet/asset_publisher/display/preview.jsp";
135 }
136
137 @Override
138 public String getSearchSummary(Locale locale) {
139 return getSummary(null, null);
140 }
141
142 @Override
143 public String getSummary() {
144 return getSummary(null, null);
145 }
146
147
151 @Deprecated
152 @Override
153 public String getSummary(Locale locale) {
154 return getSummary(null, null);
155 }
156
157 @Override
158 public String[] getSupportedConversions() {
159 return null;
160 }
161
162 @Override
163 public String getThumbnailPath(PortletRequest portletRequest)
164 throws Exception {
165
166 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
167 WebKeys.THEME_DISPLAY);
168
169 return themeDisplay.getPathThemeImages() +
170 "/file_system/large/default.png";
171 }
172
173 @Override
174 public String getURLDownload(ThemeDisplay themeDisplay) {
175 return null;
176 }
177
178 @Override
179 public PortletURL getURLEdit(
180 LiferayPortletRequest liferayPortletRequest,
181 LiferayPortletResponse liferayPortletResponse)
182 throws Exception {
183
184 return null;
185 }
186
187 @Override
188 public PortletURL getURLEdit(
189 LiferayPortletRequest liferayPortletRequest,
190 LiferayPortletResponse liferayPortletResponse,
191 WindowState windowState, PortletURL redirectURL)
192 throws Exception {
193
194 LiferayPortletURL editPortletURL = (LiferayPortletURL)getURLEdit(
195 liferayPortletRequest, liferayPortletResponse);
196
197 if (editPortletURL == null) {
198 return null;
199 }
200
201 ThemeDisplay themeDisplay =
202 (ThemeDisplay)liferayPortletRequest.getAttribute(
203 WebKeys.THEME_DISPLAY);
204
205 Group group = themeDisplay.getScopeGroup();
206
207 if (group.isLayout()) {
208 Layout layout = themeDisplay.getLayout();
209
210 group = layout.getGroup();
211 }
212
213 if (group.hasStagingGroup()) {
214 return null;
215 }
216
217 editPortletURL.setDoAsGroupId(getGroupId());
218
219 editPortletURL.setParameter("redirect", redirectURL.toString());
220
221 PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
222
223 String portletResource = ParamUtil.getString(
224 liferayPortletRequest, "portletResource", portletDisplay.getId());
225
226 if (Validator.isNotNull(portletResource)) {
227 editPortletURL.setParameter(
228 "referringPortletResource", portletResource);
229 }
230 else {
231 editPortletURL.setParameter(
232 "referringPortletResource", portletDisplay.getId());
233 }
234
235 editPortletURL.setPortletMode(PortletMode.VIEW);
236 editPortletURL.setRefererPlid(themeDisplay.getPlid());
237 editPortletURL.setWindowState(windowState);
238
239 return editPortletURL;
240 }
241
242 @Override
243 public PortletURL getURLExport(
244 LiferayPortletRequest liferayPortletRequest,
245 LiferayPortletResponse liferayPortletResponse)
246 throws Exception {
247
248 return null;
249 }
250
251 @Override
252 public String getURLImagePreview(PortletRequest portletRequest)
253 throws Exception {
254
255 return getThumbnailPath(portletRequest);
256 }
257
258 @Override
259 public String getUrlTitle() {
260 return null;
261 }
262
263 @Override
264 public PortletURL getURLView(
265 LiferayPortletResponse liferayPortletResponse,
266 WindowState windowState)
267 throws Exception {
268
269 return null;
270 }
271
272 @Override
273 public PortletURL getURLViewDiffs(
274 LiferayPortletRequest liferayPortletRequest,
275 LiferayPortletResponse liferayPortletResponse)
276 throws Exception {
277
278 return null;
279 }
280
281 @Override
282 public String getURLViewInContext(
283 LiferayPortletRequest liferayPortletRequest,
284 LiferayPortletResponse liferayPortletResponse,
285 String noSuchEntryRedirect)
286 throws Exception {
287
288 return null;
289 }
290
291 @Override
292 public String getViewInContextMessage() {
293 return "view-in-context";
294 }
295
296 @Override
297 @SuppressWarnings("unused")
298 public boolean hasEditPermission(PermissionChecker permissionChecker)
299 throws PortalException {
300
301 return false;
302 }
303
304 @Override
305 @SuppressWarnings("unused")
306 public boolean hasViewPermission(PermissionChecker permissionChecker)
307 throws PortalException {
308
309 return true;
310 }
311
312 @Override
313 public boolean isConvertible() {
314 return false;
315 }
316
317 @Override
318 public boolean isDisplayable() {
319 return true;
320 }
321
322 @Override
323 public boolean isLocalizable() {
324 return false;
325 }
326
327 @Override
328 public boolean isPreviewInContext() {
329 return false;
330 }
331
332 @Override
333 public boolean isPrintable() {
334 return false;
335 }
336
337 public String renderActions(
338 RenderRequest renderRequest, RenderResponse renderResponse)
339 throws Exception {
340
341 return null;
342 }
343
344 @Override
345 public void setAddToPagePreferences(
346 PortletPreferences preferences, String portletId,
347 ThemeDisplay themeDisplay)
348 throws Exception {
349
350 preferences.setValue("displayStyle", "full-content");
351 preferences.setValue(
352 "emailAssetEntryAddedEnabled", Boolean.FALSE.toString());
353 preferences.setValue("selectionStyle", "manual");
354 preferences.setValue("showAddContentButton", Boolean.FALSE.toString());
355
356 AssetEntry entry = AssetEntryLocalServiceUtil.getEntry(
357 getClassName(), getClassPK());
358
359 AssetPublisherUtil.addSelection(
360 themeDisplay, preferences, portletId, entry.getEntryId(), -1,
361 entry.getClassName());
362 }
363
364 public void setAssetRendererType(int assetRendererType) {
365 _assetRendererType = assetRendererType;
366 }
367
368 protected long getControlPanelPlid(
369 LiferayPortletRequest liferayPortletRequest)
370 throws PortalException {
371
372 return PortalUtil.getControlPanelPlid(liferayPortletRequest);
373 }
374
375 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
376 throws PortalException {
377
378 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
379 }
380
381 protected String getIconPath(ThemeDisplay themeDisplay) {
382 return themeDisplay.getPathThemeImages() + "/common/page.png";
383 }
384
385 protected Locale getLocale(PortletRequest portletRequest) {
386 if (portletRequest != null) {
387 return portletRequest.getLocale();
388 }
389
390 return LocaleUtil.getMostRelevantLocale();
391 }
392
393 protected String getURLViewInContext(
394 LiferayPortletRequest liferayPortletRequest, String noSuchEntryRedirect,
395 String path, String primaryKeyParameterName,
396 long primaryKeyParameterValue) {
397
398 ThemeDisplay themeDisplay =
399 (ThemeDisplay)liferayPortletRequest.getAttribute(
400 WebKeys.THEME_DISPLAY);
401
402 StringBundler sb = new StringBundler(11);
403
404 sb.append(themeDisplay.getPortalURL());
405 sb.append(themeDisplay.getPathMain());
406 sb.append(path);
407 sb.append("?p_l_id=");
408 sb.append(themeDisplay.getPlid());
409 sb.append("&noSuchEntryRedirect=");
410 sb.append(HttpUtil.encodeURL(noSuchEntryRedirect));
411 sb.append(StringPool.AMPERSAND);
412 sb.append(primaryKeyParameterName);
413 sb.append(StringPool.EQUAL);
414 sb.append(primaryKeyParameterValue);
415
416 return PortalUtil.addPreservedParameters(themeDisplay, sb.toString());
417 }
418
419 private static final String[] _AVAILABLE_LANGUAGE_IDS = new String[0];
420
421 private static final DDMFieldReader _nullDDMFieldReader =
422 new NullDDMFieldReader();
423
424 private AssetRendererFactory _assetRendererFactory;
425 private int _assetRendererType = AssetRendererFactory.TYPE_LATEST_APPROVED;
426
427 private static final class NullDDMFieldReader implements DDMFieldReader {
428
429 @Override
430 public Fields getFields() {
431 return new Fields();
432 }
433
434 @Override
435 public Fields getFields(String ddmType) {
436 return getFields();
437 }
438
439 }
440
441 }