001
014
015 package com.liferay.portal.velocity;
016
017 import com.liferay.portal.kernel.audit.AuditMessageFactoryUtil;
018 import com.liferay.portal.kernel.audit.AuditRouterUtil;
019 import com.liferay.portal.kernel.language.LanguageUtil;
020 import com.liferay.portal.kernel.language.UnicodeLanguageUtil;
021 import com.liferay.portal.kernel.servlet.BrowserSnifferUtil;
022 import com.liferay.portal.kernel.servlet.ImageServletTokenUtil;
023 import com.liferay.portal.kernel.util.ArrayUtil;
024 import com.liferay.portal.kernel.util.ArrayUtil_IW;
025 import com.liferay.portal.kernel.util.DateUtil_IW;
026 import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil;
027 import com.liferay.portal.kernel.util.GetterUtil;
028 import com.liferay.portal.kernel.util.GetterUtil_IW;
029 import com.liferay.portal.kernel.util.HtmlUtil;
030 import com.liferay.portal.kernel.util.HttpUtil;
031 import com.liferay.portal.kernel.util.JavaConstants;
032 import com.liferay.portal.kernel.util.LocaleUtil;
033 import com.liferay.portal.kernel.util.ParamUtil_IW;
034 import com.liferay.portal.kernel.util.Randomizer_IW;
035 import com.liferay.portal.kernel.util.StaticFieldGetter;
036 import com.liferay.portal.kernel.util.StringUtil_IW;
037 import com.liferay.portal.kernel.util.TimeZoneUtil_IW;
038 import com.liferay.portal.kernel.util.UnicodeFormatter_IW;
039 import com.liferay.portal.kernel.util.Validator;
040 import com.liferay.portal.kernel.util.Validator_IW;
041 import com.liferay.portal.kernel.velocity.VelocityContext;
042 import com.liferay.portal.kernel.xml.SAXReader;
043 import com.liferay.portal.model.Layout;
044 import com.liferay.portal.model.Theme;
045 import com.liferay.portal.service.permission.AccountPermissionUtil;
046 import com.liferay.portal.service.permission.CommonPermissionUtil;
047 import com.liferay.portal.service.permission.GroupPermissionUtil;
048 import com.liferay.portal.service.permission.LayoutPermissionUtil;
049 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
050 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
051 import com.liferay.portal.service.permission.PortalPermissionUtil;
052 import com.liferay.portal.service.permission.PortletPermissionUtil;
053 import com.liferay.portal.service.permission.RolePermissionUtil;
054 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
055 import com.liferay.portal.service.permission.UserPermissionUtil;
056 import com.liferay.portal.theme.NavItem;
057 import com.liferay.portal.theme.RequestVars;
058 import com.liferay.portal.theme.ThemeDisplay;
059 import com.liferay.portal.util.PortalUtil;
060 import com.liferay.portal.util.PrefsPropsUtil_IW;
061 import com.liferay.portal.util.PropsUtil_IW;
062 import com.liferay.portal.util.SessionClicks_IW;
063 import com.liferay.portal.util.WebKeys;
064 import com.liferay.portlet.PortletConfigImpl;
065 import com.liferay.portlet.PortletURLFactoryUtil;
066 import com.liferay.portlet.expando.service.ExpandoColumnLocalService;
067 import com.liferay.portlet.expando.service.ExpandoRowLocalService;
068 import com.liferay.portlet.expando.service.ExpandoTableLocalService;
069 import com.liferay.portlet.expando.service.ExpandoValueLocalService;
070 import com.liferay.portlet.journalcontent.util.JournalContentUtil;
071 import com.liferay.util.portlet.PortletRequestUtil;
072
073 import java.util.List;
074 import java.util.Map;
075
076 import javax.portlet.PortletRequest;
077 import javax.portlet.PortletResponse;
078 import javax.portlet.RenderRequest;
079 import javax.portlet.RenderResponse;
080
081 import javax.servlet.http.HttpServletRequest;
082
083 import org.apache.struts.taglib.tiles.ComponentConstants;
084 import org.apache.struts.tiles.ComponentContext;
085 import org.apache.velocity.tools.generic.DateTool;
086 import org.apache.velocity.tools.generic.EscapeTool;
087 import org.apache.velocity.tools.generic.IteratorTool;
088 import org.apache.velocity.tools.generic.ListTool;
089 import org.apache.velocity.tools.generic.MathTool;
090 import org.apache.velocity.tools.generic.NumberTool;
091 import org.apache.velocity.tools.generic.SortTool;
092
093
097 public class VelocityVariables {
098
099 public static void insertHelperUtilities(
100 VelocityContext velocityContext, String[] restrictedVariables) {
101
102
103
104 velocityContext.put("arrayUtil", ArrayUtil_IW.getInstance());
105
106
107
108 velocityContext.put(
109 "auditMessageFactoryUtil",
110 AuditMessageFactoryUtil.getAuditMessageFactory());
111
112
113
114 velocityContext.put(
115 "auditRouterUtil", AuditRouterUtil.getAuditRouter());
116
117
118
119 velocityContext.put(
120 "browserSniffer", BrowserSnifferUtil.getBrowserSniffer());
121
122
123
124 velocityContext.put(
125 "dateFormatFactory",
126 FastDateFormatFactoryUtil.getFastDateFormatFactory());
127
128
129
130 velocityContext.put("dateTool", new DateTool());
131
132
133
134 velocityContext.put("dateUtil", DateUtil_IW.getInstance());
135
136
137
138 velocityContext.put("escapeTool", new EscapeTool());
139
140
141
142 ServiceLocator serviceLocator = ServiceLocator.getInstance();
143
144 velocityContext.put(
145 "expandoColumnLocalService",
146 serviceLocator.findService(
147 ExpandoColumnLocalService.class.getName()));
148
149
150
151 velocityContext.put(
152 "expandoRowLocalService",
153 serviceLocator.findService(ExpandoRowLocalService.class.getName()));
154
155
156
157 velocityContext.put(
158 "expandoTableLocalService",
159 serviceLocator.findService(
160 ExpandoTableLocalService.class.getName()));
161
162
163
164 velocityContext.put(
165 "expandoValueLocalService",
166 serviceLocator.findService(
167 ExpandoValueLocalService.class.getName()));
168
169
170
171 velocityContext.put("getterUtil", GetterUtil_IW.getInstance());
172
173
174
175 velocityContext.put("htmlUtil", HtmlUtil.getHtml());
176
177
178
179 velocityContext.put("httpUtil", HttpUtil.getHttp());
180
181
182
183 velocityContext.put(
184 "imageToken", ImageServletTokenUtil.getImageServletToken());
185
186
187
188 velocityContext.put("iteratorTool", new IteratorTool());
189
190
191
192 velocityContext.put(
193 "journalContentUtil", JournalContentUtil.getJournalContent());
194
195
196
197 velocityContext.put("languageUtil", LanguageUtil.getLanguage());
198 velocityContext.put(
199 "unicodeLanguageUtil", UnicodeLanguageUtil.getUnicodeLanguage());
200
201
202
203 velocityContext.put("listTool", new ListTool());
204
205
206
207 velocityContext.put("localeUtil", LocaleUtil.getInstance());
208
209
210
211 velocityContext.put("mathTool", new MathTool());
212
213
214
215 velocityContext.put("numberTool", new NumberTool());
216
217
218
219 velocityContext.put("paramUtil", ParamUtil_IW.getInstance());
220
221
222
223 _insertHelperUtility(
224 velocityContext, restrictedVariables, "portalUtil",
225 PortalUtil.getPortal());
226 _insertHelperUtility(
227 velocityContext, restrictedVariables, "portal",
228 PortalUtil.getPortal());
229
230
231
232 _insertHelperUtility(
233 velocityContext, restrictedVariables, "prefsPropsUtil",
234 PrefsPropsUtil_IW.getInstance());
235
236
237
238 _insertHelperUtility(
239 velocityContext, restrictedVariables, "propsUtil",
240 PropsUtil_IW.getInstance());
241
242
243
244 velocityContext.put(
245 "portletURLFactory", PortletURLFactoryUtil.getPortletURLFactory());
246
247
248
249 _insertHelperUtility(
250 velocityContext, restrictedVariables, "velocityPortletPreferences",
251 new VelocityPortletPreferences());
252
253
254
255 velocityContext.put(
256 "randomizer", Randomizer_IW.getInstance().getWrappedInstance());
257
258
259
260 UtilLocator utilLocator = UtilLocator.getInstance();
261
262 velocityContext.put(
263 "saxReaderUtil", utilLocator.findUtil(SAXReader.class.getName()));
264
265
266
267 _insertHelperUtility(
268 velocityContext, restrictedVariables, "serviceLocator",
269 serviceLocator);
270
271
272
273 _insertHelperUtility(
274 velocityContext, restrictedVariables, "sessionClicks",
275 SessionClicks_IW.getInstance());
276
277
278
279 velocityContext.put("sortTool", new SortTool());
280
281
282
283 velocityContext.put(
284 "staticFieldGetter", StaticFieldGetter.getInstance());
285
286
287
288 velocityContext.put("stringUtil", StringUtil_IW.getInstance());
289
290
291
292 velocityContext.put("timeZoneUtil", TimeZoneUtil_IW.getInstance());
293
294
295
296 _insertHelperUtility(
297 velocityContext, restrictedVariables, "utilLocator", utilLocator);
298
299
300
301 velocityContext.put(
302 "unicodeFormatter", UnicodeFormatter_IW.getInstance());
303
304
305
306 velocityContext.put("validator", Validator_IW.getInstance());
307
308
309
310 velocityContext.put(
311 "accountPermission", AccountPermissionUtil.getAccountPermission());
312 velocityContext.put(
313 "commonPermission", CommonPermissionUtil.getCommonPermission());
314 velocityContext.put(
315 "groupPermission", GroupPermissionUtil.getGroupPermission());
316 velocityContext.put(
317 "layoutPermission", LayoutPermissionUtil.getLayoutPermission());
318 velocityContext.put(
319 "organizationPermission",
320 OrganizationPermissionUtil.getOrganizationPermission());
321 velocityContext.put(
322 "passwordPolicyPermission",
323 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
324 velocityContext.put(
325 "portalPermission", PortalPermissionUtil.getPortalPermission());
326 velocityContext.put(
327 "portletPermission", PortletPermissionUtil.getPortletPermission());
328 velocityContext.put(
329 "rolePermission", RolePermissionUtil.getRolePermission());
330 velocityContext.put(
331 "userGroupPermission",
332 UserGroupPermissionUtil.getUserGroupPermission());
333 velocityContext.put(
334 "userPermission", UserPermissionUtil.getUserPermission());
335
336
337
338 velocityContext.put(
339 "dateFormats",
340 FastDateFormatFactoryUtil.getFastDateFormatFactory());
341 velocityContext.put(
342 "locationPermission",
343 OrganizationPermissionUtil.getOrganizationPermission());
344 }
345
346 public static void insertVariables(
347 VelocityContext velocityContext, HttpServletRequest request)
348 throws Exception {
349
350
351
352 velocityContext.put("request", request);
353
354
355
356 PortletConfigImpl portletConfigImpl =
357 (PortletConfigImpl)request.getAttribute(
358 JavaConstants.JAVAX_PORTLET_CONFIG);
359
360 if (portletConfigImpl != null) {
361 velocityContext.put("portletConfig", portletConfigImpl);
362 }
363
364
365
366 final PortletRequest portletRequest =
367 (PortletRequest)request.getAttribute(
368 JavaConstants.JAVAX_PORTLET_REQUEST);
369
370 if (portletRequest != null) {
371 if (portletRequest instanceof RenderRequest) {
372 velocityContext.put("renderRequest", portletRequest);
373 }
374 }
375
376
377
378 final PortletResponse portletResponse =
379 (PortletResponse)request.getAttribute(
380 JavaConstants.JAVAX_PORTLET_RESPONSE);
381
382 if (portletResponse != null) {
383 if (portletResponse instanceof RenderResponse) {
384 velocityContext.put("renderResponse", portletResponse);
385 }
386 }
387
388
389
390 if ((portletRequest != null) && (portletResponse != null)) {
391 velocityContext.put(
392 "xmlRequest",
393 new Object() {
394
395 public String toString() {
396 return PortletRequestUtil.toXML(
397 portletRequest, portletResponse);
398 }
399
400 }
401 );
402 }
403
404
405
406 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
407 WebKeys.THEME_DISPLAY);
408
409 if (themeDisplay != null) {
410 Theme theme = themeDisplay.getTheme();
411
412 Layout layout = themeDisplay.getLayout();
413 List<Layout> layouts = themeDisplay.getLayouts();
414
415 velocityContext.put("themeDisplay", themeDisplay);
416 velocityContext.put("company", themeDisplay.getCompany());
417 velocityContext.put("user", themeDisplay.getUser());
418 velocityContext.put("realUser", themeDisplay.getRealUser());
419 velocityContext.put("layout", layout);
420 velocityContext.put("layouts", layouts);
421 velocityContext.put("plid", String.valueOf(themeDisplay.getPlid()));
422 velocityContext.put(
423 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
424 velocityContext.put(
425 "scopeGroupId", new Long(themeDisplay.getScopeGroupId()));
426 velocityContext.put(
427 "permissionChecker", themeDisplay.getPermissionChecker());
428 velocityContext.put("locale", themeDisplay.getLocale());
429 velocityContext.put("timeZone", themeDisplay.getTimeZone());
430 velocityContext.put("theme", theme);
431 velocityContext.put("colorScheme", themeDisplay.getColorScheme());
432 velocityContext.put(
433 "portletDisplay", themeDisplay.getPortletDisplay());
434
435
436
437 if (layout != null) {
438 RequestVars requestVars = new RequestVars(
439 request, themeDisplay, layout.getAncestorPlid(),
440 layout.getAncestorLayoutId());
441
442 List<NavItem> navItems = NavItem.fromLayouts(
443 requestVars, layouts);
444
445 velocityContext.put("navItems", navItems);
446 }
447
448
449
450 String servletContextName = GetterUtil.getString(
451 theme.getServletContextName());
452
453 velocityContext.put(
454 "fullCssPath",
455 servletContextName + theme.getVelocityResourceListener() +
456 theme.getCssPath());
457
458 velocityContext.put(
459 "fullTemplatesPath",
460 servletContextName + theme.getVelocityResourceListener() +
461 theme.getTemplatesPath());
462
463
464
465 velocityContext.put(
466 "init",
467 themeDisplay.getPathContext() +
468 VelocityResourceListener.SERVLET_SEPARATOR +
469 "/html/themes/_unstyled/templates/init.vm");
470
471
472
473 velocityContext.put(
474 "portletGroupId", new Long(themeDisplay.getScopeGroupId()));
475 }
476
477
478
479 _insertTilesVariables(velocityContext, request, "tilesTitle", "title");
480 _insertTilesVariables(
481 velocityContext, request, "tilesContent", "content");
482 _insertTilesVariables(
483 velocityContext, request, "tilesSelectable", "selectable");
484
485
486
487 velocityContext.put(
488 "pageTitle", request.getAttribute(WebKeys.PAGE_TITLE));
489 velocityContext.put(
490 "pageSubtitle", request.getAttribute(WebKeys.PAGE_SUBTITLE));
491
492
493
494 Map<String, Object> vmVariables =
495 (Map<String, Object>)request.getAttribute(WebKeys.VM_VARIABLES);
496
497 if (vmVariables != null) {
498 for (Map.Entry<String, Object> entry : vmVariables.entrySet()) {
499 String key = entry.getKey();
500 Object value = entry.getValue();
501
502 if (Validator.isNotNull(key)) {
503 velocityContext.put(key, value);
504 }
505 }
506 }
507 }
508
509 private static void _insertHelperUtility(
510 VelocityContext velocityContext, String[] restrictedVariables,
511 String key, Object value) {
512
513 if (!ArrayUtil.contains(restrictedVariables, key)) {
514 velocityContext.put(key, value);
515 }
516 }
517
518 private static void _insertTilesVariables(
519 VelocityContext velocityContext, HttpServletRequest request,
520 String attributeId, String attributeName) {
521
522 ComponentContext componentContext =
523 (ComponentContext)request.getAttribute(
524 ComponentConstants.COMPONENT_CONTEXT);
525
526 if (componentContext != null) {
527 String value = (String)componentContext.getAttribute(attributeName);
528
529 if (value != null) {
530 velocityContext.put(attributeId, value);
531 }
532 }
533 }
534
535 }