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 final PortletRequest portletRequest =
355 (PortletRequest)request.getAttribute(
356 JavaConstants.JAVAX_PORTLET_REQUEST);
357
358 if (portletRequest != null) {
359 if (portletRequest instanceof RenderRequest) {
360 velocityContext.put("renderRequest", portletRequest);
361 }
362 }
363
364
366 final PortletResponse portletResponse =
367 (PortletResponse)request.getAttribute(
368 JavaConstants.JAVAX_PORTLET_RESPONSE);
369
370 if (portletResponse != null) {
371 if (portletResponse instanceof RenderResponse) {
372 velocityContext.put("renderResponse", portletResponse);
373 }
374 }
375
376
378 if ((portletRequest != null) && (portletResponse != null)) {
379 velocityContext.put(
380 "xmlRequest",
381 new Object() {
382
383 public String toString() {
384 return PortletRequestUtil.toXML(
385 portletRequest, portletResponse);
386 }
387
388 }
389 );
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 }