001
014
015 package com.liferay.portlet.asset.model;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
020 import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
021 import com.liferay.portal.kernel.portlet.LiferayPortletURL;
022 import com.liferay.portal.kernel.util.HttpUtil;
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.portal.util.PortletKeys;
036 import com.liferay.portlet.asset.AssetRendererFactoryRegistryUtil;
037 import com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil;
038 import com.liferay.portlet.assetpublisher.util.AssetPublisherUtil;
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 @Override
090 public String[] getAvailableLocales() {
091 return getAvailableLanguageIds();
092 }
093
094 @Override
095 public String getDiscussionPath() {
096 return null;
097 }
098
099 @Override
100 public Date getDisplayDate() {
101 return null;
102 }
103
104 @Override
105 public String getIconPath(PortletRequest portletRequest) {
106 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
107 WebKeys.THEME_DISPLAY);
108
109 return getIconPath(themeDisplay);
110 }
111
112 @Override
113 public String getNewName(String oldName, String token) {
114 return TrashUtil.getNewName(oldName, token);
115 }
116
117 @Override
118 public String getPreviewPath(
119 PortletRequest portletRequest, PortletResponse PortletResponse)
120 throws Exception {
121
122 return "/html/portlet/asset_publisher/display/preview.jsp";
123 }
124
125 @Override
126 public String getSearchSummary(Locale locale) {
127 return getSummary(locale);
128 }
129
130 @Override
131 public int getStatus() {
132 return WorkflowConstants.STATUS_APPROVED;
133 }
134
135 @Override
136 public String getThumbnailPath(PortletRequest portletRequest)
137 throws Exception {
138
139 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
140 WebKeys.THEME_DISPLAY);
141
142 return themeDisplay.getPathThemeImages() +
143 "/file_system/large/default.png";
144 }
145
146 @Override
147 public String getURLDownload(ThemeDisplay themeDisplay) {
148 return null;
149 }
150
151 @Override
152 public PortletURL getURLEdit(
153 LiferayPortletRequest liferayPortletRequest,
154 LiferayPortletResponse liferayPortletResponse)
155 throws Exception {
156
157 return null;
158 }
159
160 @Override
161 public PortletURL getURLEdit(
162 LiferayPortletRequest liferayPortletRequest,
163 LiferayPortletResponse liferayPortletResponse,
164 WindowState windowState, PortletURL redirectURL)
165 throws Exception {
166
167 LiferayPortletURL editPortletURL = (LiferayPortletURL)getURLEdit(
168 liferayPortletRequest, liferayPortletResponse);
169
170 if (editPortletURL == null) {
171 return null;
172 }
173
174 ThemeDisplay themeDisplay =
175 (ThemeDisplay)liferayPortletRequest.getAttribute(
176 WebKeys.THEME_DISPLAY);
177
178 Group group = themeDisplay.getScopeGroup();
179
180 if (group.isLayout()) {
181 Layout layout = themeDisplay.getLayout();
182
183 group = layout.getGroup();
184 }
185
186 if (group.hasStagingGroup()) {
187 return null;
188 }
189
190 editPortletURL.setDoAsGroupId(getGroupId());
191
192 editPortletURL.setParameter("redirect", redirectURL.toString());
193
194 PortletDisplay portletDisplay = themeDisplay.getPortletDisplay();
195
196 String portletResource = ParamUtil.getString(
197 liferayPortletRequest, "portletResource", portletDisplay.getId());
198
199 if (Validator.isNotNull(portletResource)) {
200 editPortletURL.setParameter(
201 "referringPortletResource", portletResource);
202 }
203 else {
204 editPortletURL.setParameter(
205 "referringPortletResource", portletDisplay.getId());
206 }
207
208 editPortletURL.setPortletMode(PortletMode.VIEW);
209 editPortletURL.setRefererPlid(themeDisplay.getPlid());
210 editPortletURL.setWindowState(windowState);
211
212 return editPortletURL;
213 }
214
215 @Override
216 public PortletURL getURLExport(
217 LiferayPortletRequest liferayPortletRequest,
218 LiferayPortletResponse liferayPortletResponse)
219 throws Exception {
220
221 return null;
222 }
223
224 @Override
225 public String getURLImagePreview(PortletRequest portletRequest)
226 throws Exception {
227
228 return getThumbnailPath(portletRequest);
229 }
230
231 @Override
232 public String getUrlTitle() {
233 return null;
234 }
235
236 @Override
237 public PortletURL getURLView(
238 LiferayPortletResponse liferayPortletResponse,
239 WindowState windowState)
240 throws Exception {
241
242 return null;
243 }
244
245 @Override
246 public String getURLViewInContext(
247 LiferayPortletRequest liferayPortletRequest,
248 LiferayPortletResponse liferayPortletResponse,
249 String noSuchEntryRedirect)
250 throws Exception {
251
252 return null;
253 }
254
255 @Override
256 public String getViewInContextMessage() {
257 return "view-in-context";
258 }
259
260 @Override
261 @SuppressWarnings("unused")
262 public boolean hasEditPermission(PermissionChecker permissionChecker)
263 throws PortalException, SystemException {
264
265 return false;
266 }
267
268 @Override
269 @SuppressWarnings("unused")
270 public boolean hasViewPermission(PermissionChecker permissionChecker)
271 throws PortalException, SystemException {
272
273 return true;
274 }
275
276 @Override
277 public boolean isConvertible() {
278 return false;
279 }
280
281 @Override
282 public boolean isDisplayable() {
283 return true;
284 }
285
286 @Override
287 public boolean isLocalizable() {
288 return false;
289 }
290
291 @Override
292 public boolean isPreviewInContext() {
293 return false;
294 }
295
296 @Override
297 public boolean isPrintable() {
298 return false;
299 }
300
301 public String renderActions(
302 RenderRequest renderRequest, RenderResponse renderResponse)
303 throws Exception {
304
305 return null;
306 }
307
308 @Override
309 public void setAddToPagePreferences(
310 PortletPreferences preferences, String portletId,
311 ThemeDisplay themeDisplay)
312 throws Exception {
313
314 preferences.setValue("displayStyle", "full-content");
315 preferences.setValue(
316 "emailAssetEntryAddedEnabled", Boolean.FALSE.toString());
317 preferences.setValue("selectionStyle", "manual");
318 preferences.setValue("showAddContentButton", Boolean.FALSE.toString());
319
320 AssetEntry entry = AssetEntryLocalServiceUtil.getEntry(
321 getClassName(), getClassPK());
322
323 AssetPublisherUtil.addSelection(
324 themeDisplay, preferences, portletId, entry.getEntryId(), -1,
325 entry.getClassName());
326 }
327
328 public void setAssetRendererType(int assetRendererType) {
329 _assetRendererType = assetRendererType;
330 }
331
332 protected long getControlPanelPlid(
333 LiferayPortletRequest liferayPortletRequest)
334 throws PortalException, SystemException {
335
336 return PortalUtil.getControlPanelPlid(liferayPortletRequest);
337 }
338
339 protected long getControlPanelPlid(ThemeDisplay themeDisplay)
340 throws PortalException, SystemException {
341
342 return PortalUtil.getControlPanelPlid(themeDisplay.getCompanyId());
343 }
344
345 protected String getIconPath(ThemeDisplay themeDisplay) {
346 return themeDisplay.getPathThemeImages() + "/common/page.png";
347 }
348
349 protected String getURLViewInContext(
350 LiferayPortletRequest liferayPortletRequest, String noSuchEntryRedirect,
351 String path, String primaryKeyParameterName,
352 long primaryKeyParameterValue) {
353
354 ThemeDisplay themeDisplay =
355 (ThemeDisplay)liferayPortletRequest.getAttribute(
356 WebKeys.THEME_DISPLAY);
357
358 StringBundler sb = new StringBundler(11);
359
360 sb.append(themeDisplay.getPortalURL());
361 sb.append(themeDisplay.getPathMain());
362 sb.append(path);
363 sb.append("?p_l_id=");
364 sb.append(themeDisplay.getPlid());
365 sb.append("&noSuchEntryRedirect=");
366 sb.append(HttpUtil.encodeURL(noSuchEntryRedirect));
367 sb.append(StringPool.AMPERSAND);
368 sb.append(primaryKeyParameterName);
369 sb.append(StringPool.EQUAL);
370 sb.append(primaryKeyParameterValue);
371
372 return PortalUtil.addPreservedParameters(themeDisplay, sb.toString());
373 }
374
375 private static final String[] _AVAILABLE_LANGUAGE_IDS = new String[0];
376
377 private AssetRendererFactory _assetRendererFactory;
378 private int _assetRendererType = AssetRendererFactory.TYPE_LATEST_APPROVED;
379
380 }