001
014
015 package com.liferay.portal.template;
016
017 import com.liferay.portal.kernel.audit.AuditMessageFactoryUtil;
018 import com.liferay.portal.kernel.audit.AuditRouterUtil;
019 import com.liferay.portal.kernel.json.JSONFactoryUtil;
020 import com.liferay.portal.kernel.language.LanguageUtil;
021 import com.liferay.portal.kernel.language.UnicodeLanguageUtil;
022 import com.liferay.portal.kernel.log.Log;
023 import com.liferay.portal.kernel.log.LogFactoryUtil;
024 import com.liferay.portal.kernel.portlet.PortletModeFactory_IW;
025 import com.liferay.portal.kernel.portlet.WindowStateFactory_IW;
026 import com.liferay.portal.kernel.servlet.BrowserSnifferUtil;
027 import com.liferay.portal.kernel.templateparser.TemplateContext;
028 import com.liferay.portal.kernel.util.ArrayUtil_IW;
029 import com.liferay.portal.kernel.util.DateUtil_IW;
030 import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil;
031 import com.liferay.portal.kernel.util.GetterUtil;
032 import com.liferay.portal.kernel.util.GetterUtil_IW;
033 import com.liferay.portal.kernel.util.HtmlUtil;
034 import com.liferay.portal.kernel.util.HttpUtil;
035 import com.liferay.portal.kernel.util.JavaConstants;
036 import com.liferay.portal.kernel.util.ListMergeable;
037 import com.liferay.portal.kernel.util.LocaleUtil;
038 import com.liferay.portal.kernel.util.ParamUtil_IW;
039 import com.liferay.portal.kernel.util.PrefsPropsUtil;
040 import com.liferay.portal.kernel.util.PropsUtil;
041 import com.liferay.portal.kernel.util.Randomizer_IW;
042 import com.liferay.portal.kernel.util.StaticFieldGetter;
043 import com.liferay.portal.kernel.util.StringPool;
044 import com.liferay.portal.kernel.util.StringUtil_IW;
045 import com.liferay.portal.kernel.util.TimeZoneUtil_IW;
046 import com.liferay.portal.kernel.util.UnicodeFormatter_IW;
047 import com.liferay.portal.kernel.util.Validator_IW;
048 import com.liferay.portal.kernel.xml.SAXReader;
049 import com.liferay.portal.model.Layout;
050 import com.liferay.portal.model.Theme;
051 import com.liferay.portal.service.permission.AccountPermissionUtil;
052 import com.liferay.portal.service.permission.CommonPermissionUtil;
053 import com.liferay.portal.service.permission.GroupPermissionUtil;
054 import com.liferay.portal.service.permission.LayoutPermissionUtil;
055 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
056 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
057 import com.liferay.portal.service.permission.PortalPermissionUtil;
058 import com.liferay.portal.service.permission.PortletPermissionUtil;
059 import com.liferay.portal.service.permission.RolePermissionUtil;
060 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
061 import com.liferay.portal.service.permission.UserPermissionUtil;
062 import com.liferay.portal.theme.NavItem;
063 import com.liferay.portal.theme.ThemeDisplay;
064 import com.liferay.portal.util.PortalUtil;
065 import com.liferay.portal.util.SessionClicks_IW;
066 import com.liferay.portal.util.WebKeys;
067 import com.liferay.portal.webserver.WebServerServletTokenUtil;
068 import com.liferay.portlet.PortletConfigImpl;
069 import com.liferay.portlet.PortletURLFactoryUtil;
070 import com.liferay.portlet.documentlibrary.util.DLUtil;
071 import com.liferay.portlet.expando.service.ExpandoColumnLocalService;
072 import com.liferay.portlet.expando.service.ExpandoRowLocalService;
073 import com.liferay.portlet.expando.service.ExpandoTableLocalService;
074 import com.liferay.portlet.expando.service.ExpandoValueLocalService;
075 import com.liferay.portlet.journalcontent.util.JournalContentUtil;
076 import com.liferay.taglib.util.VelocityTaglib;
077 import com.liferay.util.portlet.PortletRequestUtil;
078
079 import java.lang.reflect.Method;
080
081 import java.util.Collections;
082 import java.util.HashMap;
083 import java.util.List;
084 import java.util.Map;
085 import java.util.Set;
086
087 import javax.portlet.PortletRequest;
088 import javax.portlet.PortletResponse;
089 import javax.portlet.RenderRequest;
090 import javax.portlet.RenderResponse;
091
092 import javax.servlet.http.HttpServletRequest;
093
094 import org.apache.struts.taglib.tiles.ComponentConstants;
095 import org.apache.struts.tiles.ComponentContext;
096
097
100 public class TemplateContextHelper {
101
102 public Map<String, Object> getHelperUtilities() {
103 Map<String, Object> variables = new HashMap<String, Object>();
104
105
106
107 variables.put("arrayUtil", ArrayUtil_IW.getInstance());
108
109
110
111 try {
112 variables.put(
113 "auditMessageFactoryUtil",
114 AuditMessageFactoryUtil.getAuditMessageFactory());
115 }
116 catch (SecurityException se) {
117 _log.error(se, se);
118 }
119
120
121
122 try {
123 variables.put("auditRouterUtil", AuditRouterUtil.getAuditRouter());
124 }
125 catch (SecurityException se) {
126 _log.error(se, se);
127 }
128
129
130
131 try {
132 variables.put(
133 "browserSniffer", BrowserSnifferUtil.getBrowserSniffer());
134 }
135 catch (SecurityException se) {
136 _log.error(se, se);
137 }
138
139
140
141 try {
142 variables.put(
143 "dateFormatFactory",
144 FastDateFormatFactoryUtil.getFastDateFormatFactory());
145 }
146 catch (SecurityException se) {
147 _log.error(se, se);
148 }
149
150
151
152 variables.put("dateUtil", DateUtil_IW.getInstance());
153
154
155
156 variables.put("dlUtil", DLUtil.getDL());
157
158
159
160 try {
161 ServiceLocator serviceLocator = ServiceLocator.getInstance();
162
163
164
165 variables.put("serviceLocator", serviceLocator);
166
167 try {
168 variables.put(
169 "expandoColumnLocalService",
170 serviceLocator.findService(
171 ExpandoColumnLocalService.class.getName()));
172 }
173 catch (SecurityException se) {
174 _log.error(se, se);
175 }
176
177
178
179 try {
180 variables.put(
181 "expandoRowLocalService",
182 serviceLocator.findService(
183 ExpandoRowLocalService.class.getName()));
184 }
185 catch (SecurityException se) {
186 _log.error(se, se);
187 }
188
189
190
191 try {
192 variables.put(
193 "expandoTableLocalService",
194 serviceLocator.findService(
195 ExpandoTableLocalService.class.getName()));
196 }
197 catch (SecurityException se) {
198 _log.error(se, se);
199 }
200
201
202
203 try {
204 variables.put(
205 "expandoValueLocalService",
206 serviceLocator.findService(
207 ExpandoValueLocalService.class.getName()));
208 }
209 catch (SecurityException se) {
210 _log.error(se, se);
211 }
212 }
213 catch (SecurityException se) {
214 _log.error(se, se);
215 }
216
217
218
219 variables.put("getterUtil", GetterUtil_IW.getInstance());
220
221
222
223 try {
224 variables.put("htmlUtil", HtmlUtil.getHtml());
225 }
226 catch (SecurityException se) {
227 _log.error(se, se);
228 }
229
230
231
232 try {
233 variables.put("httpUtil", HttpUtil.getHttp());
234 }
235 catch (SecurityException se) {
236 _log.error(se, se);
237 }
238
239
240
241 try {
242 variables.put(
243 "journalContentUtil", JournalContentUtil.getJournalContent());
244 }
245 catch (SecurityException se) {
246 _log.error(se, se);
247 }
248
249
250
251 try {
252 variables.put("jsonFactoryUtil", JSONFactoryUtil.getJSONFactory());
253 }
254 catch (SecurityException se) {
255 _log.error(se, se);
256 }
257
258
259
260 try {
261 variables.put("languageUtil", LanguageUtil.getLanguage());
262 }
263 catch (SecurityException se) {
264 _log.error(se, se);
265 }
266
267 try {
268 variables.put(
269 "unicodeLanguageUtil",
270 UnicodeLanguageUtil.getUnicodeLanguage());
271 }
272 catch (SecurityException se) {
273 _log.error(se, se);
274 }
275
276
277
278 try {
279 variables.put("localeUtil", LocaleUtil.getInstance());
280 }
281 catch (SecurityException se) {
282 _log.error(se, se);
283 }
284
285
286
287 variables.put("paramUtil", ParamUtil_IW.getInstance());
288
289
290
291 try {
292 variables.put("portalUtil", PortalUtil.getPortal());
293 }
294 catch (SecurityException se) {
295 _log.error(se, se);
296 }
297
298 try {
299 variables.put("portal", PortalUtil.getPortal());
300 }
301 catch (SecurityException se) {
302 _log.error(se, se);
303 }
304
305
306
307 try {
308 variables.put("prefsPropsUtil", PrefsPropsUtil.getPrefsProps());
309 }
310 catch (SecurityException se) {
311 _log.error(se, se);
312 }
313
314
315
316 try {
317 variables.put("propsUtil", PropsUtil.getProps());
318 }
319 catch (SecurityException se) {
320 _log.error(se, se);
321 }
322
323
324
325 variables.put(
326 "portletModeFactory", PortletModeFactory_IW.getInstance());
327
328
329
330 try {
331 variables.put(
332 "portletURLFactory",
333 PortletURLFactoryUtil.getPortletURLFactory());
334 }
335 catch (SecurityException se) {
336 _log.error(se, se);
337 }
338
339
340
341 try {
342 variables.put(
343 "randomizer", Randomizer_IW.getInstance().getWrappedInstance());
344 }
345 catch (SecurityException se) {
346 _log.error(se, se);
347 }
348
349 try {
350 UtilLocator utilLocator = UtilLocator.getInstance();
351
352
353
354 variables.put("utilLocator", utilLocator);
355
356
357
358 try {
359 variables.put(
360 "saxReaderUtil",
361 utilLocator.findUtil(SAXReader.class.getName()));
362 }
363 catch (SecurityException se) {
364 _log.error(se, se);
365 }
366 }
367 catch (SecurityException se) {
368 _log.error(se, se);
369 }
370
371
372
373 variables.put("sessionClicks", SessionClicks_IW.getInstance());
374
375
376
377 variables.put("staticFieldGetter", StaticFieldGetter.getInstance());
378
379
380
381 variables.put("stringUtil", StringUtil_IW.getInstance());
382
383
384
385 variables.put("timeZoneUtil", TimeZoneUtil_IW.getInstance());
386
387
388
389 variables.put("unicodeFormatter", UnicodeFormatter_IW.getInstance());
390
391
392
393 variables.put("validator", Validator_IW.getInstance());
394
395
396
397 try {
398 Class<?> clazz = VelocityTaglib.class;
399
400 Method method = clazz.getMethod(
401 "layoutIcon", new Class[] {Layout.class});
402
403 variables.put("velocityTaglib#layoutIcon", method);
404 }
405 catch (Exception e) {
406 _log.error(e, e);
407 }
408
409
410
411 try {
412 variables.put(
413 "webServerToken",
414 WebServerServletTokenUtil.getWebServerServletToken());
415 }
416 catch (SecurityException se) {
417 _log.error(se, se);
418 }
419
420
421
422 variables.put(
423 "windowStateFactory", WindowStateFactory_IW.getInstance());
424
425
426
427 try {
428 variables.put(
429 "accountPermission",
430 AccountPermissionUtil.getAccountPermission());
431 }
432 catch (SecurityException se) {
433 _log.error(se, se);
434 }
435
436 try {
437 variables.put(
438 "commonPermission", CommonPermissionUtil.getCommonPermission());
439 }
440 catch (SecurityException se) {
441 _log.error(se, se);
442 }
443
444 try {
445 variables.put(
446 "groupPermission", GroupPermissionUtil.getGroupPermission());
447 }
448 catch (SecurityException se) {
449 _log.error(se, se);
450 }
451
452 try {
453 variables.put(
454 "layoutPermission", LayoutPermissionUtil.getLayoutPermission());
455 }
456 catch (SecurityException se) {
457 _log.error(se, se);
458 }
459
460 try {
461 variables.put(
462 "organizationPermission",
463 OrganizationPermissionUtil.getOrganizationPermission());
464 }
465 catch (SecurityException se) {
466 _log.error(se, se);
467 }
468
469 try {
470 variables.put(
471 "passwordPolicyPermission",
472 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
473 }
474 catch (SecurityException se) {
475 _log.error(se, se);
476 }
477
478 try {
479 variables.put(
480 "portalPermission", PortalPermissionUtil.getPortalPermission());
481 }
482 catch (SecurityException se) {
483 _log.error(se, se);
484 }
485
486 try {
487 variables.put(
488 "portletPermission",
489 PortletPermissionUtil.getPortletPermission());
490 }
491 catch (SecurityException se) {
492 _log.error(se, se);
493 }
494
495 try {
496 variables.put(
497 "rolePermission", RolePermissionUtil.getRolePermission());
498 }
499 catch (SecurityException se) {
500 _log.error(se, se);
501 }
502
503 try {
504 variables.put(
505 "userGroupPermission",
506 UserGroupPermissionUtil.getUserGroupPermission());
507 }
508 catch (SecurityException se) {
509 _log.error(se, se);
510 }
511
512 try {
513 variables.put(
514 "userPermission", UserPermissionUtil.getUserPermission());
515 }
516 catch (SecurityException se) {
517 _log.error(se, se);
518 }
519
520
521
522 try {
523 variables.put(
524 "dateFormats",
525 FastDateFormatFactoryUtil.getFastDateFormatFactory());
526 }
527 catch (SecurityException se) {
528 _log.error(se, se);
529 }
530
531 try {
532 variables.put(
533 "imageToken",
534 WebServerServletTokenUtil.getWebServerServletToken());
535 }
536 catch (SecurityException se) {
537 _log.error(se, se);
538 }
539
540 try {
541 variables.put(
542 "locationPermission",
543 OrganizationPermissionUtil.getOrganizationPermission());
544 }
545 catch (SecurityException se) {
546 _log.error(se, se);
547 }
548
549 return variables;
550 }
551
552 public Map<String, Object> getRestrictedHelperUtilities() {
553 Map<String, Object> helperUtilities = getHelperUtilities();
554
555 Set<String> restrictedVariables = getRestrictedVariables();
556
557 for (String restrictedVariable : restrictedVariables) {
558 helperUtilities.remove(restrictedVariable);
559 }
560
561 return helperUtilities;
562 }
563
564 public Set<String> getRestrictedVariables() {
565 return Collections.emptySet();
566 }
567
568 public void prepare(
569 TemplateContext templateContext, HttpServletRequest request) {
570
571
572
573 templateContext.put("request", request);
574
575
576
577 PortletConfigImpl portletConfigImpl =
578 (PortletConfigImpl)request.getAttribute(
579 JavaConstants.JAVAX_PORTLET_CONFIG);
580
581 if (portletConfigImpl != null) {
582 templateContext.put("portletConfig", portletConfigImpl);
583 }
584
585
586
587 final PortletRequest portletRequest =
588 (PortletRequest)request.getAttribute(
589 JavaConstants.JAVAX_PORTLET_REQUEST);
590
591 if (portletRequest != null) {
592 if (portletRequest instanceof RenderRequest) {
593 templateContext.put("renderRequest", portletRequest);
594 }
595 }
596
597
598
599 final PortletResponse portletResponse =
600 (PortletResponse)request.getAttribute(
601 JavaConstants.JAVAX_PORTLET_RESPONSE);
602
603 if (portletResponse != null) {
604 if (portletResponse instanceof RenderResponse) {
605 templateContext.put("renderResponse", portletResponse);
606 }
607 }
608
609
610
611 if ((portletRequest != null) && (portletResponse != null)) {
612 templateContext.put(
613 "xmlRequest",
614 new Object() {
615
616 @Override
617 public String toString() {
618 return PortletRequestUtil.toXML(
619 portletRequest, portletResponse);
620 }
621
622 }
623 );
624 }
625
626
627
628 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
629 WebKeys.THEME_DISPLAY);
630
631 if (themeDisplay != null) {
632 Layout layout = themeDisplay.getLayout();
633 List<Layout> layouts = themeDisplay.getLayouts();
634
635 templateContext.put("themeDisplay", themeDisplay);
636 templateContext.put("company", themeDisplay.getCompany());
637 templateContext.put("user", themeDisplay.getUser());
638 templateContext.put("realUser", themeDisplay.getRealUser());
639 templateContext.put("layout", layout);
640 templateContext.put("layouts", layouts);
641 templateContext.put("plid", String.valueOf(themeDisplay.getPlid()));
642 templateContext.put(
643 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
644 templateContext.put(
645 "scopeGroupId", new Long(themeDisplay.getScopeGroupId()));
646 templateContext.put(
647 "permissionChecker", themeDisplay.getPermissionChecker());
648 templateContext.put("locale", themeDisplay.getLocale());
649 templateContext.put("timeZone", themeDisplay.getTimeZone());
650 templateContext.put("colorScheme", themeDisplay.getColorScheme());
651 templateContext.put(
652 "portletDisplay", themeDisplay.getPortletDisplay());
653
654
655
656 if (layout != null) {
657 List<NavItem> navItems = NavItem.fromLayouts(
658 request, layouts, templateContext);
659
660 templateContext.put("navItems", navItems);
661 }
662
663
664
665 templateContext.put(
666 "portletGroupId", new Long(themeDisplay.getScopeGroupId()));
667 }
668
669
670
671 Theme theme = (Theme)request.getAttribute(WebKeys.THEME);
672
673 if ((theme == null) && (themeDisplay != null)) {
674 theme = themeDisplay.getTheme();
675 }
676
677 if (theme != null) {
678 templateContext.put("theme", theme);
679 }
680
681
682
683 prepareTiles(templateContext, request);
684
685
686
687 ListMergeable<String> pageTitleListMergeable =
688 (ListMergeable<String>)request.getAttribute(WebKeys.PAGE_TITLE);
689
690 if (pageTitleListMergeable != null) {
691 String pageTitle = pageTitleListMergeable.mergeToString(
692 StringPool.SPACE);
693
694 templateContext.put("pageTitle", pageTitle);
695 }
696
697 ListMergeable<String> pageSubtitleListMergeable =
698 (ListMergeable<String>)request.getAttribute(WebKeys.PAGE_SUBTITLE);
699
700 if (pageSubtitleListMergeable != null) {
701 String pageSubtitle = pageSubtitleListMergeable.mergeToString(
702 StringPool.SPACE);
703
704 templateContext.put("pageSubtitle", pageSubtitle);
705 }
706 }
707
708 protected void prepareTiles(
709 TemplateContext templateContext, HttpServletRequest request) {
710
711 ComponentContext componentContext =
712 (ComponentContext)request.getAttribute(
713 ComponentConstants.COMPONENT_CONTEXT);
714
715 if (componentContext == null) {
716 return;
717 }
718
719 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
720 WebKeys.THEME_DISPLAY);
721
722 String tilesTitle = (String)componentContext.getAttribute("title");
723
724 themeDisplay.setTilesTitle(tilesTitle);
725
726 templateContext.put("tilesTitle", tilesTitle);
727
728 String tilesContent = (String)componentContext.getAttribute("content");
729
730 themeDisplay.setTilesContent(tilesContent);
731
732 templateContext.put("tilesContent", tilesContent);
733
734 boolean tilesSelectable = GetterUtil.getBoolean(
735 (String)componentContext.getAttribute("selectable"));
736
737 themeDisplay.setTilesSelectable(tilesSelectable);
738
739 templateContext.put("tilesSelectable", tilesSelectable);
740 }
741
742 private static Log _log = LogFactoryUtil.getLog(
743 TemplateContextHelper.class);
744
745 }