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.portlet.asset.AssetRendererFactoryRegistryUtil;
035 import com.liferay.portlet.dynamicdatamapping.model.DDMForm;
036 import com.liferay.portlet.dynamicdatamapping.storage.DDMFormFieldValue;
037 import com.liferay.portlet.dynamicdatamapping.storage.DDMFormValues;
038 import com.liferay.portlet.trash.util.TrashUtil;
039
040 import java.util.Collections;
041 import java.util.Date;
042 import java.util.List;
043 import java.util.Locale;
044
045 import javax.portlet.PortletMode;
046 import javax.portlet.PortletPreferences;
047 import javax.portlet.PortletRequest;
048 import javax.portlet.PortletResponse;
049 import javax.portlet.PortletURL;
050 import javax.portlet.RenderRequest;
051 import javax.portlet.RenderResponse;
052 import javax.portlet.WindowState;
053
054
058 public abstract class BaseAssetRenderer implements AssetRenderer {
059
060
063 @Deprecated
064 @Override
065 public String getAddToPagePortletId() throws Exception {
066 return StringPool.BLANK;
067 }
068
069 public AssetRendererFactory getAssetRendererFactory() {
070 if (_assetRendererFactory != null) {
071 return _assetRendererFactory;
072 }
073
074 _assetRendererFactory =
075 AssetRendererFactoryRegistryUtil.getAssetRendererFactoryByClassName(
076 getClassName());
077
078 return _assetRendererFactory;
079 }
080
081 @Override
082 public int getAssetRendererType() {
083 return _assetRendererType;
084 }
085
086 @Override
087 public String[] getAvailableLanguageIds() {
088 return _AVAILABLE_LANGUAGE_IDS;
089 }
090
091
094 @Deprecated
095 @Override
096 public String[] getAvailableLocales() {
097 return getAvailableLanguageIds();
098 }
099
100 @Override
101 public DDMFormValuesReader getDDMFormValuesReader() {
102 return _nullDDMFormValuesReader;
103 }
104
105 @Override
106 public String getDiscussionPath() {
107 return null;
108 }
109
110 @Override
111 public Date getDisplayDate() {
112 return null;
113 }
114
115 @Override
116 @SuppressWarnings("unused")
117 public String getIconCssClass() throws PortalException {
118 return getAssetRendererFactory().getIconCssClass();
119 }
120
121 @Override
122 public String getIconPath(PortletRequest portletRequest) {
123 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
124 WebKeys.THEME_DISPLAY);
125
126 return getIconPath(themeDisplay);
127 }
128
129 @Override
130 public String getNewName(String oldName, String token) {
131 return TrashUtil.getNewName(oldName, token);
132 }
133
134
137 @Deprecated
138 @Override
139 public String getPreviewPath(
140 PortletRequest portletRequest, PortletResponse PortletResponse)
141 throws Exception {
142
143 return StringPool.BLANK;
144 }
145
146 @Override
147 public String getSearchSummary(Locale locale) {
148 return getSummary(null, null);
149 }
150
151 @Override
152 public String getSummary() {
153 return getSummary(null, null);
154 }
155
156
160 @Deprecated
161 @Override
162 public String getSummary(Locale locale) {
163 return getSummary(null, null);
164 }
165
166 @Override
167 public String[] getSupportedConversions() {
168 return null;
169 }
170
171 @Override
172 public String getThumbnailPath(PortletRequest portletRequest)
173 throws Exception {
174
175 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
176 WebKeys.THEME_DISPLAY);
177
178 return themeDisplay.getPathThemeImages() +
179 "/file_system/large/default.png";
180 }
181
182 @Override
183 public String getURLDownload(ThemeDisplay themeDisplay) {
184 return null;
185 }
186
187 @Override
188 public PortletURL getURLEdit(
189 LiferayPortletRequest liferayPortletRequest,
190 LiferayPortletResponse liferayPortletResponse)
191 throws Exception {
192
193 return null;
194 }
195
196 @Override
197 public PortletURL getURLEdit(
198 LiferayPortletRequest liferayPortletRequest,
199 LiferayPortletResponse liferayPortletResponse,
200 WindowState windowState, PortletURL redirectURL)
201 throws Exception {
202
203 LiferayPortletURL editPortletURL = (LiferayPortletURL)getURLEdit(
204 liferayPortletRequest, liferayPortletResponse);
205
206 if (editPortletURL == null) {
207 return null;
208 }
209
210 ThemeDisplay themeDisplay =
211 (ThemeDisplay)liferayPortletRequest.getAttribute(
212 WebKeys.THEME_DISPLAY);
213
214 Group group = themeDisplay.getScopeGroup();
215
216 if (group.isLayout()) {
217 Layout layout = themeDisplay.getLayout();
218
219 group = layout.getGroup();
220 }
221
222 if (group.hasStagingGroup()) {
223 return null;
224 }
225
226 editPortletURL.setDoAsGroupId(getGroupId());
227
228 editPortletURL.setParameter("redirect", redirectURL.toString());
229
230 PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
231
232 String portletResource = ParamUtil.getString(
233 liferayPortletRequest, "portletResource", portletDisplay.getId());
234
235 if (Validator.isNotNull(portletResource)) {
236 editPortletURL.setParameter(
237 "referringPortletResource", portletResource);
238 }
239 else {
240 editPortletURL.setParameter(
241 "referringPortletResource", portletDisplay.getId());
242 }
243
244 editPortletURL.setPortletMode(PortletMode.VIEW);
245 editPortletURL.setRefererPlid(themeDisplay.getPlid());
246 editPortletURL.setWindowState(windowState);
247
248 return editPortletURL;
249 }
250
251 @Override
252 public PortletURL getURLExport(
253 LiferayPortletRequest liferayPortletRequest,
254 LiferayPortletResponse liferayPortletResponse)
255 throws Exception {
256
257 return null;
258 }
259
260 @Override
261 public String getURLImagePreview(PortletRequest portletRequest)
262 throws Exception {
263
264 return getThumbnailPath(portletRequest);
265 }
266
267 @Override
268 public String getUrlTitle() {
269 return null;
270 }
271
272 @Override
273 public PortletURL getURLView(
274 LiferayPortletResponse liferayPortletResponse,
275 WindowState windowState)
276 throws Exception {
277
278 return null;
279 }
280
281 @Override
282 public PortletURL getURLViewDiffs(
283 LiferayPortletRequest liferayPortletRequest,
284 LiferayPortletResponse liferayPortletResponse)
285 throws Exception {
286
287 return null;
288 }
289
290 @Override
291 public String getURLViewInContext(
292 LiferayPortletRequest liferayPortletRequest,
293 LiferayPortletResponse liferayPortletResponse,
294 String noSuchEntryRedirect)
295 throws Exception {
296
297 return null;
298 }
299
300 @Override
301 public String getViewInContextMessage() {
302 return "view-in-context";
303 }
304
305 @Override
306 @SuppressWarnings("unused")
307 public boolean hasEditPermission(PermissionChecker permissionChecker)
308 throws PortalException {
309
310 return false;
311 }
312
313 @Override
314 @SuppressWarnings("unused")
315 public boolean hasViewPermission(PermissionChecker permissionChecker)
316 throws PortalException {
317
318 return true;
319 }
320
321 @Override
322 public boolean isConvertible() {
323 return false;
324 }
325
326 @Override
327 public boolean isDisplayable() {
328 return true;
329 }
330
331 @Override
332 public boolean isLocalizable() {
333 return false;
334 }
335
336 @Override
337 public boolean isPreviewInContext() {
338 return false;
339 }
340
341 @Override
342 public boolean isPrintable() {
343 return false;
344 }
345
346 public String renderActions(
347 RenderRequest renderRequest, RenderResponse renderResponse)
348 throws Exception {
349
350 return null;
351 }
352
353
356 @Deprecated
357 @Override
358 public void setAddToPagePreferences(
359 PortletPreferences portletPreferences, String portletId,
360 ThemeDisplay themeDisplay)
361 throws Exception {
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 DDMFormValuesReader _nullDDMFormValuesReader =
422 new NullDDMFormValuesReader();
423
424 private AssetRendererFactory _assetRendererFactory;
425 private int _assetRendererType = AssetRendererFactory.TYPE_LATEST_APPROVED;
426
427 private static final class NullDDMFormValuesReader
428 implements DDMFormValuesReader {
429
430 @Override
431 public List<DDMFormFieldValue> getDDMFormFieldValues(
432 String ddmFormFieldType) {
433
434 return Collections.emptyList();
435 }
436
437 @Override
438 public DDMFormValues getDDMFormValues() {
439 return new DDMFormValues(new DDMForm());
440 }
441
442 }
443
444 }