1
14
15 package com.liferay.portal.velocity;
16
17 import com.liferay.portal.kernel.language.LanguageUtil;
18 import com.liferay.portal.kernel.language.UnicodeLanguageUtil;
19 import com.liferay.portal.kernel.servlet.BrowserSnifferUtil;
20 import com.liferay.portal.kernel.servlet.ImageServletTokenUtil;
21 import com.liferay.portal.kernel.util.ArrayUtil;
22 import com.liferay.portal.kernel.util.ArrayUtil_IW;
23 import com.liferay.portal.kernel.util.DateUtil_IW;
24 import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil;
25 import com.liferay.portal.kernel.util.GetterUtil;
26 import com.liferay.portal.kernel.util.GetterUtil_IW;
27 import com.liferay.portal.kernel.util.HtmlUtil;
28 import com.liferay.portal.kernel.util.HttpUtil;
29 import com.liferay.portal.kernel.util.JavaConstants;
30 import com.liferay.portal.kernel.util.LocaleUtil;
31 import com.liferay.portal.kernel.util.ParamUtil_IW;
32 import com.liferay.portal.kernel.util.Randomizer_IW;
33 import com.liferay.portal.kernel.util.StaticFieldGetter;
34 import com.liferay.portal.kernel.util.StringUtil_IW;
35 import com.liferay.portal.kernel.util.TimeZoneUtil_IW;
36 import com.liferay.portal.kernel.util.UnicodeFormatter_IW;
37 import com.liferay.portal.kernel.util.Validator;
38 import com.liferay.portal.kernel.util.Validator_IW;
39 import com.liferay.portal.kernel.velocity.VelocityContext;
40 import com.liferay.portal.kernel.xml.SAXReader;
41 import com.liferay.portal.model.Layout;
42 import com.liferay.portal.model.Theme;
43 import com.liferay.portal.service.permission.AccountPermissionUtil;
44 import com.liferay.portal.service.permission.CommonPermissionUtil;
45 import com.liferay.portal.service.permission.GroupPermissionUtil;
46 import com.liferay.portal.service.permission.LayoutPermissionUtil;
47 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
48 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
49 import com.liferay.portal.service.permission.PortalPermissionUtil;
50 import com.liferay.portal.service.permission.PortletPermissionUtil;
51 import com.liferay.portal.service.permission.RolePermissionUtil;
52 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
53 import com.liferay.portal.service.permission.UserPermissionUtil;
54 import com.liferay.portal.theme.NavItem;
55 import com.liferay.portal.theme.RequestVars;
56 import com.liferay.portal.theme.ThemeDisplay;
57 import com.liferay.portal.util.PortalUtil;
58 import com.liferay.portal.util.PrefsPropsUtil_IW;
59 import com.liferay.portal.util.PropsUtil_IW;
60 import com.liferay.portal.util.SessionClicks_IW;
61 import com.liferay.portal.util.WebKeys;
62 import com.liferay.portlet.PortletConfigImpl;
63 import com.liferay.portlet.PortletURLFactoryUtil;
64 import com.liferay.portlet.expando.service.ExpandoColumnLocalService;
65 import com.liferay.portlet.expando.service.ExpandoRowLocalService;
66 import com.liferay.portlet.expando.service.ExpandoTableLocalService;
67 import com.liferay.portlet.expando.service.ExpandoValueLocalService;
68 import com.liferay.portlet.journalcontent.util.JournalContentUtil;
69 import com.liferay.util.portlet.PortletRequestUtil;
70
71 import java.util.List;
72 import java.util.Map;
73
74 import javax.portlet.PortletRequest;
75 import javax.portlet.PortletResponse;
76 import javax.portlet.RenderRequest;
77 import javax.portlet.RenderResponse;
78
79 import javax.servlet.http.HttpServletRequest;
80
81 import org.apache.struts.taglib.tiles.ComponentConstants;
82 import org.apache.struts.tiles.ComponentContext;
83 import org.apache.velocity.tools.generic.DateTool;
84 import org.apache.velocity.tools.generic.EscapeTool;
85 import org.apache.velocity.tools.generic.IteratorTool;
86 import org.apache.velocity.tools.generic.ListTool;
87 import org.apache.velocity.tools.generic.MathTool;
88 import org.apache.velocity.tools.generic.NumberTool;
89 import org.apache.velocity.tools.generic.SortTool;
90
91
97 public class VelocityVariables {
98
99 public static void insertHelperUtilities(
100 VelocityContext velocityContext, String[] restrictedVariables) {
101
102
104 velocityContext.put("arrayUtil", ArrayUtil_IW.getInstance());
105
106
108 velocityContext.put(
109 "browserSniffer", BrowserSnifferUtil.getBrowserSniffer());
110
111
113 velocityContext.put(
114 "dateFormatFactory",
115 FastDateFormatFactoryUtil.getFastDateFormatFactory());
116
117
119 velocityContext.put("dateTool", new DateTool());
120
121
123 velocityContext.put("dateUtil", DateUtil_IW.getInstance());
124
125
127 velocityContext.put("escapeTool", new EscapeTool());
128
129
131 ServiceLocator serviceLocator = ServiceLocator.getInstance();
132
133 velocityContext.put(
134 "expandoColumnLocalService",
135 serviceLocator.findService(
136 ExpandoColumnLocalService.class.getName()));
137
138
140 velocityContext.put(
141 "expandoRowLocalService",
142 serviceLocator.findService(ExpandoRowLocalService.class.getName()));
143
144
146 velocityContext.put(
147 "expandoTableLocalService",
148 serviceLocator.findService(
149 ExpandoTableLocalService.class.getName()));
150
151
153 velocityContext.put(
154 "expandoValueLocalService",
155 serviceLocator.findService(
156 ExpandoValueLocalService.class.getName()));
157
158
160 velocityContext.put("getterUtil", GetterUtil_IW.getInstance());
161
162
164 velocityContext.put("htmlUtil", HtmlUtil.getHtml());
165
166
168 velocityContext.put("httpUtil", HttpUtil.getHttp());
169
170
172 velocityContext.put(
173 "imageToken", ImageServletTokenUtil.getImageServletToken());
174
175
177 velocityContext.put("iteratorTool", new IteratorTool());
178
179
181 velocityContext.put(
182 "journalContentUtil", JournalContentUtil.getJournalContent());
183
184
186 velocityContext.put("languageUtil", LanguageUtil.getLanguage());
187 velocityContext.put(
188 "unicodeLanguageUtil", UnicodeLanguageUtil.getUnicodeLanguage());
189
190
192 velocityContext.put("listTool", new ListTool());
193
194
196 velocityContext.put("localeUtil", LocaleUtil.getInstance());
197
198
200 velocityContext.put("mathTool", new MathTool());
201
202
204 velocityContext.put("numberTool", new NumberTool());
205
206
208 velocityContext.put("paramUtil", ParamUtil_IW.getInstance());
209
210
212 _insertHelperUtility(
213 velocityContext, restrictedVariables, "portalUtil",
214 PortalUtil.getPortal());
215 _insertHelperUtility(
216 velocityContext, restrictedVariables, "portal",
217 PortalUtil.getPortal());
218
219
221 _insertHelperUtility(
222 velocityContext, restrictedVariables, "prefsPropsUtil",
223 PrefsPropsUtil_IW.getInstance());
224
225
227 _insertHelperUtility(
228 velocityContext, restrictedVariables, "propsUtil",
229 PropsUtil_IW.getInstance());
230
231
233 velocityContext.put(
234 "portletURLFactory", PortletURLFactoryUtil.getPortletURLFactory());
235
236
238 _insertHelperUtility(
239 velocityContext, restrictedVariables, "velocityPortletPreferences",
240 new VelocityPortletPreferences());
241
242
244 velocityContext.put(
245 "randomizer", Randomizer_IW.getInstance().getWrappedInstance());
246
247
249 UtilLocator utilLocator = UtilLocator.getInstance();
250
251 velocityContext.put(
252 "saxReaderUtil", utilLocator.findUtil(SAXReader.class.getName()));
253
254
256 _insertHelperUtility(
257 velocityContext, restrictedVariables, "serviceLocator",
258 serviceLocator);
259
260
262 _insertHelperUtility(
263 velocityContext, restrictedVariables, "sessionClicks",
264 SessionClicks_IW.getInstance());
265
266
268 velocityContext.put("sortTool", new SortTool());
269
270
272 velocityContext.put(
273 "staticFieldGetter", StaticFieldGetter.getInstance());
274
275
277 velocityContext.put("stringUtil", StringUtil_IW.getInstance());
278
279
281 velocityContext.put("timeZoneUtil", TimeZoneUtil_IW.getInstance());
282
283
285 _insertHelperUtility(
286 velocityContext, restrictedVariables, "utilLocator", utilLocator);
287
288
290 velocityContext.put(
291 "unicodeFormatter", UnicodeFormatter_IW.getInstance());
292
293
295 velocityContext.put("validator", Validator_IW.getInstance());
296
297
299 velocityContext.put(
300 "accountPermission", AccountPermissionUtil.getAccountPermission());
301 velocityContext.put(
302 "commonPermission", CommonPermissionUtil.getCommonPermission());
303 velocityContext.put(
304 "groupPermission", GroupPermissionUtil.getGroupPermission());
305 velocityContext.put(
306 "layoutPermission", LayoutPermissionUtil.getLayoutPermission());
307 velocityContext.put(
308 "organizationPermission",
309 OrganizationPermissionUtil.getOrganizationPermission());
310 velocityContext.put(
311 "passwordPolicyPermission",
312 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
313 velocityContext.put(
314 "portalPermission", PortalPermissionUtil.getPortalPermission());
315 velocityContext.put(
316 "portletPermission", PortletPermissionUtil.getPortletPermission());
317 velocityContext.put(
318 "rolePermission", RolePermissionUtil.getRolePermission());
319 velocityContext.put(
320 "userGroupPermission",
321 UserGroupPermissionUtil.getUserGroupPermission());
322 velocityContext.put(
323 "userPermission", UserPermissionUtil.getUserPermission());
324
325
327 velocityContext.put(
328 "dateFormats",
329 FastDateFormatFactoryUtil.getFastDateFormatFactory());
330 velocityContext.put(
331 "locationPermission",
332 OrganizationPermissionUtil.getOrganizationPermission());
333 }
334
335 public static void insertVariables(
336 VelocityContext velocityContext, HttpServletRequest request)
337 throws Exception {
338
339
341 velocityContext.put("request", request);
342
343
345 PortletConfigImpl portletConfigImpl =
346 (PortletConfigImpl)request.getAttribute(
347 JavaConstants.JAVAX_PORTLET_CONFIG);
348
349 if (portletConfigImpl != null) {
350 velocityContext.put("portletConfig", portletConfigImpl);
351 }
352
353
355 final PortletRequest portletRequest =
356 (PortletRequest)request.getAttribute(
357 JavaConstants.JAVAX_PORTLET_REQUEST);
358
359 if (portletRequest != null) {
360 if (portletRequest instanceof RenderRequest) {
361 velocityContext.put("renderRequest", portletRequest);
362 }
363 }
364
365
367 final PortletResponse portletResponse =
368 (PortletResponse)request.getAttribute(
369 JavaConstants.JAVAX_PORTLET_RESPONSE);
370
371 if (portletResponse != null) {
372 if (portletResponse instanceof RenderResponse) {
373 velocityContext.put("renderResponse", portletResponse);
374 }
375 }
376
377
379 if ((portletRequest != null) && (portletResponse != null)) {
380 velocityContext.put(
381 "xmlRequest",
382 new Object() {
383
384 public String toString() {
385 return PortletRequestUtil.toXML(
386 portletRequest, portletResponse);
387 }
388
389 }
390 );
391 }
392
393
395 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
396 WebKeys.THEME_DISPLAY);
397
398 if (themeDisplay != null) {
399 Theme theme = themeDisplay.getTheme();
400
401 Layout layout = themeDisplay.getLayout();
402 List<Layout> layouts = themeDisplay.getLayouts();
403
404 velocityContext.put("themeDisplay", themeDisplay);
405 velocityContext.put("company", themeDisplay.getCompany());
406 velocityContext.put("user", themeDisplay.getUser());
407 velocityContext.put("realUser", themeDisplay.getRealUser());
408 velocityContext.put("layout", layout);
409 velocityContext.put("layouts", layouts);
410 velocityContext.put("plid", String.valueOf(themeDisplay.getPlid()));
411 velocityContext.put(
412 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
413 velocityContext.put(
414 "scopeGroupId", new Long(themeDisplay.getScopeGroupId()));
415 velocityContext.put(
416 "permissionChecker", themeDisplay.getPermissionChecker());
417 velocityContext.put("locale", themeDisplay.getLocale());
418 velocityContext.put("timeZone", themeDisplay.getTimeZone());
419 velocityContext.put("theme", theme);
420 velocityContext.put("colorScheme", themeDisplay.getColorScheme());
421 velocityContext.put(
422 "portletDisplay", themeDisplay.getPortletDisplay());
423
424
426 if (layout != null) {
427 RequestVars requestVars = new RequestVars(
428 request, themeDisplay, layout.getAncestorPlid(),
429 layout.getAncestorLayoutId());
430
431 List<NavItem> navItems = NavItem.fromLayouts(
432 requestVars, layouts);
433
434 velocityContext.put("navItems", navItems);
435 }
436
437
439 String servletContextName = GetterUtil.getString(
440 theme.getServletContextName());
441
442 velocityContext.put(
443 "fullCssPath",
444 servletContextName + theme.getVelocityResourceListener() +
445 theme.getCssPath());
446
447 velocityContext.put(
448 "fullTemplatesPath",
449 servletContextName + theme.getVelocityResourceListener() +
450 theme.getTemplatesPath());
451
452
454 velocityContext.put(
455 "init",
456 themeDisplay.getPathContext() +
457 VelocityResourceListener.SERVLET_SEPARATOR +
458 "/html/themes/_unstyled/templates/init.vm");
459
460
462 velocityContext.put(
463 "portletGroupId", new Long(themeDisplay.getScopeGroupId()));
464 }
465
466
468 _insertTilesVariables(velocityContext, request, "tilesTitle", "title");
469 _insertTilesVariables(
470 velocityContext, request, "tilesContent", "content");
471 _insertTilesVariables(
472 velocityContext, request, "tilesSelectable", "selectable");
473
474
476 velocityContext.put(
477 "pageTitle", request.getAttribute(WebKeys.PAGE_TITLE));
478 velocityContext.put(
479 "pageSubtitle", request.getAttribute(WebKeys.PAGE_SUBTITLE));
480
481
483 Map<String, Object> vmVariables =
484 (Map<String, Object>)request.getAttribute(WebKeys.VM_VARIABLES);
485
486 if (vmVariables != null) {
487 for (Map.Entry<String, Object> entry : vmVariables.entrySet()) {
488 String key = entry.getKey();
489 Object value = entry.getValue();
490
491 if (Validator.isNotNull(key)) {
492 velocityContext.put(key, value);
493 }
494 }
495 }
496 }
497
498 private static void _insertHelperUtility(
499 VelocityContext velocityContext, String[] restrictedVariables,
500 String key, Object value) {
501
502 if (!ArrayUtil.contains(restrictedVariables, key)) {
503 velocityContext.put(key, value);
504 }
505 }
506
507 private static void _insertTilesVariables(
508 VelocityContext velocityContext, HttpServletRequest request,
509 String attributeId, String attributeName) {
510
511 ComponentContext componentContext =
512 (ComponentContext)request.getAttribute(
513 ComponentConstants.COMPONENT_CONTEXT);
514
515 if (componentContext != null) {
516 String value = (String)componentContext.getAttribute(attributeName);
517
518 if (value != null) {
519 velocityContext.put(attributeId, value);
520 }
521 }
522 }
523
524 }