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