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