1
22
23 package com.liferay.portal.velocity;
24
25 import com.liferay.portal.kernel.util.JavaConstants;
26 import com.liferay.portal.language.LanguageUtil_IW;
27 import com.liferay.portal.language.UnicodeLanguageUtil_IW;
28 import com.liferay.portal.model.Layout;
29 import com.liferay.portal.model.Theme;
30 import com.liferay.portal.service.permission.AccountPermission_IW;
31 import com.liferay.portal.service.permission.CommonPermission_IW;
32 import com.liferay.portal.service.permission.GroupPermission_IW;
33 import com.liferay.portal.service.permission.LayoutPermission_IW;
34 import com.liferay.portal.service.permission.LocationPermission_IW;
35 import com.liferay.portal.service.permission.OrganizationPermission_IW;
36 import com.liferay.portal.service.permission.PasswordPolicyPermission_IW;
37 import com.liferay.portal.service.permission.PortalPermission_IW;
38 import com.liferay.portal.service.permission.PortletPermission_IW;
39 import com.liferay.portal.service.permission.RolePermission_IW;
40 import com.liferay.portal.service.permission.UserGroupPermission_IW;
41 import com.liferay.portal.service.permission.UserPermission_IW;
42 import com.liferay.portal.theme.NavItem;
43 import com.liferay.portal.theme.RequestVars;
44 import com.liferay.portal.theme.ThemeDisplay;
45 import com.liferay.portal.util.PortalUtil_IW;
46 import com.liferay.portal.util.PropsUtil_IW;
47 import com.liferay.portal.util.ServiceLocator;
48 import com.liferay.portal.util.SessionClicks_IW;
49 import com.liferay.portal.util.WebKeys;
50 import com.liferay.portlet.PortletConfigImpl;
51 import com.liferay.portlet.PortletURLFactory;
52 import com.liferay.util.ArrayUtil_IW;
53 import com.liferay.util.BrowserSniffer_IW;
54 import com.liferay.util.DateUtil_IW;
55 import com.liferay.util.GetterUtil;
56 import com.liferay.util.GetterUtil_IW;
57 import com.liferay.util.Randomizer_IW;
58 import com.liferay.util.StaticFieldGetter;
59 import com.liferay.util.StringUtil_IW;
60 import com.liferay.util.UnicodeFormatter_IW;
61 import com.liferay.util.Validator;
62
63 import java.util.Iterator;
64 import java.util.List;
65 import java.util.Map;
66
67 import javax.portlet.PortletRequest;
68 import javax.portlet.PortletResponse;
69 import javax.portlet.RenderRequest;
70 import javax.portlet.RenderResponse;
71
72 import javax.servlet.http.HttpServletRequest;
73
74 import org.apache.struts.taglib.tiles.ComponentConstants;
75 import org.apache.struts.tiles.ComponentContext;
76 import org.apache.velocity.VelocityContext;
77
78
84 public class VelocityVariables {
85
86 public static void insertVariables(
87 VelocityContext vc, HttpServletRequest req) {
88
89
91 vc.put("request", req);
92
93
95 PortletConfigImpl portletConfig = (PortletConfigImpl)req.getAttribute(
96 JavaConstants.JAVAX_PORTLET_CONFIG);
97
98 if (portletConfig != null) {
99 vc.put("portletConfig", portletConfig);
100 }
101
102
104 PortletRequest portletRequest = (PortletRequest)req.getAttribute(
105 JavaConstants.JAVAX_PORTLET_REQUEST);
106
107 if (portletRequest != null) {
108 if (portletRequest instanceof RenderRequest) {
109 vc.put("renderRequest", portletRequest);
110 }
111 }
112
113
115 PortletResponse portletResponse = (PortletResponse)req.getAttribute(
116 JavaConstants.JAVAX_PORTLET_RESPONSE);
117
118 if (portletResponse != null) {
119 if (portletResponse instanceof RenderResponse) {
120 vc.put("renderResponse", portletResponse);
121 }
122 }
123
124
126 ThemeDisplay themeDisplay =
127 (ThemeDisplay)req.getAttribute(WebKeys.THEME_DISPLAY);
128
129 if (themeDisplay != null) {
130 Theme theme = themeDisplay.getTheme();
131
132 Layout layout = themeDisplay.getLayout();
133 List layouts = themeDisplay.getLayouts();
134
135 vc.put("themeDisplay", themeDisplay);
136 vc.put("company", themeDisplay.getCompany());
137 vc.put("user", themeDisplay.getUser());
138 vc.put("realUser", themeDisplay.getRealUser());
139 vc.put("layout", layout);
140 vc.put("layouts", layouts);
141 vc.put("plid", String.valueOf(themeDisplay.getPlid()));
142 vc.put("layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
143 vc.put(
144 "portletGroupId", new Long(themeDisplay.getPortletGroupId()));
145 vc.put("permissionChecker", themeDisplay.getPermissionChecker());
146 vc.put("locale", themeDisplay.getLocale());
147 vc.put("timeZone", themeDisplay.getTimeZone());
148 vc.put("theme", theme);
149 vc.put("colorScheme", themeDisplay.getColorScheme());
150 vc.put("portletDisplay", themeDisplay.getPortletDisplay());
151
152
154 if (layout != null) {
155 RequestVars requestVars = new RequestVars(
156 req, themeDisplay, layout.getAncestorLayoutId());
157
158 List navItems = NavItem.fromLayouts(requestVars, layouts);
159
160 vc.put("navItems", navItems);
161 }
162
163
165 String ctxName = GetterUtil.getString(
166 theme.getServletContextName());
167
168 vc.put(
169 "fullCssPath",
170 ctxName + theme.getVelocityResourceListener() +
171 theme.getCssPath());
172
173 vc.put(
174 "fullTemplatesPath",
175 ctxName + theme.getVelocityResourceListener() +
176 theme.getTemplatesPath());
177
178
180 vc.put(
181 "init",
182 themeDisplay.getPathContext() +
183 VelocityResourceListener.SERVLET_SEPARATOR +
184 "/html/themes/_unstyled/templates/init.vm");
185 }
186
187
189 String tilesTitle = _insertTilesVariables(
190 vc, req, "tilesTitle", "title");
191 String tilesContent = _insertTilesVariables(
192 vc, req, "tilesContent", "content");
193 boolean tilesSelectable = GetterUtil.getBoolean(_insertTilesVariables(
194 vc, req, "tilesSelectable", "selectable"));
195
196 if (themeDisplay != null) {
197 themeDisplay.setTilesTitle(tilesTitle);
198 themeDisplay.setTilesContent(tilesContent);
199 themeDisplay.setTilesSelectable(tilesSelectable);
200 }
201
202
204 _insertHelperUtilities(vc);
205
206
208 Map vmVariables = (Map)req.getAttribute(WebKeys.VM_VARIABLES);
209
210 if (vmVariables != null) {
211 Iterator itr = vmVariables.entrySet().iterator();
212
213 while (itr.hasNext()) {
214 Map.Entry entry = (Map.Entry)itr.next();
215
216 String key = (String)entry.getKey();
217 Object value = entry.getValue();
218
219 if (Validator.isNotNull(key)) {
220 vc.put(key, value);
221 }
222 }
223 }
224 }
225
226 private static void _insertHelperUtilities(VelocityContext vc) {
227
228
230 vc.put("arrayUtil", ArrayUtil_IW.getInstance());
231
232
234 vc.put("browserSniffer", BrowserSniffer_IW.getInstance());
235
236
238 vc.put("dateUtil", DateUtil_IW.getInstance());
239
240
242 vc.put("getterUtil", GetterUtil_IW.getInstance());
243
244
246 vc.put("languageUtil", LanguageUtil_IW.getInstance());
247 vc.put("unicodeLanguageUtil", UnicodeLanguageUtil_IW.getInstance());
248
249
251 vc.put("portalUtil", PortalUtil_IW.getInstance());
252 vc.put("portal", PortalUtil_IW.getInstance());
253
254
256 vc.put("propsUtil", PropsUtil_IW.getInstance());
257
258
260 vc.put("portletURLFactory", PortletURLFactory.getInstance());
261
262
264 vc.put("randomizer", Randomizer_IW.getInstance().getWrappedInstance());
265
266
268 vc.put("serviceLocator", ServiceLocator.getInstance());
269
270
272 vc.put("sessionClicks", SessionClicks_IW.getInstance());
273
274
276 vc.put("staticFieldGetter", StaticFieldGetter.getInstance());
277
278
280 vc.put("stringUtil", StringUtil_IW.getInstance());
281
282
284 vc.put("unicodeFormatter", UnicodeFormatter_IW.getInstance());
285
286
288 vc.put("accountPermission", AccountPermission_IW.getInstance());
289 vc.put("commonPermission", CommonPermission_IW.getInstance());
290 vc.put("groupPermission", GroupPermission_IW.getInstance());
291 vc.put("layoutPermission", LayoutPermission_IW.getInstance());
292 vc.put("locationPermission", LocationPermission_IW.getInstance());
293 vc.put(
294 "organizationPermission", OrganizationPermission_IW.getInstance());
295 vc.put(
296 "passwordPolicyPermission",
297 PasswordPolicyPermission_IW.getInstance());
298 vc.put("portalPermission", PortalPermission_IW.getInstance());
299 vc.put("portletPermission", PortletPermission_IW.getInstance());
300 vc.put("rolePermission", RolePermission_IW.getInstance());
301 vc.put("userGroupPermission", UserGroupPermission_IW.getInstance());
302 vc.put("userPermission", UserPermission_IW.getInstance());
303 }
304
305 private static String _insertTilesVariables(
306 VelocityContext vc, HttpServletRequest req, String attributeId,
307 String attributeName) {
308
309 ComponentContext componentContext = (ComponentContext)req.getAttribute(
310 ComponentConstants.COMPONENT_CONTEXT);
311
312 String value = null;
313
314 if (componentContext != null) {
315 value = (String)componentContext.getAttribute(attributeName);
316
317 if (value != null) {
318 vc.put(attributeId, value);
319 }
320 }
321
322 return value;
323 }
324
325 }