diff --git a/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterBean.java b/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterBean.java index bbe394b31..4c41e2f57 100644 --- a/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterBean.java +++ b/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterBean.java @@ -28,12 +28,16 @@ import java.util.Comparator; import java.util.List; import java.util.Locale; -import java.util.ResourceBundle; import org.exoplatform.container.ExoContainerContext; +import org.exoplatform.portal.Constants; +import org.exoplatform.portal.application.PortalRequestContext; import org.exoplatform.portal.webui.util.Util; +import org.exoplatform.services.organization.OrganizationService; +import org.exoplatform.services.organization.UserProfile; import org.exoplatform.services.resources.LocaleConfig; import org.exoplatform.services.resources.LocaleConfigService; +import org.exoplatform.services.resources.LocaleContextInfo; import org.exoplatform.services.resources.ResourceBundleService; /** @@ -44,12 +48,13 @@ public class FooterBean { LocaleConfigService localeService; ResourceBundleService resourceBundleService; - + OrganizationService organizationService; public FooterBean() { localeService = (LocaleConfigService)ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(LocaleConfigService.class); resourceBundleService = (ResourceBundleService)ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(ResourceBundleService.class); + organizationService = (OrganizationService)ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(OrganizationService.class); } public Locale getCurrentLocale() @@ -58,9 +63,7 @@ public Locale getCurrentLocale() } public List getLanguages() - { - Locale currentLocale = Util.getPortalRequestContext().getLocale(); - + { Collection localeConfigs = localeService.getLocalConfigs(); List locales = new ArrayList(); @@ -75,13 +78,32 @@ public List getLanguages() private class LocaleComparator implements Comparator { - @Override public int compare(Locale firstLocale, Locale secondLocale) { return (firstLocale.getDisplayName(getCurrentLocale()).compareTo(secondLocale.getDisplayName(getCurrentLocale()))); } - + } + + public void setUserLanguage(String username, String language) throws Exception + { + UserProfile userProfile = organizationService.getUserProfileHandler().findUserProfileByName(username); + if (userProfile != null && userProfile.getUserInfoMap() != null) + { + //Only save if user's locale has not been set + String currLocale = userProfile.getUserInfoMap().get(Constants.USER_LANGUAGE); + if (currLocale == null || currLocale.trim().equals("")) + { + userProfile.getUserInfoMap().put(Constants.USER_LANGUAGE, language); + organizationService.getUserProfileHandler().saveUserProfile(userProfile, false); + } + } + } + + public void setLanguage(String language) + { + PortalRequestContext prc = PortalRequestContext.getCurrentInstance(); + prc.setLocale(localeService.getLocaleConfig(language).getLocale()); } } diff --git a/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterPortlet.java b/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterPortlet.java index a19af52ae..92e32ef65 100644 --- a/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterPortlet.java +++ b/portlet/responsive/footer/src/main/java/org/gatein/portlet/responsive/footer/FooterPortlet.java @@ -32,20 +32,24 @@ import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; -import org.exoplatform.container.ExoContainerContext; -import org.exoplatform.portal.application.PortalRequestContext; -import org.exoplatform.services.resources.LocaleConfigService; - /** * @author Matt Wringe * @version $Revision$ */ public class FooterPortlet extends GenericPortlet { + + FooterBean footerBean; + public FooterPortlet() + { + footerBean = new FooterBean(); + } + @Override protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException - { + { + request.setAttribute("footer", footerBean); //add the footerBean to the request PortletRequestDispatcher prd = getPortletContext().getRequestDispatcher("/jsp/footer.jsp"); prd.include(request, response); } @@ -53,14 +57,23 @@ protected void doView(RenderRequest request, RenderResponse response) throws Por @Override public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException { - // FIXME processAction - //super.processAction(request, response); String language = (request.getParameter("languageSelect")); - LocaleConfigService localeService = (LocaleConfigService)ExoContainerContext.getCurrentContainer().getComponentInstanceOfType(LocaleConfigService.class); - - PortalRequestContext prc = PortalRequestContext.getCurrentInstance(); - prc.setLocale(localeService.getLocaleConfig(language).getLocale()); + if (language != null) + { + footerBean.setLanguage(language); + if (request.getRemoteUser() != null) + { + try + { + footerBean.setUserLanguage(request.getRemoteUser(), language); + } + catch (Exception e) + { + throw new PortletException("Error trying to update the user's language preference", e); + } + } + } } } diff --git a/portlet/responsive/footer/src/main/resources/locale/portlet/responsivefooter_en.properties b/portlet/responsive/footer/src/main/resources/locale/portlet/responsivefooter_en.properties index 79ebdc803..e69de29bb 100644 --- a/portlet/responsive/footer/src/main/resources/locale/portlet/responsivefooter_en.properties +++ b/portlet/responsive/footer/src/main/resources/locale/portlet/responsivefooter_en.properties @@ -1,5 +0,0 @@ -copyrightText=Copyright © 2009-2012. All rights reserved, -RedHatInc=Red Hat, Inc -and=and -eXoPlatformSAS=eXo Platform SAS -contactUs=Contact Us diff --git a/portlet/responsive/footer/src/main/webapp/css/ResponsiveStylesheet.css b/portlet/responsive/footer/src/main/webapp/css/ResponsiveStylesheet.css index e70f11661..48e075c7e 100644 --- a/portlet/responsive/footer/src/main/webapp/css/ResponsiveStylesheet.css +++ b/portlet/responsive/footer/src/main/webapp/css/ResponsiveStylesheet.css @@ -36,4 +36,7 @@ border: 0; font-size: 1em; background-color: transparent; + apperance: none; + -webkit-appearance: none; + -moz-appearance: none; } \ No newline at end of file diff --git a/portlet/responsive/footer/src/main/webapp/jsp/footer.jsp b/portlet/responsive/footer/src/main/webapp/jsp/footer.jsp index c5bd2e1c9..cea74eea1 100644 --- a/portlet/responsive/footer/src/main/webapp/jsp/footer.jsp +++ b/portlet/responsive/footer/src/main/webapp/jsp/footer.jsp @@ -3,7 +3,7 @@ <%@ page import="java.util.List" %> <%@ page import="java.util.ResourceBundle" %> - + <% Locale locale = renderRequest.getLocale(); @@ -13,20 +13,13 @@ List languages = footer.getLanguages(); %>
-
<%= resourceBundle.getString("copyrightText")%> - <%= resourceBundle.getString("RedHatInc") %> - <%= resourceBundle.getString("and") %> - <%= resourceBundle.getString("eXoPlatformSAS")%> -
    -
  • gatein.org
  • -
  • <%= resourceBundle.getString("contactUs") %>
  • - <% for (Locale language : languages) { @@ -42,16 +35,15 @@ List languages = footer.getLanguages(); if (!language.equals(locale)) { %> - + <% } else { %> - + <% } } %> -
@@ -59,8 +51,6 @@ List languages = footer.getLanguages();
diff --git a/portlet/responsive/header/src/main/webapp/jsp/header.jsp b/portlet/responsive/header/src/main/webapp/jsp/header.jsp index f001383ce..bac2db146 100644 --- a/portlet/responsive/header/src/main/webapp/jsp/header.jsp +++ b/portlet/responsive/header/src/main/webapp/jsp/header.jsp @@ -22,7 +22,7 @@