public ColorScheme getColorScheme( long companyId, String themeId, String colorSchemeId, boolean wapTheme) throws SystemException { colorSchemeId = GetterUtil.getString(colorSchemeId); Theme theme = getTheme(companyId, themeId, wapTheme); Map<String, ColorScheme> colorSchemesMap = theme.getColorSchemesMap(); ColorScheme colorScheme = colorSchemesMap.get(colorSchemeId); if (colorScheme == null) { List<ColorScheme> colorSchemes = theme.getColorSchemes(); if (colorSchemes.size() > 0) { for (int i = (colorSchemes.size() - 1); i >= 0; i--) { colorScheme = colorSchemes.get(i); if (colorScheme.isDefaultCs()) { break; } } } } if (colorScheme == null) { if (wapTheme) { colorSchemeId = ColorSchemeImpl.getDefaultWapColorSchemeId(); } else { colorSchemeId = ColorSchemeImpl.getDefaultRegularColorSchemeId(); } } if (colorScheme == null) { colorScheme = ColorSchemeImpl.getNullColorScheme(); } return colorScheme; }
@Override public void run(HttpServletRequest request, HttpServletResponse response) throws ActionException { try { // Do not randomize look and feel unless the user is logged in ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); if (!themeDisplay.isSignedIn()) { return; } // Do not randomize look and feel unless the user is accessing the // portal String requestURI = GetterUtil.getString(request.getRequestURI()); if (!requestURI.endsWith("/portal/layout")) { return; } // Do not randomize look and feel unless the user is accessing a // personal layout Layout layout = themeDisplay.getLayout(); if (layout == null) { return; } boolean wapTheme = BrowserSnifferUtil.isWap(request); List<Theme> themes = ThemeLocalServiceUtil.getPageThemes( themeDisplay.getCompanyId(), themeDisplay.getScopeGroupId(), themeDisplay.getUserId(), wapTheme); if (!themes.isEmpty()) { Theme theme = themes.get(RandomUtil.nextInt(themes.size())); List<ColorScheme> colorSchemes = theme.getColorSchemes(); ColorScheme colorScheme = colorSchemes.get(RandomUtil.nextInt(colorSchemes.size())); LayoutServiceUtil.updateLookAndFeel( layout.getGroupId(), layout.isPrivateLayout(), layout.getPlid(), theme.getThemeId(), colorScheme.getColorSchemeId(), layout.getCss(), wapTheme); themeDisplay.setLookAndFeel(theme, colorScheme); request.setAttribute(WebKeys.THEME, theme); request.setAttribute(WebKeys.COLOR_SCHEME, colorScheme); } } catch (Exception e) { _log.error(e, e); throw new ActionException(e); } }