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
338
340 velocityContext.put("request", request);
341
342
344 PortletConfigImpl portletConfigImpl =
345 (PortletConfigImpl)request.getAttribute(
346 JavaConstants.JAVAX_PORTLET_CONFIG);
347
348 if (portletConfigImpl != null) {
349 velocityContext.put("portletConfig", portletConfigImpl);
350 }
351
352
354 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
355 JavaConstants.JAVAX_PORTLET_REQUEST);
356
357 if (portletRequest != null) {
358 if (portletRequest instanceof RenderRequest) {
359 velocityContext.put("renderRequest", portletRequest);
360 }
361 }
362
363
365 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
366 JavaConstants.JAVAX_PORTLET_RESPONSE);
367
368 if (portletResponse != null) {
369 if (portletResponse instanceof RenderResponse) {
370 velocityContext.put("renderResponse", portletResponse);
371 }
372 }
373
374
376 if ((portletRequest != null) && (portletResponse != null)) {
377 String xmlRequest = PortletRequestUtil.toXML(
378 portletRequest, portletResponse);
379
380 velocityContext.put("xmlRequest", xmlRequest);
381 }
382
383
385 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
386 WebKeys.THEME_DISPLAY);
387
388 if (themeDisplay != null) {
389 Theme theme = themeDisplay.getTheme();
390
391 Layout layout = themeDisplay.getLayout();
392 List<Layout> layouts = themeDisplay.getLayouts();
393
394 velocityContext.put("themeDisplay", themeDisplay);
395 velocityContext.put("company", themeDisplay.getCompany());
396 velocityContext.put("user", themeDisplay.getUser());
397 velocityContext.put("realUser", themeDisplay.getRealUser());
398 velocityContext.put("layout", layout);
399 velocityContext.put("layouts", layouts);
400 velocityContext.put("plid", String.valueOf(themeDisplay.getPlid()));
401 velocityContext.put(
402 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
403 velocityContext.put(
404 "scopeGroupId", new Long(themeDisplay.getScopeGroupId()));
405 velocityContext.put(
406 "permissionChecker", themeDisplay.getPermissionChecker());
407 velocityContext.put("locale", themeDisplay.getLocale());
408 velocityContext.put("timeZone", themeDisplay.getTimeZone());
409 velocityContext.put("theme", theme);
410 velocityContext.put("colorScheme", themeDisplay.getColorScheme());
411 velocityContext.put(
412 "portletDisplay", themeDisplay.getPortletDisplay());
413
414
416 if (layout != null) {
417 RequestVars requestVars = new RequestVars(
418 request, themeDisplay, layout.getAncestorPlid(),
419 layout.getAncestorLayoutId());
420
421 List<NavItem> navItems = NavItem.fromLayouts(
422 requestVars, layouts);
423
424 velocityContext.put("navItems", navItems);
425 }
426
427
429 String servletContextName = GetterUtil.getString(
430 theme.getServletContextName());
431
432 velocityContext.put(
433 "fullCssPath",
434 servletContextName + theme.getVelocityResourceListener() +
435 theme.getCssPath());
436
437 velocityContext.put(
438 "fullTemplatesPath",
439 servletContextName + theme.getVelocityResourceListener() +
440 theme.getTemplatesPath());
441
442
444 velocityContext.put(
445 "init",
446 themeDisplay.getPathContext() +
447 VelocityResourceListener.SERVLET_SEPARATOR +
448 "/html/themes/_unstyled/templates/init.vm");
449
450
452 velocityContext.put(
453 "portletGroupId", new Long(themeDisplay.getScopeGroupId()));
454 }
455
456
458 String tilesTitle = _insertTilesVariables(
459 velocityContext, request, "tilesTitle", "title");
460 String tilesContent = _insertTilesVariables(
461 velocityContext, request, "tilesContent", "content");
462 boolean tilesSelectable = GetterUtil.getBoolean(_insertTilesVariables(
463 velocityContext, request, "tilesSelectable", "selectable"));
464
465 if (themeDisplay != null) {
466 themeDisplay.setTilesTitle(tilesTitle);
467 themeDisplay.setTilesContent(tilesContent);
468 themeDisplay.setTilesSelectable(tilesSelectable);
469 }
470
471
473 velocityContext.put(
474 "pageTitle", request.getAttribute(WebKeys.PAGE_TITLE));
475 velocityContext.put(
476 "pageSubtitle", request.getAttribute(WebKeys.PAGE_SUBTITLE));
477
478
480 Map<String, Object> vmVariables =
481 (Map<String, Object>)request.getAttribute(WebKeys.VM_VARIABLES);
482
483 if (vmVariables != null) {
484 for (Map.Entry<String, Object> entry : vmVariables.entrySet()) {
485 String key = entry.getKey();
486 Object value = entry.getValue();
487
488 if (Validator.isNotNull(key)) {
489 velocityContext.put(key, value);
490 }
491 }
492 }
493 }
494
495 private static void _insertHelperUtility(
496 VelocityContext velocityContext, String[] restrictedVariables,
497 String key, Object value) {
498
499 if (!ArrayUtil.contains(restrictedVariables, key)) {
500 velocityContext.put(key, value);
501 }
502 }
503
504 private static String _insertTilesVariables(
505 VelocityContext velocityContext, HttpServletRequest request,
506 String attributeId, String attributeName) {
507
508 ComponentContext componentContext =
509 (ComponentContext)request.getAttribute(
510 ComponentConstants.COMPONENT_CONTEXT);
511
512 String value = null;
513
514 if (componentContext != null) {
515 value = (String)componentContext.getAttribute(attributeName);
516
517 if (value != null) {
518 velocityContext.put(attributeId, value);
519 }
520 }
521
522 return value;
523 }
524
525 }