Index: lams_central/src/java/org/lamsfoundation/lams/web/GroupingController.java =================================================================== diff -u -r5ad516515c75d78fe1d8656d7ee7ee039812273e -ra778e45c1bc4216c14c4c0f3f7485da58049940f --- lams_central/src/java/org/lamsfoundation/lams/web/GroupingController.java (.../GroupingController.java) (revision 5ad516515c75d78fe1d8656d7ee7ee039812273e) +++ lams_central/src/java/org/lamsfoundation/lams/web/GroupingController.java (.../GroupingController.java) (revision a778e45c1bc4216c14c4c0f3f7485da58049940f) @@ -120,6 +120,7 @@ // read organisation ID from lesson organisationId = organisation.getOrganisationId(); } + Integer targetOrganisationId = organisationId; if (organisation == null) { organisation = (Organisation) userManagementService.findById(Organisation.class, organisationId); } @@ -145,7 +146,7 @@ boolean lessonGroupsExist = (grouping != null) && (grouping.getGroups() != null) && !grouping.getGroups().isEmpty() && !isDefaultChosenGrouping(grouping); if (lessonGroupsExist || (activityID != null && orgGroupings.isEmpty())) { - return viewGroups(request, response, organisationId); + return viewGroups(request, response, organisationId, targetOrganisationId); } // if this grouping is used for branching then it should use groups set in authoring. It will be possible to @@ -157,6 +158,7 @@ log.debug("Displaying course groupings for user " + userId + " and organisation " + organisationId); } request.setAttribute(AttributeNames.PARAM_ORGANISATION_ID, organisationId); + request.setAttribute("targetOrganisationId", targetOrganisationId); // if it's not a group-based branching and lesson is created using integrations - show groups received from LMS instead of actual LAMS ones if (!isUsedForBranching && integrationService.isIntegratedServerGroupFetchingAvailable(lessonId)) { @@ -192,7 +194,8 @@ @RequestMapping("/viewGroups") @SuppressWarnings("unchecked") public String viewGroups(HttpServletRequest request, HttpServletResponse response, - @RequestParam(value = "organisationID", required = false) Integer organisationId) + @RequestParam(value = "organisationID", required = false) Integer organisationId, + @RequestParam(value = "targetOrganisationID", required = false) Integer targetOrganisationId) throws IOException, GroupInfoFetchException, UserInfoValidationException { Integer userId = getUserDTO().getUserID(); Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID, true); @@ -213,8 +216,12 @@ boolean isGroupSuperuser = userManagementService.isUserInRole(userId, organisationId, Role.GROUP_MANAGER); + if (targetOrganisationId == null) { + targetOrganisationId = organisationId; + } + if (log.isDebugEnabled()) { - log.debug("Displaying course groups for user " + userId + " and organisation " + organisationId); + log.debug("Displaying course groups for user " + userId + " and organisation " + targetOrganisationId); } Long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID, true); @@ -228,7 +235,7 @@ } ObjectNode orgGroupingJSON = JsonNodeFactory.instance.objectNode(); - orgGroupingJSON.put("organisationId", organisationId); + orgGroupingJSON.put("organisationId", targetOrganisationId); Long orgGroupingId = WebUtil.readLongParam(request, "groupingId", true); OrganisationGrouping orgGrouping = null; @@ -330,7 +337,7 @@ // if groups haven't been selected yet - show all available groups in organisation } else if ((lessonGroups == null) || lessonGroups.isEmpty()) { - learners = userManagementService.getUsersFromOrganisationByRole(organisationId, Role.LEARNER, true); + learners = userManagementService.getUsersFromOrganisationByRole(targetOrganisationId, Role.LEARNER, true); Set orgGroups = orgGrouping == null ? null : orgGrouping.getGroups(); orgGroupsJSON = getOrgGroupsDetails(orgGroups, learners); Index: lams_central/web/includes/javascript/orgGrouping.js =================================================================== diff -u -rb28b1e41d273fdce6c086a72a4e6a9f2e1a8a946 -ra778e45c1bc4216c14c4c0f3f7485da58049940f --- lams_central/web/includes/javascript/orgGrouping.js (.../orgGrouping.js) (revision b28b1e41d273fdce6c086a72a4e6a9f2e1a8a946) +++ lams_central/web/includes/javascript/orgGrouping.js (.../orgGrouping.js) (revision a778e45c1bc4216c14c4c0f3f7485da58049940f) @@ -19,7 +19,8 @@ } function viewGroups(groupingId, force) { - var url = LAMS_URL + 'grouping/viewGroups.do?organisationID=' + organisationId; + var url = LAMS_URL + 'grouping/viewGroups.do?organisationID=' + organisationId + + '&targetOrganisationID=' + targetOrganisationId; if (lessonId) { url += '&lessonID=' + lessonId; } Index: lams_central/web/orgGrouping.jsp =================================================================== diff -u -r7538876b77a0bc0137cdfc9262501464b988061c -ra778e45c1bc4216c14c4c0f3f7485da58049940f --- lams_central/web/orgGrouping.jsp (.../orgGrouping.jsp) (revision 7538876b77a0bc0137cdfc9262501464b988061c) +++ lams_central/web/orgGrouping.jsp (.../orgGrouping.jsp) (revision a778e45c1bc4216c14c4c0f3f7485da58049940f) @@ -35,6 +35,7 @@ lessonMode = ${lessonMode}, // parameter can be null and the ID available only as a JSP attribute organisationId = ${empty organisationID ? param.organisationID : organisationID}, + targetOrganisationId = '${targetOrganisationId}', lessonId = '${param.lessonID}', csrfTokenName = '', csrfTokenValue = '',