001    /**
002     * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.theme;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.language.LanguageUtil;
020    import com.liferay.portal.kernel.log.Log;
021    import com.liferay.portal.kernel.log.LogFactoryUtil;
022    import com.liferay.portal.kernel.mobile.device.Device;
023    import com.liferay.portal.kernel.staging.StagingUtil;
024    import com.liferay.portal.kernel.util.Http;
025    import com.liferay.portal.kernel.util.LocaleThreadLocal;
026    import com.liferay.portal.kernel.util.Mergeable;
027    import com.liferay.portal.kernel.util.StringPool;
028    import com.liferay.portal.kernel.util.TimeZoneThreadLocal;
029    import com.liferay.portal.kernel.util.Validator;
030    import com.liferay.portal.model.Account;
031    import com.liferay.portal.model.ColorScheme;
032    import com.liferay.portal.model.Company;
033    import com.liferay.portal.model.Contact;
034    import com.liferay.portal.model.Group;
035    import com.liferay.portal.model.Layout;
036    import com.liferay.portal.model.LayoutSet;
037    import com.liferay.portal.model.LayoutTypePortlet;
038    import com.liferay.portal.model.Theme;
039    import com.liferay.portal.model.ThemeSetting;
040    import com.liferay.portal.model.User;
041    import com.liferay.portal.security.permission.PermissionChecker;
042    import com.liferay.portal.service.GroupLocalServiceUtil;
043    import com.liferay.portal.service.LayoutLocalServiceUtil;
044    import com.liferay.portal.util.PortalUtil;
045    import com.liferay.portlet.mobiledevicerules.model.MDRRuleGroupInstance;
046    
047    import java.io.Serializable;
048    
049    import java.util.List;
050    import java.util.Locale;
051    import java.util.Map;
052    import java.util.Properties;
053    import java.util.TimeZone;
054    
055    import javax.portlet.PortletURL;
056    
057    /**
058     * @author Brian Wing Shun Chan
059     */
060    public class ThemeDisplay
061            implements Cloneable, Mergeable<ThemeDisplay>, Serializable {
062    
063            public ThemeDisplay() {
064                    if (_log.isDebugEnabled()) {
065                            _log.debug("Creating new instance " + hashCode());
066                    }
067    
068                    _portletDisplay.setThemeDisplay(this);
069            }
070    
071            @Override
072            public Object clone() throws CloneNotSupportedException {
073                    ThemeDisplay themeDisplay = (ThemeDisplay)super.clone();
074    
075                    PortletDisplay portletDisplay = new PortletDisplay();
076    
077                    _portletDisplay.copyTo(portletDisplay);
078    
079                    themeDisplay._portletDisplay = portletDisplay;
080    
081                    portletDisplay.setThemeDisplay(themeDisplay);
082    
083                    return themeDisplay;
084            }
085    
086            public Account getAccount() {
087                    return _account;
088            }
089    
090            public String getCDNBaseURL() {
091                    if (_cdnBaseURL != null) {
092                            return _cdnBaseURL;
093                    }
094    
095                    String host = getCDNHost();
096    
097                    String portalURL = getPortalURL();
098    
099                    if (getServerName() != null) {
100                            try {
101                                    portalURL = PortalUtil.getPortalURL(getLayout(), this);
102                            }
103                            catch (Exception e) {
104                                    _log.error(e, e);
105                            }
106                    }
107    
108                    if (Validator.isNull(host)) {
109                            host = portalURL;
110                    }
111    
112                    _cdnBaseURL = host;
113    
114                    return _cdnBaseURL;
115            }
116    
117            public String getCDNDynamicResourcesHost() {
118                    return _cdnDynamicResourcesHost;
119            }
120    
121            public String getCDNHost() {
122                    return _cdnHost;
123            }
124    
125            public ColorScheme getColorScheme() {
126                    return _colorScheme;
127            }
128    
129            public String getColorSchemeId() {
130                    return _colorScheme.getColorSchemeId();
131            }
132    
133            public Company getCompany() {
134                    return _company;
135            }
136    
137            public long getCompanyGroupId() {
138                    return _companyGroupId;
139            }
140    
141            public long getCompanyId() {
142                    return _company.getCompanyId();
143            }
144    
145            public String getCompanyLogo() {
146                    return _companyLogo;
147            }
148    
149            public int getCompanyLogoHeight() {
150                    return _companyLogoHeight;
151            }
152    
153            public int getCompanyLogoWidth() {
154                    return _companyLogoWidth;
155            }
156    
157            public Contact getContact() {
158                    return _contact;
159            }
160    
161            public String getControlPanelCategory() {
162                    return _controlPanelCategory;
163            }
164    
165            public User getDefaultUser() throws PortalException, SystemException {
166                    if (_defaultUser == null) {
167                            _defaultUser = _company.getDefaultUser();
168                    }
169    
170                    return _defaultUser;
171            }
172    
173            public long getDefaultUserId() throws PortalException, SystemException {
174                    return getDefaultUser().getUserId();
175            }
176    
177            public Device getDevice() {
178                    return _device;
179            }
180    
181            public long getDoAsGroupId() {
182                    return _doAsGroupId;
183            }
184    
185            public String getDoAsUserId() {
186                    return _doAsUserId;
187            }
188    
189            public String getDoAsUserLanguageId() {
190                    return _doAsUserLanguageId;
191            }
192    
193            public String getFacebookCanvasPageURL() {
194                    return _facebookCanvasPageURL;
195            }
196    
197            public String getI18nLanguageId() {
198                    return _i18nLanguageId;
199            }
200    
201            public String getI18nPath() {
202                    return _i18nPath;
203            }
204    
205            public String getLanguageId() {
206                    return _languageId;
207            }
208    
209            public Layout getLayout() {
210                    return _layout;
211            }
212    
213            public List<Layout> getLayouts() {
214                    return _layouts;
215            }
216    
217            public LayoutSet getLayoutSet() {
218                    return _layoutSet;
219            }
220    
221            public String getLayoutSetLogo() {
222                    return _layoutSetLogo;
223            }
224    
225            public LayoutTypePortlet getLayoutTypePortlet() {
226                    return _layoutTypePortlet;
227            }
228    
229            public String getLifecycle() {
230                    return _lifecycle;
231            }
232    
233            public Locale getLocale() {
234                    return _locale;
235            }
236    
237            public MDRRuleGroupInstance getMDRRuleGroupInstance() {
238                    return _mdrRuleGroupInstance;
239            }
240    
241            public Group getParentGroup() {
242                    return _parentGroup;
243            }
244    
245            public long getParentGroupId() {
246                    return _parentGroupId;
247            }
248    
249            public String getParentGroupName() throws PortalException, SystemException {
250                    if (_parentGroup == null) {
251                            return StringPool.BLANK;
252                    }
253                    else {
254                            return _parentGroup.getDescriptiveName();
255                    }
256            }
257    
258            public String getPathApplet() {
259                    return _pathApplet;
260            }
261    
262            public String getPathCms() {
263                    return _pathCms;
264            }
265    
266            public String getPathColorSchemeImages() {
267                    return _pathColorSchemeImages;
268            }
269    
270            public String getPathContext() {
271                    return _pathContext;
272            }
273    
274            public String getPathFlash() {
275                    return _pathFlash;
276            }
277    
278            public String getPathFriendlyURLPrivateGroup() {
279                    return _pathFriendlyURLPrivateGroup;
280            }
281    
282            public String getPathFriendlyURLPrivateUser() {
283                    return _pathFriendlyURLPrivateUser;
284            }
285    
286            public String getPathFriendlyURLPublic() {
287                    return _pathFriendlyURLPublic;
288            }
289    
290            public String getPathImage() {
291                    return _pathImage;
292            }
293    
294            public String getPathJavaScript() {
295                    return _pathJavaScript;
296            }
297    
298            public String getPathMain() {
299                    return _pathMain;
300            }
301    
302            public String getPathSound() {
303                    return _pathSound;
304            }
305    
306            public String getPathThemeCss() {
307                    return _pathThemeCss;
308            }
309    
310            /**
311             * @deprecated Use <code>getPathThemeImages</code>.
312             */
313            public String getPathThemeImage() {
314                    return getPathThemeImages();
315            }
316    
317            public String getPathThemeImages() {
318                    return _pathThemeImages;
319            }
320    
321            public String getPathThemeJavaScript() {
322                    return _pathThemeJavaScript;
323            }
324    
325            public String getPathThemeRoot() {
326                    return _pathThemeRoot;
327            }
328    
329            public String getPathThemeTemplates() {
330                    return _pathThemeTemplates;
331            }
332    
333            public PermissionChecker getPermissionChecker() {
334                    return _permissionChecker;
335            }
336    
337            public long getPlid() {
338                    return _plid;
339            }
340    
341            public String getPortalURL() {
342                    return _portalURL;
343            }
344    
345            public PortletDisplay getPortletDisplay() {
346                    return _portletDisplay;
347            }
348    
349            /**
350             * @deprecated Use <code>getScopeGroupId</code>.
351             */
352            public long getPortletGroupId() {
353                    return getScopeGroupId();
354            }
355    
356            public String getPpid() {
357                    return _ppid;
358            }
359    
360            public String getRealCompanyLogo() {
361                    return _realCompanyLogo;
362            }
363    
364            public int getRealCompanyLogoHeight() {
365                    return _realCompanyLogoHeight;
366            }
367    
368            public int getRealCompanyLogoWidth() {
369                    return _realCompanyLogoWidth;
370            }
371    
372            public User getRealUser() {
373                    return _realUser;
374            }
375    
376            public long getRealUserId() {
377                    return _realUser.getUserId();
378            }
379    
380            public long getRefererPlid() {
381                    return _refererPlid;
382            }
383    
384            public Group getScopeGroup() {
385                    return _scopeGroup;
386            }
387    
388            public long getScopeGroupId() {
389                    return _scopeGroupId;
390            }
391    
392            public long getScopeGroupIdOrLiveGroupId()
393                    throws PortalException, SystemException {
394    
395                    return StagingUtil.getLiveGroupId(_scopeGroupId);
396            }
397    
398            public String getScopeGroupName() throws PortalException, SystemException {
399                    if (_scopeGroup == null) {
400                            return StringPool.BLANK;
401                    }
402                    else {
403                            return _scopeGroup.getDescriptiveName();
404                    }
405            }
406    
407            public Layout getScopeLayout() throws PortalException, SystemException {
408                    if (_layout.hasScopeGroup()) {
409                            return _layout;
410                    }
411                    else if (_scopeGroup.isLayout()) {
412                            return LayoutLocalServiceUtil.getLayout(_scopeGroup.getClassPK());
413                    }
414                    else {
415                            return null;
416                    }
417            }
418    
419            public String getServerName() {
420                    return _serverName;
421            }
422    
423            public int getServerPort() {
424                    return _serverPort;
425            }
426    
427            public String getSessionId() {
428                    return _sessionId;
429            }
430    
431            public Theme getTheme() {
432                    return _theme;
433            }
434    
435            public String getThemeId() {
436                    return _theme.getThemeId();
437            }
438    
439            public String getThemeSetting(String key) {
440                    Theme theme = getTheme();
441    
442                    String device = theme.getDevice();
443    
444                    Layout layout = getLayout();
445    
446                    return layout.getThemeSetting(key, device);
447            }
448    
449            public Properties getThemeSettings() {
450                    Theme theme = getTheme();
451    
452                    Properties properties = new Properties();
453    
454                    Map<String, ThemeSetting> themeSettings = theme.getSettings();
455    
456                    for (String key : themeSettings.keySet()) {
457                            ThemeSetting themeSetting = themeSettings.get(key);
458    
459                            String value = null;
460    
461                            if (themeSetting.isConfigurable()) {
462                                    value = getThemeSetting(key);
463                            }
464                            else {
465                                    value = themeSetting.getValue();
466                            }
467    
468                            if (value != null) {
469                                    properties.put(key, value);
470                            }
471                    }
472    
473                    return properties;
474            }
475    
476            public String getTilesContent() {
477                    return _tilesContent;
478            }
479    
480            public String getTilesTitle() {
481                    return _tilesTitle;
482            }
483    
484            public TimeZone getTimeZone() {
485                    return _timeZone;
486            }
487    
488            public List<Layout> getUnfilteredLayouts() {
489                    return _unfilteredLayouts;
490            }
491    
492            public String getURLAddContent() {
493                    return _urlAddContent;
494            }
495    
496            public String getURLControlPanel() {
497                    return _urlControlPanel;
498            }
499    
500            public String getURLCurrent() {
501                    return _urlCurrent;
502            }
503    
504            public String getURLHome() {
505                    return _urlHome;
506            }
507    
508            public String getURLLayoutTemplates() {
509                    if (Validator.isNull(_urlLayoutTemplates)) {
510                            return _urlPageSettings + "#layout";
511                    }
512    
513                    return _urlLayoutTemplates;
514            }
515    
516            public PortletURL getURLManageSiteMemberships() {
517                    return _urlManageSiteMemberships;
518            }
519    
520            public PortletURL getURLMyAccount() {
521                    return _urlMyAccount;
522            }
523    
524            public PortletURL getURLPageSettings() {
525                    return _urlPageSettings;
526            }
527    
528            public String getURLPortal() {
529                    return _urlPortal;
530            }
531    
532            public PortletURL getURLPublishToLive() {
533                    return _urlPublishToLive;
534            }
535    
536            public String getURLSignIn() {
537                    return _urlSignIn;
538            }
539    
540            public String getURLSignOut() {
541                    return _urlSignOut;
542            }
543    
544            public String getURLSiteContent() {
545                    return _urlSiteContent;
546            }
547    
548            public PortletURL getURLSiteMapSettings() {
549                    return _urlSiteMapSettings;
550            }
551    
552            public PortletURL getURLSiteSettings() {
553                    return _urlSiteSettings;
554            }
555    
556            public PortletURL getURLUpdateManager() {
557                    return _urlUpdateManager;
558            }
559    
560            public User getUser() {
561                    return _user;
562            }
563    
564            public long getUserId() {
565                    return _user.getUserId();
566            }
567    
568            public boolean isAddSessionIdToURL() {
569                    return _addSessionIdToURL;
570            }
571    
572            public boolean isAjax() {
573                    return _ajax;
574            }
575    
576            public boolean isFacebook() {
577                    return _facebook;
578            }
579    
580            public boolean isFreeformLayout() {
581                    return _freeformLayout;
582            }
583    
584            public boolean isI18n() {
585                    return _i18n;
586            }
587    
588            public boolean isImpersonated() {
589                    if (getUserId() == getRealUserId()) {
590                            return false;
591                    }
592                    else {
593                            return true;
594                    }
595            }
596    
597            public boolean isIncludedJs(String js) {
598                    String path = getPathJavaScript();
599    
600                    if (isIncludePortletCssJs() &&
601                            js.startsWith(path + "/liferay/portlet_css.js")) {
602    
603                            return true;
604                    }
605                    else {
606                            return false;
607                    }
608            }
609    
610            public boolean isIncludePortletCssJs() {
611                    return _includePortletCssJs;
612            }
613    
614            public boolean isIsolated() {
615                    return _isolated;
616            }
617    
618            public boolean isLifecycleAction() {
619                    return _lifecycleAction;
620            }
621    
622            public boolean isLifecycleEvent() {
623                    return _lifecycleEvent;
624            }
625    
626            public boolean isLifecycleRender() {
627                    return _lifecycleRender;
628            }
629    
630            public boolean isLifecycleResource() {
631                    return _lifecycleResource;
632            }
633    
634            public boolean isSecure() {
635                    return _secure;
636            }
637    
638            public boolean isShowAddContentIcon() {
639                    return _showAddContentIcon;
640            }
641    
642            public boolean isShowAddContentIconPermission() {
643                    return _showAddContentIconPermission;
644            }
645    
646            public boolean isShowControlPanelIcon() {
647                    return _showControlPanelIcon;
648            }
649    
650            public boolean isShowHomeIcon() {
651                    return _showHomeIcon;
652            }
653    
654            public boolean isShowLayoutTemplatesIcon() {
655                    return _showLayoutTemplatesIcon;
656            }
657    
658            public boolean isShowManageSiteMembershipsIcon() {
659                    return _showManageSiteMembershipsIcon;
660            }
661    
662            public boolean isShowMyAccountIcon() {
663                    return _showMyAccountIcon;
664            }
665    
666            public boolean isShowPageCustomizationIcon() {
667                    return _showPageCustomizationIcon;
668            }
669    
670            public boolean isShowPageSettingsIcon() {
671                    return _showPageSettingsIcon;
672            }
673    
674            public boolean isShowPortalIcon() {
675                    return _showPortalIcon;
676            }
677    
678            public boolean isShowSignInIcon() {
679                    return _showSignInIcon;
680            }
681    
682            public boolean isShowSignOutIcon() {
683                    return _showSignOutIcon;
684            }
685    
686            public boolean isShowSiteContentIcon() {
687                    return _showSiteContentIcon;
688            }
689    
690            public boolean isShowSiteMapSettingsIcon() {
691                    return _showSiteMapSettingsIcon;
692            }
693    
694            public boolean isShowSiteSettingsIcon() {
695                    return _showSiteSettingsIcon;
696            }
697    
698            public boolean isShowStagingIcon() {
699                    return _showStagingIcon;
700            }
701    
702            public boolean isSignedIn() {
703                    return _signedIn;
704            }
705    
706            public boolean isStateExclusive() {
707                    return _stateExclusive;
708            }
709    
710            public boolean isStateMaximized() {
711                    return _stateMaximized;
712            }
713    
714            public boolean isStatePopUp() {
715                    return _statePopUp;
716            }
717    
718            public boolean isThemeCssFastLoad() {
719                    return _themeCssFastLoad;
720            }
721    
722            public boolean isThemeImagesFastLoad() {
723                    return _themeImagesFastLoad;
724            }
725    
726            public boolean isThemeJsBarebone() {
727                    return _themeJsBarebone;
728            }
729    
730            public boolean isThemeJsFastLoad() {
731                    return _themeJsFastLoad;
732            }
733    
734            public boolean isTilesSelectable() {
735                    return _tilesSelectable;
736            }
737    
738            public boolean isWapTheme() {
739                    return _theme.isWapTheme();
740            }
741    
742            public boolean isWidget() {
743                    return _widget;
744            }
745    
746            public ThemeDisplay merge(ThemeDisplay themeDisplay) {
747                    if ((themeDisplay == null) || (themeDisplay == this)) {
748                            return this;
749                    }
750    
751                    _includePortletCssJs = themeDisplay._includePortletCssJs;
752    
753                    return this;
754            }
755    
756            public void setAccount(Account account) {
757                    _account = account;
758            }
759    
760            public void setAddSessionIdToURL(boolean addSessionIdToURL) {
761                    _addSessionIdToURL = addSessionIdToURL;
762            }
763    
764            public void setAjax(boolean ajax) {
765                    _ajax = ajax;
766            }
767    
768            public void setCDNBaseURL(String cdnBase) {
769                    _cdnBaseURL = cdnBase;
770            }
771    
772            public void setCDNDynamicResourcesHost(String cdnDynamicResourcesHost) {
773                    _cdnDynamicResourcesHost = cdnDynamicResourcesHost;
774            }
775    
776            public void setCDNHost(String cdnHost) {
777                    _cdnHost = cdnHost;
778            }
779    
780            public void setCompany(Company company)
781                    throws PortalException, SystemException {
782    
783                    _company = company;
784                    _companyGroupId = company.getGroup().getGroupId();
785    
786                    setAccount(company.getAccount());
787            }
788    
789            public void setCompanyLogo(String companyLogo) {
790                    _companyLogo = companyLogo;
791            }
792    
793            public void setCompanyLogoHeight(int companyLogoHeight) {
794                    _companyLogoHeight = companyLogoHeight;
795            }
796    
797            public void setCompanyLogoWidth(int companyLogoWidth) {
798                    _companyLogoWidth = companyLogoWidth;
799            }
800    
801            public void setContact(Contact contact) {
802                    _contact = contact;
803            }
804    
805            public void setControlPanelCategory(String controlPanelCategory) {
806                    _controlPanelCategory = controlPanelCategory;
807            }
808    
809            public void setDevice(Device device) {
810                    _device = device;
811            }
812    
813            public void setDoAsGroupId(long doAsGroupId) {
814                    _doAsGroupId = doAsGroupId;
815            }
816    
817            public void setDoAsUserId(String doAsUserId) {
818                    _doAsUserId = doAsUserId;
819            }
820    
821            public void setDoAsUserLanguageId(String doAsUserLanguageId) {
822                    _doAsUserLanguageId = doAsUserLanguageId;
823            }
824    
825            public void setFacebookCanvasPageURL(String facebookCanvasPageURL) {
826                    _facebookCanvasPageURL = facebookCanvasPageURL;
827    
828                    if (Validator.isNotNull(facebookCanvasPageURL)) {
829                            _facebook = true;
830                    }
831            }
832    
833            public void setFreeformLayout(boolean freeformLayout) {
834                    _freeformLayout = freeformLayout;
835            }
836    
837            public void setI18nLanguageId(String i18nLanguageId) {
838                    _i18nLanguageId = i18nLanguageId;
839    
840                    if (Validator.isNotNull(i18nLanguageId)) {
841                            _i18n = true;
842                    }
843                    else {
844                            _i18n = false;
845                    }
846            }
847    
848            public void setI18nPath(String i18nPath) {
849                    _i18nPath = i18nPath;
850    
851                    if (Validator.isNotNull(i18nPath)) {
852                            _i18n = true;
853                    }
854                    else {
855                            _i18n = false;
856                    }
857            }
858    
859            public void setIncludePortletCssJs(boolean includePortletCssJs) {
860                    _includePortletCssJs = includePortletCssJs;
861            }
862    
863            public void setIsolated(boolean isolated) {
864                    _isolated = isolated;
865            }
866    
867            public void setLanguageId(String languageId) {
868                    _languageId = languageId;
869            }
870    
871            public void setLayout(Layout layout) {
872                    _layout = layout;
873            }
874    
875            public void setLayouts(List<Layout> layouts) {
876                    _layouts = layouts;
877            }
878    
879            public void setLayoutSet(LayoutSet layoutSet) {
880                    _layoutSet = layoutSet;
881            }
882    
883            public void setLayoutSetLogo(String layoutSetLogo) {
884                    _layoutSetLogo = layoutSetLogo;
885            }
886    
887            public void setLayoutTypePortlet(LayoutTypePortlet layoutTypePortlet) {
888                    _layoutTypePortlet = layoutTypePortlet;
889            }
890    
891            public void setLifecycle(String lifecycle) {
892                    _lifecycle = lifecycle;
893            }
894    
895            public void setLifecycleAction(boolean lifecycleAction) {
896                    _lifecycleAction = lifecycleAction;
897            }
898    
899            public void setLifecycleEvent(boolean lifecycleEvent) {
900                    _lifecycleEvent = lifecycleEvent;
901            }
902    
903            public void setLifecycleRender(boolean lifecycleRender) {
904                    _lifecycleRender = lifecycleRender;
905            }
906    
907            public void setLifecycleResource(boolean lifecycleResource) {
908                    _lifecycleResource = lifecycleResource;
909            }
910    
911            public void setLocale(Locale locale) {
912                    _locale = locale;
913    
914                    LocaleThreadLocal.setThemeDisplayLocale(locale);
915            }
916    
917            public void setLookAndFeel(Theme theme, ColorScheme colorScheme) {
918                    _theme = theme;
919                    _colorScheme = colorScheme;
920    
921                    if ((theme != null) && (colorScheme != null)) {
922                            String themeStaticResourcePath = theme.getStaticResourcePath();
923    
924                            String cdnBaseURL = getCDNBaseURL();
925    
926                            setPathColorSchemeImages(
927                                    cdnBaseURL + themeStaticResourcePath +
928                                            colorScheme.getColorSchemeImagesPath());
929    
930                            String dynamicResourcesHost = getCDNDynamicResourcesHost();
931    
932                            if (Validator.isNull(dynamicResourcesHost)) {
933                                    String portalURL = getPortalURL();
934    
935                                    if (getServerName() != null) {
936                                            try {
937                                                    portalURL = PortalUtil.getPortalURL(getLayout(), this);
938                                            }
939                                            catch (Exception e) {
940                                                    _log.error(e, e);
941                                            }
942                                    }
943    
944                                    dynamicResourcesHost = portalURL;
945                            }
946    
947                            setPathThemeCss(
948                                    dynamicResourcesHost + themeStaticResourcePath +
949                                            theme.getCssPath());
950    
951                            setPathThemeImages(
952                                    cdnBaseURL + themeStaticResourcePath + theme.getImagesPath());
953                            setPathThemeJavaScript(
954                                    cdnBaseURL + themeStaticResourcePath +
955                                            theme.getJavaScriptPath());
956                            setPathThemeRoot(themeStaticResourcePath + theme.getRootPath());
957                            setPathThemeTemplates(
958                                    cdnBaseURL + themeStaticResourcePath +
959                                            theme.getTemplatesPath());
960                    }
961            }
962    
963            public void setMDRRuleGroupInstance(
964                    MDRRuleGroupInstance mdrRuleGroupInstance) {
965    
966                    _mdrRuleGroupInstance = mdrRuleGroupInstance;
967            }
968    
969            public void setParentGroupId(long parentGroupId) {
970                    _parentGroupId = parentGroupId;
971    
972                    if (_parentGroupId > 0) {
973                            try {
974                                    _parentGroup = GroupLocalServiceUtil.getGroup(_parentGroupId);
975                            }
976                            catch (Exception e) {
977                                    _log.error(e, e);
978                            }
979                    }
980            }
981    
982            public void setPathApplet(String pathApplet) {
983                    _pathApplet = pathApplet;
984            }
985    
986            public void setPathCms(String pathCms) {
987                    _pathCms = pathCms;
988            }
989    
990            public void setPathColorSchemeImages(String pathColorSchemeImages) {
991                    _pathColorSchemeImages = pathColorSchemeImages;
992            }
993    
994            public void setPathContext(String pathContext) {
995                    _pathContext = pathContext;
996            }
997    
998            public void setPathFlash(String pathFlash) {
999                    _pathFlash = pathFlash;
1000            }
1001    
1002            public void setPathFriendlyURLPrivateGroup(
1003                    String pathFriendlyURLPrivateGroup) {
1004    
1005                    _pathFriendlyURLPrivateGroup = pathFriendlyURLPrivateGroup;
1006            }
1007    
1008            public void setPathFriendlyURLPrivateUser(
1009                    String pathFriendlyURLPrivateUser) {
1010    
1011                    _pathFriendlyURLPrivateUser = pathFriendlyURLPrivateUser;
1012            }
1013    
1014            public void setPathFriendlyURLPublic(String pathFriendlyURLPublic) {
1015                    _pathFriendlyURLPublic = pathFriendlyURLPublic;
1016            }
1017    
1018            public void setPathImage(String pathImage) {
1019                    if (isFacebook() &&
1020                            !pathImage.startsWith(Http.HTTP_WITH_SLASH) &&
1021                            !pathImage.startsWith(Http.HTTPS_WITH_SLASH)) {
1022    
1023                            pathImage = getPortalURL() + pathImage;
1024                    }
1025    
1026                    _pathImage = pathImage;
1027            }
1028    
1029            public void setPathJavaScript(String pathJavaScript) {
1030                    _pathJavaScript = pathJavaScript;
1031            }
1032    
1033            public void setPathMain(String pathMain) {
1034                    _pathMain = pathMain;
1035            }
1036    
1037            public void setPathSound(String pathSound) {
1038                    _pathSound = pathSound;
1039            }
1040    
1041            public void setPathThemeCss(String pathThemeCss) {
1042                    _pathThemeCss = pathThemeCss;
1043            }
1044    
1045            public void setPathThemeImages(String pathThemeImages) {
1046                    _pathThemeImages = pathThemeImages;
1047            }
1048    
1049            public void setPathThemeJavaScript(String pathThemeJavaScript) {
1050                    _pathThemeJavaScript = pathThemeJavaScript;
1051            }
1052    
1053            public void setPathThemeRoot(String pathThemeRoot) {
1054                    _pathThemeRoot = pathThemeRoot;
1055            }
1056    
1057            public void setPathThemeTemplates(String pathThemeTemplates) {
1058                    _pathThemeTemplates = pathThemeTemplates;
1059            }
1060    
1061            public void setPermissionChecker(PermissionChecker permissionChecker) {
1062                    _permissionChecker = permissionChecker;
1063            }
1064    
1065            public void setPlid(long plid) {
1066                    _plid = plid;
1067            }
1068    
1069            public void setPortalURL(String portalURL) {
1070                    _portalURL = portalURL;
1071            }
1072    
1073            public void setPpid(String ppid) {
1074                    _ppid = ppid;
1075            }
1076    
1077            public void setRealCompanyLogo(String realCompanyLogo) {
1078                    _realCompanyLogo = realCompanyLogo;
1079            }
1080    
1081            public void setRealCompanyLogoHeight(int realCompanyLogoHeight) {
1082                    _realCompanyLogoHeight = realCompanyLogoHeight;
1083            }
1084    
1085            public void setRealCompanyLogoWidth(int realCompanyLogoWidth) {
1086                    _realCompanyLogoWidth = realCompanyLogoWidth;
1087            }
1088    
1089            public void setRealUser(User realUser) {
1090                    _realUser = realUser;
1091            }
1092    
1093            public void setRefererPlid(long refererPlid) {
1094                    _refererPlid = refererPlid;
1095            }
1096    
1097            public void setScopeGroupId(long scopeGroupId) {
1098                    _scopeGroupId = scopeGroupId;
1099    
1100                    if (_scopeGroupId > 0) {
1101                            try {
1102                                    _scopeGroup = GroupLocalServiceUtil.getGroup(_scopeGroupId);
1103                            }
1104                            catch (Exception e) {
1105                                    _log.error(e, e);
1106                            }
1107                    }
1108            }
1109    
1110            public void setSecure(boolean secure) {
1111                    _secure = secure;
1112            }
1113    
1114            public void setServerName(String serverName) {
1115                    _serverName = serverName;
1116            }
1117    
1118            public void setServerPort(int serverPort) {
1119                    _serverPort = serverPort;
1120            }
1121    
1122            public void setSessionId(String sessionId) {
1123                    _sessionId = sessionId;
1124            }
1125    
1126            public void setShowAddContentIcon(boolean showAddContentIcon) {
1127                    _showAddContentIcon = showAddContentIcon;
1128            }
1129    
1130            public void setShowAddContentIconPermission(
1131                    boolean showAddContentIconPermission) {
1132    
1133                    _showAddContentIconPermission = showAddContentIconPermission;
1134            }
1135    
1136            public void setShowControlPanelIcon(boolean showControlPanelIcon) {
1137                    _showControlPanelIcon = showControlPanelIcon;
1138            }
1139    
1140            public void setShowHomeIcon(boolean showHomeIcon) {
1141                    _showHomeIcon = showHomeIcon;
1142            }
1143    
1144            public void setShowLayoutTemplatesIcon(boolean showLayoutTemplatesIcon) {
1145                    _showLayoutTemplatesIcon = showLayoutTemplatesIcon;
1146            }
1147    
1148            public void setShowManageSiteMembershipsIcon(
1149                    boolean showManageSiteMembershipsIcon) {
1150    
1151                    _showManageSiteMembershipsIcon = showManageSiteMembershipsIcon;
1152            }
1153    
1154            public void setShowMyAccountIcon(boolean showMyAccountIcon) {
1155                    _showMyAccountIcon = showMyAccountIcon;
1156            }
1157    
1158            public void setShowPageCustomizationIcon(
1159                    boolean showPageCustomizationIcon) {
1160    
1161                    _showPageCustomizationIcon = showPageCustomizationIcon;
1162            }
1163    
1164            public void setShowPageSettingsIcon(boolean showPageSettingsIcon) {
1165                    _showPageSettingsIcon = showPageSettingsIcon;
1166            }
1167    
1168            public void setShowPortalIcon(boolean showPortalIcon) {
1169                    _showPortalIcon = showPortalIcon;
1170            }
1171    
1172            public void setShowSignInIcon(boolean showSignInIcon) {
1173                    _showSignInIcon = showSignInIcon;
1174            }
1175    
1176            public void setShowSignOutIcon(boolean showSignOutIcon) {
1177                    _showSignOutIcon = showSignOutIcon;
1178            }
1179    
1180            public void setShowSiteContentIcon(boolean showSiteContentIcon) {
1181                    _showSiteContentIcon = showSiteContentIcon;
1182            }
1183    
1184            public void setShowSiteMapSettingsIcon(boolean showSiteMapSettingsIcon) {
1185                    _showSiteMapSettingsIcon = showSiteMapSettingsIcon;
1186            }
1187    
1188            public void setShowSiteSettingsIcon(boolean showSiteSettingsIcon) {
1189                    _showSiteSettingsIcon = showSiteSettingsIcon;
1190            }
1191    
1192            public void setShowStagingIcon(boolean showStagingIcon) {
1193                    _showStagingIcon = showStagingIcon;
1194            }
1195    
1196            public void setSignedIn(boolean signedIn) {
1197                    _signedIn = signedIn;
1198            }
1199    
1200            public void setStateExclusive(boolean stateExclusive) {
1201                    _stateExclusive = stateExclusive;
1202            }
1203    
1204            public void setStateMaximized(boolean stateMaximized) {
1205                    _stateMaximized = stateMaximized;
1206            }
1207    
1208            public void setStatePopUp(boolean statePopUp) {
1209                    _statePopUp = statePopUp;
1210            }
1211    
1212            public void setThemeCssFastLoad(boolean themeCssFastLoad) {
1213                    _themeCssFastLoad = themeCssFastLoad;
1214            }
1215    
1216            public void setThemeImagesFastLoad(boolean themeImagesFastLoad) {
1217                    _themeImagesFastLoad = themeImagesFastLoad;
1218            }
1219    
1220            public void setThemeJsBarebone(boolean themeJsBarebone) {
1221                    _themeJsBarebone = themeJsBarebone;
1222            }
1223    
1224            public void setThemeJsFastLoad(boolean themeJsFastLoad) {
1225                    _themeJsFastLoad = themeJsFastLoad;
1226            }
1227    
1228            public void setTilesContent(String tilesContent) {
1229                    _tilesContent = tilesContent;
1230            }
1231    
1232            public void setTilesSelectable(boolean tilesSelectable) {
1233                    _tilesSelectable = tilesSelectable;
1234            }
1235    
1236            public void setTilesTitle(String tilesTitle) {
1237                    _tilesTitle = tilesTitle;
1238            }
1239    
1240            public void setTimeZone(TimeZone timeZone) {
1241                    _timeZone = timeZone;
1242    
1243                    TimeZoneThreadLocal.setThemeDisplayTimeZone(timeZone);
1244            }
1245    
1246            public void setUnfilteredLayouts(List<Layout> unfilteredLayouts) {
1247                    _unfilteredLayouts = unfilteredLayouts;
1248            }
1249    
1250            public void setURLAddContent(String urlAddContent) {
1251                    _urlAddContent = urlAddContent;
1252            }
1253    
1254            public void setURLControlPanel(String urlControlPanel) {
1255                    _urlControlPanel = urlControlPanel;
1256            }
1257    
1258            public void setURLCurrent(String urlCurrent) {
1259                    _urlCurrent = urlCurrent;
1260            }
1261    
1262            public void setURLHome(String urlHome) {
1263                    _urlHome = urlHome;
1264            }
1265    
1266            public void setURLLayoutTemplates(String urlLayoutTemplates) {
1267                    _urlLayoutTemplates = urlLayoutTemplates;
1268            }
1269    
1270            public void setURLManageSiteMemberships(
1271                    PortletURL urlManageSiteMemberships) {
1272    
1273                    _urlManageSiteMemberships = urlManageSiteMemberships;
1274            }
1275    
1276            public void setURLMyAccount(PortletURL urlMyAccount) {
1277                    _urlMyAccount = urlMyAccount;
1278            }
1279    
1280            public void setURLPageSettings(PortletURL urlPageSettings) {
1281                    _urlPageSettings = urlPageSettings;
1282            }
1283    
1284            public void setURLPortal(String urlPortal) {
1285                    _urlPortal = urlPortal;
1286            }
1287    
1288            public void setURLPublishToLive(PortletURL urlPublishToLive) {
1289                    _urlPublishToLive = urlPublishToLive;
1290            }
1291    
1292            public void setURLSignIn(String urlSignIn) {
1293                    _urlSignIn = urlSignIn;
1294            }
1295    
1296            public void setURLSignOut(String urlSignOut) {
1297                    _urlSignOut = urlSignOut;
1298            }
1299    
1300            public void setURLSiteContent(String urlSiteContent) {
1301                    _urlSiteContent = urlSiteContent;
1302            }
1303    
1304            public void setURLSiteMapSettings(PortletURL urlSiteMapSettings) {
1305                    _urlSiteMapSettings = urlSiteMapSettings;
1306            }
1307    
1308            public void setURLSiteSettings(PortletURL urlSiteSettings) {
1309                    _urlSiteSettings = urlSiteSettings;
1310            }
1311    
1312            public void setURLUpdateManager(PortletURL urlUpdateManager) {
1313                    _urlUpdateManager = urlUpdateManager;
1314            }
1315    
1316            public void setUser(User user) throws PortalException, SystemException {
1317                    _user = user;
1318    
1319                    setContact(user.getContact());
1320            }
1321    
1322            public void setWidget(boolean widget) {
1323                    _widget = widget;
1324            }
1325    
1326            public String translate(String key) {
1327                    return LanguageUtil.get(getLocale(), key);
1328            }
1329    
1330            public String translate(String pattern, Object argument) {
1331                    return LanguageUtil.format(getLocale(), pattern, argument);
1332            }
1333    
1334            public String translate(String pattern, Object[] arguments) {
1335                    return LanguageUtil.format(getLocale(), pattern, arguments);
1336            }
1337    
1338            private static Log _log = LogFactoryUtil.getLog(ThemeDisplay.class);
1339    
1340            private Account _account;
1341            private boolean _addSessionIdToURL;
1342            private boolean _ajax;
1343            private String _cdnBaseURL;
1344            private String _cdnDynamicResourcesHost = StringPool.BLANK;
1345            private String _cdnHost = StringPool.BLANK;
1346            private ColorScheme _colorScheme;
1347            private Company _company;
1348            private long _companyGroupId;
1349            private String _companyLogo = StringPool.BLANK;
1350            private int _companyLogoHeight;
1351            private int _companyLogoWidth;
1352            private Contact _contact;
1353            private String _controlPanelCategory = StringPool.BLANK;
1354            private User _defaultUser;
1355            private Device _device;
1356            private long _doAsGroupId = 0;
1357            private String _doAsUserId = StringPool.BLANK;
1358            private String _doAsUserLanguageId = StringPool.BLANK;
1359            private boolean _facebook;
1360            private String _facebookCanvasPageURL;
1361            private boolean _freeformLayout;
1362            private boolean _i18n;
1363            private String _i18nLanguageId;
1364            private String _i18nPath;
1365            private boolean _includePortletCssJs;
1366            private boolean _isolated;
1367            private String _languageId;
1368            private Layout _layout;
1369            private List<Layout> _layouts;
1370            private LayoutSet _layoutSet;
1371            private String _layoutSetLogo = StringPool.BLANK;
1372            private LayoutTypePortlet _layoutTypePortlet;
1373            private String _lifecycle;
1374            private boolean _lifecycleAction;
1375            private boolean _lifecycleEvent;
1376            private boolean _lifecycleRender;
1377            private boolean _lifecycleResource;
1378            private Locale _locale;
1379            private MDRRuleGroupInstance _mdrRuleGroupInstance;
1380            private Group _parentGroup;
1381            private long _parentGroupId;
1382            private String _pathApplet = StringPool.BLANK;
1383            private String _pathCms = StringPool.BLANK;
1384            private String _pathColorSchemeImages = StringPool.BLANK;
1385            private String _pathContext = StringPool.BLANK;
1386            private String _pathFlash = StringPool.BLANK;
1387            private String _pathFriendlyURLPrivateGroup = StringPool.BLANK;
1388            private String _pathFriendlyURLPrivateUser = StringPool.BLANK;
1389            private String _pathFriendlyURLPublic = StringPool.BLANK;
1390            private String _pathImage = StringPool.BLANK;
1391            private String _pathJavaScript = StringPool.BLANK;
1392            private String _pathMain = StringPool.BLANK;
1393            private String _pathSound = StringPool.BLANK;
1394            private String _pathThemeCss = StringPool.BLANK;
1395            private String _pathThemeImages = StringPool.BLANK;
1396            private String _pathThemeJavaScript = StringPool.BLANK;
1397            private String _pathThemeRoot = StringPool.BLANK;
1398            private String _pathThemeTemplates = StringPool.BLANK;
1399            private transient PermissionChecker _permissionChecker;
1400            private long _plid;
1401            private String _portalURL = StringPool.BLANK;
1402            private PortletDisplay _portletDisplay = new PortletDisplay();
1403            private String _ppid = StringPool.BLANK;
1404            private String _realCompanyLogo = StringPool.BLANK;
1405            private int _realCompanyLogoHeight;
1406            private int _realCompanyLogoWidth;
1407            private User _realUser;
1408            private long _refererPlid;
1409            private Group _scopeGroup;
1410            private long _scopeGroupId;
1411            private boolean _secure;
1412            private String _serverName;
1413            private int _serverPort;
1414            private String _sessionId = StringPool.BLANK;
1415            private boolean _showAddContentIcon;
1416            private boolean _showAddContentIconPermission;
1417            private boolean _showControlPanelIcon;
1418            private boolean _showHomeIcon;
1419            private boolean _showLayoutTemplatesIcon;
1420            private boolean _showManageSiteMembershipsIcon;
1421            private boolean _showMyAccountIcon;
1422            private boolean _showPageCustomizationIcon;
1423            private boolean _showPageSettingsIcon;
1424            private boolean _showPortalIcon;
1425            private boolean _showSignInIcon;
1426            private boolean _showSignOutIcon;
1427            private boolean _showSiteContentIcon;
1428            private boolean _showSiteMapSettingsIcon;
1429            private boolean _showSiteSettingsIcon;
1430            private boolean _showStagingIcon;
1431            private boolean _signedIn;
1432            private boolean _stateExclusive;
1433            private boolean _stateMaximized;
1434            private boolean _statePopUp;
1435            private Theme _theme;
1436            private boolean _themeCssFastLoad;
1437            private boolean _themeImagesFastLoad;
1438            private boolean _themeJsBarebone;
1439            private boolean _themeJsFastLoad;
1440            private String _tilesContent = StringPool.BLANK;
1441            private boolean _tilesSelectable;
1442            private String _tilesTitle = StringPool.BLANK;
1443            private TimeZone _timeZone;
1444            private List<Layout> _unfilteredLayouts;
1445            private String _urlAddContent = StringPool.BLANK;
1446            private String _urlControlPanel = StringPool.BLANK;
1447            private String _urlCurrent = StringPool.BLANK;
1448            private String _urlHome = StringPool.BLANK;
1449            private String _urlLayoutTemplates = StringPool.BLANK;
1450            private transient PortletURL _urlManageSiteMemberships = null;
1451            private transient PortletURL _urlMyAccount = null;
1452            private transient PortletURL _urlPageSettings = null;
1453            private String _urlPortal = StringPool.BLANK;
1454            private transient PortletURL _urlPublishToLive = null;
1455            private String _urlSignIn = StringPool.BLANK;
1456            private String _urlSignOut = StringPool.BLANK;
1457            private String _urlSiteContent = StringPool.BLANK;
1458            private transient PortletURL _urlSiteMapSettings = null;
1459            private transient PortletURL _urlSiteSettings = null;
1460            private transient PortletURL _urlUpdateManager = null;
1461            private User _user;
1462            private boolean _widget;
1463    
1464    }