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.BrowserSniffer_IW;
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.DateUtil_IW;
32 import com.liferay.portal.kernel.util.GetterUtil;
33 import com.liferay.portal.kernel.util.GetterUtil_IW;
34 import com.liferay.portal.kernel.util.JavaConstants;
35 import com.liferay.portal.kernel.util.ParamUtil_IW;
36 import com.liferay.portal.kernel.util.Randomizer_IW;
37 import com.liferay.portal.kernel.util.StaticFieldGetter;
38 import com.liferay.portal.kernel.util.StringUtil_IW;
39 import com.liferay.portal.kernel.util.UnicodeFormatter_IW;
40 import com.liferay.portal.kernel.util.Validator;
41 import com.liferay.portal.kernel.util.Validator_IW;
42 import com.liferay.portal.model.Layout;
43 import com.liferay.portal.model.Theme;
44 import com.liferay.portal.service.permission.AccountPermissionUtil;
45 import com.liferay.portal.service.permission.CommonPermissionUtil;
46 import com.liferay.portal.service.permission.GroupPermissionUtil;
47 import com.liferay.portal.service.permission.LayoutPermissionUtil;
48 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
49 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
50 import com.liferay.portal.service.permission.PortalPermissionUtil;
51 import com.liferay.portal.service.permission.PortletPermissionUtil;
52 import com.liferay.portal.service.permission.RolePermissionUtil;
53 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
54 import com.liferay.portal.service.permission.UserPermissionUtil;
55 import com.liferay.portal.theme.NavItem;
56 import com.liferay.portal.theme.RequestVars;
57 import com.liferay.portal.theme.ThemeDisplay;
58 import com.liferay.portal.util.DateFormats_IW;
59 import com.liferay.portal.util.PortalUtil_IW;
60 import com.liferay.portal.util.PrefsPropsUtil_IW;
61 import com.liferay.portal.util.PropsUtil_IW;
62 import com.liferay.portal.util.ServiceLocator;
63 import com.liferay.portal.util.SessionClicks_IW;
64 import com.liferay.portal.util.WebKeys;
65 import com.liferay.portlet.PortletConfigImpl;
66 import com.liferay.portlet.PortletURLFactory;
67 import com.liferay.util.Html_IW;
68 import com.liferay.util.HttpUtil_IW;
69
70 import java.util.Iterator;
71 import java.util.List;
72 import java.util.Map;
73
74 import javax.portlet.PortletRequest;
75 import javax.portlet.PortletResponse;
76 import javax.portlet.RenderRequest;
77 import javax.portlet.RenderResponse;
78
79 import javax.servlet.http.HttpServletRequest;
80
81 import org.apache.struts.taglib.tiles.ComponentConstants;
82 import org.apache.struts.tiles.ComponentContext;
83 import org.apache.velocity.VelocityContext;
84 import org.apache.velocity.tools.generic.DateTool;
85 import org.apache.velocity.tools.generic.EscapeTool;
86 import org.apache.velocity.tools.generic.IteratorTool;
87 import org.apache.velocity.tools.generic.ListTool;
88 import org.apache.velocity.tools.generic.MathTool;
89 import org.apache.velocity.tools.generic.NumberTool;
90 import org.apache.velocity.tools.generic.SortTool;
91
92
98 public class VelocityVariables {
99
100 public static void insertHelperUtilities(
101 VelocityContext vc, String[] restrictedVariables) {
102
103
105 vc.put("arrayUtil", ArrayUtil_IW.getInstance());
106
107
109 vc.put("browserSniffer", BrowserSniffer_IW.getInstance());
110
111
113 vc.put("dateFormats", DateFormats_IW.getInstance());
114
115
117 vc.put("dateTool", new DateTool());
118
119
121 vc.put("dateUtil", DateUtil_IW.getInstance());
122
123
125 vc.put("escapeTool", new EscapeTool());
126
127
129 vc.put("getterUtil", GetterUtil_IW.getInstance());
130
131
133 vc.put("htmlUtil", Html_IW.getInstance());
134
135
137 vc.put("httpUtil", HttpUtil_IW.getInstance());
138
139
141 vc.put("imageToken", ImageServletTokenUtil.getImageServletToken());
142
143
145 vc.put("iteratorTool", new IteratorTool());
146
147
149 vc.put("languageUtil", LanguageUtil.getLanguage());
150 vc.put("unicodeLanguageUtil", UnicodeLanguageUtil.getUnicodeLanguage());
151
152
154 vc.put("listTool", new ListTool());
155
156
158 vc.put("mathTool", new MathTool());
159
160
162 vc.put("numberTool", new NumberTool());
163
164
166 vc.put("paramUtil", ParamUtil_IW.getInstance());
167
168
170 _insertHelperUtility(
171 vc, restrictedVariables, "portalUtil", PortalUtil_IW.getInstance());
172 _insertHelperUtility(
173 vc, restrictedVariables, "portal", PortalUtil_IW.getInstance());
174
175
177 _insertHelperUtility(
178 vc, restrictedVariables, "prefsPropsUtil",
179 PrefsPropsUtil_IW.getInstance());
180
181
183 _insertHelperUtility(
184 vc, restrictedVariables, "propsUtil", PropsUtil_IW.getInstance());
185
186
188 vc.put("portletURLFactory", PortletURLFactory.getInstance());
189
190
192 _insertHelperUtility(
193 vc, restrictedVariables, "velocityPortletPreferences",
194 new VelocityPortletPreferences());
195
196
198 vc.put("randomizer", Randomizer_IW.getInstance().getWrappedInstance());
199
200
202 _insertHelperUtility(
203 vc, restrictedVariables, "serviceLocator",
204 ServiceLocator.getInstance());
205
206
208 _insertHelperUtility(
209 vc, restrictedVariables, "sessionClicks",
210 SessionClicks_IW.getInstance());
211
212
214 vc.put("sortTool", new SortTool());
215
216
218 vc.put("staticFieldGetter", StaticFieldGetter.getInstance());
219
220
222 vc.put("stringUtil", StringUtil_IW.getInstance());
223
224
226 vc.put("unicodeFormatter", UnicodeFormatter_IW.getInstance());
227
228
230 vc.put("validator", Validator_IW.getInstance());
231
232
234 vc.put(
235 "accountPermission", AccountPermissionUtil.getAccountPermission());
236 vc.put("commonPermission", CommonPermissionUtil.getCommonPermission());
237 vc.put("groupPermission", GroupPermissionUtil.getGroupPermission());
238 vc.put("layoutPermission", LayoutPermissionUtil.getLayoutPermission());
239 vc.put(
240 "organizationPermission",
241 OrganizationPermissionUtil.getOrganizationPermission());
242 vc.put(
243 "passwordPolicyPermission",
244 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
245 vc.put("portalPermission", PortalPermissionUtil.getPortalPermission());
246 vc.put(
247 "portletPermission", PortletPermissionUtil.getPortletPermission());
248 vc.put("rolePermission", RolePermissionUtil.getRolePermission());
249 vc.put(
250 "userGroupPermission",
251 UserGroupPermissionUtil.getUserGroupPermission());
252 vc.put("userPermission", UserPermissionUtil.getUserPermission());
253
254
256 vc.put(
257 "locationPermission",
258 OrganizationPermissionUtil.getOrganizationPermission());
259 }
260
261 public static void insertVariables(
262 VelocityContext vc, HttpServletRequest req) {
263
264
266 vc.put("request", req);
267
268
270 PortletConfigImpl portletConfig = (PortletConfigImpl)req.getAttribute(
271 JavaConstants.JAVAX_PORTLET_CONFIG);
272
273 if (portletConfig != null) {
274 vc.put("portletConfig", portletConfig);
275 }
276
277
279 PortletRequest portletRequest = (PortletRequest)req.getAttribute(
280 JavaConstants.JAVAX_PORTLET_REQUEST);
281
282 if (portletRequest != null) {
283 if (portletRequest instanceof RenderRequest) {
284 vc.put("renderRequest", portletRequest);
285 }
286 }
287
288
290 PortletResponse portletResponse = (PortletResponse)req.getAttribute(
291 JavaConstants.JAVAX_PORTLET_RESPONSE);
292
293 if (portletResponse != null) {
294 if (portletResponse instanceof RenderResponse) {
295 vc.put("renderResponse", portletResponse);
296 }
297 }
298
299
301 ThemeDisplay themeDisplay =
302 (ThemeDisplay)req.getAttribute(WebKeys.THEME_DISPLAY);
303
304 if (themeDisplay != null) {
305 Theme theme = themeDisplay.getTheme();
306
307 Layout layout = themeDisplay.getLayout();
308 List layouts = themeDisplay.getLayouts();
309
310 vc.put("themeDisplay", themeDisplay);
311 vc.put("company", themeDisplay.getCompany());
312 vc.put("user", themeDisplay.getUser());
313 vc.put("realUser", themeDisplay.getRealUser());
314 vc.put("layout", layout);
315 vc.put("layouts", layouts);
316 vc.put("plid", String.valueOf(themeDisplay.getPlid()));
317 vc.put("layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
318 vc.put(
319 "portletGroupId", new Long(themeDisplay.getPortletGroupId()));
320 vc.put("permissionChecker", themeDisplay.getPermissionChecker());
321 vc.put("locale", themeDisplay.getLocale());
322 vc.put("timeZone", themeDisplay.getTimeZone());
323 vc.put("theme", theme);
324 vc.put("colorScheme", themeDisplay.getColorScheme());
325 vc.put("portletDisplay", themeDisplay.getPortletDisplay());
326
327
329 if (layout != null) {
330 RequestVars requestVars = new RequestVars(
331 req, themeDisplay, layout.getAncestorPlid(),
332 layout.getAncestorLayoutId());
333
334 List navItems = NavItem.fromLayouts(requestVars, layouts);
335
336 vc.put("navItems", navItems);
337 }
338
339
341 String ctxName = GetterUtil.getString(
342 theme.getServletContextName());
343
344 vc.put(
345 "fullCssPath",
346 ctxName + theme.getVelocityResourceListener() +
347 theme.getCssPath());
348
349 vc.put(
350 "fullTemplatesPath",
351 ctxName + theme.getVelocityResourceListener() +
352 theme.getTemplatesPath());
353
354
356 vc.put(
357 "init",
358 themeDisplay.getPathContext() +
359 VelocityResourceListener.SERVLET_SEPARATOR +
360 "/html/themes/_unstyled/templates/init.vm");
361 }
362
363
365 String tilesTitle = _insertTilesVariables(
366 vc, req, "tilesTitle", "title");
367 String tilesContent = _insertTilesVariables(
368 vc, req, "tilesContent", "content");
369 boolean tilesSelectable = GetterUtil.getBoolean(_insertTilesVariables(
370 vc, req, "tilesSelectable", "selectable"));
371
372 if (themeDisplay != null) {
373 themeDisplay.setTilesTitle(tilesTitle);
374 themeDisplay.setTilesContent(tilesContent);
375 themeDisplay.setTilesSelectable(tilesSelectable);
376 }
377
378
380 vc.put("pageTitle", req.getAttribute(WebKeys.PAGE_TITLE));
381 vc.put("pageSubtitle", req.getAttribute(WebKeys.PAGE_SUBTITLE));
382
383
385 insertHelperUtilities(vc, null);
386
387
389 Map vmVariables = (Map)req.getAttribute(WebKeys.VM_VARIABLES);
390
391 if (vmVariables != null) {
392 Iterator itr = vmVariables.entrySet().iterator();
393
394 while (itr.hasNext()) {
395 Map.Entry entry = (Map.Entry)itr.next();
396
397 String key = (String)entry.getKey();
398 Object value = entry.getValue();
399
400 if (Validator.isNotNull(key)) {
401 vc.put(key, value);
402 }
403 }
404 }
405 }
406
407 private static void _insertHelperUtility(
408 VelocityContext vc, String[] restrictedVariables, String key,
409 Object value) {
410
411 if (!ArrayUtil.contains(restrictedVariables, key)) {
412 vc.put(key, value);
413 }
414 }
415
416 private static String _insertTilesVariables(
417 VelocityContext vc, HttpServletRequest req, String attributeId,
418 String attributeName) {
419
420 ComponentContext componentContext = (ComponentContext)req.getAttribute(
421 ComponentConstants.COMPONENT_CONTEXT);
422
423 String value = null;
424
425 if (componentContext != null) {
426 value = (String)componentContext.getAttribute(attributeName);
427
428 if (value != null) {
429 vc.put(attributeId, value);
430 }
431 }
432
433 return value;
434 }
435
436 }