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.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.ServiceLocator;
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
75 import java.util.List;
76 import java.util.Map;
77
78 import javax.portlet.PortletRequest;
79 import javax.portlet.PortletResponse;
80 import javax.portlet.RenderRequest;
81 import javax.portlet.RenderResponse;
82
83 import javax.servlet.http.HttpServletRequest;
84
85 import org.apache.struts.taglib.tiles.ComponentConstants;
86 import org.apache.struts.tiles.ComponentContext;
87 import org.apache.velocity.VelocityContext;
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
102 public class VelocityVariables {
103
104 public static void insertHelperUtilities(
105 VelocityContext velocityContext, String[] restrictedVariables) {
106
107
109 velocityContext.put("arrayUtil", ArrayUtil_IW.getInstance());
110
111
113 velocityContext.put(
114 "browserSniffer", BrowserSnifferUtil.getBrowserSniffer());
115
116
118 velocityContext.put("dateFormats", DateFormats_IW.getInstance());
119
120
122 velocityContext.put("dateTool", new DateTool());
123
124
126 velocityContext.put("dateUtil", DateUtil_IW.getInstance());
127
128
130 velocityContext.put("escapeTool", new EscapeTool());
131
132
134 ServiceLocator serviceLocator = ServiceLocator.getInstance();
135
136 velocityContext.put(
137 "expandoColumnLocalService",
138 serviceLocator.findService(
139 ExpandoColumnLocalService.class.getName()));
140
141
143 velocityContext.put(
144 "expandoRowLocalService",
145 serviceLocator.findService(ExpandoRowLocalService.class.getName()));
146
147
149 velocityContext.put(
150 "expandoTableLocalService",
151 serviceLocator.findService(
152 ExpandoTableLocalService.class.getName()));
153
154
156 velocityContext.put(
157 "expandoValueLocalService",
158 serviceLocator.findService(
159 ExpandoValueLocalService.class.getName()));
160
161
163 velocityContext.put("getterUtil", GetterUtil_IW.getInstance());
164
165
167 velocityContext.put("htmlUtil", HtmlUtil.getHtml());
168
169
171 velocityContext.put("httpUtil", HttpUtil.getHttp());
172
173
175 velocityContext.put(
176 "imageToken", ImageServletTokenUtil.getImageServletToken());
177
178
180 velocityContext.put("iteratorTool", new IteratorTool());
181
182
184 velocityContext.put("languageUtil", LanguageUtil.getLanguage());
185 velocityContext.put(
186 "unicodeLanguageUtil", UnicodeLanguageUtil.getUnicodeLanguage());
187
188
190 velocityContext.put("listTool", new ListTool());
191
192
194 velocityContext.put("localeUtil", LocaleUtil.getInstance());
195
196
198 velocityContext.put("mathTool", new MathTool());
199
200
202 velocityContext.put("numberTool", new NumberTool());
203
204
206 velocityContext.put("paramUtil", ParamUtil_IW.getInstance());
207
208
210 _insertHelperUtility(
211 velocityContext, restrictedVariables, "portalUtil",
212 PortalUtil.getPortal());
213 _insertHelperUtility(
214 velocityContext, restrictedVariables, "portal",
215 PortalUtil.getPortal());
216
217
219 _insertHelperUtility(
220 velocityContext, restrictedVariables, "prefsPropsUtil",
221 PrefsPropsUtil_IW.getInstance());
222
223
225 _insertHelperUtility(
226 velocityContext, restrictedVariables, "propsUtil",
227 PropsUtil_IW.getInstance());
228
229
231 velocityContext.put(
232 "portletURLFactory", PortletURLFactory.getInstance());
233
234
236 _insertHelperUtility(
237 velocityContext, restrictedVariables, "velocityPortletPreferences",
238 new VelocityPortletPreferences());
239
240
242 velocityContext.put(
243 "randomizer", Randomizer_IW.getInstance().getWrappedInstance());
244
245
247 _insertHelperUtility(
248 velocityContext, restrictedVariables, "serviceLocator",
249 serviceLocator);
250
251
253 _insertHelperUtility(
254 velocityContext, restrictedVariables, "sessionClicks",
255 SessionClicks_IW.getInstance());
256
257
259 velocityContext.put("sortTool", new SortTool());
260
261
263 velocityContext.put(
264 "staticFieldGetter", StaticFieldGetter.getInstance());
265
266
268 velocityContext.put("stringUtil", StringUtil_IW.getInstance());
269
270
272 velocityContext.put(
273 "unicodeFormatter", UnicodeFormatter_IW.getInstance());
274
275
277 velocityContext.put("validator", Validator_IW.getInstance());
278
279
281 velocityContext.put(
282 "accountPermission", AccountPermissionUtil.getAccountPermission());
283 velocityContext.put(
284 "commonPermission", CommonPermissionUtil.getCommonPermission());
285 velocityContext.put(
286 "groupPermission", GroupPermissionUtil.getGroupPermission());
287 velocityContext.put(
288 "layoutPermission", LayoutPermissionUtil.getLayoutPermission());
289 velocityContext.put(
290 "organizationPermission",
291 OrganizationPermissionUtil.getOrganizationPermission());
292 velocityContext.put(
293 "passwordPolicyPermission",
294 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
295 velocityContext.put(
296 "portalPermission", PortalPermissionUtil.getPortalPermission());
297 velocityContext.put(
298 "portletPermission", PortletPermissionUtil.getPortletPermission());
299 velocityContext.put(
300 "rolePermission", RolePermissionUtil.getRolePermission());
301 velocityContext.put(
302 "userGroupPermission",
303 UserGroupPermissionUtil.getUserGroupPermission());
304 velocityContext.put(
305 "userPermission", UserPermissionUtil.getUserPermission());
306
307
309 velocityContext.put(
310 "locationPermission",
311 OrganizationPermissionUtil.getOrganizationPermission());
312 }
313
314 public static void insertVariables(
315 VelocityContext velocityContext, HttpServletRequest request) {
316
317
319 velocityContext.put("request", request);
320
321
323 PortletConfigImpl portletConfigImpl =
324 (PortletConfigImpl)request.getAttribute(
325 JavaConstants.JAVAX_PORTLET_CONFIG);
326
327 if (portletConfigImpl != null) {
328 velocityContext.put("portletConfig", portletConfigImpl);
329 }
330
331
333 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
334 JavaConstants.JAVAX_PORTLET_REQUEST);
335
336 if (portletRequest != null) {
337 if (portletRequest instanceof RenderRequest) {
338 velocityContext.put("renderRequest", portletRequest);
339 }
340 }
341
342
344 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
345 JavaConstants.JAVAX_PORTLET_RESPONSE);
346
347 if (portletResponse != null) {
348 if (portletResponse instanceof RenderResponse) {
349 velocityContext.put("renderResponse", portletResponse);
350 }
351 }
352
353
355 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
356 WebKeys.THEME_DISPLAY);
357
358 if (themeDisplay != null) {
359 Theme theme = themeDisplay.getTheme();
360
361 Layout layout = themeDisplay.getLayout();
362 List<Layout> layouts = themeDisplay.getLayouts();
363
364 velocityContext.put("themeDisplay", themeDisplay);
365 velocityContext.put("company", themeDisplay.getCompany());
366 velocityContext.put("user", themeDisplay.getUser());
367 velocityContext.put("realUser", themeDisplay.getRealUser());
368 velocityContext.put("layout", layout);
369 velocityContext.put("layouts", layouts);
370 velocityContext.put("plid", String.valueOf(themeDisplay.getPlid()));
371 velocityContext.put(
372 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
373 velocityContext.put(
374 "portletGroupId", new Long(themeDisplay.getPortletGroupId()));
375 velocityContext.put(
376 "permissionChecker", themeDisplay.getPermissionChecker());
377 velocityContext.put("locale", themeDisplay.getLocale());
378 velocityContext.put("timeZone", themeDisplay.getTimeZone());
379 velocityContext.put("theme", theme);
380 velocityContext.put("colorScheme", themeDisplay.getColorScheme());
381 velocityContext.put(
382 "portletDisplay", themeDisplay.getPortletDisplay());
383
384
386 if (layout != null) {
387 RequestVars requestVars = new RequestVars(
388 request, themeDisplay, layout.getAncestorPlid(),
389 layout.getAncestorLayoutId());
390
391 List<NavItem> navItems = NavItem.fromLayouts(
392 requestVars, layouts);
393
394 velocityContext.put("navItems", navItems);
395 }
396
397
399 String servletContextName = GetterUtil.getString(
400 theme.getServletContextName());
401
402 velocityContext.put(
403 "fullCssPath",
404 servletContextName + theme.getVelocityResourceListener() +
405 theme.getCssPath());
406
407 velocityContext.put(
408 "fullTemplatesPath",
409 servletContextName + theme.getVelocityResourceListener() +
410 theme.getTemplatesPath());
411
412
414 velocityContext.put(
415 "init",
416 themeDisplay.getPathContext() +
417 VelocityResourceListener.SERVLET_SEPARATOR +
418 "/html/themes/_unstyled/templates/init.vm");
419 }
420
421
423 String tilesTitle = _insertTilesVariables(
424 velocityContext, request, "tilesTitle", "title");
425 String tilesContent = _insertTilesVariables(
426 velocityContext, request, "tilesContent", "content");
427 boolean tilesSelectable = GetterUtil.getBoolean(_insertTilesVariables(
428 velocityContext, request, "tilesSelectable", "selectable"));
429
430 if (themeDisplay != null) {
431 themeDisplay.setTilesTitle(tilesTitle);
432 themeDisplay.setTilesContent(tilesContent);
433 themeDisplay.setTilesSelectable(tilesSelectable);
434 }
435
436
438 velocityContext.put(
439 "pageTitle", request.getAttribute(WebKeys.PAGE_TITLE));
440 velocityContext.put(
441 "pageSubtitle", request.getAttribute(WebKeys.PAGE_SUBTITLE));
442
443
445 insertHelperUtilities(velocityContext, null);
446
447
449 Map<String, Object> vmVariables =
450 (Map<String, Object>)request.getAttribute(WebKeys.VM_VARIABLES);
451
452 if (vmVariables != null) {
453 for (Map.Entry<String, Object> entry : vmVariables.entrySet()) {
454 String key = entry.getKey();
455 Object value = entry.getValue();
456
457 if (Validator.isNotNull(key)) {
458 velocityContext.put(key, value);
459 }
460 }
461 }
462 }
463
464 private static void _insertHelperUtility(
465 VelocityContext velocityContext, String[] restrictedVariables,
466 String key, Object value) {
467
468 if (!ArrayUtil.contains(restrictedVariables, key)) {
469 velocityContext.put(key, value);
470 }
471 }
472
473 private static String _insertTilesVariables(
474 VelocityContext velocityContext, HttpServletRequest request,
475 String attributeId, String attributeName) {
476
477 ComponentContext componentContext =
478 (ComponentContext)request.getAttribute(
479 ComponentConstants.COMPONENT_CONTEXT);
480
481 String value = null;
482
483 if (componentContext != null) {
484 value = (String)componentContext.getAttribute(attributeName);
485
486 if (value != null) {
487 velocityContext.put(attributeId, value);
488 }
489 }
490
491 return value;
492 }
493
494 }