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.DateFormats_IW;
32 import com.liferay.portal.kernel.util.DateUtil_IW;
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.UnicodeFormatter_IW;
44 import com.liferay.portal.kernel.util.Validator;
45 import com.liferay.portal.kernel.util.Validator_IW;
46 import com.liferay.portal.kernel.xml.SAXReaderUtil;
47 import com.liferay.portal.model.Layout;
48 import com.liferay.portal.model.Theme;
49 import com.liferay.portal.service.permission.AccountPermissionUtil;
50 import com.liferay.portal.service.permission.CommonPermissionUtil;
51 import com.liferay.portal.service.permission.GroupPermissionUtil;
52 import com.liferay.portal.service.permission.LayoutPermissionUtil;
53 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
54 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
55 import com.liferay.portal.service.permission.PortalPermissionUtil;
56 import com.liferay.portal.service.permission.PortletPermissionUtil;
57 import com.liferay.portal.service.permission.RolePermissionUtil;
58 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
59 import com.liferay.portal.service.permission.UserPermissionUtil;
60 import com.liferay.portal.theme.NavItem;
61 import com.liferay.portal.theme.RequestVars;
62 import com.liferay.portal.theme.ThemeDisplay;
63 import com.liferay.portal.util.PortalUtil;
64 import com.liferay.portal.util.PrefsPropsUtil_IW;
65 import com.liferay.portal.util.PropsUtil_IW;
66 import com.liferay.portal.util.SessionClicks_IW;
67 import com.liferay.portal.util.WebKeys;
68 import com.liferay.portlet.PortletConfigImpl;
69 import com.liferay.portlet.PortletURLFactory;
70 import com.liferay.portlet.expando.service.ExpandoColumnLocalService;
71 import com.liferay.portlet.expando.service.ExpandoRowLocalService;
72 import com.liferay.portlet.expando.service.ExpandoTableLocalService;
73 import com.liferay.portlet.expando.service.ExpandoValueLocalService;
74 import com.liferay.portlet.journalcontent.util.JournalContentUtil_IW;
75 import com.liferay.util.portlet.PortletRequestUtil;
76
77 import java.util.List;
78 import java.util.Map;
79
80 import javax.portlet.PortletRequest;
81 import javax.portlet.PortletResponse;
82 import javax.portlet.RenderRequest;
83 import javax.portlet.RenderResponse;
84
85 import javax.servlet.http.HttpServletRequest;
86
87 import org.apache.struts.taglib.tiles.ComponentConstants;
88 import org.apache.struts.tiles.ComponentContext;
89 import org.apache.velocity.VelocityContext;
90 import org.apache.velocity.tools.generic.DateTool;
91 import org.apache.velocity.tools.generic.EscapeTool;
92 import org.apache.velocity.tools.generic.IteratorTool;
93 import org.apache.velocity.tools.generic.ListTool;
94 import org.apache.velocity.tools.generic.MathTool;
95 import org.apache.velocity.tools.generic.NumberTool;
96 import org.apache.velocity.tools.generic.SortTool;
97
98
104 public class VelocityVariables {
105
106 public static void insertHelperUtilities(
107 VelocityContext velocityContext, String[] restrictedVariables) {
108
109
111 velocityContext.put("arrayUtil", ArrayUtil_IW.getInstance());
112
113
115 velocityContext.put(
116 "browserSniffer", BrowserSnifferUtil.getBrowserSniffer());
117
118
120 velocityContext.put("dateFormats", DateFormats_IW.getInstance());
121
122
124 velocityContext.put("dateTool", new DateTool());
125
126
128 velocityContext.put("dateUtil", DateUtil_IW.getInstance());
129
130
132 velocityContext.put("escapeTool", new EscapeTool());
133
134
136 ServiceLocator serviceLocator = ServiceLocator.getInstance();
137
138 velocityContext.put(
139 "expandoColumnLocalService",
140 serviceLocator.findService(
141 ExpandoColumnLocalService.class.getName()));
142
143
145 velocityContext.put(
146 "expandoRowLocalService",
147 serviceLocator.findService(ExpandoRowLocalService.class.getName()));
148
149
151 velocityContext.put(
152 "expandoTableLocalService",
153 serviceLocator.findService(
154 ExpandoTableLocalService.class.getName()));
155
156
158 velocityContext.put(
159 "expandoValueLocalService",
160 serviceLocator.findService(
161 ExpandoValueLocalService.class.getName()));
162
163
165 velocityContext.put("getterUtil", GetterUtil_IW.getInstance());
166
167
169 velocityContext.put("htmlUtil", HtmlUtil.getHtml());
170
171
173 velocityContext.put("httpUtil", HttpUtil.getHttp());
174
175
177 velocityContext.put(
178 "imageToken", ImageServletTokenUtil.getImageServletToken());
179
180
182 velocityContext.put("iteratorTool", new IteratorTool());
183
184
186 velocityContext.put(
187 "journalContentUtil", JournalContentUtil_IW.getInstance());
188
189
191 velocityContext.put("languageUtil", LanguageUtil.getLanguage());
192 velocityContext.put(
193 "unicodeLanguageUtil", UnicodeLanguageUtil.getUnicodeLanguage());
194
195
197 velocityContext.put("listTool", new ListTool());
198
199
201 velocityContext.put("localeUtil", LocaleUtil.getInstance());
202
203
205 velocityContext.put("mathTool", new MathTool());
206
207
209 velocityContext.put("numberTool", new NumberTool());
210
211
213 velocityContext.put("paramUtil", ParamUtil_IW.getInstance());
214
215
217 _insertHelperUtility(
218 velocityContext, restrictedVariables, "portalUtil",
219 PortalUtil.getPortal());
220 _insertHelperUtility(
221 velocityContext, restrictedVariables, "portal",
222 PortalUtil.getPortal());
223
224
226 _insertHelperUtility(
227 velocityContext, restrictedVariables, "prefsPropsUtil",
228 PrefsPropsUtil_IW.getInstance());
229
230
232 _insertHelperUtility(
233 velocityContext, restrictedVariables, "propsUtil",
234 PropsUtil_IW.getInstance());
235
236
238 velocityContext.put(
239 "portletURLFactory", PortletURLFactory.getInstance());
240
241
243 _insertHelperUtility(
244 velocityContext, restrictedVariables, "velocityPortletPreferences",
245 new VelocityPortletPreferences());
246
247
249 velocityContext.put(
250 "randomizer", Randomizer_IW.getInstance().getWrappedInstance());
251
252
254 UtilLocator utilLocator = UtilLocator.getInstance();
255
256 velocityContext.put(
257 "saxReaderUtil",
258 utilLocator.findUtil(SAXReaderUtil.class.getName()));
259
260
262 _insertHelperUtility(
263 velocityContext, restrictedVariables, "serviceLocator",
264 serviceLocator);
265
266
268 _insertHelperUtility(
269 velocityContext, restrictedVariables, "sessionClicks",
270 SessionClicks_IW.getInstance());
271
272
274 velocityContext.put("sortTool", new SortTool());
275
276
278 velocityContext.put(
279 "staticFieldGetter", StaticFieldGetter.getInstance());
280
281
283 velocityContext.put("stringUtil", StringUtil_IW.getInstance());
284
285
287 _insertHelperUtility(
288 velocityContext, restrictedVariables, "utilLocator", utilLocator);
289
290
292 velocityContext.put(
293 "unicodeFormatter", UnicodeFormatter_IW.getInstance());
294
295
297 velocityContext.put("validator", Validator_IW.getInstance());
298
299
301 velocityContext.put(
302 "accountPermission", AccountPermissionUtil.getAccountPermission());
303 velocityContext.put(
304 "commonPermission", CommonPermissionUtil.getCommonPermission());
305 velocityContext.put(
306 "groupPermission", GroupPermissionUtil.getGroupPermission());
307 velocityContext.put(
308 "layoutPermission", LayoutPermissionUtil.getLayoutPermission());
309 velocityContext.put(
310 "organizationPermission",
311 OrganizationPermissionUtil.getOrganizationPermission());
312 velocityContext.put(
313 "passwordPolicyPermission",
314 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
315 velocityContext.put(
316 "portalPermission", PortalPermissionUtil.getPortalPermission());
317 velocityContext.put(
318 "portletPermission", PortletPermissionUtil.getPortletPermission());
319 velocityContext.put(
320 "rolePermission", RolePermissionUtil.getRolePermission());
321 velocityContext.put(
322 "userGroupPermission",
323 UserGroupPermissionUtil.getUserGroupPermission());
324 velocityContext.put(
325 "userPermission", UserPermissionUtil.getUserPermission());
326
327
329 velocityContext.put(
330 "locationPermission",
331 OrganizationPermissionUtil.getOrganizationPermission());
332 }
333
334 public static void insertVariables(
335 VelocityContext velocityContext, HttpServletRequest request) {
336
337
339 velocityContext.put("request", request);
340
341
343 PortletConfigImpl portletConfigImpl =
344 (PortletConfigImpl)request.getAttribute(
345 JavaConstants.JAVAX_PORTLET_CONFIG);
346
347 if (portletConfigImpl != null) {
348 velocityContext.put("portletConfig", portletConfigImpl);
349 }
350
351
353 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
354 JavaConstants.JAVAX_PORTLET_REQUEST);
355
356 if (portletRequest != null) {
357 if (portletRequest instanceof RenderRequest) {
358 velocityContext.put("renderRequest", portletRequest);
359 }
360 }
361
362
364 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
365 JavaConstants.JAVAX_PORTLET_RESPONSE);
366
367 if (portletResponse != null) {
368 if (portletResponse instanceof RenderResponse) {
369 velocityContext.put("renderResponse", portletResponse);
370 }
371 }
372
373
375 if ((portletRequest != null) && (portletResponse != null)) {
376 String xmlRequest = PortletRequestUtil.toXML(
377 portletRequest, portletResponse);
378
379 velocityContext.put("xmlRequest", xmlRequest);
380 }
381
382
384 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
385 WebKeys.THEME_DISPLAY);
386
387 if (themeDisplay != null) {
388 Theme theme = themeDisplay.getTheme();
389
390 Layout layout = themeDisplay.getLayout();
391 List<Layout> layouts = themeDisplay.getLayouts();
392
393 velocityContext.put("themeDisplay", themeDisplay);
394 velocityContext.put("company", themeDisplay.getCompany());
395 velocityContext.put("user", themeDisplay.getUser());
396 velocityContext.put("realUser", themeDisplay.getRealUser());
397 velocityContext.put("layout", layout);
398 velocityContext.put("layouts", layouts);
399 velocityContext.put("plid", String.valueOf(themeDisplay.getPlid()));
400 velocityContext.put(
401 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
402 velocityContext.put(
403 "scopeGroupId", new Long(themeDisplay.getScopeGroupId()));
404 velocityContext.put(
405 "permissionChecker", themeDisplay.getPermissionChecker());
406 velocityContext.put("locale", themeDisplay.getLocale());
407 velocityContext.put("timeZone", themeDisplay.getTimeZone());
408 velocityContext.put("theme", theme);
409 velocityContext.put("colorScheme", themeDisplay.getColorScheme());
410 velocityContext.put(
411 "portletDisplay", themeDisplay.getPortletDisplay());
412
413
415 if (layout != null) {
416 RequestVars requestVars = new RequestVars(
417 request, themeDisplay, layout.getAncestorPlid(),
418 layout.getAncestorLayoutId());
419
420 List<NavItem> navItems = NavItem.fromLayouts(
421 requestVars, layouts);
422
423 velocityContext.put("navItems", navItems);
424 }
425
426
428 String servletContextName = GetterUtil.getString(
429 theme.getServletContextName());
430
431 velocityContext.put(
432 "fullCssPath",
433 servletContextName + theme.getVelocityResourceListener() +
434 theme.getCssPath());
435
436 velocityContext.put(
437 "fullTemplatesPath",
438 servletContextName + theme.getVelocityResourceListener() +
439 theme.getTemplatesPath());
440
441
443 velocityContext.put(
444 "init",
445 themeDisplay.getPathContext() +
446 VelocityResourceListener.SERVLET_SEPARATOR +
447 "/html/themes/_unstyled/templates/init.vm");
448
449
451 velocityContext.put(
452 "portletGroupId", new Long(themeDisplay.getScopeGroupId()));
453 }
454
455
457 String tilesTitle = _insertTilesVariables(
458 velocityContext, request, "tilesTitle", "title");
459 String tilesContent = _insertTilesVariables(
460 velocityContext, request, "tilesContent", "content");
461 boolean tilesSelectable = GetterUtil.getBoolean(_insertTilesVariables(
462 velocityContext, request, "tilesSelectable", "selectable"));
463
464 if (themeDisplay != null) {
465 themeDisplay.setTilesTitle(tilesTitle);
466 themeDisplay.setTilesContent(tilesContent);
467 themeDisplay.setTilesSelectable(tilesSelectable);
468 }
469
470
472 velocityContext.put(
473 "pageTitle", request.getAttribute(WebKeys.PAGE_TITLE));
474 velocityContext.put(
475 "pageSubtitle", request.getAttribute(WebKeys.PAGE_SUBTITLE));
476
477
479 insertHelperUtilities(velocityContext, null);
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 String _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 String value = null;
516
517 if (componentContext != null) {
518 value = (String)componentContext.getAttribute(attributeName);
519
520 if (value != null) {
521 velocityContext.put(attributeId, value);
522 }
523 }
524
525 return value;
526 }
527
528 }