/** * Copyright (c) 2009--2012 Red Hat, Inc. * * This software is licensed to you under the GNU General Public License, * version 2 (GPLv2). There is NO WARRANTY for this software, express or * implied, including the implied warranties of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 * along with this software; if not, see * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. * * Red Hat trademarks are not licensed under GPLv2. No permission is * granted to use or replicate Red Hat trademarks that are incorporated * in this software or its documentation. */ package com.redhat.rhn.frontend.action.user; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.action.common.BadParameterException; import com.redhat.rhn.frontend.struts.RequestContext; import com.redhat.rhn.frontend.struts.RhnHelper; import com.redhat.rhn.manager.user.UserManager; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.action.DynaActionForm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * User locale override stuff * * @version $Rev $ */ public class UserLocalePrefAction extends BaseUserSetupAction { /** * {@inheritDoc} */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (request.getRequestURL().toString().indexOf("/rhn/users/") != -1 && request.getParameter("uid") == null) { throw new BadParameterException( "Invalid [null] value for parameter uid"); } DynaActionForm dynaForm = (DynaActionForm) form; RequestContext ctx = new RequestContext(request); User currentUser = lookupUser(ctx, dynaForm); ActionForward retval = null; if (isSubmitted(dynaForm)) { retval = save(mapping, ctx, currentUser, dynaForm); } else { retval = display(mapping, ctx, currentUser, dynaForm); } return retval; } private ActionForward save(ActionMapping mapping, RequestContext ctx, User currentUser, DynaActionForm form) { String preferredLocale = form.getString("preferredLocale"); if (preferredLocale != null && preferredLocale.equals("none")) { preferredLocale = null; } currentUser.setTimeZone(UserManager.getTimeZone( ((Integer) form.get("timezone")).intValue())); currentUser.setPreferredLocale(preferredLocale); UserManager.storeUser(currentUser); ActionMessages msgs = new ActionMessages(); msgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.preferencesModified")); getStrutsDelegate().saveMessages(ctx.getRequest(), msgs); if (ctx.getRequest().getParameter("uid") != null) { ActionForward display = mapping.findForward("display"); ActionForward fwd = new ActionForward(); fwd.setPath(display.getPath() + "?uid=" + currentUser.getId()); fwd.setRedirect(true); return fwd; } return mapping.findForward("display"); } private ActionForward display(ActionMapping mapping, RequestContext ctx, User currentUser, DynaActionForm form) { ctx.getRequest().setAttribute("targetuser", currentUser); ctx.getRequest().setAttribute("supportedLocales", buildImageMap()); ctx.getRequest().setAttribute("noLocale", buildNoneLocale()); setCurrentLocale(ctx, currentUser); ctx.getRequest().setAttribute("timezones", getTimeZones()); if (currentUser.getTimeZone() != null) { form.set("timezone", new Integer(currentUser.getTimeZone().getTimeZoneId())); } else { form.set("timezone", new Integer(UserManager.getDefaultTimeZone() .getTimeZoneId())); } form.set("uid", currentUser.getId()); return mapping.findForward(RhnHelper.DEFAULT_FORWARD); } private User lookupUser(RequestContext ctx, DynaActionForm form) { User retval = null; if (form.get("uid") != null) { Long uid = (Long) form.get("uid"); retval = UserManager.lookupUser(ctx.getCurrentUser(), uid); } else { retval = ctx.getCurrentUser(); } return retval; } }