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