Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -rd67980727ce20caae53321c9fe684087eb1c0474 -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision d67980727ce20caae53321c9fe684087eb1c0474) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -86,6 +86,7 @@ admin.user.disable = Disable user admin.user.actions = Actions admin.user.import = Import users +admin.user.add.to.lessons = Add user to existing lessons admin.list.disabled.users = List disabled accounts label.excel.spreadsheet = File label.spreadsheet = spreadsheet Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java =================================================================== diff -u -r1213a02c3a110a9e55863857574a7703263c6d5f -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java (.../UserOrgRoleSaveController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserOrgRoleSaveController.java (.../UserOrgRoleSaveController.java) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -34,6 +34,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.admin.web.dto.UserBean; import org.lamsfoundation.lams.admin.web.form.UserOrgRoleForm; +import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; @@ -64,7 +65,11 @@ @Autowired private IUserManagementService userManagementService; + @Autowired + private ILessonService lessonService; + + @Autowired @Qualifier("adminMessageService") private MessageService messageService; @@ -98,13 +103,23 @@ } userManagementService.setRolesForUserOrganisation(user, orgId, Arrays.asList(roleIds)); + if (userOrgRoleForm.isAddToLessons()) { + for (String roleIdString : roleIds) { + Integer roleId = Integer.valueOf(roleIdString); + if (roleId.equals(Role.ROLE_LEARNER) || roleId.equals(Role.ROLE_MONITOR)) { + lessonService.addParticipantToOrganisationLessons(orgId, user.getUserId(), roleId, false); + } + } + } + List roles = Stream.of(roleIds).collect(Collectors .mapping(roleId -> Role.ROLE_MAP.get(Integer.valueOf(roleId)), Collectors.toUnmodifiableList())); logMessageBuilder.append("to user ").append(user.getFirstName()).append(" ").append(user.getLastName()) .append(" (").append(user.getLogin()).append(") assigned roles ").append(roles); if (i < userBeans.size() - 1) { logMessageBuilder.append(", "); } + // FMALIKOFF 5/7/7 Commented out the following code that set the roles in the course if the current org is a class, as the logic // is done in service.setRolesForUserOrganisation() //if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.CLASS_TYPE)) { @@ -116,9 +131,12 @@ if (logMessageBuilder.length() > 0) { logMessageBuilder.append(" in organisation \"").append(organisation.getName()).append("\""); + if (userOrgRoleForm.isAddToLessons()) { + logMessageBuilder.append(" and added to all lessons"); + } AuditLogFilter.log(AuditLogFilter.ROLE_ADD_ACTION, logMessageBuilder); } - + return "redirect:/usermanage.do?org=" + orgId; } } \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java =================================================================== diff -u -r1213a02c3a110a9e55863857574a7703263c6d5f -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision 1213a02c3a110a9e55863857574a7703263c6d5f) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -34,6 +34,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.admin.web.form.UserRolesForm; +import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; @@ -58,7 +59,11 @@ @Autowired private IUserManagementService userManagementService; + @Autowired + private ILessonService lessonService; + + @Autowired @Qualifier("adminMessageService") private MessageService messageService; @@ -101,18 +106,30 @@ userManagementService.setRolesForUserOrganisation(user, orgId, Arrays.asList(roles)); - auditLog(org, userId, roles); + if (userRolesForm.isAddToLessons()) { + for (String roleIdString : roles) { + Integer roleId = Integer.valueOf(roleIdString); + if (roleId.equals(Role.ROLE_LEARNER) || roleId.equals(Role.ROLE_MONITOR)) { + lessonService.addParticipantToOrganisationLessons(orgId, user.getUserId(), roleId, false); + } + } + } + auditLog(org, userId, roles, userRolesForm.isAddToLessons()); + return "redirect:/usermanage.do?org=" + orgId; } - private void auditLog(Organisation organisation, Integer userId, String[] roleIds) { + private void auditLog(Organisation organisation, Integer userId, String[] roleIds, boolean addToLessons) { List roles = Stream.of(roleIds).collect(Collectors .mapping(roleId -> Role.ROLE_MAP.get(Integer.valueOf(roleId)), Collectors.toUnmodifiableList())); User targetUser = userManagementService.getUserById(userId); StringBuilder auditLogMessage = new StringBuilder("to user ").append(targetUser.getFirstName()).append(" ") .append(targetUser.getLastName()).append(" (").append(targetUser.getLogin()).append(") assigned roles ") .append(roles).append(" in organisation \"").append(organisation.getName()).append("\""); + if (addToLessons) { + auditLogMessage.append(" and added to all lessons"); + } AuditLogFilter.log(AuditLogFilter.ROLE_ADD_ACTION, auditLogMessage); } } \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/UserOrgRoleForm.java =================================================================== diff -u -r9d51ed040508d8d5a10ee4033aded0c3784490a8 -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/UserOrgRoleForm.java (.../UserOrgRoleForm.java) (revision 9d51ed040508d8d5a10ee4033aded0c3784490a8) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/UserOrgRoleForm.java (.../UserOrgRoleForm.java) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -43,6 +43,7 @@ private ArrayList userBeans = new ArrayList(); private Integer orgId; + private boolean addToLessons; public ArrayList getUserBeans() { return userBeans; @@ -64,4 +65,11 @@ userBeans.add(userBean); } -} + public boolean isAddToLessons() { + return addToLessons; + } + + public void setAddToLessons(boolean addToLessons) { + this.addToLessons = addToLessons; + } +} \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/UserRolesForm.java =================================================================== diff -u -r550e1b37b507779064955267ef47e9085f791357 -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/UserRolesForm.java (.../UserRolesForm.java) (revision 550e1b37b507779064955267ef47e9085f791357) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/form/UserRolesForm.java (.../UserRolesForm.java) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -31,6 +31,8 @@ private String[] roles; // String [] + private boolean addToLessons; + public Integer getOrgId() { return orgId; } @@ -55,4 +57,11 @@ this.roles = roles; } -} + public boolean isAddToLessons() { + return addToLessons; + } + + public void setAddToLessons(boolean addToLessons) { + this.addToLessons = addToLessons; + } +} \ No newline at end of file Index: lams_admin/web/userorgrole.jsp =================================================================== diff -u -r3fa24a80ca7fc47341d2147799340283019ce3d5 -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_admin/web/userorgrole.jsp (.../userorgrole.jsp) (revision 3fa24a80ca7fc47341d2147799340283019ce3d5) +++ lams_admin/web/userorgrole.jsp (.../userorgrole.jsp) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -46,7 +46,11 @@ - + + +
Index: lams_admin/web/userrole.jsp =================================================================== diff -u -r1ef1213820fe7ff7c6f4a9238b3f489a25012c63 -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_admin/web/userrole.jsp (.../userrole.jsp) (revision 1ef1213820fe7ff7c6f4a9238b3f489a25012c63) +++ lams_admin/web/userrole.jsp (.../userrole.jsp) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -42,7 +42,7 @@ - +
:
@@ -69,8 +69,14 @@
+ +
+
:
+
+ +
" class="btn btn-default"> " /> Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java =================================================================== diff -u -r6be225f8d21a7f927da78ca099fc8c3915d7668a -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision 6be225f8d21a7f927da78ca099fc8c3915d7668a) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/ILessonService.java (.../ILessonService.java) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -316,6 +316,12 @@ void updateStaffMembers(Lesson lesson, Collection users) throws LessonServiceException; /** + * Adds given user as learner or monitor to all lessons in the given course and optionally its subcourses. + */ + void addParticipantToOrganisationLessons(Integer organisationId, Integer userId, Integer roleId, + boolean addToSubcourses); + + /** * Remove references to an activity from all learner progress entries. Used by Live Edit, to remove any references * to the system gates * Index: lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java =================================================================== diff -u -raf442b23ea96f0fb704ea3afddb41f1c778d4a01 -r646110d2bf8a9cd0f9b5af069963e2961c5e9c5a --- lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision af442b23ea96f0fb704ea3afddb41f1c778d4a01) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/service/LessonService.java (.../LessonService.java) (revision 646110d2bf8a9cd0f9b5af069963e2961c5e9c5a) @@ -52,8 +52,11 @@ import org.lamsfoundation.lams.lesson.dao.ILessonClassDAO; import org.lamsfoundation.lams.lesson.dao.ILessonDAO; import org.lamsfoundation.lams.lesson.dto.LessonDetailsDTO; +import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationGroup; import org.lamsfoundation.lams.usermanagement.OrganisationGrouping; +import org.lamsfoundation.lams.usermanagement.OrganisationType; +import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.MessageService; @@ -558,8 +561,41 @@ } } - @SuppressWarnings("unchecked") @Override + public void addParticipantToOrganisationLessons(Integer organisationId, Integer userId, Integer roleId, + boolean addToSubcourses) { + if (roleId == null || !(roleId.equals(Role.ROLE_LEARNER) || roleId.equals(Role.ROLE_MONITOR))) { + log.error("Unsupported role to assign to all lesssons in organisation " + organisationId + ": " + roleId); + return; + } + + // add to course + for (Lesson lesson : getLessonsByGroup(organisationId)) { + if (roleId.equals(Role.ROLE_MONITOR)) { + addStaffMember(lesson.getLessonId(), userId); + } else { + addLearner(lesson.getLessonId(), userId); + } + } + + if (addToSubcourses) { + // add to subcourses + Organisation organisation = baseDAO.find(Organisation.class, organisationId); + if (organisation.getOrganisationType().getOrganisationTypeId().equals(OrganisationType.COURSE_TYPE)) { + for (Organisation subCourse : organisation.getChildOrganisations()) { + for (Lesson lesson : getLessonsByGroup(subCourse.getOrganisationId())) { + if (roleId.equals(Role.ROLE_MONITOR)) { + addStaffMember(lesson.getLessonId(), userId); + } else { + addLearner(lesson.getLessonId(), userId); + } + } + } + } + } + } + + @Override public void removeProgressReferencesToActivity(Activity activity) { if (activity != null) { LessonService.log.debug("Processing learner progress for activity " + activity.getActivityId());