Index: lams_admin/conf/xdoclet/struts-forms.xml =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/xdoclet/struts-forms.xml,v diff -u -r1.8 -r1.9 --- lams_admin/conf/xdoclet/struts-forms.xml 29 Jun 2006 02:15:29 -0000 1.8 +++ lams_admin/conf/xdoclet/struts-forms.xml 29 Jun 2006 23:50:16 -0000 1.9 @@ -30,8 +30,7 @@ - - + Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java,v diff -u -r1.12 -r1.13 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java 29 Jun 2006 02:22:33 -0000 1.12 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserAction.java 29 Jun 2006 23:50:16 -0000 1.13 @@ -26,8 +26,10 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -37,11 +39,14 @@ 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 org.lamsfoundation.lams.usermanagement.Country; import org.lamsfoundation.lams.usermanagement.Language; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.SupportedLocale; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; @@ -76,23 +81,34 @@ .getServletContext()); private static IUserManagementService service = (IUserManagementService) ctx .getBean("userManagementServiceTarget"); - private static List countries = service.findAll(Country.class); - private static List languages = service.findAll(Language.class); + //private static List countries = service.findAll(Country.class); + //private static List languages = service.findAll(Language.class); + private static List allRoles = service.findAll(Role.class); + private static List locales = service.findAll(SupportedLocale.class); + static { + Collections.sort(allRoles); + Collections.sort(locales); + } public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { - // retain orgId to return to userlist + ActionMessages errors = new ActionMessages(); + if(!request.isUserInRole(Role.SYSADMIN) || !request.isUserInRole(Role.COURSE_ADMIN)){ + errors.add("permission",new ActionMessage("errors.insufficient.permissions")); + saveErrors(request,errors); + return mapping.findForward("error"); + } + + // retain orgId to return to userlist Integer orgId = WebUtil.readIntParam(request,"orgId"); if(orgId != null) { request.setAttribute("org",orgId); } - - // get system's roles - List allRoles = service.findAll(Role.class); - Collections.sort(allRoles); + request.setAttribute("rolelist",allRoles); + request.setAttribute("locales",locales); // editing a user Integer userId = WebUtil.readIntParam(request,"userId",true); @@ -121,6 +137,14 @@ break; } } + Map properties = new HashMap(); + properties.put("languageIsoCode",user.getLocaleLanguage()); + if(user.getLocaleCountry()!=null){ + properties.put("countryIsoCode",user.getLocaleCountry()); + } + SupportedLocale locale = (SupportedLocale)service.findByProperties(SupportedLocale.class,properties).get(0); + userForm.set("localeId",locale.getLocaleId()); + }else{ String[] roles = new String[0]; userForm.set("roles",roles); @@ -135,8 +159,8 @@ request.setAttribute("orgId",orgId); request.setAttribute("orgName",org.getName()); request.setAttribute("orgType",org.getOrganisationType().getOrganisationTypeId()); - request.setAttribute("countries",countries); - request.setAttribute("languages",languages); + //request.setAttribute("countries",countries); + //request.setAttribute("languages",languages); return mapping.findForward("user"); } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java,v diff -u -r1.11 -r1.12 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java 29 Jun 2006 04:08:12 -0000 1.11 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/UserSaveAction.java 29 Jun 2006 23:50:16 -0000 1.12 @@ -48,7 +48,9 @@ import org.lamsfoundation.lams.usermanagement.Country; import org.lamsfoundation.lams.usermanagement.Language; import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.Role; +import org.lamsfoundation.lams.usermanagement.SupportedLocale; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.UserOrganisation; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; @@ -110,6 +112,9 @@ errors.add("password",new ActionMessage("error.newpassword.mismatch")); } + SupportedLocale locale = (SupportedLocale)service.findById(SupportedLocale.class,(Byte)userForm.get("localeId")); + log.debug("locale: "+locale); + if(errors.isEmpty()){ Integer userId = (Integer)userForm.get("userId"); User user; @@ -120,7 +125,13 @@ log.debug("editing userId: "+userId); user = (User)service.findById(User.class,userId); BeanUtils.copyProperties(user,userForm); - service.save(user); + log.debug("country: "+user.getLocaleCountry()); + log.debug("language: "+user.getLocaleLanguage()); + user.setLocaleCountry(locale.getCountryIsoCode()); + user.setLocaleLanguage(locale.getLanguageIsoCode()); + log.debug("country: "+user.getLocaleCountry()); + log.debug("language: "+user.getLocaleLanguage()); + //service.save(user); List rolesList = Arrays.asList(roles); log.debug("rolesList.size: "+rolesList.size()); @@ -181,6 +192,8 @@ user.setCreateDate(new Date()); user.setAuthenticationMethod((AuthenticationMethod)service.findByProperty(AuthenticationMethod.class,"authenticationMethodName","LAMS-Database").get(0)); user.setUserId(null); + user.setLocaleCountry(locale.getCountryIsoCode()); + user.setLocaleLanguage(locale.getLanguageIsoCode()); service.save(user); log.debug("user: "+user.toString()); HashSet uos = new HashSet(); @@ -189,7 +202,7 @@ log.debug("organisation: "+orgId); // if user is to be added to a class, make user a member of parent course also Organisation org = (Organisation)service.findById(Organisation.class,orgId); - if(org.getOrganisationType().getOrganisationTypeId().equals(new Integer(3))){ + if(org.getOrganisationType().getOrganisationTypeId().equals(new Integer(OrganisationType.CLASS_TYPE))){ Integer courseOrgId = org.getParentOrganisation().getOrganisationId(); orgs.add(courseOrgId); log.debug("organisation: "+courseOrgId);