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.findExceptionSafeService(
139 ExpandoColumnLocalService.class));
140
141
143 velocityContext.put(
144 "expandoRowLocalService",
145 serviceLocator.findExceptionSafeService(
146 ExpandoRowLocalService.class));
147
148
150 velocityContext.put(
151 "expandoTableLocalService",
152 serviceLocator.findExceptionSafeService(
153 ExpandoTableLocalService.class));
154
155
157 velocityContext.put(
158 "expandoValueLocalService",
159 serviceLocator.findExceptionSafeService(
160 ExpandoValueLocalService.class));
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("languageUtil", LanguageUtil.getLanguage());
186 velocityContext.put(
187 "unicodeLanguageUtil", UnicodeLanguageUtil.getUnicodeLanguage());
188
189
191 velocityContext.put("listTool", new ListTool());
192
193
195 velocityContext.put("localeUtil", LocaleUtil.getInstance());
196
197
199 velocityContext.put("mathTool", new MathTool());
200
201
203 velocityContext.put("numberTool", new NumberTool());
204
205
207 velocityContext.put("paramUtil", ParamUtil_IW.getInstance());
208
209
211 _insertHelperUtility(
212 velocityContext, restrictedVariables, "portalUtil",
213 PortalUtil.getPortal());
214 _insertHelperUtility(
215 velocityContext, restrictedVariables, "portal",
216 PortalUtil.getPortal());
217
218
220 _insertHelperUtility(
221 velocityContext, restrictedVariables, "prefsPropsUtil",
222 PrefsPropsUtil_IW.getInstance());
223
224
226 _insertHelperUtility(
227 velocityContext, restrictedVariables, "propsUtil",
228 PropsUtil_IW.getInstance());
229
230
232 velocityContext.put(
233 "portletURLFactory", PortletURLFactory.getInstance());
234
235
237 _insertHelperUtility(
238 velocityContext, restrictedVariables, "velocityPortletPreferences",
239 new VelocityPortletPreferences());
240
241
243 velocityContext.put(
244 "randomizer", Randomizer_IW.getInstance().getWrappedInstance());
245
246
248 _insertHelperUtility(
249 velocityContext, restrictedVariables, "serviceLocator",
250 serviceLocator);
251
252
254 _insertHelperUtility(
255 velocityContext, restrictedVariables, "sessionClicks",
256 SessionClicks_IW.getInstance());
257
258
260 velocityContext.put("sortTool", new SortTool());
261
262
264 velocityContext.put(
265 "staticFieldGetter", StaticFieldGetter.getInstance());
266
267
269 velocityContext.put("stringUtil", StringUtil_IW.getInstance());
270
271
273 velocityContext.put(
274 "unicodeFormatter", UnicodeFormatter_IW.getInstance());
275
276
278 velocityContext.put("validator", Validator_IW.getInstance());
279
280
282 velocityContext.put(
283 "accountPermission", AccountPermissionUtil.getAccountPermission());
284 velocityContext.put(
285 "commonPermission", CommonPermissionUtil.getCommonPermission());
286 velocityContext.put(
287 "groupPermission", GroupPermissionUtil.getGroupPermission());
288 velocityContext.put(
289 "layoutPermission", LayoutPermissionUtil.getLayoutPermission());
290 velocityContext.put(
291 "organizationPermission",
292 OrganizationPermissionUtil.getOrganizationPermission());
293 velocityContext.put(
294 "passwordPolicyPermission",
295 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
296 velocityContext.put(
297 "portalPermission", PortalPermissionUtil.getPortalPermission());
298 velocityContext.put(
299 "portletPermission", PortletPermissionUtil.getPortletPermission());
300 velocityContext.put(
301 "rolePermission", RolePermissionUtil.getRolePermission());
302 velocityContext.put(
303 "userGroupPermission",
304 UserGroupPermissionUtil.getUserGroupPermission());
305 velocityContext.put(
306 "userPermission", UserPermissionUtil.getUserPermission());
307
308
310 velocityContext.put(
311 "locationPermission",
312 OrganizationPermissionUtil.getOrganizationPermission());
313 }
314
315 public static void insertVariables(
316 VelocityContext velocityContext, HttpServletRequest request) {
317
318
320 velocityContext.put("request", request);
321
322
324 PortletConfigImpl portletConfigImpl =
325 (PortletConfigImpl)request.getAttribute(
326 JavaConstants.JAVAX_PORTLET_CONFIG);
327
328 if (portletConfigImpl != null) {
329 velocityContext.put("portletConfig", portletConfigImpl);
330 }
331
332
334 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
335 JavaConstants.JAVAX_PORTLET_REQUEST);
336
337 if (portletRequest != null) {
338 if (portletRequest instanceof RenderRequest) {
339 velocityContext.put("renderRequest", portletRequest);
340 }
341 }
342
343
345 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
346 JavaConstants.JAVAX_PORTLET_RESPONSE);
347
348 if (portletResponse != null) {
349 if (portletResponse instanceof RenderResponse) {
350 velocityContext.put("renderResponse", portletResponse);
351 }
352 }
353
354
356 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
357 WebKeys.THEME_DISPLAY);
358
359 if (themeDisplay != null) {
360 Theme theme = themeDisplay.getTheme();
361
362 Layout layout = themeDisplay.getLayout();
363 List<Layout> layouts = themeDisplay.getLayouts();
364
365 velocityContext.put("themeDisplay", themeDisplay);
366 velocityContext.put("company", themeDisplay.getCompany());
367 velocityContext.put("user", themeDisplay.getUser());
368 velocityContext.put("realUser", themeDisplay.getRealUser());
369 velocityContext.put("layout", layout);
370 velocityContext.put("layouts", layouts);
371 velocityContext.put("plid", String.valueOf(themeDisplay.getPlid()));
372 velocityContext.put(
373 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
374 velocityContext.put(
375 "portletGroupId", new Long(themeDisplay.getPortletGroupId()));
376 velocityContext.put(
377 "permissionChecker", themeDisplay.getPermissionChecker());
378 velocityContext.put("locale", themeDisplay.getLocale());
379 velocityContext.put("timeZone", themeDisplay.getTimeZone());
380 velocityContext.put("theme", theme);
381 velocityContext.put("colorScheme", themeDisplay.getColorScheme());
382 velocityContext.put(
383 "portletDisplay", themeDisplay.getPortletDisplay());
384
385
387 if (layout != null) {
388 RequestVars requestVars = new RequestVars(
389 request, themeDisplay, layout.getAncestorPlid(),
390 layout.getAncestorLayoutId());
391
392 List<NavItem> navItems = NavItem.fromLayouts(
393 requestVars, layouts);
394
395 velocityContext.put("navItems", navItems);
396 }
397
398
400 String servletContextName = GetterUtil.getString(
401 theme.getServletContextName());
402
403 velocityContext.put(
404 "fullCssPath",
405 servletContextName + theme.getVelocityResourceListener() +
406 theme.getCssPath());
407
408 velocityContext.put(
409 "fullTemplatesPath",
410 servletContextName + theme.getVelocityResourceListener() +
411 theme.getTemplatesPath());
412
413
415 velocityContext.put(
416 "init",
417 themeDisplay.getPathContext() +
418 VelocityResourceListener.SERVLET_SEPARATOR +
419 "/html/themes/_unstyled/templates/init.vm");
420 }
421
422
424 String tilesTitle = _insertTilesVariables(
425 velocityContext, request, "tilesTitle", "title");
426 String tilesContent = _insertTilesVariables(
427 velocityContext, request, "tilesContent", "content");
428 boolean tilesSelectable = GetterUtil.getBoolean(_insertTilesVariables(
429 velocityContext, request, "tilesSelectable", "selectable"));
430
431 if (themeDisplay != null) {
432 themeDisplay.setTilesTitle(tilesTitle);
433 themeDisplay.setTilesContent(tilesContent);
434 themeDisplay.setTilesSelectable(tilesSelectable);
435 }
436
437
439 velocityContext.put(
440 "pageTitle", request.getAttribute(WebKeys.PAGE_TITLE));
441 velocityContext.put(
442 "pageSubtitle", request.getAttribute(WebKeys.PAGE_SUBTITLE));
443
444
446 insertHelperUtilities(velocityContext, null);
447
448
450 Map<String, Object> vmVariables =
451 (Map<String, Object>)request.getAttribute(WebKeys.VM_VARIABLES);
452
453 if (vmVariables != null) {
454 for (Map.Entry<String, Object> entry : vmVariables.entrySet()) {
455 String key = entry.getKey();
456 Object value = entry.getValue();
457
458 if (Validator.isNotNull(key)) {
459 velocityContext.put(key, value);
460 }
461 }
462 }
463 }
464
465 private static void _insertHelperUtility(
466 VelocityContext velocityContext, String[] restrictedVariables,
467 String key, Object value) {
468
469 if (!ArrayUtil.contains(restrictedVariables, key)) {
470 velocityContext.put(key, value);
471 }
472 }
473
474 private static String _insertTilesVariables(
475 VelocityContext velocityContext, HttpServletRequest request,
476 String attributeId, String attributeName) {
477
478 ComponentContext componentContext =
479 (ComponentContext)request.getAttribute(
480 ComponentConstants.COMPONENT_CONTEXT);
481
482 String value = null;
483
484 if (componentContext != null) {
485 value = (String)componentContext.getAttribute(attributeName);
486
487 if (value != null) {
488 velocityContext.put(attributeId, value);
489 }
490 }
491
492 return value;
493 }
494
495 }