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