Index: lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java =================================================================== diff -u -r40de3afab4e8d589660daffb6efd6e568e87f8fa -r932a4e7a2b89bcbae0db13d296ea1038e9571891 --- lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision 40de3afab4e8d589660daffb6efd6e568e87f8fa) +++ lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision 932a4e7a2b89bcbae0db13d296ea1038e9571891) @@ -9,19 +9,18 @@ import java.util.HashMap; import java.util.Map.Entry; -import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.learning.service.ILearnerService; -import org.lamsfoundation.lams.learningdesign.dto.ActivityPositionDTO; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.web.util.AttributeNames; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; @@ -481,7 +480,8 @@ * @throws ToolException * @throws IOException */ - public static InputStream getResponseInputStreamFromExternalServer(String urlStr, HashMap params) throws IOException { + public static InputStream getResponseInputStreamFromExternalServer(String urlStr, HashMap params) + throws IOException { if (!urlStr.contains("?")) { urlStr += "?"; } @@ -537,10 +537,25 @@ userJSON.put("firstName", user.getFirstName()); userJSON.put("lastName", user.getLastName()); userJSON.put("login", user.getLogin()); - userJSON.put("portraitId", user.getPortraitUuid()); + userJSON.put("portraitId", user.getPortraitUuid()); return userJSON; } + public static ObjectNode userToJSON(User user, Activity activity) { + ObjectNode userJSON = WebUtil.userToJSON(user); + + // get a group from applied grouping or from the grouping activity itself + Grouping grouping = activity.isGroupingActivity() ? ((GroupingActivity) activity).getCreateGrouping() + : activity.getGrouping(); + if (grouping != null) { + Group group = grouping.getGroupBy(user); + if (group != null) { + userJSON.put("group", group.getGroupName()); + } + } + return userJSON; + } + public static String getBaseServerURL() { String serverURL = Configuration.get(ConfigurationKeys.SERVER_URL); // "https://" is 8 characters, so next "/" should be context Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java =================================================================== diff -u -r40de3afab4e8d589660daffb6efd6e568e87f8fa -r932a4e7a2b89bcbae0db13d296ea1038e9571891 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 40de3afab4e8d589660daffb6efd6e568e87f8fa) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 932a4e7a2b89bcbae0db13d296ea1038e9571891) @@ -285,13 +285,12 @@ } @RequestMapping(path = "/addLesson", method = RequestMethod.POST) - public String addLesson(HttpServletRequest request, HttpServletResponse response, - @RequestParam String lessonName, @RequestParam long learningDesignID) - throws IOException, ServletException, ParseException { + public String addLesson(HttpServletRequest request, HttpServletResponse response, @RequestParam String lessonName, + @RequestParam long learningDesignID) throws IOException, ServletException, ParseException { if (!ValidationUtil.isOrgNameValid(lessonName)) { throw new IOException("Lesson name contains invalid characters"); } - + String[] organisationIdsStr = request.getParameterValues(AttributeNames.PARAM_ORGANISATION_ID); boolean introEnable = WebUtil.readBooleanParam(request, "introEnable", false); String introDescription = introEnable ? request.getParameter("introDescription") : null; @@ -461,8 +460,7 @@ * The Struts dispatch method to archive a lesson. */ @RequestMapping(path = "/archiveLesson", method = RequestMethod.POST) - public void archiveLesson(HttpServletRequest request, HttpServletResponse response) - throws IOException { + public void archiveLesson(HttpServletRequest request, HttpServletResponse response) throws IOException { long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); try { monitoringService.archiveLesson(lessonId, getUserId()); @@ -475,8 +473,7 @@ * The Struts dispatch method to "unarchive" a lesson. Returns it back to its previous state. */ @RequestMapping(path = "/unarchiveLesson", method = RequestMethod.POST) - public void unarchiveLesson(HttpServletRequest request, HttpServletResponse response) - throws IOException { + public void unarchiveLesson(HttpServletRequest request, HttpServletResponse response) throws IOException { long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); try { monitoringService.unarchiveLesson(lessonId, getUserId()); @@ -628,8 +625,8 @@ } if (log.isDebugEnabled()) { - log.debug("Force complete for learners " + learnerIdNameBuf.toString() + " lesson " - + lessonId + ". " + message); + log.debug("Force complete for learners " + learnerIdNameBuf.toString() + " lesson " + lessonId + ". " + + message); } // audit log force completion attempt @@ -782,7 +779,7 @@ MonitoringController.USER_PAGE_SIZE, (pageNumber - 1) * MonitoringController.USER_PAGE_SIZE, orderAscending); for (User learner : learners) { - learnersJSON.add(WebUtil.userToJSON(learner)); + learnersJSON.add(WebUtil.userToJSON(learner, activity)); } learnerCount = monitoringService.getCountLearnersCurrentActivities(new Long[] { activityId }) .get(activityId); @@ -1303,7 +1300,7 @@ if (!latestLearners.isEmpty()) { ArrayNode learnersJSON = JsonNodeFactory.instance.arrayNode(); for (User learner : latestLearners) { - ObjectNode userJSON = WebUtil.userToJSON(learner); + ObjectNode userJSON = WebUtil.userToJSON(learner, activity); if (leaders.contains(learner.getUserId().longValue())) { userJSON.put("leader", true); } Index: lams_monitoring/web/includes/javascript/monitorLesson.js =================================================================== diff -u -r7116e79c883ad42375d9fa3278dec8a84733ea86 -r932a4e7a2b89bcbae0db13d296ea1038e9571891 --- lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 7116e79c883ad42375d9fa3278dec8a84733ea86) +++ lams_monitoring/web/includes/javascript/monitorLesson.js (.../monitorLesson.js) (revision 932a4e7a2b89bcbae0db13d296ea1038e9571891) @@ -2429,8 +2429,9 @@ * Formats learner name. */ function getLearnerDisplayName(learner, raw) { - return raw ? learner.lastName + ', ' + learner.firstName + ' (' + learner.login + ')' - : escapeHtml(learner.lastName) + ', ' + escapeHtml(learner.firstName) + ' (' + escapeHtml(learner.login) + ')'; + return raw ? learner.lastName + ', ' + learner.firstName + ' (' + learner.login + ')' + (learner.group ? ' - ' + learner.group : '') + : escapeHtml(learner.lastName) + ', ' + escapeHtml(learner.firstName) + ' (' + escapeHtml(learner.login) + ')' + + (learner.group ? ' - ' + escapeHtml(learner.group) : ''); }