/ Published in: Java

overriding servicePreAction class using hooks in liferay
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
package com.ssdg.portal.events; import com.liferay.portal.LayoutPermissionException; import com.liferay.portal.NoSuchGroupException; import com.liferay.portal.NoSuchLayoutException; import com.liferay.portal.NoSuchUserException; import com.liferay.portal.kernel.dao.orm.QueryUtil; import com.liferay.portal.kernel.events.Action; import com.liferay.portal.kernel.events.ActionException; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.exception.SystemException; import com.liferay.portal.kernel.language.LanguageUtil; import com.liferay.portal.kernel.lar.PortletDataHandlerKeys; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.portlet.LiferayPortletURL; import com.liferay.portal.kernel.portlet.LiferayWindowState; import com.liferay.portal.kernel.servlet.BrowserSnifferUtil; import com.liferay.portal.kernel.servlet.HttpHeaders; import com.liferay.portal.kernel.servlet.SessionErrors; import com.liferay.portal.kernel.util.FriendlyURLNormalizerUtil; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.portal.kernel.util.HttpUtil; import com.liferay.portal.kernel.util.LocaleUtil; import com.liferay.portal.kernel.util.ParamUtil; import com.liferay.portal.kernel.util.PropsKeys; import com.liferay.portal.kernel.util.SessionParamUtil; import com.liferay.portal.kernel.util.StringBundler; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.kernel.util.StringUtil; import com.liferay.portal.kernel.util.UnicodeProperties; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.model.ColorScheme; import com.liferay.portal.model.Company; import com.liferay.portal.model.Group; import com.liferay.portal.model.GroupConstants; import com.liferay.portal.model.Image; import com.liferay.portal.model.Layout; import com.liferay.portal.model.LayoutConstants; import com.liferay.portal.model.LayoutSet; import com.liferay.portal.model.LayoutTypePortlet; import com.liferay.portal.model.LayoutTypePortletConstants; import com.liferay.portal.model.Portlet; import com.liferay.portal.model.RoleConstants; import com.liferay.portal.model.Theme; import com.liferay.portal.model.User; import com.liferay.portal.model.impl.ColorSchemeImpl; import com.liferay.portal.model.impl.VirtualLayout; import com.liferay.portal.security.auth.PrincipalException; import com.liferay.portal.security.permission.ActionKeys; import com.liferay.portal.security.permission.PermissionChecker; import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil; import com.liferay.portal.security.permission.PermissionThreadLocal; import com.liferay.portal.service.GroupLocalServiceUtil; import com.liferay.portal.service.ImageLocalServiceUtil; import com.liferay.portal.service.LayoutLocalServiceUtil; import com.liferay.portal.service.LayoutSetLocalServiceUtil; import com.liferay.portal.service.PortletLocalServiceUtil; import com.liferay.portal.service.RoleLocalServiceUtil; import com.liferay.portal.service.ServiceContext; import com.liferay.portal.service.ServiceContextFactory; import com.liferay.portal.service.ServiceContextThreadLocal; import com.liferay.portal.service.ThemeLocalServiceUtil; import com.liferay.portal.service.UserLocalServiceUtil; import com.liferay.portal.service.permission.GroupPermissionUtil; import com.liferay.portal.service.permission.LayoutPermissionUtil; import com.liferay.portal.service.permission.PortletPermissionUtil; import com.liferay.portal.theme.ThemeDisplay; import com.liferay.portal.theme.ThemeDisplayFactory; import com.liferay.portal.util.CookieKeys; import com.liferay.portal.util.LayoutClone; import com.liferay.portal.util.LayoutCloneFactory; import com.liferay.portal.util.PortalUtil; import com.liferay.portal.util.PortletCategoryKeys; import com.liferay.portal.util.PortletKeys; import com.liferay.portal.util.PrefsPropsUtil; import com.liferay.portal.util.PropsUtil; import com.liferay.portal.util.PropsValues; import com.liferay.portal.util.WebKeys; import com.liferay.portal.webserver.WebServerServletTokenUtil; import com.liferay.portlet.PortalPreferences; import com.liferay.portlet.PortletPreferencesFactoryUtil; import com.liferay.portlet.PortletURLImpl; import com.liferay.portlet.asset.model.AssetEntry; import com.liferay.portlet.asset.service.AssetEntryLocalServiceUtil; import com.liferay.portlet.journal.NoSuchArticleException; import com.liferay.portlet.journal.model.JournalArticle; import com.liferay.portlet.journal.service.JournalArticleServiceUtil; import com.liferay.portlet.sites.util.SitesUtil; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.TimeZone; import javax.portlet.PortletMode; import javax.portlet.PortletRequest; import javax.portlet.PortletURL; import javax.portlet.WindowState; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.time.StopWatch; import org.apache.struts.Globals; public ServicePreAction() { initImportLARFiles(); } public ThemeDisplay initThemeDisplay( HttpServletRequest request, HttpServletResponse response) HttpSession session = request.getSession(); // Company Company company = PortalUtil.getCompany(request); long companyId = company.getCompanyId(); // CDN host // Portal URL // Paths String friendlyURLPrivateGroupPath = PortalUtil.getPathFriendlyURLPrivateGroup(); String friendlyURLPrivateUserPath = PortalUtil.getPathFriendlyURLPrivateUser(); if (Validator.isNotNull(i18nPath)) { if (Validator.isNotNull(contextPath)) { friendlyURLPrivateGroupPath = StringUtil.replaceFirst( friendlyURLPrivateGroupPath, contextPath, i18nContextPath); friendlyURLPrivateUserPath = StringUtil.replaceFirst( friendlyURLPrivateUserPath, contextPath, i18nContextPath); friendlyURLPublicPath = StringUtil.replaceFirst( friendlyURLPublicPath, contextPath, i18nContextPath); mainPath = StringUtil.replaceFirst( mainPath, contextPath, i18nContextPath); } else { friendlyURLPrivateGroupPath = i18nPath.concat( friendlyURLPrivateGroupPath); friendlyURLPrivateUserPath = i18nPath.concat( friendlyURLPrivateUserPath); friendlyURLPublicPath = i18nPath.concat(friendlyURLPublicPath); mainPath = i18nPath.concat(mainPath); } } // Company logo StringBundler sb = new StringBundler(5); sb.append(imagePath); sb.append("/company_logo?img_id="); sb.append(company.getLogoId()); sb.append("&t="); sb.append(WebServerServletTokenUtil.getToken(company.getLogoId())); int companyLogoHeight = 0; int companyLogoWidth = 0; company.getLogoId()); if (companyLogoImage != null) { companyLogoHeight = companyLogoImage.getHeight(); companyLogoWidth = companyLogoImage.getWidth(); } int realCompanyLogoHeight = companyLogoHeight; int realCompanyLogoWidth = companyLogoWidth; // User User user = null; try { user = PortalUtil.getUser(request); } catch (NoSuchUserException nsue) { if (_log.isWarnEnabled()) { _log.warn(nsue.getMessage()); } long userId = PortalUtil.getUserId(request); if (userId > 0) { session.invalidate(); } return null; } boolean signedIn = false; if (user == null) { user = company.getDefaultUser(); } else if (!user.isDefaultUser()) { signedIn = true; } if (PropsValues.BROWSER_CACHE_DISABLED || (PropsValues.BROWSER_CACHE_SIGNED_IN_DISABLED && signedIn)) { response.setDateHeader(HttpHeaders.EXPIRES, 0); response.setHeader( HttpHeaders.CACHE_CONTROL, HttpHeaders.CACHE_CONTROL_NO_CACHE_VALUE); response.setHeader( HttpHeaders.PRAGMA, HttpHeaders.PRAGMA_NO_CACHE_VALUE); } User realUser = user; if (realUserId != null) { if (user.getUserId() != realUserId.longValue()) { realUser = UserLocalServiceUtil.getUserById( realUserId.longValue()); } } request, "doAsUserLanguageId"); long doAsGroupId = ParamUtil.getLong(request, "doAsGroupId"); long refererPlid = ParamUtil.getLong(request, "refererPlid"); if (LayoutLocalServiceUtil.fetchLayout(refererPlid) == null) { refererPlid = 0; } request, "controlPanelCategory"); // Permission checker PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.create(user, true); PermissionThreadLocal.setPermissionChecker(permissionChecker); // Locale if (Validator.isNotNull(doAsUserLanguageId)) { locale = LocaleUtil.fromLanguageId(doAsUserLanguageId); } WebKeys.I18N_LANGUAGE_ID); if (Validator.isNotNull(i18nLanguageId)) { locale = LocaleUtil.fromLanguageId(i18nLanguageId); } else if (locale == null) { if (signedIn) { locale = user.getLocale(); } else { // User previously set their preferred language request, CookieKeys.GUEST_LANGUAGE_ID, false); if (Validator.isNotNull(languageId)) { locale = LocaleUtil.fromLanguageId(languageId); } // Get locale from the request if ((locale == null) && PropsValues.LOCALE_DEFAULT_REQUEST) { locale = request.getLocale(); } // Get locale from the default user if (locale == null) { locale = user.getLocale(); } if (Validator.isNull(locale.getCountry())) { // Locales must contain a country code locale = LanguageUtil.getLocale(locale.getLanguage()); } if (!LanguageUtil.isAvailableLocale(locale)) { locale = user.getLocale(); } } session.setAttribute(Globals.LOCALE_KEY, locale); LanguageUtil.updateCookie(request, response, locale); } // Cookie support try { // LEP-4069 CookieKeys.validateSupportCookie(request); } CookieKeys.addSupportCookie(request, response); } // Time zone if (timeZone == null) { timeZone = company.getTimeZone(); } // Layouts if (signedIn) { updateUserLayouts(user); } Layout layout = null; List<Layout> layouts = null; long plid = ParamUtil.getLong(request, "p_l_id"); if (plid > 0) { layout = LayoutLocalServiceUtil.getLayout(plid); long sourceGroupId = ParamUtil.getLong(request, "p_v_l_s_g_id"); if ((sourceGroupId > 0) && (sourceGroupId != layout.getGroupId())) { sourceGroupId); if (SitesUtil.isUserGroupLayoutSetViewable( permissionChecker, layout.getGroup())) { layout = new VirtualLayout(layout, sourceGroup); } else { layout = null; } } } else { long groupId = ParamUtil.getLong(request, "groupId"); boolean privateLayout = ParamUtil.getBoolean( request, "privateLayout"); long layoutId = ParamUtil.getLong(request, "layoutId"); if ((groupId > 0) && (layoutId > 0)) { layout = LayoutLocalServiceUtil.getLayout( groupId, privateLayout, layoutId); } } WebKeys.REDIRECT_TO_DEFAULT_LAYOUT); if (redirectToDefaultLayout == null) { } if (layout != null) { if (!signedIn && PropsValues.AUTH_FORWARD_BY_REDIRECT) { request.setAttribute(WebKeys.REQUESTED_LAYOUT, layout); } boolean isViewableGroup = LayoutPermissionUtil.contains( permissionChecker, layout, controlPanelCategory, true, ActionKeys.VIEW); boolean isViewableStaging = GroupPermissionUtil.contains( permissionChecker, group.getGroupId(), ActionKeys.VIEW_STAGING); if (isViewableStaging) { layouts = LayoutLocalServiceUtil.getLayouts( layout.getGroupId(), layout.isPrivateLayout(), LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); } else if (!isViewableGroup && group.isStagingGroup()) { layout = null; } else if (!isLoginRequest(request) && (!isViewableGroup || (!redirectToDefaultLayout && !LayoutPermissionUtil.contains( permissionChecker, layout, false, ActionKeys.VIEW)))) { if (user.isDefaultUser()) { throw new PrincipalException("User is not authenticated"); } sb = new StringBundler(6); sb.append("User "); sb.append(user.getUserId()); sb.append(" is not allowed to access the "); sb.append(layout.isPrivateLayout() ? "private": "public"); sb.append(" pages of group "); sb.append(layout.getGroupId()); if (_log.isWarnEnabled()) { _log.warn(sb.toString()); } throw new NoSuchLayoutException(sb.toString()); } else if (group.isLayoutPrototype()) { layouts = new ArrayList<Layout>(); } else { layouts = LayoutLocalServiceUtil.getLayouts( layout.getGroupId(), layout.isPrivateLayout(), LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); if (!group.isControlPanel()) { doAsGroupId = 0; } } } List<Layout> unfilteredLayouts = layouts; if (layout == null) { layout = (Layout)defaultLayout[0]; layouts = (List<Layout>)defaultLayout[1]; } request, user, permissionChecker, layout, layouts); layout = (Layout)viewableLayouts[0]; layouts = (List<Layout>)viewableLayouts[1]; if (layout != null) { group = layout.getGroup(); if (!group.isControlPanel()) { rememberVisitedGroupIds(request, group.getGroupId()); } } LayoutTypePortlet layoutTypePortlet = null; layouts = mergeAdditionalLayouts( request, user, permissionChecker, layout, layouts); LayoutSet layoutSet = null; boolean hasCustomizeLayoutPermission = false; boolean hasUpdateLayoutPermission = false; boolean customizedView = SessionParamUtil.getBoolean( request, "customized_view", true); if (layout != null) { hasCustomizeLayoutPermission = LayoutPermissionUtil.contains( permissionChecker, layout, ActionKeys.CUSTOMIZE); hasUpdateLayoutPermission = LayoutPermissionUtil.contains( permissionChecker, layout, ActionKeys.UPDATE); layoutSet = layout.getLayoutSet(); if (company.isSiteLogo()) { long logoId = 0; if (layoutSet.isLogo()) { logoId = layoutSet.getLogoId(); } else { LayoutSet siblingLayoutSet = LayoutSetLocalServiceUtil.getLayoutSet( layout.getGroupId(), !layout.isPrivateLayout()); if (siblingLayoutSet.isLogo()) { logoId = siblingLayoutSet.getLogoId(); } } if (logoId > 0) { sb = new StringBundler(5); sb.append(imagePath); sb.append("/layout_set_logo?img_id="); sb.append(logoId); sb.append("&t="); sb.append(WebServerServletTokenUtil.getToken(logoId)); layoutSetLogo = sb.toString(); Image layoutSetLogoImage = ImageLocalServiceUtil.getCompanyLogo(logoId); companyLogo = layoutSetLogo; companyLogoHeight = layoutSetLogoImage.getHeight(); companyLogoWidth = layoutSetLogoImage.getWidth(); } } plid = layout.getPlid(); // Updates to shared layouts are not reflected until the next time // the user logs in because group layouts are cached in the session layout = (Layout)layout.clone(); layoutTypePortlet = (LayoutTypePortlet)layout.getLayoutType(); boolean customizable = layoutTypePortlet.isCustomizable(); if (!customizable || (group.isLayoutPrototype() || group.isLayoutSetPrototype())) { customizedView = false; } layoutTypePortlet.setCustomizedView(customizedView); layoutTypePortlet.setUpdatePermission(hasUpdateLayoutPermission); if (signedIn && customizable && customizedView && hasCustomizeLayoutPermission) { PortalPreferences portalPreferences = PortletPreferencesFactoryUtil.getPortalPreferences( companyId, user.getUserId(), true); layoutTypePortlet.setPortalPreferences(portalPreferences); } LayoutClone layoutClone = LayoutCloneFactory.getInstance(); if (layoutClone != null) { if (typeSettings != null) { UnicodeProperties typeSettingsProperties = new UnicodeProperties(true); typeSettingsProperties.load(typeSettings); LayoutTypePortletConstants.STATE_MAX); LayoutTypePortletConstants.STATE_MIN); LayoutTypePortletConstants.MODE_ABOUT); LayoutTypePortletConstants.MODE_CONFIG); LayoutTypePortletConstants.MODE_EDIT); String modeEditDefaults = typeSettingsProperties.getProperty( LayoutTypePortletConstants.MODE_EDIT_DEFAULTS); LayoutTypePortletConstants.MODE_EDIT_GUEST); LayoutTypePortletConstants.MODE_HELP); LayoutTypePortletConstants.MODE_PREVIEW); LayoutTypePortletConstants.MODE_PRINT); layoutTypePortlet.setStateMax(stateMax); layoutTypePortlet.setStateMin(stateMin); layoutTypePortlet.setModeAbout(modeAbout); layoutTypePortlet.setModeConfig(modeConfig); layoutTypePortlet.setModeEdit(modeEdit); layoutTypePortlet.setModeEditDefaults(modeEditDefaults); layoutTypePortlet.setModeEditGuest(modeEditGuest); layoutTypePortlet.setModeHelp(modeHelp); layoutTypePortlet.setModePreview(modePreview); layoutTypePortlet.setModePrint(modePrint); } } request.setAttribute(WebKeys.LAYOUT, layout); request.setAttribute(WebKeys.LAYOUTS, layouts); if (layout.isPrivateLayout()) { permissionChecker.setCheckGuest(false); } } // Scope long scopeGroupId = PortalUtil.getScopeGroupId(request); long parentGroupId = PortalUtil.getParentGroupId(scopeGroupId); // Theme and color scheme Theme theme = null; ColorScheme colorScheme = null; boolean wapTheme = BrowserSnifferUtil.isWap(request); //uses WAP theme as a mobile theme boolean mobileTheme = BrowserSnifferUtil.isMobile(request); if ((layout != null) && group.isControlPanel()) { companyId, PropsKeys.CONTROL_PANEL_LAYOUT_REGULAR_THEME_ID); String colorSchemeId = ColorSchemeImpl.getDefaultRegularColorSchemeId(); theme = ThemeLocalServiceUtil.getTheme( companyId, themeId, wapTheme); colorScheme = ThemeLocalServiceUtil.getColorScheme( companyId, theme.getThemeId(), colorSchemeId, wapTheme); if (!wapTheme && theme.isWapTheme()) { theme = ThemeLocalServiceUtil.getTheme( companyId, PropsValues.CONTROL_PANEL_LAYOUT_REGULAR_THEME_ID, false); colorScheme = ThemeLocalServiceUtil.getColorScheme( companyId, theme.getThemeId(), colorSchemeId, false); } request.setAttribute(WebKeys.THEME, theme); request.setAttribute(WebKeys.COLOR_SCHEME, colorScheme); } boolean themeCssFastLoad = SessionParamUtil.getBoolean( request, "css_fast_load", PropsValues.THEME_CSS_FAST_LOAD); boolean themeImagesFastLoad = SessionParamUtil.getBoolean( request, "images_fast_load", PropsValues.THEME_IMAGES_FAST_LOAD); boolean themeJsBarebone = PropsValues.JAVASCRIPT_BAREBONE_ENABLED; if (themeJsBarebone) { if (signedIn) { themeJsBarebone = false; } } boolean themeJsFastLoad = SessionParamUtil.getBoolean( request, "js_fast_load", PropsValues.JAVASCRIPT_FAST_LOAD); lifecycle = ParamUtil.getString(request, "p_t_lifecycle", lifecycle); boolean isolated = ParamUtil.getBoolean(request, "p_p_isolated"); WebKeys.FACEBOOK_CANVAS_PAGE_URL); boolean widget = false; if (widgetObj != null) { widget = widgetObj.booleanValue(); } // Theme display ThemeDisplay themeDisplay = ThemeDisplayFactory.create(); // Set the CDN host, portal URL, and Facebook application ID first // because other methods (setLookAndFeel) depend on them being set themeDisplay.setCDNHost(cdnHost); themeDisplay.setPortalURL(portalURL); themeDisplay.setFacebookCanvasPageURL(facebookCanvasPageURL); themeDisplay.setWidget(widget); themeDisplay.setCompany(company); themeDisplay.setCompanyLogo(companyLogo); themeDisplay.setCompanyLogoHeight(companyLogoHeight); themeDisplay.setCompanyLogoWidth(companyLogoWidth); themeDisplay.setRealCompanyLogo(realCompanyLogo); themeDisplay.setRealCompanyLogoHeight(realCompanyLogoHeight); themeDisplay.setRealCompanyLogoWidth(realCompanyLogoWidth); themeDisplay.setUser(user); themeDisplay.setRealUser(realUser); themeDisplay.setDoAsUserId(doAsUserId); themeDisplay.setDoAsUserLanguageId(doAsUserLanguageId); themeDisplay.setDoAsGroupId(doAsGroupId); themeDisplay.setRefererPlid(refererPlid); themeDisplay.setControlPanelCategory(controlPanelCategory); themeDisplay.setLayoutSet(layoutSet); themeDisplay.setLayoutSetLogo(layoutSetLogo); themeDisplay.setLayout(layout); themeDisplay.setLayouts(layouts); themeDisplay.setUnfilteredLayouts(unfilteredLayouts); themeDisplay.setPlid(plid); themeDisplay.setLayoutTypePortlet(layoutTypePortlet); themeDisplay.setScopeGroupId(scopeGroupId); themeDisplay.setParentGroupId(parentGroupId); themeDisplay.setSignedIn(signedIn); themeDisplay.setPermissionChecker(permissionChecker); themeDisplay.setLocale(locale); themeDisplay.setLanguageId(LocaleUtil.toLanguageId(locale)); themeDisplay.setI18nLanguageId(i18nLanguageId); themeDisplay.setI18nPath(i18nPath); themeDisplay.setTimeZone(timeZone); themeDisplay.setLookAndFeel(theme, colorScheme); themeDisplay.setThemeCssFastLoad(themeCssFastLoad); themeDisplay.setThemeImagesFastLoad(themeImagesFastLoad); themeDisplay.setThemeJsBarebone(themeJsBarebone); themeDisplay.setThemeJsFastLoad(themeJsFastLoad); themeDisplay.setServerName(request.getServerName()); themeDisplay.setServerPort(request.getServerPort()); themeDisplay.setSecure(PortalUtil.isSecure(request)); themeDisplay.setLifecycle(lifecycle); themeDisplay.setLifecycleAction(lifecycle.equals("1")); themeDisplay.setLifecycleRender(lifecycle.equals("0")); themeDisplay.setLifecycleResource(lifecycle.equals("2")); themeDisplay.setStateExclusive(LiferayWindowState.isExclusive(request)); themeDisplay.setStateMaximized(LiferayWindowState.isMaximized(request)); themeDisplay.setStatePopUp(LiferayWindowState.isPopUp(request)); themeDisplay.setIsolated(isolated); themeDisplay.setPathApplet(contextPath.concat("/applets")); themeDisplay.setPathCms(contextPath.concat("/cms")); themeDisplay.setPathContext(contextPath); themeDisplay.setPathFlash(contextPath.concat("/flash")); themeDisplay.setPathFriendlyURLPrivateGroup( friendlyURLPrivateGroupPath); themeDisplay.setPathFriendlyURLPrivateUser(friendlyURLPrivateUserPath); themeDisplay.setPathFriendlyURLPublic(friendlyURLPublicPath); themeDisplay.setPathImage(imagePath); themeDisplay.setPathJavaScript( cdnHost.concat(contextPath).concat("/html/js")); themeDisplay.setPathMain(mainPath); themeDisplay.setPathSound(contextPath.concat("/html/sound")); // Icons themeDisplay.setShowAddContentIcon(false); themeDisplay.setShowControlPanelIcon(signedIn); themeDisplay.setShowHomeIcon(true); themeDisplay.setShowMyAccountIcon(signedIn); themeDisplay.setShowPageSettingsIcon(false); themeDisplay.setShowPortalIcon(true); themeDisplay.setShowSignInIcon(!signedIn); themeDisplay.setShowSignOutIcon(signedIn); boolean showSiteContentIcon = false; long controlPanelPlid = 0; if (signedIn) { companyId, GroupConstants.CONTROL_PANEL); controlPanelPlid = LayoutLocalServiceUtil.getDefaultPlid( controlPanelGroup.getGroupId(), true); List<Portlet> siteContentPortlets = PortalUtil.getControlPanelPortlets( PortletCategoryKeys.CONTENT, themeDisplay); Portlet groupPagesPortlet = PortletLocalServiceUtil.getPortletById( PortletKeys.GROUP_PAGES); siteContentPortlets.remove(groupPagesPortlet); Portlet siteMembershipsAdminPortlet = PortletLocalServiceUtil.getPortletById( PortletKeys.SITE_MEMBERSHIPS_ADMIN); siteContentPortlets.remove(siteMembershipsAdminPortlet); Portlet siteSettingsPortlet = PortletLocalServiceUtil.getPortletById( PortletKeys.SITE_SETTINGS); siteContentPortlets.remove(siteSettingsPortlet); showSiteContentIcon = PortletPermissionUtil.contains( permissionChecker, scopeGroupId, controlPanelPlid, siteContentPortlets, ActionKeys.VIEW); } themeDisplay.setShowSiteContentIcon(showSiteContentIcon); themeDisplay.setShowStagingIcon(false); // Session if (PropsValues.SESSION_ENABLE_URL_WITH_SESSION_ID && !CookieKeys.hasSessionId(request)) { themeDisplay.setAddSessionIdToURL(true); themeDisplay.setSessionId(session.getId()); } // URLs GroupConstants.CONTROL_PANEL_FRIENDLY_URL); if (Validator.isNotNull(doAsUserId)) { urlControlPanel = HttpUtil.addParameter( urlControlPanel, "doAsUserId", doAsUserId); } if (scopeGroupId > 0) { urlControlPanel = HttpUtil.addParameter( urlControlPanel, "doAsGroupId", scopeGroupId); } if (refererPlid > 0) { urlControlPanel = HttpUtil.addParameter( urlControlPanel, "refererPlid", refererPlid); } else if (plid > 0) { urlControlPanel = HttpUtil.addParameter( urlControlPanel, "refererPlid", plid); } if (themeDisplay.isAddSessionIdToURL()) { urlControlPanel = PortalUtil.getURLWithSessionId( urlControlPanel, session.getId()); } themeDisplay.setURLControlPanel(urlControlPanel); siteContentURL = HttpUtil.addParameter( siteContentURL, "controlPanelCategory", PortletCategoryKeys.CONTENT); themeDisplay.setURLSiteContent(siteContentURL); themeDisplay.setURLCurrent(currentURL); themeDisplay.setURLHome(urlHome); if (layout != null) { if (layout.isTypePortlet()) { boolean freeformLayout = layoutTypePortlet.getLayoutTemplateId().equals("freeform"); themeDisplay.setFreeformLayout(freeformLayout); if (hasUpdateLayoutPermission) { themeDisplay.setShowAddContentIconPermission(true); if (!LiferayWindowState.isMaximized(request)) { themeDisplay.setShowAddContentIcon(true); } themeDisplay.setShowLayoutTemplatesIcon(true); if (!group.isUser()) { themeDisplay.setShowPageCustomizationIcon(true); } themeDisplay.setURLAddContent( "Liferay.LayoutConfiguration.toggle('".concat( PortletKeys.LAYOUT_CONFIGURATION).concat("');")); themeDisplay.setURLLayoutTemplates( "Liferay.LayoutConfiguration.showTemplates();"); } if (hasCustomizeLayoutPermission && customizedView) { themeDisplay.setShowAddContentIconPermission(true); if (!LiferayWindowState.isMaximized(request)) { themeDisplay.setShowAddContentIcon(true); } themeDisplay.setURLAddContent( "Liferay.LayoutConfiguration.toggle('".concat( PortletKeys.LAYOUT_CONFIGURATION).concat("');")); } } if (signedIn) { if (group.isUser()) { if ((layout.isPrivateLayout() && !PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_MODIFIABLE) || (layout.isPublicLayout() && !PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_MODIFIABLE)) { hasUpdateLayoutPermission = false; } } } if (hasUpdateLayoutPermission) { themeDisplay.setShowPageSettingsIcon(true); LiferayPortletURL pageSettingsURL = new PortletURLImpl( request, PortletKeys.LAYOUTS_ADMIN, controlPanelPlid, PortletRequest.RENDER_PHASE); pageSettingsURL.setControlPanelCategory( _CONTROL_PANEL_CATEGORY_PORTLET_PREFIX + PortletKeys.LAYOUTS_ADMIN); pageSettingsURL.setParameter( "struts_action", "/layouts_admin/edit_layouts"); if (layout.isPrivateLayout()) { pageSettingsURL.setParameter("tabs1", "private-pages"); } else { pageSettingsURL.setParameter("tabs1", "public-pages"); } pageSettingsURL.setParameter("closeRedirect", currentURL); pageSettingsURL.setParameter( pageSettingsURL.setPortletMode(PortletMode.VIEW); pageSettingsURL.setWindowState(LiferayWindowState.POP_UP); themeDisplay.setURLPageSettings(pageSettingsURL); boolean site = group.isSite(); if (!site && group.isStagingGroup()) { site = liveGroup.isSite(); } if (site && GroupPermissionUtil.contains( permissionChecker, scopeGroupId, ActionKeys.ASSIGN_MEMBERS)) { themeDisplay.setShowManageSiteMembershipsIcon(true); LiferayPortletURL manageSiteMembershipsURL = new PortletURLImpl( request, PortletKeys.SITE_MEMBERSHIPS_ADMIN, controlPanelPlid, PortletRequest.RENDER_PHASE); manageSiteMembershipsURL.setControlPanelCategory( _CONTROL_PANEL_CATEGORY_PORTLET_PREFIX + PortletKeys.SITE_MEMBERSHIPS_ADMIN); manageSiteMembershipsURL.setParameter( "struts_action", "/sites_admin/edit_site_assignments"); manageSiteMembershipsURL.setParameter( manageSiteMembershipsURL.setParameter( manageSiteMembershipsURL.setPortletMode(PortletMode.VIEW); manageSiteMembershipsURL.setWindowState( LiferayWindowState.POP_UP); themeDisplay.setURLManageSiteMemberships( manageSiteMembershipsURL); } else { themeDisplay.setShowManageSiteMembershipsIcon(false); } } boolean hasAddLayoutGroupPermission = GroupPermissionUtil.contains( permissionChecker, scopeGroupId, ActionKeys.ADD_LAYOUT); boolean hasAddLayoutLayoutPermission = LayoutPermissionUtil.contains( permissionChecker, layout, ActionKeys.ADD_LAYOUT); boolean hasManageLayoutsGroupPermission = GroupPermissionUtil.contains( permissionChecker, scopeGroupId, ActionKeys.MANAGE_LAYOUTS); boolean hasManageStagingPermission = GroupPermissionUtil.contains( permissionChecker, scopeGroupId, ActionKeys.MANAGE_STAGING); boolean hasPublishStagingPermission = GroupPermissionUtil.contains( permissionChecker, scopeGroupId, ActionKeys.PUBLISH_STAGING); boolean hasUpdateGroupPermission = GroupPermissionUtil.contains( permissionChecker, scopeGroupId, ActionKeys.UPDATE); boolean hasViewStagingPermission = GroupPermissionUtil.contains( permissionChecker, scopeGroupId, ActionKeys.VIEW_STAGING); if (!group.isControlPanel() && !group.isUser() && !group.isUserGroup() && hasUpdateGroupPermission) { themeDisplay.setShowSiteSettingsIcon(true); LiferayPortletURL siteSettingsURL = new PortletURLImpl( request, PortletKeys.SITE_SETTINGS, controlPanelPlid, PortletRequest.RENDER_PHASE); siteSettingsURL.setControlPanelCategory( _CONTROL_PANEL_CATEGORY_PORTLET_PREFIX + PortletKeys.SITE_SETTINGS); siteSettingsURL.setParameter( "struts_action", "/sites_admin/edit_site"); siteSettingsURL.setParameter("closeRedirect", currentURL); siteSettingsURL.setParameter( siteSettingsURL.setPortletMode(PortletMode.VIEW); siteSettingsURL.setWindowState(LiferayWindowState.POP_UP); themeDisplay.setURLSiteSettings(siteSettingsURL); } if (!group.isLayoutPrototype() && (hasAddLayoutGroupPermission || hasAddLayoutLayoutPermission || hasManageLayoutsGroupPermission || hasUpdateGroupPermission)) { themeDisplay.setShowSiteMapSettingsIcon(true); LiferayPortletURL siteMapSettingsURL = new PortletURLImpl( request, PortletKeys.LAYOUTS_ADMIN, controlPanelPlid, PortletRequest.RENDER_PHASE); siteMapSettingsURL.setControlPanelCategory( _CONTROL_PANEL_CATEGORY_PORTLET_PREFIX + PortletKeys.LAYOUTS_ADMIN); siteMapSettingsURL.setParameter( "struts_action", "/layouts_admin/edit_layouts"); if (layout.isPrivateLayout()) { siteMapSettingsURL.setParameter("tabs1", "private-pages"); } else { siteMapSettingsURL.setParameter("tabs1", "public-pages"); } siteMapSettingsURL.setParameter("closeRedirect", currentURL); siteMapSettingsURL.setParameter( siteMapSettingsURL.setPortletMode(PortletMode.VIEW); siteMapSettingsURL.setWindowState(LiferayWindowState.POP_UP); themeDisplay.setURLSiteMapSettings(siteMapSettingsURL); } if (group.hasStagingGroup() && !group.isStagingGroup()) { themeDisplay.setShowAddContentIcon(false); themeDisplay.setShowLayoutTemplatesIcon(false); themeDisplay.setShowPageSettingsIcon(false); themeDisplay.setURLPublishToLive(null); } if (group.isControlPanel()) { themeDisplay.setShowPageSettingsIcon(false); themeDisplay.setURLPublishToLive(null); } // LEP-4987 if (group.isStaged() || group.isStagingGroup()) { if (hasManageStagingPermission || hasPublishStagingPermission || hasUpdateLayoutPermission || hasViewStagingPermission) { themeDisplay.setShowStagingIcon(true); } if (hasPublishStagingPermission) { PortletURL publishToLiveURL = new PortletURLImpl( request, PortletKeys.LAYOUTS_ADMIN, plid, PortletRequest.RENDER_PHASE); publishToLiveURL.setParameter( "struts_action", "/layouts_admin/publish_layouts"); if (layout.isPrivateLayout()) { publishToLiveURL.setParameter("tabs1", "private-pages"); } else { publishToLiveURL.setParameter("tabs1", "public-pages"); } publishToLiveURL.setParameter("pagesRedirect", currentURL); publishToLiveURL.setParameter( publishToLiveURL.setParameter( publishToLiveURL.setPortletMode(PortletMode.VIEW); publishToLiveURL.setWindowState( LiferayWindowState.EXCLUSIVE); themeDisplay.setURLPublishToLive(publishToLiveURL); } } PortletURLImpl myAccountURL = new PortletURLImpl( request, PortletKeys.MY_ACCOUNT, controlPanelPlid, PortletRequest.RENDER_PHASE); if (scopeGroupId > 0) { myAccountURL.setDoAsGroupId(scopeGroupId); } myAccountURL.setParameter("struts_action", "/my_account/edit_user"); myAccountURL.setPortletMode(PortletMode.VIEW); if (refererPlid > 0) { myAccountURL.setRefererPlid(refererPlid); } else { myAccountURL.setRefererPlid(plid); } myAccountURL.setWindowState(WindowState.MAXIMIZED); themeDisplay.setURLMyAccount(myAccountURL); } if ((!user.isActive()) || (PrefsPropsUtil.getBoolean( companyId, PropsKeys.TERMS_OF_USE_REQUIRED) && !user.isAgreedToTermsOfUse())) { themeDisplay.setShowAddContentIcon(false); themeDisplay.setShowMyAccountIcon(false); themeDisplay.setShowPageSettingsIcon(false); } if (group.isLayoutPrototype()) { themeDisplay.setShowControlPanelIcon(false); themeDisplay.setShowHomeIcon(false); themeDisplay.setShowManageSiteMembershipsIcon(false); themeDisplay.setShowMyAccountIcon(false); themeDisplay.setShowPageCustomizationIcon(false); themeDisplay.setShowPageSettingsIcon(true); themeDisplay.setShowPortalIcon(false); themeDisplay.setShowSignInIcon(false); themeDisplay.setShowSignOutIcon(false); themeDisplay.setShowSiteContentIcon(false); themeDisplay.setShowSiteSettingsIcon(false); themeDisplay.setShowStagingIcon(false); } if (group.isLayoutSetPrototype()) { themeDisplay.setShowPageCustomizationIcon(false); themeDisplay.setShowSiteSettingsIcon(false); } if (group.hasStagingGroup() && !group.isStagingGroup()) { themeDisplay.setShowLayoutTemplatesIcon(false); themeDisplay.setShowPageCustomizationIcon(false); themeDisplay.setShowPageSettingsIcon(false); themeDisplay.setShowSiteContentIcon(false); themeDisplay.setShowSiteMapSettingsIcon(false); themeDisplay.setShowSiteSettingsIcon(false); } themeDisplay.setURLPortal(portalURL.concat(contextPath)); if (layout != null) { urlSignIn = HttpUtil.addParameter( urlSignIn, "p_l_id", layout.getPlid()); } themeDisplay.setURLSignIn(urlSignIn); themeDisplay.setURLSignOut(mainPath.concat("/portal/logout")); PortletURL updateManagerURL = new PortletURLImpl( request, PortletKeys.UPDATE_MANAGER, plid, PortletRequest.RENDER_PHASE); updateManagerURL.setParameter("struts_action", "/update_manager/view"); updateManagerURL.setPortletMode(PortletMode.VIEW); updateManagerURL.setWindowState(WindowState.MAXIMIZED); themeDisplay.setURLUpdateManager(updateManagerURL); return themeDisplay; } @Override public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException { StopWatch stopWatch = null; if (_log.isDebugEnabled()) { stopWatch = new StopWatch(); stopWatch.start(); } try { servicePre(request, response); } throw new ActionException(e); } if (_log.isDebugEnabled()) { _log.debug("Running takes " + stopWatch.getTime() + " ms"); } } protected void addDefaultLayoutsByLAR( parameterMap.put( PortletDataHandlerKeys.PERMISSIONS, parameterMap.put( PortletDataHandlerKeys.PORTLET_DATA, parameterMap.put( PortletDataHandlerKeys.PORTLET_DATA_CONTROL_DEFAULT, parameterMap.put( PortletDataHandlerKeys.PORTLET_SETUP, parameterMap.put( PortletDataHandlerKeys.USER_PERMISSIONS, LayoutLocalServiceUtil.importLayouts( userId, groupId, privateLayout, parameterMap, larFile); } protected void addDefaultUserPrivateLayoutByProperties( long userId, long groupId) PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_FRIENDLY_URL); ServiceContext serviceContext = new ServiceContext(); Layout layout = LayoutLocalServiceUtil.addLayout( userId, groupId, true, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_NAME, StringPool.BLANK, StringPool.BLANK, LayoutConstants.TYPE_PORTLET, false, friendlyURL, serviceContext); LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet)layout.getLayoutType(); layoutTypePortlet.setLayoutTemplateId( 0, PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_TEMPLATE_ID, false); for (int i = 0; i < 10; i++) { PropsKeys.DEFAULT_USER_PRIVATE_LAYOUT_COLUMN + i); layoutTypePortlet.addPortletIds( 0, portletIdsArray, columnId, false); } LayoutLocalServiceUtil.updateLayout( layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(), layout.getTypeSettings()); boolean updateLayoutSet = false; LayoutSet layoutSet = layout.getLayoutSet(); if (Validator.isNotNull( PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_REGULAR_THEME_ID)) { layoutSet.setThemeId( PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_REGULAR_THEME_ID); updateLayoutSet = true; } if (Validator.isNotNull( PropsValues. DEFAULT_USER_PRIVATE_LAYOUT_REGULAR_COLOR_SCHEME_ID)) { layoutSet.setColorSchemeId( PropsValues. DEFAULT_USER_PRIVATE_LAYOUT_REGULAR_COLOR_SCHEME_ID); updateLayoutSet = true; } if (Validator.isNotNull( PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_WAP_THEME_ID)) { layoutSet.setWapThemeId( PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_WAP_THEME_ID); updateLayoutSet = true; } if (Validator.isNotNull( PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_WAP_COLOR_SCHEME_ID)) { layoutSet.setWapColorSchemeId( PropsValues.DEFAULT_USER_PRIVATE_LAYOUT_WAP_COLOR_SCHEME_ID); updateLayoutSet = true; } if (updateLayoutSet) { LayoutSetLocalServiceUtil.updateLayoutSet(layoutSet); } } protected void addDefaultUserPrivateLayouts(User user) if (privateLARFile != null) { addDefaultLayoutsByLAR( user.getUserId(), userGroup.getGroupId(), true, privateLARFile); } else { addDefaultUserPrivateLayoutByProperties( user.getUserId(), userGroup.getGroupId()); } } protected void addDefaultUserPublicLayoutByProperties( long userId, long groupId) PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_FRIENDLY_URL); ServiceContext serviceContext = new ServiceContext(); Layout layout = LayoutLocalServiceUtil.addLayout( userId, groupId, false, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_NAME, StringPool.BLANK, StringPool.BLANK, LayoutConstants.TYPE_PORTLET, false, friendlyURL, serviceContext); LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet)layout.getLayoutType(); layoutTypePortlet.setLayoutTemplateId( 0, PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_TEMPLATE_ID, false); for (int i = 0; i < 10; i++) { PropsKeys.DEFAULT_USER_PUBLIC_LAYOUT_COLUMN + i); layoutTypePortlet.addPortletIds( 0, portletIdsArray, columnId, false); } LayoutLocalServiceUtil.updateLayout( layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(), layout.getTypeSettings()); boolean updateLayoutSet = false; LayoutSet layoutSet = layout.getLayoutSet(); if (Validator.isNotNull( PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_REGULAR_THEME_ID)) { layoutSet.setThemeId( PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_REGULAR_THEME_ID); updateLayoutSet = true; } if (Validator.isNotNull( PropsValues. DEFAULT_USER_PUBLIC_LAYOUT_REGULAR_COLOR_SCHEME_ID)) { layoutSet.setColorSchemeId( PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_REGULAR_COLOR_SCHEME_ID); updateLayoutSet = true; } if (Validator.isNotNull( PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_WAP_THEME_ID)) { layoutSet.setWapThemeId( PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_WAP_THEME_ID); updateLayoutSet = true; } if (Validator.isNotNull( PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_WAP_COLOR_SCHEME_ID)) { layoutSet.setWapColorSchemeId( PropsValues.DEFAULT_USER_PUBLIC_LAYOUT_WAP_COLOR_SCHEME_ID); updateLayoutSet = true; } if (updateLayoutSet) { LayoutSetLocalServiceUtil.updateLayoutSet(layoutSet); } } protected void addDefaultUserPublicLayouts(User user) if (publicLARFile != null) { addDefaultLayoutsByLAR( user.getUserId(), userGroup.getGroupId(), false, publicLARFile); } else { addDefaultUserPublicLayoutByProperties( user.getUserId(), userGroup.getGroupId()); } } protected void deleteDefaultUserPrivateLayouts(User user) ServiceContext serviceContext = new ServiceContext(); LayoutLocalServiceUtil.deleteLayouts( userGroup.getGroupId(), true, serviceContext); } protected void deleteDefaultUserPublicLayouts(User user) ServiceContext serviceContext = new ServiceContext(); LayoutLocalServiceUtil.deleteLayouts( userGroup.getGroupId(), false, serviceContext); } HttpServletRequest request, User user, boolean signedIn) // Check the virtual host LayoutSet layoutSet = (LayoutSet)request.getAttribute( WebKeys.VIRTUAL_HOST_LAYOUT_SET); if (layoutSet != null) { List<Layout> layouts = LayoutLocalServiceUtil.getLayouts( layoutSet.getGroupId(), layoutSet.isPrivateLayout(), LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); if (layouts.size() > 0) { Layout layout = layouts.get(0); } } Layout layout = null; List<Layout> layouts = null; if (signedIn) { // Check the user's personal layouts layouts = LayoutLocalServiceUtil.getLayouts( userGroup.getGroupId(), true, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); if (layouts.size() == 0) { layouts = LayoutLocalServiceUtil.getLayouts( userGroup.getGroupId(), false, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); } if (layouts.size() > 0) { layout = layouts.get(0); } // Check the user's sites if (layout == null) { List<Group> groups = GroupLocalServiceUtil.search( user.getCompanyId(), null, null, groupParams, QueryUtil.ALL_POS, QueryUtil.ALL_POS); layouts = LayoutLocalServiceUtil.getLayouts( group.getGroupId(), true, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); if (layouts.size() == 0) { layouts = LayoutLocalServiceUtil.getLayouts( group.getGroupId(), false, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); } if (layouts.size() > 0) { layout = layouts.get(0); break; } } } } if (layout == null) { // Check the Guest site user.getCompanyId(), GroupConstants.GUEST); layouts = LayoutLocalServiceUtil.getLayouts( guestGroup.getGroupId(), false, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); if (layouts.size() > 0) { layout = layouts.get(0); } } } friendlyURL = GetterUtil.getString(friendlyURL); return FriendlyURLNormalizerUtil.normalize(friendlyURL); } HttpServletRequest request, User user, PermissionChecker permissionChecker, Layout layout, List<Layout> layouts) if ((layouts == null) || layouts.isEmpty()) { } boolean hasViewLayoutPermission = false; boolean hasViewStagingPermission = (group.isStagingGroup() || group.isStagedRemotely()) && GroupPermissionUtil.contains( permissionChecker, group.getGroupId(), ActionKeys.VIEW_STAGING); if (LayoutPermissionUtil.contains( permissionChecker, layout, false, ActionKeys.VIEW) || hasViewStagingPermission) { hasViewLayoutPermission = true; } List<Layout> accessibleLayouts = new ArrayList<Layout>(); for (int i = 0; i < layouts.size(); i++) { Layout curLayout = layouts.get(i); if (!curLayout.isHidden() && (LayoutPermissionUtil.contains( permissionChecker, curLayout, false, ActionKeys.VIEW) || hasViewStagingPermission)) { if (accessibleLayouts.isEmpty() && !hasViewLayoutPermission) { layout = curLayout; } accessibleLayouts.add(curLayout); } } if (accessibleLayouts.isEmpty()) { layouts = null; if (!hasViewLayoutPermission) { SessionErrors.add( request, LayoutPermissionException.class.getName()); } } else { layouts = accessibleLayouts; } } return RoleLocalServiceUtil.hasUserRole( user.getUserId(), user.getCompanyId(), RoleConstants.POWER_USER, true); } protected void initImportLARFiles() { String privateLARFileName = PropsValues.DEFAULT_USER_PRIVATE_LAYOUTS_LAR; if (_log.isDebugEnabled()) { _log.debug("Reading private LAR file " + privateLARFileName); } if (Validator.isNotNull(privateLARFileName)) { if (!privateLARFile.exists()) { _log.error( "Private LAR file " + privateLARFile + " does not exist"); privateLARFile = null; } else { if (_log.isDebugEnabled()) { _log.debug("Using private LAR file " + privateLARFileName); } } } if (_log.isDebugEnabled()) { _log.debug("Reading public LAR file " + publicLARFileName); } if (Validator.isNotNull(publicLARFileName)) { if (!publicLARFile.exists()) { _log.error( "Public LAR file " + publicLARFile + " does not exist"); publicLARFile = null; } else { if (_log.isDebugEnabled()) { _log.debug("Using public LAR file " + publicLARFileName); } } } } protected boolean isLoginRequest(HttpServletRequest request) { if (requestURI.startsWith(mainPath.concat("/portal/login"))) { return true; } else { return false; } } /** * @deprecated */ protected boolean isViewableCommunity( User user, long groupId, boolean privateLayout, PermissionChecker permissionChecker) return LayoutPermissionUtil.contains( permissionChecker, groupId, privateLayout, 0, ActionKeys.VIEW); } /** * @deprecated */ protected boolean isViewableGroup( User user, long groupId, boolean privateLayout, long layoutId, String controlPanelCategory, PermissionChecker permissionChecker) return LayoutPermissionUtil.contains( permissionChecker, groupId, privateLayout, layoutId, controlPanelCategory, ActionKeys.VIEW); } protected List<Layout> mergeAdditionalLayouts( HttpServletRequest request, User user, PermissionChecker permissionChecker, Layout layout, List<Layout> layouts) if ((layout == null) || layout.isPrivateLayout()) { return layouts; } long layoutGroupId = layout.getGroupId(); user.getCompanyId(), GroupConstants.GUEST); if (layoutGroupId != guestGroup.getGroupId()) { UnicodeProperties typeSettingsProperties = layoutGroup.getTypeSettingsProperties(); boolean mergeGuestPublicPages = GetterUtil.getBoolean( typeSettingsProperties.getProperty("mergeGuestPublicPages")); if (!mergeGuestPublicPages) { return layouts; } List<Layout> guestLayouts = LayoutLocalServiceUtil.getLayouts( guestGroup.getGroupId(), false, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); request, user, permissionChecker, layout, guestLayouts); guestLayouts = (List<Layout>)viewableLayouts[1]; if (layouts == null) { return guestLayouts; } layouts.addAll(0, guestLayouts); } else { HttpSession session = request.getSession(); WebKeys.VISITED_GROUP_ID_PREVIOUS); if ((previousGroupId != null) && (previousGroupId.longValue() != layoutGroupId)) { try { previousGroup = GroupLocalServiceUtil.getGroup( previousGroupId.longValue()); } catch (NoSuchGroupException nsge) { if (_log.isWarnEnabled()) { _log.warn(nsge); } return layouts; } UnicodeProperties typeSettingsProperties = previousGroup.getTypeSettingsProperties(); boolean mergeGuestPublicPages = GetterUtil.getBoolean( typeSettingsProperties.getProperty( "mergeGuestPublicPages")); if (!mergeGuestPublicPages) { return layouts; } List<Layout> previousLayouts = LayoutLocalServiceUtil.getLayouts( previousGroupId.longValue(), false, LayoutConstants.DEFAULT_PARENT_LAYOUT_ID); request, user, permissionChecker, layout, previousLayouts); previousLayouts = (List<Layout>)viewableLayouts[1]; if (previousLayouts != null) { layouts.addAll(previousLayouts); } } } return layouts; } protected void rememberVisitedGroupIds( HttpServletRequest request, long currentGroupId) { if (!requestURI.endsWith(_PATH_PORTAL_LAYOUT)) { return; } HttpSession session = request.getSession(); WebKeys.VISITED_GROUP_ID_RECENT); WebKeys.VISITED_GROUP_ID_PREVIOUS); if (recentGroupId == null) { session.setAttribute( WebKeys.VISITED_GROUP_ID_RECENT, recentGroupId); } else if (recentGroupId.longValue() != currentGroupId) { session.setAttribute( WebKeys.VISITED_GROUP_ID_RECENT, recentGroupId); session.setAttribute( WebKeys.VISITED_GROUP_ID_PREVIOUS, previousGroupId); } if (_log.isDebugEnabled()) { _log.debug("Current group id " + currentGroupId); _log.debug("Recent group id " + recentGroupId); _log.debug("Previous group id " + previousGroupId); } } protected void servicePre( HttpServletRequest request, HttpServletResponse response) ThemeDisplay themeDisplay = initThemeDisplay(request, response); if (themeDisplay == null) { return; } request.setAttribute(WebKeys.THEME_DISPLAY, themeDisplay); // Service context ServiceContext serviceContext = ServiceContextFactory.getInstance( request); ServiceContextThreadLocal.pushServiceContext(serviceContext); // Parallel render boolean parallelRenderEnable = true; Layout layout = themeDisplay.getLayout(); if (layout != null) { LayoutTypePortlet layoutTypePortlet = themeDisplay.getLayoutTypePortlet(); List<String> portletIds = layoutTypePortlet.getPortletIds(); if (portletIds.size() == 1) { Portlet portlet = PortletLocalServiceUtil.getPortletById( portletId); if ((portlet != null) && !portlet.isAjaxable()) { parallelRenderEnable = false; } } } request, "p_p_parallel", parallelRenderEnable)); request.setAttribute( WebKeys.PORTLET_PARALLEL_RENDER, parallelRenderEnableObj); // Main Journal article long mainJournalArticleId = ParamUtil.getLong(request, "p_j_a_id"); if (mainJournalArticleId > 0) { try{ JournalArticle mainJournalArticle = JournalArticleServiceUtil.getArticle(mainJournalArticleId); AssetEntry layoutAssetEntry = AssetEntryLocalServiceUtil.getEntry( JournalArticle.class.getName(), mainJournalArticle.getResourcePrimKey()); request.setAttribute( WebKeys.LAYOUT_ASSET_ENTRY, layoutAssetEntry); } catch (NoSuchArticleException nsae) { if (_log.isWarnEnabled()) { _log.warn(nsae.getMessage()); } } } } // Private layouts boolean addDefaultUserPrivateLayouts = false; if (PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_ENABLED && PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_AUTO_CREATE) { addDefaultUserPrivateLayouts = true; if (PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_POWER_USER_REQUIRED) { if (hasPowerUserRole == null) { hasPowerUserRole = hasPowerUserRole(user); } if (!hasPowerUserRole.booleanValue()) { addDefaultUserPrivateLayouts = false; } } } if (addDefaultUserPrivateLayouts) { hasPrivateLayouts = LayoutLocalServiceUtil.hasLayouts(user, true); if (!hasPrivateLayouts) { addDefaultUserPrivateLayouts(user); } } boolean deleteDefaultUserPrivateLayouts = false; if (!PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_ENABLED) { deleteDefaultUserPrivateLayouts = true; } else if (PropsValues.LAYOUT_USER_PRIVATE_LAYOUTS_POWER_USER_REQUIRED) { if (hasPowerUserRole == null) { hasPowerUserRole = hasPowerUserRole(user); } if (!hasPowerUserRole.booleanValue()) { deleteDefaultUserPrivateLayouts = true; } } if (deleteDefaultUserPrivateLayouts) { if (hasPrivateLayouts == null) { hasPrivateLayouts = LayoutLocalServiceUtil.hasLayouts( user, true); } if (hasPrivateLayouts) { deleteDefaultUserPrivateLayouts(user); } } // Public pages boolean addDefaultUserPublicLayouts = false; if (PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_ENABLED && PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_AUTO_CREATE) { addDefaultUserPublicLayouts = true; if (PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_POWER_USER_REQUIRED) { if (hasPowerUserRole == null) { hasPowerUserRole = hasPowerUserRole(user); } if (!hasPowerUserRole.booleanValue()) { addDefaultUserPublicLayouts = false; } } } if (addDefaultUserPublicLayouts) { hasPublicLayouts = LayoutLocalServiceUtil.hasLayouts(user, false); if (!hasPublicLayouts) { addDefaultUserPublicLayouts(user); } } boolean deleteDefaultUserPublicLayouts = false; if (!PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_ENABLED) { deleteDefaultUserPublicLayouts = true; } else if (PropsValues.LAYOUT_USER_PUBLIC_LAYOUTS_POWER_USER_REQUIRED) { if (hasPowerUserRole == null) { hasPowerUserRole = hasPowerUserRole(user); } if (!hasPowerUserRole.booleanValue()) { deleteDefaultUserPublicLayouts = true; } } if (deleteDefaultUserPublicLayouts) { if (hasPublicLayouts == null) { hasPublicLayouts = LayoutLocalServiceUtil.hasLayouts( user, false); } if (hasPublicLayouts) { deleteDefaultUserPublicLayouts(user); } } } "portlet_"; private static Log _log = LogFactoryUtil.getLog(ServicePreAction.class); }
Comments
